ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.245
Committed: Fri Jun 16 20:50:16 2017 UTC (6 years, 10 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.244: +0 -1 lines
Log Message:
run-jtreg-tests: remove unused @source attribute

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="target"/>
323 <attribute name="workdir"/>
324 <attribute name="classes"/>
325 <attribute name="jtregflags" default=""/>
326
327 <sequential>
328
329 <!-- ant -Djtreg.verbose=time,fail,error jtreg -->
330 <property name="jtreg.verbose" value="nopass,fail,error"/>
331
332 <local name="modules"/>
333 <condition property="modules">
334 <available file="${jdk@{target}.home}/jmods" type="dir"/>
335 </condition>
336
337 <delete dir="@{workdir}/JTwork" quiet="true"/>
338 <jtreg dir="${jtreg@{target}.src.dir}"
339 jdk="${jdk@{target}.home}"
340 workDir="@{workdir}/JTwork">
341 <patternset refid="jdk@{target}.jtreg.tests"/>
342 <arg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
343 <arg value="-javacoptions:--patch-module java.base=@{classes}" if:set="modules"/>
344 <arg value="-vmoptions:--patch-module java.base=@{classes}" if:set="modules"/>
345 <arg value="-agentvm"/>
346 <arg value="-noreport"/>
347 <arg value="-verbose:${jtreg.verbose}"/>
348 <arg value="-vmoptions:-esa -ea"/>
349 <arg value="-automatic"/>
350 <arg value="-k:!ignore"/>
351 <arg line="@{jtregflags}"/>
352 <arg line="${jtreg.flags}"/>
353 </jtreg>
354 </sequential>
355 </macrodef>
356
357 <!-- ALoops classpath -->
358 <path id="loops.classpath">
359 <pathelement location="${build.loops.dir}"/>
360 </path>
361
362 <!-- Support @jls tag, used in jdk8+ javadoc -->
363 <property name="javadoc.jls.cite" value="The Java&amp;trade; Language Specification"/>
364 <property name="javadoc.jls.option" value="jls:a:See &lt;cite&gt;${javadoc.jls.cite}&lt;/cite&gt;:"/>
365
366 <!-- Main targets -->
367
368 <property name="build.main.java.version" value="9"/>
369 <property name="build.main.javac" value="${javac9}"/>
370
371 <target name="dists"
372 depends="dist, 4jdk8dist"
373 description="Builds all public jars and docs"/>
374 <!--
375 depends="dist, 4jdk8dist, 4jdk7dist, jsr166edist, jsr166ydist, extra166ydist, jsr166xdist"
376 -->
377
378 <target name="compile"
379 depends="configure-compiler"
380 description="Compiles src/main sources to build dir">
381
382 <local name="modules"/>
383 <condition property="modules">
384 <and>
385 <available file="${jdk9.home}/jmods" type="dir"/>
386 <equals arg1="9" arg2="${build.main.java.version}"/>
387 </and>
388 </condition>
389
390 <local name="destdir"/>
391 <property name="destdir" value="${build.classes.dir}/java.base" if:set="modules"/>
392 <property name="destdir" value="${build.classes.dir}" unless:set="modules"/>
393
394 <mkdir dir="${destdir}"/>
395
396 <javac srcdir="${src.dir}"
397 destdir="${destdir}"
398 debug="${build.debug}"
399 debuglevel="${build.debuglevel}"
400 deprecation="${build.deprecation}"
401 classpath=""
402 includeAntRuntime="false"
403 includeJavaRuntime="false"
404 encoding="ASCII"
405 executable="${build.main.javac}"
406 fork="true">
407
408 <include name="**/*.java"/>
409 <compilerarg value="--patch-module=java.base=${src.dir}" if:set="modules"/>
410 <compilerarg value="-Xprefer:source"/>
411 <compilerarg value="-XDignore.symbol.file=true"/>
412 <compilerarg value="-Xlint:all"/>
413 <compilerarg line="--doclint-format html5"/>
414 <compilerarg value="-Xdoclint:all/protected,reference/private"/>
415 <compilerarg value="-Werror"/>
416 <compilerarg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
417 <compilerarg line="${build.args}"/>
418
419 </javac>
420 </target>
421
422
423 <target name="jar"
424 depends="compile"
425 description="Builds library jar for src/main from compiled sources">
426 <local name="subdir"/>
427 <available property="subdir" file="${build.classes.dir}/java.base" type="dir" value="/java.base"/>
428 <jar destfile="${product.jar}">
429 <fileset dir="${build.classes.dir}${subdir}"/>
430 <manifest>
431 <attribute name="Built-By" value="${user.name}"/>
432 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
433 </manifest>
434 </jar>
435 </target>
436
437
438 <target name="docs"
439 description="Builds javadocs for src/main to dist dir">
440
441 <delete dir="${docs.dir}"/>
442 <mkdir dir="${docs.dir}"/>
443
444 <!-- the packagenames="none" hack below prevents scanning the -->
445 <!-- sourcepath for packages -->
446
447 <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}" -->
448 <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}:${jdk9.src.home}/jdk/src/java.logging/share/classes" -->
449 <!-- TODO: sourcepath="${src.dir}:${jdk9.home}/src.zip" -->
450 <!-- TODO: <arg line="-sourcepath ${src.dir}:${jdk9.home}/src.zip"/> -->
451 <!-- TODO: <arg line="- -module-source-path ${jdk9.home}/src.zip"/> -->
452 <javadoc destdir="${docs.dir}"
453 packagenames="none"
454 link="${java9.api.url}"
455 overview="${src.dir}/intro.html"
456 access="${build.javadoc.access}"
457 sourcepath="${src.dir}"
458 classpath=""
459 source="9"
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 source="8"
811 executable="${javadoc8}"
812 failonerror = "true">
813 <fileset dir="${4jdk8src.dir}" defaultexcludes="yes">
814 <include name="**/*.java"/>
815 </fileset>
816 <arg line="-Xdocrootparent ${java8.docroot.url}"/>
817 <arg value="-XDignore.symbol.file=true"/>
818 <arg value="-tag"/>
819 <arg value="${javadoc.jls.option}"/>
820 <!-- @apiNote currently unused -->
821 <!-- <arg value="-tag"/> -->
822 <!-- <arg value="apiNote:a:&lt;em&gt;API Note:&lt;/em&gt;"/> -->
823 <arg value="-tag"/>
824 <arg value="implSpec:a:&lt;em&gt;Implementation Requirements:&lt;/em&gt;"/>
825 <arg value="-tag"/>
826 <arg value="implNote:a:&lt;em&gt;Implementation Note:&lt;/em&gt;"/>
827 </javadoc>
828 </target>
829
830
831 <target name="4jdk8dist"
832 depends="4jdk8dist-jar, 4jdk8dist-docs"
833 description="Puts all distributable products in single hierarchy"/>
834
835
836 <target name="4jdk8clean"
837 description="Removes all 4jdk8 build products">
838 <delete dir="${build.4jdk8.dir}"/>
839 </target>
840
841
842 <target name="4jdk8dist-jar"
843 depends="4jdk8clean, 4jdk8jar">
844 <copy file="${4jdk8product.jar}" todir="${dist.dir}"/>
845 </target>
846
847
848 <target name="4jdk8dist-docs"
849 depends="4jdk8clean, 4jdk8docs">
850 <mirror-dir src="${4jdk8docs.dir}" dst="${dist.4jdk8docs.dir}"/>
851 </target>
852
853
854 <!-- jsr166 4jdk7 (no longer maintained) -->
855
856 <target name="4jdk7compile" depends="configure-compiler">
857 <mkdir dir="${build.4jdk7.classes.dir}"/>
858
859 <javac srcdir="${4jdk7src.dir}"
860 destdir="${build.4jdk7.classes.dir}"
861 debug="${build.debug}"
862 debuglevel="${build.debuglevel}"
863 deprecation="${build.deprecation}"
864 source="6"
865 target="6"
866 classpath=""
867 bootclasspath="${bootclasspath6}"
868 includeAntRuntime="false"
869 includeJavaRuntime="false"
870 encoding="ASCII"
871 executable="${javac7}"
872 fork="true">
873
874 <include name="**/*.java"/>
875 <compilerarg value="-Xprefer:source"/>
876 <compilerarg value="-XDignore.symbol.file=true"/>
877 <compilerarg value="-Xlint:all"/>
878 <compilerarg value="-Werror"/>
879 <compilerarg line="${build.args}"/>
880 </javac>
881 </target>
882
883 <target name="4jdk7doclint" depends="configure-compiler">
884 <mkdir dir="${build.4jdk7.classes.dir}"/>
885
886 <javac srcdir="${4jdk7src.dir}"
887 destdir="${build.4jdk7.classes.dir}"
888 debug="${build.debug}"
889 debuglevel="${build.debuglevel}"
890 deprecation="${build.deprecation}"
891 source="6"
892 target="6"
893 classpath=""
894 bootclasspath="${bootclasspath6}"
895 includeAntRuntime="false"
896 includeJavaRuntime="false"
897 encoding="ASCII"
898 executable="${javac8}"
899 fork="true">
900
901 <include name="**/*.java"/>
902 <compilerarg value="-Xprefer:source"/>
903 <compilerarg value="-XDignore.symbol.file=true"/>
904 <compilerarg value="-Xlint:all"/>
905 <compilerarg value="-Xdoclint:all/protected"/>
906 <compilerarg line="${build.args}"/>
907 </javac>
908 </target>
909
910 <target name="4jdk7jar" depends="4jdk7compile">
911 <jar destfile="${4jdk7product.jar}">
912 <fileset dir="${build.4jdk7.classes.dir}"/>
913 <manifest>
914 <attribute name="Built-By" value="${user.name}"/>
915 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
916 </manifest>
917 </jar>
918 </target>
919
920 <target name="4jdk7-tck" depends="4jdk7jar">
921 <run-tck-tests
922 target="7"
923 workdir="${build.4jdk7.dir}"
924 classes="${4jdk7product.jar}">
925 <javac-elements>
926 <!-- JDK8+ test classes -->
927 <exclude name="*8Test.java"/>
928 <exclude name="*9Test.java"/>
929 <exclude name="*10Test.java"/>
930 <exclude name="DoubleAccumulatorTest.java"/>
931 <exclude name="DoubleAdderTest.java"/>
932 <exclude name="LongAccumulatorTest.java"/>
933 <exclude name="LongAdderTest.java"/>
934 <exclude name="CompletableFutureTest.java"/>
935 <exclude name="SplittableRandomTest.java"/>
936 <exclude name="StampedLockTest.java"/>
937 <exclude name="SubmissionPublisherTest.java"/>
938 <compilerarg value="-Werror"/>
939 </javac-elements>
940 </run-tck-tests>
941 </target>
942
943 <!-- Runs tck tests for jsr166-4jdk7 via junit task (dead experiment) -->
944 <target name="4jdk7-tck-junit" depends="4jdk7compile">
945
946 <junit printsummary="true"
947 showoutput="true"
948 errorProperty="junit.failed"
949 failureProperty="junit.failed"
950 includeantruntime="true"
951 jvm="${java7}"
952 fork="true">
953
954 <jvmarg value="-Xbootclasspath/p:${4jdk7product.jar}"/>
955 <jvmarg value="-server"/>
956
957 <classpath>
958 <pathelement location="${junit.jar}"/>
959 <pathelement location="${build.4jdk7.tck.classes.dir}"/>
960 </classpath>
961
962 <formatter type="brief"/>
963
964 <test name="${jsr166.tckTestClass}" haltonfailure="no">
965 </test>
966 </junit>
967 </target>
968
969 <target name="4jdk7-jtreg" depends="4jdk7jar">
970 <run-jtreg-tests
971 target="7"
972 workdir="${build.4jdk7.dir}"
973 classes="${4jdk7product.jar}"/>
974 </target>
975
976 <target name="4jdk7-test" depends="4jdk7-tck, 4jdk7-jtreg"/>
977
978 <target name="4jdk7docs">
979 <delete dir="${4jdk7docs.dir}"/>
980 <mkdir dir="${4jdk7docs.dir}"/>
981
982 <javadoc destdir="${4jdk7docs.dir}"
983 packagenames="none"
984 link="${java7.api.url}"
985 overview="${4jdk7src.dir}/intro.html"
986 access="${build.javadoc.access}"
987 sourcepath="${4jdk7src.dir}:${jdk7.src.dir}"
988 classpath=""
989 executable="${javadoc7}"
990 failonerror = "true">
991 <fileset dir="${4jdk7src.dir}" defaultexcludes="yes">
992 <include name="**/*.java"/>
993 </fileset>
994 <arg line="-Xdocrootparent ${java7.docroot.url}"/>
995 <arg value="-XDignore.symbol.file=true"/>
996 </javadoc>
997 </target>
998
999 <target name="4jdk7dist" depends="4jdk7dist-jar, 4jdk7dist-docs"/>
1000
1001 <target name="4jdk7clean">
1002 <delete dir="${build.4jdk7.dir}"/>
1003 </target>
1004
1005 <target name="4jdk7dist-jar" depends="4jdk7clean, 4jdk7jar">
1006 <copy file="${4jdk7product.jar}" todir="${dist.dir}"/>
1007 </target>
1008
1009 <target name="4jdk7dist-docs" depends="4jdk7clean, 4jdk7docs">
1010 <mirror-dir src="${4jdk7docs.dir}" dst="${dist.4jdk7docs.dir}"/>
1011 </target>
1012
1013
1014 <!-- jsr166x (no longer maintained) -->
1015
1016 <target name="jsr166xcompile" depends="configure-compiler">
1017 <mkdir dir="${build.jsr166x.classes.dir}"/>
1018
1019 <javac srcdir="${topsrc.dir}"
1020 destdir="${build.jsr166x.classes.dir}"
1021 debug="${build.debug}"
1022 debuglevel="${build.debuglevel}"
1023 deprecation="${build.deprecation}"
1024 classpath=""
1025 bootclasspath="${bootclasspath6}"
1026 source="5"
1027 target="5"
1028 includeAntRuntime="false"
1029 includeJavaRuntime="false"
1030 encoding="ASCII"
1031 executable="${javac7}"
1032 fork="true">
1033 <include name="jsr166x/**/*.java"/>
1034 <compilerarg value="-XDignore.symbol.file=true"/>
1035 <compilerarg value="-Xlint:all,-unchecked,-rawtypes"/>
1036 <compilerarg value="-Werror"/>
1037 <compilerarg line="${build.args}"/>
1038 </javac>
1039 </target>
1040
1041 <target name="jsr166xjar" depends="jsr166xcompile">
1042 <jar destfile="${jsr166x.jar}">
1043 <fileset dir="${build.jsr166x.classes.dir}"/>
1044 <manifest>
1045 <attribute name="Built-By" value="${user.name}"/>
1046 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1047 </manifest>
1048 </jar>
1049 </target>
1050
1051 <target name="jsr166xdocs">
1052 <delete dir="${jsr166xdocs.dir}"/>
1053 <mkdir dir="${jsr166xdocs.dir}"/>
1054
1055 <javadoc destdir="${jsr166xdocs.dir}"
1056 packagenames="jsr166x.*"
1057 link="${java.api.url}"
1058 access="${build.javadoc.access}"
1059 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1060 bootclasspath="${bootclasspath6}"
1061 source="5"
1062 executable="${javadoc7}"
1063 failonerror = "true">
1064 <arg line="-Xdocrootparent ${java.docroot.url}"/>
1065 <arg value="-XDignore.symbol.file=true"/>
1066 </javadoc>
1067 </target>
1068
1069 <target name="jsr166xdist" depends="jsr166xdist-jar, jsr166xdist-docs"/>
1070
1071 <target name="jsr166xclean">
1072 <delete dir="${build.jsr166x.dir}"/>
1073 </target>
1074
1075 <target name="jsr166xdist-jar" depends="jsr166xclean, jsr166xjar">
1076 <copy file="${jsr166x.jar}" todir="${dist.dir}"/>
1077 </target>
1078
1079 <target name="jsr166xdist-docs" depends="jsr166xclean, jsr166xdocs">
1080 <mirror-dir src="${jsr166xdocs.dir}" dst="${dist.jsr166xdocs.dir}"/>
1081 </target>
1082
1083
1084 <!-- jsr166y (no longer maintained) -->
1085
1086 <target name="jsr166ycompile" depends="configure-compiler">
1087 <mkdir dir="${build.jsr166y.classes.dir}"/>
1088
1089 <javac srcdir="${topsrc.dir}"
1090 destdir="${build.jsr166y.classes.dir}"
1091 debug="${build.debug}"
1092 debuglevel="${build.debuglevel}"
1093 deprecation="${build.deprecation}"
1094 source="6"
1095 target="6"
1096 classpath=""
1097 bootclasspath="${bootclasspath6}"
1098 includeAntRuntime="false"
1099 includeJavaRuntime="false"
1100 encoding="ASCII"
1101 executable="${javac7}"
1102 fork="true">
1103
1104 <include name="jsr166y/**/*.java"/>
1105 <compilerarg value="-XDignore.symbol.file=true"/>
1106 <compilerarg value="-Xlint:all"/>
1107 <compilerarg value="-Werror"/>
1108 <compilerarg line="${build.args}"/>
1109 </javac>
1110 </target>
1111
1112 <target name="jsr166yjar" depends="jsr166ycompile">
1113 <jar destfile="${jsr166y.jar}" index="true">
1114 <fileset dir="${build.jsr166y.classes.dir}"/>
1115 <manifest>
1116 <attribute name="Built-By" value="${user.name}"/>
1117 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1118 </manifest>
1119 </jar>
1120 </target>
1121
1122 <target name="jsr166ydocs">
1123 <delete dir="${jsr166ydocs.dir}"/>
1124 <mkdir dir="${jsr166ydocs.dir}"/>
1125
1126 <javadoc destdir="${jsr166ydocs.dir}"
1127 packagenames="jsr166y.*"
1128 link="${java.api.url}"
1129 access="${build.javadoc.access}"
1130 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1131 bootclasspath="${bootclasspath6}"
1132 source="6"
1133 executable="${javadoc7}"
1134 failonerror = "true">
1135 <arg line="-Xdocrootparent ${java.docroot.url}"/>
1136 <arg value="-XDignore.symbol.file=true"/>
1137 </javadoc>
1138 </target>
1139
1140 <target name="jsr166ydist" depends="jsr166ydist-jar, jsr166ydist-docs"/>
1141
1142 <target name="jsr166yclean">
1143 <delete dir="${build.jsr166y.dir}"/>
1144 </target>
1145
1146 <target name="jsr166ydist-jar" depends="jsr166yclean, jsr166yjar">
1147 <copy file="${jsr166y.jar}" todir="${dist.dir}"/>
1148 </target>
1149
1150 <target name="jsr166ydist-docs" depends="jsr166yclean, jsr166ydocs">
1151 <mirror-dir src="${jsr166ydocs.dir}" dst="${dist.jsr166ydocs.dir}"/>
1152 </target>
1153
1154
1155 <!-- extra166y (no longer maintained) -->
1156
1157 <target name="extra166ycompile" depends="configure-compiler, jsr166yjar">
1158 <mkdir dir="${build.extra166y.classes.dir}"/>
1159
1160 <javac srcdir="${topsrc.dir}"
1161 destdir="${build.extra166y.classes.dir}"
1162 debug="${build.debug}"
1163 debuglevel="${build.debuglevel}"
1164 deprecation="${build.deprecation}"
1165 bootclasspath="@{jsr166y.jar}:${bootclasspath6}"
1166 classpath=""
1167 source="6"
1168 target="6"
1169 includeAntRuntime="false"
1170 includeJavaRuntime="false"
1171 encoding="ASCII"
1172 executable="${javac7}"
1173 fork="true">
1174
1175 <include name="extra166y/**/*.java"/>
1176 <compilerarg value="-XDignore.symbol.file=true"/>
1177 <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
1178 <compilerarg value="-Werror"/>
1179 <compilerarg line="${build.args}"/>
1180 </javac>
1181 </target>
1182
1183 <target name="extra166yjar" depends="extra166ycompile">
1184 <jar destfile="${extra166y.jar}" index="true">
1185 <fileset dir="${build.extra166y.classes.dir}"/>
1186 <manifest>
1187 <attribute name="Built-By" value="${user.name}"/>
1188 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1189 </manifest>
1190 </jar>
1191 </target>
1192
1193 <target name="extra166ydocs">
1194 <delete dir="${extra166ydocs.dir}"/>
1195 <mkdir dir="${extra166ydocs.dir}"/>
1196
1197 <javadoc destdir="${extra166ydocs.dir}"
1198 packagenames="extra166y.*"
1199 link="${java.api.url}"
1200 access="${build.javadoc.access}"
1201 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1202 bootclasspath="${bootclasspath6}"
1203 source="6"
1204 executable="${javadoc7}">
1205 <arg line="-Xdocrootparent ${java.docroot.url}"/>
1206 <arg value="-XDignore.symbol.file=true"/>
1207 </javadoc>
1208 </target>
1209
1210 <target name="extra166ydist" depends="extra166ydist-jar, extra166ydist-docs"/>
1211
1212 <target name="extra166yclean">
1213 <delete dir="${build.extra166y.dir}"/>
1214 </target>
1215
1216 <target name="extra166ydist-jar" depends="extra166yclean, extra166yjar">
1217 <copy file="${extra166y.jar}" todir="${dist.dir}"/>
1218 </target>
1219
1220 <target name="extra166ydist-docs" depends="extra166yclean, extra166ydocs">
1221 <mirror-dir src="${extra166ydocs.dir}" dst="${dist.extra166ydocs.dir}"/>
1222 </target>
1223
1224
1225 <!-- jsr166e (no longer maintained) -->
1226
1227 <property name="build.jsr166e.java.version" value="6"/>
1228 <property name="build.jsr166e.javac" value="${javac6}"/>
1229
1230 <target name="jsr166ecompile" depends="configure-compiler">
1231 <mkdir dir="${build.jsr166e.classes.dir}"/>
1232
1233 <javac srcdir="${topsrc.dir}"
1234 destdir="${build.jsr166e.classes.dir}"
1235 debug="${build.debug}"
1236 debuglevel="${build.debuglevel}"
1237 deprecation="${build.deprecation}"
1238 source="${build.jsr166e.java.version}"
1239 target="${build.jsr166e.java.version}"
1240 classpath=""
1241 includeAntRuntime="false"
1242 includeJavaRuntime="false"
1243 executable="${build.jsr166e.javac}"
1244 fork="true">
1245
1246 <include name="jsr166e/**/*.java"/>
1247 <compilerarg value="-XDignore.symbol.file=true"/>
1248 <compilerarg value="-Xlint:all"/>
1249 <compilerarg value="-Werror"/>
1250 <compilerarg line="${build.args}"/>
1251 </javac>
1252 </target>
1253
1254 <target name="jsr166edoclint">
1255 <mkdir dir="${build.jsr166e.classes.dir}"/>
1256
1257 <javac srcdir="${topsrc.dir}"
1258 destdir="${build.jsr166e.classes.dir}"
1259 debug="${build.debug}"
1260 debuglevel="${build.debuglevel}"
1261 deprecation="${build.deprecation}"
1262 source="${build.jsr166e.java.version}"
1263 target="${build.jsr166e.java.version}"
1264 classpath=""
1265 bootclasspath="${bootclasspath6}"
1266 includeAntRuntime="false"
1267 includeJavaRuntime="false"
1268 executable="${javac8}"
1269 fork="true">
1270
1271 <include name="jsr166e/**/*.java"/>
1272 <compilerarg value="-XDignore.symbol.file=true"/>
1273 <compilerarg value="-Xlint:all"/>
1274 <compilerarg value="-Werror"/>
1275 <compilerarg value="-Xdoclint:all/protected"/>
1276 </javac>
1277 </target>
1278
1279 <target name="jsr166ejar" depends="jsr166ecompile">
1280 <jar destfile="${jsr166e.jar}" index="true">
1281 <fileset dir="${build.jsr166e.classes.dir}"/>
1282 <manifest>
1283 <attribute name="Built-By" value="${user.name}"/>
1284 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1285 </manifest>
1286 </jar>
1287 </target>
1288
1289 <target name="jsr166edocs">
1290 <delete dir="${jsr166edocs.dir}"/>
1291 <mkdir dir="${jsr166edocs.dir}"/>
1292
1293 <javadoc destdir="${jsr166edocs.dir}"
1294 packagenames="jsr166e.*"
1295 link="${java.api.url}"
1296 access="${build.javadoc.access}"
1297 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1298 source="${build.jsr166e.java.version}"
1299 executable="${javadoc7}"
1300 failonerror = "true">
1301 <arg line="-Xdocrootparent ${java.docroot.url}"/>
1302 <arg value="-XDignore.symbol.file=true"/>
1303 </javadoc>
1304 </target>
1305
1306 <target name="jsr166e-tck-one-java-version" depends="jsr166ejar">
1307 <echo message="Testing with jdk${build.jsr166e.java.version} ..."/>
1308 <run-tck-tests
1309 tck.src.dir="${test.src.dir}/tck-jsr166e"
1310 target="${build.jsr166e.java.version}"
1311 workdir="${build.jsr166e.dir}"
1312 classes="${jsr166e.jar}"/>
1313 </target>
1314
1315 <target name="jsr166e-tck">
1316
1317 <!-- <antcall target="clean"/> -->
1318 <!-- <antcall target="jsr166e-tck-one-java-version"> -->
1319 <!-- <param name="build.jsr166e.java.version" value="8"/> -->
1320 <!-- <param name="build.jsr166e.javac" value="${javac8}"/> -->
1321 <!-- </antcall> -->
1322
1323 <antcall target="clean"/>
1324 <antcall target="jsr166e-tck-one-java-version">
1325 <param name="build.jsr166e.java.version" value="7"/>
1326 <param name="build.jsr166e.javac" value="${javac7}"/>
1327 </antcall>
1328
1329 <antcall target="clean"/>
1330 <antcall target="jsr166e-tck-one-java-version">
1331 <param name="build.jsr166e.java.version" value="6"/>
1332 <param name="build.jsr166e.javac" value="${javac6}"/>
1333 </antcall>
1334 </target>
1335
1336 <target name="jsr166e-test" depends="jsr166e-tck"/>
1337
1338 <target name="jsr166edist" depends="jsr166edist-jar, jsr166edist-docs"/>
1339
1340 <target name="jsr166eclean">
1341 <delete dir="${build.jsr166e.dir}"/>
1342 </target>
1343
1344 <target name="jsr166edist-jar"
1345 depends="jsr166eclean, jsr166ejar">
1346 <copy file="${jsr166e.jar}" todir="${dist.dir}"/>
1347 </target>
1348
1349 <target name="jsr166edist-docs" depends="jsr166eclean, jsr166edocs">
1350 <mirror-dir src="${jsr166edocs.dir}" dst="${dist.jsr166edocs.dir}"/>
1351 </target>
1352
1353
1354 <!-- Find buglets that can be detected by static build tools -->
1355
1356 <target name="lint">
1357 <antcall target="dists">
1358 <param name="build.javadoc.access" value="public"/>
1359 </antcall>
1360 </target>
1361
1362 <!-- Generates all doclint warnings, even for private methods (rarely useful) -->
1363 <target name="lint-private">
1364 <antcall target="dist">
1365 <param name="build.javadoc.access" value="private"/>
1366 </antcall>
1367 </target>
1368
1369
1370 <!-- ==============================================================
1371 Experimental errorprone support - http://errorprone.info
1372 You may need to bring your own errorprone jar.
1373 =================================================================== -->
1374 <target name="errorprone"
1375 depends="clean, configure-compiler"
1376 description="Run errorprone over jsr166 source code (experimental)">
1377
1378 <local name="destdir"/>
1379 <property name="destdir" value="${build.classes.dir}/java.base"/>
1380 <mkdir dir="${destdir}"/>
1381
1382 <javac srcdir="${src.dir}"
1383 destdir="${destdir}"
1384 debug="${build.debug}"
1385 debuglevel="${build.debuglevel}"
1386 deprecation="${build.deprecation}"
1387 classpath=""
1388 includeAntRuntime="false"
1389 includeJavaRuntime="false"
1390 encoding="ASCII"
1391 executable="${build.main.javac}"
1392 fork="true">
1393
1394 <include name="**/*.java"/>
1395 <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED"/>
1396 <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED"/>
1397 <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED"/>
1398 <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED"/>
1399 <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED"/>
1400 <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED"/>
1401 <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED"/>
1402 <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED"/>
1403 <compilerarg value="-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED"/>
1404 <compilerarg line="-processorpath ${lib.dir}/error_prone_ant-2.0.20-SNAPSHOT.jar"/>
1405 <compilerarg value="-Xplugin:ErrorProne
1406 -Xep:IdentityBinaryExpression:WARN
1407 -Xep:MissingOverride:OFF
1408 -Xep:MixedArrayDimensions:WARN
1409 -Xep:RemoveUnusedImports:ERROR
1410 -Xep:ClassName:ERROR
1411 -Xep:MultipleTopLevelClasses:ERROR
1412 -Xep:EmptyIf:ERROR
1413 -Xep:LongLiteralLowerCaseSuffix:ERROR
1414 -Xep:ArgumentParameterSwap:ERROR
1415 -Xep:RedundantThrows:ERROR
1416 -Xep:MethodCanBeStatic:WARN"/>
1417 <compilerarg value="--patch-module=java.base=${src.dir}"/>
1418 <compilerarg value="-Xprefer:source"/>
1419 <compilerarg value="-XDignore.symbol.file=true"/>
1420 <compilerarg value="-Xlint:all"/>
1421 <compilerarg value="-Xdoclint:all/protected,reference/private"/>
1422 <compilerarg line="-Xmaxerrs 3000 -Xmaxwarns 3000"/>
1423 <compilerarg line="${build.args}"/>
1424 </javac>
1425
1426 <jar destfile="${product.jar}">
1427 <fileset dir="${destdir}"/>
1428 </jar>
1429
1430 <run-tck-tests
1431 target="${build.main.java.version}"
1432 workdir="${build.dir}"
1433 classes="${product.jar}">
1434 <javac-elements>
1435 <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED"/>
1436 <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED"/>
1437 <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED"/>
1438 <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED"/>
1439 <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED"/>
1440 <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED"/>
1441 <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED"/>
1442 <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED"/>
1443 <compilerarg value="-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED"/>
1444 <compilerarg line="-processorpath ${lib.dir}/error_prone_ant-2.0.20-SNAPSHOT.jar"/>
1445 <compilerarg value="-Xplugin:ErrorProne
1446 -Xep:IdentityBinaryExpression:WARN
1447 -Xep:BoxedPrimitiveConstructor:OFF
1448 -Xep:HashtableContains:OFF
1449 -Xep:ModifyingCollectionWithItself:OFF
1450 -Xep:MissingOverride:OFF
1451 -Xep:MixedArrayDimensions:WARN
1452 -Xep:RemoveUnusedImports:ERROR
1453 -Xep:ClassName:ERROR
1454 -Xep:MultipleTopLevelClasses:ERROR
1455 -Xep:EmptyIf:ERROR
1456 -Xep:LongLiteralLowerCaseSuffix:ERROR
1457 -Xep:ArgumentParameterSwap:ERROR
1458 -Xep:RedundantThrows:ERROR
1459 -Xep:MethodCanBeStatic:WARN"/>
1460 <compilerarg line="-Xmaxerrs 3000 -Xmaxwarns 3000"/>
1461 </javac-elements>
1462 </run-tck-tests>
1463 </target>
1464
1465
1466 <!-- ==============================================================
1467 Running guava tests against jsr166 code
1468 =================================================================== -->
1469
1470 <!-- <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" -->
1471 <!-- organisation="com.google.guava" module="guava-testlib" revision="21.0"/> -->
1472 <!-- <property name="guava.version" value="21.0"/> -->
1473
1474 <!-- HOWTO debug print a path id -->
1475 <!-- <pathconvert property="guava.testlib.classpath" refid="guava.testlib.classpath" /> -->
1476 <!-- <echo message="guava.testlib.classpath=${guava.testlib.classpath}"/> -->
1477
1478 <!-- <ivy:retrieve pathid="guava.tests.classpath" type="jar" inline="true" conf="*" pattern="${lib.dir}/[type]/[artifact].[ext]" -->
1479 <!-- organisation="com.google.guava" module="guava-tests"/> -->
1480 <!-- <get src="http://repo2.maven.org/maven2/com/google/guava/guava-tests/${guava.version}/guava-tests-${guava.version}-tests.jar" -->
1481 <!-- dest="${lib.dir}/jar/guava-tests-tests.jar" usetimestamp="true"/> -->
1482 <!-- <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" type="*" -->
1483 <!-- organisation="com.google.guava" module="guava-testlib" revision="${guava.version}"/> -->
1484
1485 <!-- <test name="com.google.common.collect.testing.TestsForQueuesInJavaUtil"/> -->
1486 <!-- <test name="com.google.common.collect.testing.TestsForListsInJavaUtil"/> -->
1487 <!-- <test name="com.google.common.collect.testing.TestsForSetsInJavaUtil"/> -->
1488 <!-- <test name="com.google.common.collect.testing.TestsForMapsInJavaUtil"/> -->
1489
1490 <!-- <ivy:retrieve pathid="guava.testlib.classpath" -->
1491 <!-- type="*" inline="true" conf="*(private),*(public)" -->
1492 <!-- pattern="${guava.dir}/[artifact].[ext]" -->
1493 <!-- organisation="com.google.guava" module="guava-testlib"/> -->
1494
1495 <!-- Work around bug below by downloading guava-testlib-tests.jar "by hand": -->
1496 <!-- https://issues.apache.org/jira/browse/IVY-1444 -->
1497 <!-- maven tests artifacts cannot be downloaded because they are mapped to private configurations -->
1498
1499 <target name="init-ivy">
1500 <get src="http://repo2.maven.org/maven2/org/apache/ivy/ivy/2.4.0/ivy-2.4.0.jar"
1501 dest="${build.dir}/ivy.jar" usetimestamp="true" skipexisting="true"/>
1502 <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant"
1503 classpath="${build.dir}/ivy.jar"/>
1504 </target>
1505
1506 <target name="guava-tests" depends="jar, init-ivy"
1507 description="Guava tests run against jsr166 collections">
1508 <property name="guava.dir" value="${build.dir}/guava-testlib"/>
1509 <mkdir dir="${guava.dir}"/>
1510 <ivy:retrieve pathid="guava.testlib.classpath"
1511 type="jar,bundle" inline="true" conf="default,master"
1512 pattern="${guava.dir}/[artifact].[ext]"
1513 organisation="com.google.guava" module="guava-testlib"/>
1514 <property name="guava.version" value="21.0"/>
1515 <get src="http://repo2.maven.org/maven2/com/google/guava/guava-testlib/${guava.version}/guava-testlib-${guava.version}-tests.jar"
1516 dest="${guava.dir}/guava-testlib-tests.jar" usetimestamp="true"/>
1517 <junit printsummary="true" showoutput="true" haltonfailure="true"
1518 jvm="${java9}" fork="true">
1519 <jvmarg line="-ea -esa --patch-module java.base=${product.jar}"/>
1520 <formatter type="brief"/>
1521 <classpath>
1522 <pathelement location="${guava.dir}/guava-testlib-tests.jar"/>
1523 <path refid="guava.testlib.classpath"/>
1524 </classpath>
1525
1526 <!-- "6" in "OpenJdk6Tests" misleadingly means "6+" -->
1527 <test name="com.google.common.collect.testing.OpenJdk6Tests"/>
1528 </junit>
1529 </target>
1530
1531 </project>