ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.240
Committed: Sun Mar 26 22:25:20 2017 UTC (7 years, 1 month ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.239: +2 -2 lines
Log Message:
dists: fix xml syntax

File Contents

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