ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.243
Committed: Sat May 13 20:16:55 2017 UTC (6 years, 11 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.242: +3 -1 lines
Log Message:
switch to html5 docs for jdk9+

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