ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.246
Committed: Fri Jun 16 20:56:47 2017 UTC (6 years, 10 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.245: +6 -0 lines
Log Message:
define jdk10.jtreg.tests

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