ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.235
Committed: Sun Mar 19 01:37:51 2017 UTC (7 years, 1 month ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.234: +3 -2 lines
Log Message:
always run -Xdoclint with reference/private

File Contents

# Content
1 <project name="jsr166" default="usage"
2 xmlns:if="ant:if" xmlns:unless="ant:unless"
3 xmlns:ivy="antlib:org.apache.ivy.ant">
4
5 <description>
6 ------------------------------------------------------------------------------
7 Build file for JSR-166
8
9 Usage: ant [target]
10
11 See http://gee.cs.oswego.edu/dl/concurrency-interest/index.html for
12 more details.
13
14 User-specific settings are read from user.properties.
15 See user.properties.sample for an explanation of some useful settings.
16
17 The repository contains all dependencies except for ant and the JDK
18 itself. Because the JDK version matters and because different
19 targets require different JDKs, we assume that users have created a
20 hierarchy containing:
21 $HOME/jdk/jdk7
22 $HOME/jdk/jdk8
23 $HOME/jdk/jdk9
24 $HOME/jdk/jdk10
25 where each of the above is a JDK or a symlink to same, and
26 $HOME/jdk/src/jdk7
27 $HOME/jdk/src/jdk8
28 $HOME/jdk/src/jdk9
29 $HOME/jdk/src/jdk10
30 where each of the above is a complete JDK source tree
31 (e.g. mercurial forest) or a symlink to same.
32
33 Alternatively, define ant variables thus:
34 ant -Djdk$N.home=... -Djdk$N.src.home=...
35 for $N in 7 8 9 10 ...
36
37 As of 2016-03, the sources in src/main are for jdk9+ only.
38 ------------------------------------------------------------------------------
39 </description>
40
41 <!-- Run 'ant -projecthelp' (default target) -->
42 <target name="usage">
43 <java classname="org.apache.tools.ant.Main">
44 <arg value="-projecthelp" />
45 </java>
46 </target>
47
48 <!-- HOWTO printf debug: <echo message="prop=${prop}"/> -->
49
50 <!-- User-specific settings -->
51 <property file="user.properties"/>
52
53
54 <!-- Compilation options -->
55 <property name="build.sourcelevel" value="6"/>
56 <property name="build.debug" value="true"/>
57 <property name="build.debuglevel" value="source,lines,vars"/>
58 <property name="build.deprecation" value="false"/>
59 <property name="build.javadoc.access" value="protected"/>
60
61 <!-- Build locations -->
62 <property name="build.dir" location="build"/>
63 <property name="build.classes.dir" location="${build.dir}/classes"/>
64 <property name="build.testcases.dir" location="${build.dir}/testcases"/>
65 <property name="build.loops.dir" location="${build.dir}/loops"/>
66
67 <property name="build.4jdk7.dir" location="${build.dir}/jsr166-4jdk7"/>
68 <property name="build.4jdk7.classes.dir" location="${build.4jdk7.dir}/classes"/>
69 <property name="build.4jdk7.tck.classes.dir" location="${build.4jdk7.dir}/tck-classes"/>
70 <property name="build.4jdk7.docs.dir" location="${build.4jdk7.dir}/docs"/>
71
72 <property name="build.4jdk8.dir" location="${build.dir}/jsr166-4jdk8"/>
73 <property name="build.4jdk8.classes.dir" location="${build.4jdk8.dir}/classes"/>
74 <property name="build.4jdk8.tck.classes.dir" location="${build.4jdk8.dir}/tck-classes"/>
75 <property name="build.4jdk8.docs.dir" location="${build.4jdk8.dir}/docs"/>
76
77 <property name="build.jsr166x.dir" location="${build.dir}/jsr166x"/>
78 <property name="build.jsr166y.dir" location="${build.dir}/jsr166y"/>
79 <property name="build.jsr166e.dir" location="${build.dir}/jsr166e"/>
80 <property name="build.extra166y.dir" location="${build.dir}/extra166y"/>
81
82 <property name="build.jsr166x.classes.dir" location="${build.jsr166x.dir}/classes"/>
83 <property name="build.jsr166y.classes.dir" location="${build.jsr166y.dir}/classes"/>
84 <property name="build.jsr166e.classes.dir" location="${build.jsr166e.dir}/classes"/>
85 <property name="build.extra166y.classes.dir" location="${build.extra166y.dir}/classes"/>
86
87 <!-- JDK locations -->
88 <property name="jdks.home" location="${user.home}/jdk"/>
89
90 <macrodef name="defjdklocations">
91 <attribute name="v"/>
92 <sequential>
93 <property name="jdk@{v}.home" location="${jdks.home}/jdk@{v}"/>
94 <property name="java@{v}" location="${jdk@{v}.home}/bin/java"/>
95 <property name="javac@{v}" location="${jdk@{v}.home}/bin/javac"/>
96 <property name="javadoc@{v}" location="${jdk@{v}.home}/bin/javadoc"/>
97 <property name="jdk@{v}.src.home" location="${jdks.home}/src/jdk@{v}"/>
98 <local name="have.java.base"/>
99 <available property="have.java.base"
100 file="${jdk@{v}.src.home}/jdk/src/java.base/share/classes" type="dir"/>
101 <property name="jdk@{v}.src.dir" location="${jdk@{v}.src.home}/jdk/src/java.base/share/classes"
102 if:set="have.java.base"/>
103 <property name="jdk@{v}.src.dir" location="${jdk@{v}.src.home}/jdk/src/share/classes"
104 unless:set="have.java.base"/>
105 <local name="modules"/>
106 <available property="modules" file="${jdk@{v}.home}/jmods" type="dir"/>
107 <local name="boot.jar.dir"/>
108 <property name="boot.jar.dir" location="${jdk@{v}.home}/jre/lib" unless:set="modules"/>
109 <path id="bootclasspath@{v}" unless:set="modules">
110 <pathelement path="${boot.jar.dir}/resources.jar"/>
111 <pathelement path="${boot.jar.dir}/rt.jar"/>
112 <pathelement path="${boot.jar.dir}/jsse.jar"/>
113 <pathelement path="${boot.jar.dir}/jce.jar"/>
114 <pathelement path="${boot.jar.dir}/charsets.jar"/>
115 </path>
116 <property name="bootclasspath@{v}" value="${toString:bootclasspath@{v}}" unless:set="modules"/>
117 </sequential>
118 </macrodef>
119
120 <macrodef name="mirror-dir">
121 <attribute name="src"/>
122 <attribute name="dst"/>
123 <sequential>
124 <delete dir="@{dst}"/>
125 <mkdir dir="@{dst}"/>
126 <copy todir="@{dst}" preservelastmodified="true">
127 <fileset dir="@{src}"/>
128 </copy>
129 </sequential>
130 </macrodef>
131
132 <defjdklocations v="6"/>
133 <defjdklocations v="7"/>
134 <defjdklocations v="8"/>
135 <defjdklocations v="9"/>
136 <defjdklocations v="10"/>
137
138 <!-- Source locations -->
139 <property name="src.dir" location="${basedir}/src/main"/>
140 <property name="test.src.dir" location="${basedir}/src/test"/>
141 <property name="loops.src.dir" location="${basedir}/src/loops"/>
142 <property name="tck.src.dir" location="${test.src.dir}/tck"/>
143 <property name="jtreg7.src.dir" location="${test.src.dir}/jtreg-jdk7"/>
144 <property name="jtreg8.src.dir" location="${test.src.dir}/jtreg-jdk8"/>
145 <property name="jtreg9.src.dir" location="${test.src.dir}/jtreg"/>
146 <property name="jtreg10.src.dir" location="${test.src.dir}/jtreg"/>
147 <property name="jtreg.src.dir" location="${jtreg9.src.dir}"/>
148 <property name="lib.dir" location="${basedir}/lib"/>
149 <property name="dist.dir" location="${basedir}/dist"/>
150 <property name="topsrc.dir" location="${basedir}/src"/>
151 <property name="4jdk7src.dir" location="${topsrc.dir}/jdk7"/>
152 <property name="4jdk8src.dir" location="${topsrc.dir}/jdk8"/>
153 <property name="jsr166xsrc.dir" location="${topsrc.dir}/jsr166x"/>
154 <property name="jsr166ysrc.dir" location="${topsrc.dir}/jsr166y"/>
155 <property name="jsr166esrc.dir" location="${topsrc.dir}/jsr166e"/>
156 <property name="extra166ysrc.dir" location="${topsrc.dir}/extra166y"/>
157
158 <!-- Javadoc locations -->
159 <property name="docs.dir" location="${build.dir}/docs"/>
160 <property name="4jdk7docs.dir" location="${build.4jdk7.dir}/docs"/>
161 <property name="4jdk8docs.dir" location="${build.4jdk8.dir}/docs"/>
162 <property name="jsr166xdocs.dir" location="${build.jsr166x.dir}/docs"/>
163 <property name="jsr166ydocs.dir" location="${build.jsr166y.dir}/docs"/>
164 <property name="jsr166edocs.dir" location="${build.jsr166e.dir}/docs"/>
165 <property name="extra166ydocs.dir" location="${build.extra166y.dir}/docs"/>
166
167 <property name="dist.docs.dir" location="${dist.dir}/docs"/>
168 <property name="dist.4jdk7docs.dir" location="${dist.dir}/jsr166-4jdk7docs"/>
169 <property name="dist.4jdk8docs.dir" location="${dist.dir}/jsr166-4jdk8docs"/>
170 <property name="dist.jsr166xdocs.dir" location="${dist.dir}/jsr166xdocs"/>
171 <property name="dist.jsr166ydocs.dir" location="${dist.dir}/jsr166ydocs"/>
172 <property name="dist.jsr166edocs.dir" location="${dist.dir}/jsr166edocs"/>
173 <property name="dist.extra166ydocs.dir" location="${dist.dir}/extra166ydocs"/>
174
175 <!-- Jar locations -->
176 <property name="product.jar" location="${build.dir}/jsr166.jar"/>
177 <property name="4jdk7product.jar" location="${build.4jdk7.dir}/jsr166-4jdk7.jar"/>
178 <property name="4jdk8product.jar" location="${build.4jdk8.dir}/jsr166-4jdk8.jar"/>
179 <property name="jsr166x.jar" location="${build.jsr166x.dir}/jsr166x.jar"/>
180 <property name="jsr166y.jar" location="${build.jsr166y.dir}/jsr166y.jar"/>
181 <property name="jsr166e.jar" location="${build.jsr166e.dir}/jsr166e.jar"/>
182 <property name="extra166y.jar" location="${build.extra166y.dir}/extra166y.jar"/>
183 <property name="junit.jar" location="${lib.dir}/junit.jar"/>
184
185 <!-- Canonical location of jdk docs root, to use with javadoc -Xdocrootparent flag -->
186 <property name="java5.docroot.url" value="http://docs.oracle.com/javase/1.5.0/docs"/>
187 <property name="java6.docroot.url" value="http://docs.oracle.com/javase/6/docs"/>
188 <property name="java7.docroot.url" value="http://docs.oracle.com/javase/7/docs"/>
189 <property name="java8.docroot.url" value="http://docs.oracle.com/javase/8/docs"/>
190 <!-- The expected canonical location does not yet exist as of 2016-04 -->
191 <!-- <property name="java9.docroot.url" value="http://docs.oracle.com/javase/9/docs"/> -->
192 <property name="java9.docroot.url" value="http://download.java.net/java/jdk9/docs"/>
193 <!-- Default jdk doc location (latest stable release seems best) -->
194 <property name="java.docroot.url" value="${java8.docroot.url}"/>
195
196 <!-- Canonical location of jdk API docs, to use with javadoc link attribute -->
197 <property name="java5.api.url" value="${java5.docroot.url}/api/"/>
198 <property name="java6.api.url" value="${java6.docroot.url}/api/"/>
199 <property name="java7.api.url" value="${java7.docroot.url}/api/"/>
200 <property name="java8.api.url" value="${java8.docroot.url}/api/"/>
201 <property name="java9.api.url" value="${java9.docroot.url}/api/"/>
202 <property name="java.api.url" value="${java.docroot.url}/api/"/>
203
204 <!-- Define the "jtreg" task -->
205 <!-- See the docs in "jtreg -onlineHelp" -->
206 <taskdef name="jtreg" classname="com.sun.javatest.regtest.Main$$Ant"
207 classpath="${lib.dir}/jtreg.jar" />
208
209 <!-- Tck options; see JSR166TestCase.java
210 To profile a single tck test class:
211 ant -Djsr166.profileTests=true -Djsr166.profileThreshold=10 -Djsr166.tckTestClass=CompletableFutureTest tck
212 To stress test a single tck test class:
213 ant -Djsr166.tckTestClass=CountedCompleterTest -Djsr166.runsPerTest=100 tck
214 To stress test a single tck test method:
215 ant -Djsr166.tckTestClass=RecursiveTaskTest -Djsr166.runsPerTest=1000 -Djsr166.methodFilter=testAbnormalInvokeAll3 tck
216 -->
217 <property name="jsr166.tckTestClass" value="JSR166TestCase"/>
218 <macrodef name="run-tck-tests">
219 <attribute name="tck.src.dir" default="${tck.src.dir}"/>
220 <attribute name="target"/>
221 <attribute name="compile-target" default="@{target}"/>
222 <attribute name="workdir"/>
223 <attribute name="classes"/>
224 <!--
225 <attribute name="jvmflags" default="-XX:+UseParallelGC -XX:-UseBiasedLocking -ea -esa -Djsr166.testImplementationDetails=true"/>
226 -->
227 <attribute name="jvmflags" default="-ea -esa -Djsr166.testImplementationDetails=true"/>
228 <element name="javac-elements" optional="true"/>
229
230 <sequential>
231
232 <local name="modules"/>
233 <condition property="modules">
234 <available file="${jdk@{compile-target}.home}/jmods" type="dir"/>
235 </condition>
236
237 <mkdir dir="@{workdir}/tck-classes"/>
238
239 <javac srcdir="@{tck.src.dir}"
240 destdir="@{workdir}/tck-classes"
241 debug="${build.debug}"
242 debuglevel="${build.debuglevel}"
243 deprecation="${build.deprecation}"
244 source="@{compile-target}"
245 target="@{compile-target}"
246 classpath="${junit.jar}"
247 includeAntRuntime="false"
248 includeJavaRuntime="false"
249 encoding="ASCII"
250 executable="${javac@{compile-target}}"
251 fork="true">
252
253 <include name="*.java"/>
254 <compilerarg value="-XDignore.symbol.file=true"/>
255 <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation,-try"/>
256 <compilerarg value="-Xdoclint:reference/private"/>
257 <compilerarg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
258 <compilerarg value="--patch-module=java.base=@{classes}" if:set="modules"/>
259 <compilerarg line="${build.args}"/>
260 <javac-elements/>
261
262 </javac>
263
264 <java classname="${jsr166.tckTestClass}"
265 failonerror="true"
266 jvm="${java@{target}}"
267 fork="true">
268 <jvmarg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
269 <jvmarg value="--patch-module=java.base=@{classes}" if:set="modules"/>
270 <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" if:set="modules"/>
271 <jvmarg value="--add-opens=java.base/java.util=ALL-UNNAMED" if:set="modules"/>
272 <jvmarg value="--add-opens=java.base/java.util.concurrent=ALL-UNNAMED" if:set="modules"/>
273 <jvmarg value="--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED" if:set="modules"/>
274 <jvmarg value="--add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED" if:set="modules"/>
275 <jvmarg line="@{jvmflags}"/>
276 <!-- ant -Dvmoptions="-Xmx8m" -Djsr166.tckTestClass=CompletableFutureTest tck -->
277 <jvmarg line="${vmoptions}" if:set="vmoptions"/>
278
279 <!-- ant -Djava.util.concurrent.ForkJoinPool.common.parallelism=1 tck -->
280 <syspropertyset id="system-properties-used-by-tck">
281 <propertyref prefix="java.util.concurrent.ForkJoinPool"/>
282 <propertyref prefix="jsr166."/>
283 <propertyref name="test.timeout.factor"/>
284 </syspropertyset>
285
286 <classpath>
287 <pathelement location="${junit.jar}"/>
288 <pathelement location="@{workdir}/tck-classes"/>
289 </classpath>
290 </java>
291
292 </sequential>
293 </macrodef>
294
295 <!-- Define jtreg test sets for different jdk versions -->
296 <fileset dir="${jtreg9.src.dir}">
297 <patternset id="jdk9.jtreg.tests">
298 <include name="**/*.java"/>
299 </patternset>
300 </fileset>
301
302 <fileset dir="${jtreg8.src.dir}">
303 <patternset id="jdk8.jtreg.tests">
304 <include name="**/*.java"/>
305 </patternset>
306 </fileset>
307
308 <fileset dir="${jtreg7.src.dir}">
309 <patternset id="jdk7.jtreg.tests">
310 <include name="**/*.java"/>
311 </patternset>
312 </fileset>
313
314 <!-- ant -Djtreg.flags=-timeoutFactor:4 -->
315 <property name="jtreg.flags" value=""/>
316
317 <macrodef name="run-jtreg-tests">
318 <!-- ant -Djtreg9.src.dir=src/test/jtreg/util/concurrent/CompletableFuture jtreg -->
319 <attribute name="source" default="7"/>
320 <attribute name="target"/>
321 <attribute name="workdir"/>
322 <attribute name="classes"/>
323 <attribute name="jtregflags" default=""/>
324
325 <sequential>
326
327 <!-- ant -Djtreg.verbose=time,fail,error jtreg -->
328 <property name="jtreg.verbose" value="nopass,fail,error"/>
329
330 <local name="modules"/>
331 <condition property="modules">
332 <available file="${jdk@{target}.home}/jmods" type="dir"/>
333 </condition>
334
335 <delete dir="@{workdir}/JTwork" quiet="true"/>
336 <jtreg dir="${jtreg@{target}.src.dir}"
337 jdk="${jdk@{target}.home}"
338 workDir="@{workdir}/JTwork">
339 <patternset refid="jdk@{target}.jtreg.tests"/>
340 <arg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
341 <arg value="-javacoptions:--patch-module java.base=@{classes}" if:set="modules"/>
342 <arg value="-vmoptions:--patch-module java.base=@{classes}" if:set="modules"/>
343 <arg value="-agentvm"/>
344 <arg value="-noreport"/>
345 <arg value="-verbose:${jtreg.verbose}"/>
346 <arg value="-vmoptions:-esa -ea"/>
347 <arg value="-automatic"/>
348 <arg value="-k:!ignore"/>
349 <arg line="@{jtregflags}"/>
350 <arg line="${jtreg.flags}"/>
351 </jtreg>
352 </sequential>
353 </macrodef>
354
355 <!-- ALoops classpath -->
356 <path id="loops.classpath">
357 <pathelement location="${build.loops.dir}"/>
358 </path>
359
360 <!-- Support @jls tag, used in jdk8+ javadoc -->
361 <property name="javadoc.jls.cite" value="The Java&amp;trade; Language Specification"/>
362 <property name="javadoc.jls.option" value="jls:a:See &lt;cite&gt;${javadoc.jls.cite}&lt;/cite&gt;:"/>
363
364 <!-- Main targets -->
365
366 <property name="build.main.java.version" value="9"/>
367 <property name="build.main.javac" value="${javac9}"/>
368
369 <target name="dists"
370 depends="dist, 4jdk8dist, 4jdk7dist, jsr166edist, jsr166ydist, extra166ydist, jsr166xdist"
371 description="Builds all public jars and docs"/>
372
373 <target name="compile"
374 depends="configure-compiler"
375 description="Compiles src/main sources to build dir">
376
377 <local name="modules"/>
378 <condition property="modules">
379 <and>
380 <available file="${jdk9.home}/jmods" type="dir"/>
381 <equals arg1="9" arg2="${build.main.java.version}"/>
382 </and>
383 </condition>
384
385 <local name="destdir"/>
386 <property name="destdir" value="${build.classes.dir}/java.base" if:set="modules"/>
387 <property name="destdir" value="${build.classes.dir}" unless:set="modules"/>
388
389 <mkdir dir="${destdir}"/>
390
391 <javac srcdir="${src.dir}"
392 destdir="${destdir}"
393 debug="${build.debug}"
394 debuglevel="${build.debuglevel}"
395 deprecation="${build.deprecation}"
396 classpath=""
397 includeAntRuntime="false"
398 includeJavaRuntime="false"
399 encoding="ASCII"
400 executable="${build.main.javac}"
401 fork="true">
402
403 <include name="**/*.java"/>
404 <compilerarg value="--patch-module=java.base=${src.dir}" if:set="modules"/>
405 <compilerarg value="-Xprefer:source"/>
406 <compilerarg value="-XDignore.symbol.file=true"/>
407 <compilerarg value="-Xlint:all"/>
408 <compilerarg value="-Werror"/>
409 <compilerarg value="-Xdoclint:all/protected,reference/private"/>
410 <compilerarg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
411 <compilerarg line="${build.args}"/>
412
413 </javac>
414 </target>
415
416
417 <target name="jar"
418 depends="compile"
419 description="Builds library jar for src/main from compiled sources">
420 <local name="subdir"/>
421 <available property="subdir" file="${build.classes.dir}/java.base" type="dir" value="/java.base"/>
422 <jar destfile="${product.jar}">
423 <fileset dir="${build.classes.dir}${subdir}"/>
424 <manifest>
425 <attribute name="Built-By" value="${user.name}"/>
426 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
427 </manifest>
428 </jar>
429 </target>
430
431
432 <target name="docs"
433 description="Builds javadocs for src/main to dist dir">
434
435 <delete dir="${docs.dir}"/>
436 <mkdir dir="${docs.dir}"/>
437
438 <!-- the packagenames="none" hack below prevents scanning the -->
439 <!-- sourcepath for packages -->
440
441 <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}" -->
442 <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}:${jdk9.src.home}/jdk/src/java.logging/share/classes" -->
443 <!-- TODO: sourcepath="${src.dir}:${jdk9.home}/src.zip" -->
444 <!-- TODO: <arg line="-sourcepath ${src.dir}:${jdk9.home}/src.zip"/> -->
445 <!-- TODO: <arg line="- -module-source-path ${jdk9.home}/src.zip"/> -->
446 <javadoc destdir="${docs.dir}"
447 packagenames="none"
448 link="${java9.api.url}"
449 overview="${src.dir}/intro.html"
450 access="${build.javadoc.access}"
451 sourcepath="${src.dir}"
452 classpath=""
453 executable="${javadoc9}">
454 <fileset dir="${src.dir}" defaultexcludes="yes">
455 <include name="**/*.java"/>
456 </fileset>
457 <arg line="-Xdocrootparent ${java9.docroot.url}"/>
458 <arg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
459 <arg value="-XDignore.symbol.file=true"/>
460 <arg value="--patch-module=java.base=${src.dir}"/>
461 <arg value="-tag"/>
462 <arg value="${javadoc.jls.option}"/>
463 <!-- @apiNote currently unused -->
464 <!-- <arg value="-tag"/> -->
465 <!-- <arg value="apiNote:a:API Note:"/> -->
466 <arg value="-tag"/>
467 <arg value="implSpec:a:Implementation Requirements:"/>
468 <arg value="-tag"/>
469 <arg value="implNote:a:Implementation Note:"/>
470 <!-- tags added in jdk9: currently unused -->
471 <!-- <arg value="-tag"/> -->
472 <!-- <arg value="revised:X"/> -->
473 <!-- <arg value="-tag"/> -->
474 <!-- <arg value="spec:X"/> -->
475 </javadoc>
476 </target>
477
478
479 <target name="dist"
480 depends="dist-clean, dist-jar, dist-docs"
481 description="Puts all distributable products in single hierarchy"/>
482
483
484 <target name="release"
485 depends="dist"
486 description="Puts entire CVS tree, plus distribution productions, in a jar">
487
488 <property name="release.jar" value="dist/jsr166-${version}-dist.jar"/>
489
490 <jar basedir="${basedir}" destfile="${release.jar}">
491 <!-- <exclude name="build/**"/> -->
492 <exclude name="${release.jar}"/>
493 <exclude name="user.properties"/>
494 <exclude name="etc/notes/**"/>
495 <exclude name="src/emulation/**"/>
496 <exclude name="**/SyntaxTest.java"/>
497 <exclude name="**/SuperfluousAbstract.java"/>
498 <manifest>
499 <attribute name="Built-By" value="${user.name}"/>
500 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
501 </manifest>
502 </jar>
503 </target>
504
505
506 <target name="clean"
507 description="Removes all build products">
508
509 <delete dir="${build.dir}"/>
510
511 </target>
512
513
514 <target name="dist-clean"
515 description="Removes all build and distribution products">
516
517 <delete dir="${build.dir}"/>
518 <delete dir="${dist.dir}"/>
519
520 </target>
521
522
523 <target name="dist-jar"
524 depends="clean, jar">
525 <copy file="${product.jar}" todir="${dist.dir}"/>
526 </target>
527
528 <target name="dist-docs"
529 depends="clean, docs">
530 <mirror-dir src="${docs.dir}" dst="${dist.docs.dir}"/>
531 </target>
532
533 <target name="tck"
534 depends="jar"
535 description="Runs tck tests for src/main directly">
536
537 <run-tck-tests
538 target="${build.main.java.version}"
539 workdir="${build.dir}"
540 classes="${product.jar}"/>
541 </target>
542
543 <target name="tck-parallelism-1"
544 description="Runs tck with common pool parallelism 1">
545 <antcall target="tck">
546 <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="1"/>
547 </antcall>
548 </target>
549
550 <target name="tck-parallelism-0"
551 description="Runs tck with common pool parallelism 0">
552 <antcall target="tck">
553 <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="0"/>
554 </antcall>
555 </target>
556
557 <target name="tck-security-manager"
558 description="Runs tck with a security manager">
559 <antcall target="tck">
560 <param name="jsr166.useSecurityManager" value="true"/>
561 </antcall>
562 </target>
563
564 <target name="jtreg"
565 depends="jar"
566 description="Runs jtreg tests for src/main using the jtreg ant task">
567 <run-jtreg-tests
568 target="${build.main.java.version}"
569 workdir="${build.dir}"
570 classes="${product.jar}"/>
571 </target>
572
573 <target name="test"
574 depends="tck, tck-parallelism-1, tck-parallelism-0, jtreg"
575 description="Runs tck and jtreg tests for src/main">
576 </target>
577
578 <!-- <target name="jtreg8" description="Runs jtreg tests with jdk8"> -->
579
580 <!-- <antcall target="jtreg"> -->
581 <!-- <param name="build.main.java.version" value="8"/> -->
582 <!-- <param name="build.main.javac" value="${javac8}"/> -->
583 <!-- </antcall> -->
584
585 <!-- </target> -->
586
587 <!-- <target name="test89" -->
588 <!-- description="Runs tck and jtreg tests for src/main for multiple java versions"> -->
589
590 <!-- <antcall target="clean"/> -->
591 <!-- <antcall target="test"> -->
592 <!-- <param name="build.main.java.version" value="8"/> -->
593 <!-- <param name="build.main.javac" value="${javac8}"/> -->
594 <!-- </antcall> -->
595
596 <!-- <antcall target="clean"/> -->
597 <!-- <antcall target="test"> -->
598 <!-- <param name="build.main.java.version" value="9"/> -->
599 <!-- <param name="build.main.javac" value="${javac9}"/> -->
600 <!-- </antcall> -->
601
602 <!-- </target> -->
603
604
605
606 <target name="configure-compiler">
607 <fail message="ant version too old">
608 <condition>
609 <not> <antversion atleast="1.9.1"/> </not>
610 </condition>
611 </fail>
612
613 <property name="unchecked.option" value="-Xlint:unchecked"/>
614
615 <condition property="warnunchecked.arg" value="${unchecked.option}">
616 <istrue value="${build.warnunchecked}"/>
617 </condition>
618
619 <property name="warnunchecked.arg" value=""/>
620
621
622 <!-- Common options in javac invocations -->
623 <property name="build.args" value="${warnunchecked.arg}"/>
624
625 </target>
626
627
628
629 <!-- Various demos and test programs -->
630
631
632 <!-- description="Benchmark from Doug Lea's AQS paper" -->
633 <target name="loops" depends="configure-compiler">
634
635 <mkdir dir="${build.loops.dir}"/>
636
637 <javac srcdir="${loops.src.dir}"
638 destdir="${build.loops.dir}"
639 debug="${build.debug}"
640 debuglevel="${build.debuglevel}"
641 deprecation="${build.deprecation}"
642 source="${build.sourcelevel}"
643 target="${build.sourcelevel}"
644 encoding="ASCII"
645 fork="true">
646
647 <compilerarg line="${build.args}"/>
648 <classpath refid="loops.classpath"/>
649 <compilerarg value="-XDignore.symbol.file=true"/>
650
651 </javac>
652
653 <java classname="ALoops" fork="true">
654 <classpath refid="loops.classpath"/>
655 </java>
656
657 </target>
658
659
660 <target name="compile-test-loops" depends="jar"
661 description="compile all the perf tests in src/test/loops">
662
663 <mkdir dir="${build.dir}/test/loops"/>
664
665 <javac srcdir="${basedir}/src/test/loops"
666 destdir="${build.dir}/test/loops"
667 debug="${build.debug}"
668 debuglevel="${build.debuglevel}"
669 deprecation="${build.deprecation}"
670 includeAntRuntime="false"
671 includeJavaRuntime="false"
672 encoding="ASCII"
673 executable="${javac9}"
674 fork="true">
675
676 <include name="*.java"/>
677 <compilerarg value="-XDignore.symbol.file=true"/>
678 <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
679 <compilerarg value="-Xbootclasspath/p:${product.jar}"/>
680 <compilerarg line="${build.args}"/>
681
682 </javac>
683
684 </target>
685
686
687 <!-- jsr166 4jdk8 -->
688
689 <target name="4jdk8compile"
690 depends="configure-compiler"
691 description="Compiles src/jdk8 sources, targeting jdk8">
692
693 <mkdir dir="${build.4jdk8.classes.dir}"/>
694
695 <javac srcdir="${4jdk8src.dir}"
696 destdir="${build.4jdk8.classes.dir}"
697 debug="${build.debug}"
698 debuglevel="${build.debuglevel}"
699 deprecation="${build.deprecation}"
700 source="8"
701 target="8"
702 classpath=""
703 bootclasspath="${bootclasspath8}"
704 includeAntRuntime="false"
705 includeJavaRuntime="false"
706 encoding="ASCII"
707 executable="${javac8}"
708 fork="true">
709
710 <include name="**/*.java"/>
711 <compilerarg value="-Xprefer:source"/>
712 <compilerarg value="-XDignore.symbol.file=true"/>
713 <compilerarg value="-Xlint:all"/>
714 <compilerarg value="-Werror"/>
715 <compilerarg line="${build.args}"/>
716
717 </javac>
718 </target>
719
720 <target name="4jdk8doclint"
721 depends="configure-compiler"
722 description="Finds doclint warnings">
723
724 <mkdir dir="${build.4jdk8.classes.dir}"/>
725
726 <javac srcdir="${4jdk8src.dir}"
727 destdir="${build.4jdk8.classes.dir}"
728 debug="${build.debug}"
729 debuglevel="${build.debuglevel}"
730 deprecation="${build.deprecation}"
731 source="8"
732 target="8"
733 classpath=""
734 bootclasspath="${bootclasspath8}"
735 includeAntRuntime="false"
736 includeJavaRuntime="false"
737 encoding="ASCII"
738 executable="${javac8}"
739 fork="true">
740
741 <include name="**/*.java"/>
742 <compilerarg value="-Xprefer:source"/>
743 <compilerarg value="-XDignore.symbol.file=true"/>
744 <compilerarg value="-Xlint:all"/>
745 <compilerarg value="-Xdoclint:all/protected,reference/private"/>
746 <compilerarg line="${build.args}"/>
747
748 </javac>
749 </target>
750
751
752 <target name="4jdk8jar"
753 depends="4jdk8compile"
754 description="Builds library jar from compiled sources">
755
756 <jar destfile="${4jdk8product.jar}">
757 <fileset dir="${build.4jdk8.classes.dir}"/>
758 <manifest>
759 <attribute name="Built-By" value="${user.name}"/>
760 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
761 </manifest>
762 </jar>
763
764 </target>
765
766
767 <target name="4jdk8-tck"
768 depends="4jdk8jar"
769 description="Runs tck tests for jsr166-4jdk8 directly">
770
771 <run-tck-tests
772 target="8"
773 workdir="${build.4jdk8.dir}"
774 classes="${4jdk8product.jar}">
775 <javac-elements>
776 <!-- JDK9+ test classes -->
777 <exclude name="*9Test.java"/>
778 <exclude name="*10Test.java"/>
779 </javac-elements>
780 </run-tck-tests>
781 </target>
782
783
784 <target name="4jdk8-jtreg"
785 depends="4jdk8jar"
786 description="Runs jtreg tests for jsr166-4jdk8 using the jtreg ant task">
787 <run-jtreg-tests
788 target="8"
789 workdir="${build.4jdk8.dir}"
790 classes="${4jdk8product.jar}"/>
791 </target>
792
793
794 <target name="4jdk8-test"
795 depends="4jdk8-tck, 4jdk8-jtreg"
796 description="Runs tck and jtreg tests for jsr166-4jdk8">
797 </target>
798
799
800 <target name="4jdk8docs"
801 description="Builds javadocs for src/jdk8 to dist dir">
802
803 <delete dir="${4jdk8docs.dir}"/>
804 <mkdir dir="${4jdk8docs.dir}"/>
805
806 <javadoc destdir="${4jdk8docs.dir}"
807 packagenames="none"
808 link="${java8.api.url}"
809 overview="${4jdk8src.dir}/intro.html"
810 access="${build.javadoc.access}"
811 sourcepath="${4jdk8src.dir}:${jdk8.src.dir}"
812 classpath=""
813 executable="${javadoc8}"
814 failonerror = "true">
815 <fileset dir="${4jdk8src.dir}" defaultexcludes="yes">
816 <include name="**/*.java"/>
817 </fileset>
818 <arg line="-Xdocrootparent ${java8.docroot.url}"/>
819 <arg value="-XDignore.symbol.file=true"/>
820 <arg value="-tag"/>
821 <arg value="${javadoc.jls.option}"/>
822 <!-- @apiNote currently unused -->
823 <!-- <arg value="-tag"/> -->
824 <!-- <arg value="apiNote:a:&lt;em&gt;API Note:&lt;/em&gt;"/> -->
825 <arg value="-tag"/>
826 <arg value="implSpec:a:&lt;em&gt;Implementation Requirements:&lt;/em&gt;"/>
827 <arg value="-tag"/>
828 <arg value="implNote:a:&lt;em&gt;Implementation Note:&lt;/em&gt;"/>
829 </javadoc>
830 </target>
831
832
833 <target name="4jdk8dist"
834 depends="4jdk8dist-jar, 4jdk8dist-docs"
835 description="Puts all distributable products in single hierarchy"/>
836
837
838 <target name="4jdk8clean"
839 description="Removes all 4jdk8 build products">
840
841 <delete dir="${build.4jdk8.dir}"/>
842
843 </target>
844
845
846 <target name="4jdk8dist-jar"
847 depends="4jdk8clean, 4jdk8jar">
848 <copy file="${4jdk8product.jar}" todir="${dist.dir}"/>
849 </target>
850
851
852 <target name="4jdk8dist-docs"
853 depends="4jdk8clean, 4jdk8docs">
854 <mirror-dir src="${4jdk8docs.dir}" dst="${dist.4jdk8docs.dir}"/>
855 </target>
856
857
858
859 <!-- jsr166 4jdk7 -->
860
861 <target name="4jdk7compile"
862 depends="configure-compiler"
863 description="Compiles src/jdk7 sources, targeting jdk7">
864
865 <mkdir dir="${build.4jdk7.classes.dir}"/>
866
867 <javac srcdir="${4jdk7src.dir}"
868 destdir="${build.4jdk7.classes.dir}"
869 debug="${build.debug}"
870 debuglevel="${build.debuglevel}"
871 deprecation="${build.deprecation}"
872 source="6"
873 target="6"
874 classpath=""
875 bootclasspath="${bootclasspath6}"
876 includeAntRuntime="false"
877 includeJavaRuntime="false"
878 encoding="ASCII"
879 executable="${javac7}"
880 fork="true">
881
882 <include name="**/*.java"/>
883 <compilerarg value="-Xprefer:source"/>
884 <compilerarg value="-XDignore.symbol.file=true"/>
885 <compilerarg value="-Xlint:all"/>
886 <compilerarg value="-Werror"/>
887 <compilerarg line="${build.args}"/>
888
889 </javac>
890 </target>
891
892 <target name="4jdk7doclint"
893 depends="configure-compiler"
894 description="Finds doclint warnings">
895
896 <mkdir dir="${build.4jdk7.classes.dir}"/>
897
898 <javac srcdir="${4jdk7src.dir}"
899 destdir="${build.4jdk7.classes.dir}"
900 debug="${build.debug}"
901 debuglevel="${build.debuglevel}"
902 deprecation="${build.deprecation}"
903 source="6"
904 target="6"
905 classpath=""
906 bootclasspath="${bootclasspath6}"
907 includeAntRuntime="false"
908 includeJavaRuntime="false"
909 encoding="ASCII"
910 executable="${javac8}"
911 fork="true">
912
913 <include name="**/*.java"/>
914 <compilerarg value="-Xprefer:source"/>
915 <compilerarg value="-XDignore.symbol.file=true"/>
916 <compilerarg value="-Xlint:all"/>
917 <compilerarg value="-Xdoclint:all/protected"/>
918 <compilerarg line="${build.args}"/>
919
920 </javac>
921 </target>
922
923
924 <target name="4jdk7jar"
925 depends="4jdk7compile"
926 description="Builds library jar from compiled sources">
927
928 <jar destfile="${4jdk7product.jar}">
929 <fileset dir="${build.4jdk7.classes.dir}"/>
930 <manifest>
931 <attribute name="Built-By" value="${user.name}"/>
932 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
933 </manifest>
934 </jar>
935
936 </target>
937
938
939 <target name="4jdk7-tck"
940 depends="4jdk7jar"
941 description="Runs tck tests for jsr166-4jdk7 directly">
942
943 <run-tck-tests
944 target="7"
945 workdir="${build.4jdk7.dir}"
946 classes="${4jdk7product.jar}">
947 <javac-elements>
948 <!-- JDK8+ test classes -->
949 <exclude name="*8Test.java"/>
950 <exclude name="*9Test.java"/>
951 <exclude name="*10Test.java"/>
952 <exclude name="DoubleAccumulatorTest.java"/>
953 <exclude name="DoubleAdderTest.java"/>
954 <exclude name="LongAccumulatorTest.java"/>
955 <exclude name="LongAdderTest.java"/>
956 <exclude name="CompletableFutureTest.java"/>
957 <exclude name="SplittableRandomTest.java"/>
958 <exclude name="StampedLockTest.java"/>
959 <exclude name="SubmissionPublisherTest.java"/>
960 </javac-elements>
961 </run-tck-tests>
962 </target>
963
964
965 <!-- Runs tck tests for jsr166-4jdk7 via junit task (dead experiment) -->
966 <target name="4jdk7-tck-junit"
967 depends="4jdk7compile">
968
969 <junit printsummary="true"
970 showoutput="true"
971 errorProperty="junit.failed"
972 failureProperty="junit.failed"
973 includeantruntime="true"
974 jvm="${java7}"
975 fork="true">
976
977 <jvmarg value="-Xbootclasspath/p:${4jdk7product.jar}"/>
978 <jvmarg value="-server"/>
979
980 <classpath>
981 <pathelement location="${junit.jar}"/>
982 <pathelement location="${build.4jdk7.tck.classes.dir}"/>
983 </classpath>
984
985 <formatter type="brief"/>
986
987 <test name="${jsr166.tckTestClass}" haltonfailure="no">
988 </test>
989
990 </junit>
991 </target>
992
993 <target name="4jdk7-jtreg"
994 depends="4jdk7jar"
995 description="Runs jtreg tests for jsr166-4jdk7 using the jtreg ant task">
996 <run-jtreg-tests
997 target="7"
998 workdir="${build.4jdk7.dir}"
999 classes="${4jdk7product.jar}"/>
1000 </target>
1001
1002
1003 <target name="4jdk7-test"
1004 depends="4jdk7-tck, 4jdk7-jtreg"
1005 description="Runs tck and jtreg tests for jsr166-4jdk7">
1006 </target>
1007
1008
1009 <target name="4jdk7docs"
1010 description="Builds javadocs for src/jdk7 to dist dir">
1011
1012 <delete dir="${4jdk7docs.dir}"/>
1013 <mkdir dir="${4jdk7docs.dir}"/>
1014
1015 <javadoc destdir="${4jdk7docs.dir}"
1016 packagenames="none"
1017 link="${java7.api.url}"
1018 overview="${4jdk7src.dir}/intro.html"
1019 access="${build.javadoc.access}"
1020 sourcepath="${4jdk7src.dir}:${jdk7.src.dir}"
1021 classpath=""
1022 executable="${javadoc7}"
1023 failonerror = "true">
1024 <fileset dir="${4jdk7src.dir}" defaultexcludes="yes">
1025 <include name="**/*.java"/>
1026 </fileset>
1027 <arg line="-Xdocrootparent ${java7.docroot.url}"/>
1028 <arg value="-XDignore.symbol.file=true"/>
1029 </javadoc>
1030 </target>
1031
1032
1033 <target name="4jdk7dist"
1034 depends="4jdk7dist-jar, 4jdk7dist-docs"
1035 description="Puts all distributable products in single hierarchy"/>
1036
1037
1038 <target name="4jdk7clean"
1039 description="Removes all 4jdk7 build products">
1040
1041 <delete dir="${build.4jdk7.dir}"/>
1042
1043 </target>
1044
1045
1046 <target name="4jdk7dist-jar"
1047 depends="4jdk7clean, 4jdk7jar">
1048 <copy file="${4jdk7product.jar}" todir="${dist.dir}"/>
1049 </target>
1050
1051
1052 <target name="4jdk7dist-docs"
1053 depends="4jdk7clean, 4jdk7docs">
1054 <mirror-dir src="${4jdk7docs.dir}" dst="${dist.4jdk7docs.dir}"/>
1055 </target>
1056
1057
1058 <!-- jsr166x -->
1059
1060 <target name="jsr166xcompile"
1061 depends="configure-compiler"
1062 description="Compiles jsr166x sources to build dir">
1063
1064 <mkdir dir="${build.jsr166x.classes.dir}"/>
1065
1066 <javac srcdir="${topsrc.dir}"
1067 destdir="${build.jsr166x.classes.dir}"
1068 debug="${build.debug}"
1069 debuglevel="${build.debuglevel}"
1070 deprecation="${build.deprecation}"
1071 classpath=""
1072 bootclasspath="${bootclasspath6}"
1073 source="5"
1074 target="5"
1075 includeAntRuntime="false"
1076 includeJavaRuntime="false"
1077 encoding="ASCII"
1078 executable="${javac7}"
1079 fork="true">
1080
1081 <include name="jsr166x/**/*.java"/>
1082 <compilerarg value="-XDignore.symbol.file=true"/>
1083 <compilerarg value="-Xlint:all,-unchecked,-rawtypes"/>
1084 <compilerarg value="-Werror"/>
1085 <compilerarg line="${build.args}"/>
1086
1087 </javac>
1088 </target>
1089
1090
1091 <target name="jsr166xjar"
1092 depends="jsr166xcompile"
1093 description="Builds library jar from compiled sources">
1094
1095 <jar destfile="${jsr166x.jar}">
1096 <fileset dir="${build.jsr166x.classes.dir}"/>
1097 <manifest>
1098 <attribute name="Built-By" value="${user.name}"/>
1099 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1100 </manifest>
1101 </jar>
1102
1103 </target>
1104
1105
1106 <target name="jsr166xdocs"
1107 description="Builds javadocs to dist dir">
1108
1109 <delete dir="${jsr166xdocs.dir}"/>
1110 <mkdir dir="${jsr166xdocs.dir}"/>
1111
1112 <javadoc destdir="${jsr166xdocs.dir}"
1113 packagenames="jsr166x.*"
1114 link="${java.api.url}"
1115 access="${build.javadoc.access}"
1116 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1117 bootclasspath="${bootclasspath6}"
1118 source="5"
1119 executable="${javadoc7}"
1120 failonerror = "true">
1121 <arg line="-Xdocrootparent ${java.docroot.url}"/>
1122 <arg value="-XDignore.symbol.file=true"/>
1123
1124 </javadoc>
1125 </target>
1126
1127
1128 <target name="jsr166xdist"
1129 depends="jsr166xdist-jar, jsr166xdist-docs"
1130 description="Puts all distributable products in single hierarchy"/>
1131
1132
1133 <target name="jsr166xclean"
1134 description="Removes all jsr166x build products">
1135
1136 <delete dir="${build.jsr166x.dir}"/>
1137
1138 </target>
1139
1140
1141 <target name="jsr166xdist-jar"
1142 depends="jsr166xclean, jsr166xjar">
1143 <copy file="${jsr166x.jar}" todir="${dist.dir}"/>
1144 </target>
1145
1146 <target name="jsr166xdist-docs"
1147 depends="jsr166xclean, jsr166xdocs">
1148 <mirror-dir src="${jsr166xdocs.dir}" dst="${dist.jsr166xdocs.dir}"/>
1149 </target>
1150
1151 <!-- jsr166y -->
1152
1153
1154 <target name="jsr166ycompile"
1155 depends="configure-compiler"
1156 description="Compiles jsr166y sources">
1157
1158 <mkdir dir="${build.jsr166y.classes.dir}"/>
1159
1160 <javac srcdir="${topsrc.dir}"
1161 destdir="${build.jsr166y.classes.dir}"
1162 debug="${build.debug}"
1163 debuglevel="${build.debuglevel}"
1164 deprecation="${build.deprecation}"
1165 source="6"
1166 target="6"
1167 classpath=""
1168 bootclasspath="${bootclasspath6}"
1169 includeAntRuntime="false"
1170 includeJavaRuntime="false"
1171 encoding="ASCII"
1172 executable="${javac7}"
1173 fork="true">
1174
1175 <include name="jsr166y/**/*.java"/>
1176 <compilerarg value="-XDignore.symbol.file=true"/>
1177 <compilerarg value="-Xlint:all"/>
1178 <compilerarg value="-Werror"/>
1179 <compilerarg line="${build.args}"/>
1180
1181 </javac>
1182 </target>
1183
1184
1185 <target name="jsr166yjar"
1186 depends="jsr166ycompile"
1187 description="Builds library jar from compiled sources">
1188
1189 <jar destfile="${jsr166y.jar}" index="true">
1190 <fileset dir="${build.jsr166y.classes.dir}"/>
1191 <manifest>
1192 <attribute name="Built-By" value="${user.name}"/>
1193 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1194 </manifest>
1195 </jar>
1196
1197 </target>
1198
1199
1200 <target name="jsr166ydocs"
1201 description="Builds javadocs to dist dir">
1202
1203 <delete dir="${jsr166ydocs.dir}"/>
1204 <mkdir dir="${jsr166ydocs.dir}"/>
1205
1206 <javadoc destdir="${jsr166ydocs.dir}"
1207 packagenames="jsr166y.*"
1208 link="${java.api.url}"
1209 access="${build.javadoc.access}"
1210 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1211 bootclasspath="${bootclasspath6}"
1212 source="6"
1213 executable="${javadoc7}"
1214 failonerror = "true">
1215 <arg line="-Xdocrootparent ${java.docroot.url}"/>
1216 <arg value="-XDignore.symbol.file=true"/>
1217
1218 </javadoc>
1219 </target>
1220
1221
1222 <target name="jsr166ydist"
1223 depends="jsr166ydist-jar, jsr166ydist-docs"
1224 description="Puts all distributable products in single hierarchy"/>
1225
1226
1227 <target name="jsr166yclean"
1228 description="Removes all jsr166y build products">
1229
1230 <delete dir="${build.jsr166y.dir}"/>
1231
1232 </target>
1233
1234
1235 <target name="jsr166ydist-jar"
1236 depends="jsr166yclean, jsr166yjar">
1237 <copy file="${jsr166y.jar}" todir="${dist.dir}"/>
1238 </target>
1239
1240 <target name="jsr166ydist-docs"
1241 depends="jsr166yclean, jsr166ydocs">
1242 <mirror-dir src="${jsr166ydocs.dir}" dst="${dist.jsr166ydocs.dir}"/>
1243 </target>
1244
1245
1246 <!-- extra166y -->
1247
1248
1249 <target name="extra166ycompile"
1250 depends="configure-compiler, jsr166yjar"
1251 description="Compiles extra166y sources">
1252
1253 <mkdir dir="${build.extra166y.classes.dir}"/>
1254
1255 <javac srcdir="${topsrc.dir}"
1256 destdir="${build.extra166y.classes.dir}"
1257 debug="${build.debug}"
1258 debuglevel="${build.debuglevel}"
1259 deprecation="${build.deprecation}"
1260 bootclasspath="@{jsr166y.jar}:${bootclasspath6}"
1261 classpath=""
1262 source="6"
1263 target="6"
1264 includeAntRuntime="false"
1265 includeJavaRuntime="false"
1266 encoding="ASCII"
1267 executable="${javac7}"
1268 fork="true">
1269
1270 <include name="extra166y/**/*.java"/>
1271 <compilerarg value="-XDignore.symbol.file=true"/>
1272 <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
1273 <compilerarg value="-Werror"/>
1274 <compilerarg line="${build.args}"/>
1275
1276 </javac>
1277 </target>
1278
1279
1280 <target name="extra166yjar"
1281 depends="extra166ycompile"
1282 description="Builds library jar from compiled sources">
1283
1284 <jar destfile="${extra166y.jar}" index="true">
1285 <fileset dir="${build.extra166y.classes.dir}"/>
1286 <manifest>
1287 <attribute name="Built-By" value="${user.name}"/>
1288 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1289 </manifest>
1290 </jar>
1291
1292 </target>
1293
1294
1295 <target name="extra166ydocs"
1296 description="Builds javadocs to build dir">
1297
1298 <delete dir="${extra166ydocs.dir}"/>
1299 <mkdir dir="${extra166ydocs.dir}"/>
1300
1301 <javadoc destdir="${extra166ydocs.dir}"
1302 packagenames="extra166y.*"
1303 link="${java.api.url}"
1304 access="${build.javadoc.access}"
1305 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1306 bootclasspath="${bootclasspath6}"
1307 source="6"
1308 executable="${javadoc7}">
1309 <arg line="-Xdocrootparent ${java.docroot.url}"/>
1310 <arg value="-XDignore.symbol.file=true"/>
1311
1312 </javadoc>
1313 </target>
1314
1315
1316 <target name="extra166ydist"
1317 depends="extra166ydist-jar, extra166ydist-docs"
1318 description="Puts all distributable products in single hierarchy"/>
1319
1320
1321 <target name="extra166yclean"
1322 description="Removes all extra166y build products">
1323
1324 <delete dir="${build.extra166y.dir}"/>
1325
1326 </target>
1327
1328
1329 <target name="extra166ydist-jar"
1330 depends="extra166yclean, extra166yjar">
1331 <copy file="${extra166y.jar}" todir="${dist.dir}"/>
1332 </target>
1333
1334 <target name="extra166ydist-docs"
1335 depends="extra166yclean, extra166ydocs">
1336 <mirror-dir src="${extra166ydocs.dir}" dst="${dist.extra166ydocs.dir}"/>
1337 </target>
1338
1339 <!-- jsr166e -->
1340
1341 <property name="build.jsr166e.java.version" value="6"/>
1342 <property name="build.jsr166e.javac" value="${javac6}"/>
1343
1344 <target name="jsr166ecompile"
1345 depends="configure-compiler"
1346 description="Compiles jsr166e sources">
1347
1348 <mkdir dir="${build.jsr166e.classes.dir}"/>
1349
1350 <javac srcdir="${topsrc.dir}"
1351 destdir="${build.jsr166e.classes.dir}"
1352 debug="${build.debug}"
1353 debuglevel="${build.debuglevel}"
1354 deprecation="${build.deprecation}"
1355 source="${build.jsr166e.java.version}"
1356 target="${build.jsr166e.java.version}"
1357 classpath=""
1358 includeAntRuntime="false"
1359 includeJavaRuntime="false"
1360 executable="${build.jsr166e.javac}"
1361 fork="true">
1362
1363 <include name="jsr166e/**/*.java"/>
1364 <compilerarg value="-XDignore.symbol.file=true"/>
1365 <compilerarg value="-Xlint:all"/>
1366 <compilerarg value="-Werror"/>
1367 <compilerarg line="${build.args}"/>
1368
1369 </javac>
1370 </target>
1371
1372 <!-- jsr166e: find doclint errors -->
1373 <target name="jsr166edoclint">
1374
1375 <mkdir dir="${build.jsr166e.classes.dir}"/>
1376
1377 <javac srcdir="${topsrc.dir}"
1378 destdir="${build.jsr166e.classes.dir}"
1379 debug="${build.debug}"
1380 debuglevel="${build.debuglevel}"
1381 deprecation="${build.deprecation}"
1382 source="${build.jsr166e.java.version}"
1383 target="${build.jsr166e.java.version}"
1384 classpath=""
1385 bootclasspath="${bootclasspath6}"
1386 includeAntRuntime="false"
1387 includeJavaRuntime="false"
1388 executable="${javac8}"
1389 fork="true">
1390
1391 <include name="jsr166e/**/*.java"/>
1392 <compilerarg value="-XDignore.symbol.file=true"/>
1393 <compilerarg value="-Xlint:all"/>
1394 <compilerarg value="-Werror"/>
1395 <compilerarg value="-Xdoclint:all/protected"/>
1396
1397 </javac>
1398 </target>
1399
1400
1401 <target name="jsr166ejar"
1402 depends="jsr166ecompile"
1403 description="Builds library jar from compiled sources">
1404
1405 <jar destfile="${jsr166e.jar}" index="true">
1406 <fileset dir="${build.jsr166e.classes.dir}"/>
1407 <manifest>
1408 <attribute name="Built-By" value="${user.name}"/>
1409 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1410 </manifest>
1411 </jar>
1412
1413 </target>
1414
1415
1416 <target name="jsr166edocs"
1417 description="Builds javadocs to build dir">
1418
1419 <delete dir="${jsr166edocs.dir}"/>
1420 <mkdir dir="${jsr166edocs.dir}"/>
1421
1422 <javadoc destdir="${jsr166edocs.dir}"
1423 packagenames="jsr166e.*"
1424 link="${java.api.url}"
1425 access="${build.javadoc.access}"
1426 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1427 source="${build.jsr166e.java.version}"
1428 executable="${javadoc7}"
1429 failonerror = "true">
1430 <arg line="-Xdocrootparent ${java.docroot.url}"/>
1431 <arg value="-XDignore.symbol.file=true"/>
1432
1433 </javadoc>
1434 </target>
1435
1436
1437 <target name="jsr166e-tck-one-java-version"
1438 depends="jsr166ejar">
1439
1440 <echo message="Testing with jdk${build.jsr166e.java.version} ..."/>
1441
1442 <run-tck-tests
1443 tck.src.dir="${test.src.dir}/tck-jsr166e"
1444 target="${build.jsr166e.java.version}"
1445 workdir="${build.jsr166e.dir}"
1446 classes="${jsr166e.jar}"/>
1447 </target>
1448
1449 <target name="jsr166e-tck"
1450 description="Runs tck tests for jsr166e for multiple java versions">
1451
1452 <!-- <antcall target="clean"/> -->
1453 <!-- <antcall target="jsr166e-tck-one-java-version"> -->
1454 <!-- <param name="build.jsr166e.java.version" value="8"/> -->
1455 <!-- <param name="build.jsr166e.javac" value="${javac8}"/> -->
1456 <!-- </antcall> -->
1457
1458 <antcall target="clean"/>
1459 <antcall target="jsr166e-tck-one-java-version">
1460 <param name="build.jsr166e.java.version" value="7"/>
1461 <param name="build.jsr166e.javac" value="${javac7}"/>
1462 </antcall>
1463
1464 <antcall target="clean"/>
1465 <antcall target="jsr166e-tck-one-java-version">
1466 <param name="build.jsr166e.java.version" value="6"/>
1467 <param name="build.jsr166e.javac" value="${javac6}"/>
1468 </antcall>
1469 </target>
1470
1471
1472 <target name="jsr166e-test"
1473 depends="jsr166e-tck"
1474 description="Runs all tests for jsr166e">
1475 </target>
1476
1477 <target name="jsr166edist"
1478 depends="jsr166edist-jar, jsr166edist-docs"
1479 description="Puts all distributable products in single hierarchy"/>
1480
1481
1482 <target name="jsr166eclean"
1483 description="Removes all jsr166e build products">
1484 <delete dir="${build.jsr166e.dir}"/>
1485 </target>
1486
1487
1488 <target name="jsr166edist-jar"
1489 depends="jsr166eclean, jsr166ejar">
1490 <copy file="${jsr166e.jar}" todir="${dist.dir}"/>
1491 </target>
1492
1493 <target name="jsr166edist-docs"
1494 depends="jsr166eclean, jsr166edocs">
1495 <mirror-dir src="${jsr166edocs.dir}" dst="${dist.jsr166edocs.dir}"/>
1496 </target>
1497
1498
1499 <!-- Find buglets that can be detected by static build tools -->
1500
1501 <target name="lint">
1502 <antcall target="dists">
1503 <param name="build.javadoc.access" value="public"/>
1504 </antcall>
1505 </target>
1506
1507 <!-- Generates all doclint warnings, even for private methods (rarely useful) -->
1508 <target name="lint-private">
1509 <antcall target="dist">
1510 <param name="build.javadoc.access" value="private"/>
1511 </antcall>
1512 </target>
1513
1514 <!-- ==============================================================
1515 Running guava tests against jsr166 code
1516 =================================================================== -->
1517
1518 <!-- <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" -->
1519 <!-- organisation="com.google.guava" module="guava-testlib" revision="21.0"/> -->
1520 <!-- <property name="guava.version" value="21.0"/> -->
1521
1522 <!-- HOWTO debug print a path id -->
1523 <!-- <pathconvert property="guava.testlib.classpath" refid="guava.testlib.classpath" /> -->
1524 <!-- <echo message="guava.testlib.classpath=${guava.testlib.classpath}"/> -->
1525
1526 <!-- <ivy:retrieve pathid="guava.tests.classpath" type="jar" inline="true" conf="*" pattern="${lib.dir}/[type]/[artifact].[ext]" -->
1527 <!-- organisation="com.google.guava" module="guava-tests"/> -->
1528 <!-- <get src="http://repo2.maven.org/maven2/com/google/guava/guava-tests/${guava.version}/guava-tests-${guava.version}-tests.jar" -->
1529 <!-- dest="${lib.dir}/jar/guava-tests-tests.jar" usetimestamp="true"/> -->
1530 <!-- <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" type="*" -->
1531 <!-- organisation="com.google.guava" module="guava-testlib" revision="${guava.version}"/> -->
1532
1533 <!-- <test name="com.google.common.collect.testing.TestsForQueuesInJavaUtil"/> -->
1534 <!-- <test name="com.google.common.collect.testing.TestsForListsInJavaUtil"/> -->
1535 <!-- <test name="com.google.common.collect.testing.TestsForSetsInJavaUtil"/> -->
1536 <!-- <test name="com.google.common.collect.testing.TestsForMapsInJavaUtil"/> -->
1537
1538 <!-- <ivy:retrieve pathid="guava.testlib.classpath" -->
1539 <!-- type="*" inline="true" conf="*(private),*(public)" -->
1540 <!-- pattern="${guava.dir}/[artifact].[ext]" -->
1541 <!-- organisation="com.google.guava" module="guava-testlib"/> -->
1542
1543 <!-- Work around bug below by downloading guava-testlib-tests.jar "by hand": -->
1544 <!-- https://issues.apache.org/jira/browse/IVY-1444 -->
1545 <!-- maven tests artifacts cannot be downloaded because they are mapped to private configurations -->
1546
1547 <target name="init-ivy">
1548 <get src="http://repo2.maven.org/maven2/org/apache/ivy/ivy/2.4.0/ivy-2.4.0.jar"
1549 dest="${build.dir}/ivy.jar" usetimestamp="true" skipexisting="true"/>
1550 <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant"
1551 classpath="${build.dir}/ivy.jar"/>
1552 </target>
1553
1554 <target name="guava-tests" depends="jar, init-ivy"
1555 description="Guava tests run against jsr166 collections">
1556 <property name="guava.dir" value="${build.dir}/guava-testlib"/>
1557 <mkdir dir="${guava.dir}"/>
1558 <ivy:retrieve pathid="guava.testlib.classpath"
1559 type="jar,bundle" inline="true" conf="default,master"
1560 pattern="${guava.dir}/[artifact].[ext]"
1561 organisation="com.google.guava" module="guava-testlib"/>
1562 <property name="guava.version" value="21.0"/>
1563 <get src="http://repo2.maven.org/maven2/com/google/guava/guava-testlib/${guava.version}/guava-testlib-${guava.version}-tests.jar"
1564 dest="${guava.dir}/guava-testlib-tests.jar" usetimestamp="true"/>
1565 <junit printsummary="true" showoutput="true" haltonfailure="true"
1566 jvm="${java9}" fork="true">
1567 <jvmarg line="-ea -esa --patch-module java.base=${product.jar}"/>
1568 <formatter type="brief"/>
1569 <classpath>
1570 <pathelement location="${guava.dir}/guava-testlib-tests.jar"/>
1571 <path refid="guava.testlib.classpath"/>
1572 </classpath>
1573
1574 <!-- "6" in "OpenJdk6Tests" misleadingly means "6+" -->
1575 <test name="com.google.common.collect.testing.OpenJdk6Tests"/>
1576 </junit>
1577 </target>
1578
1579 </project>