ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.238
Committed: Fri Mar 24 16:33:02 2017 UTC (7 years, 1 month ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.237: +6 -1 lines
Log Message:
keep 4jdk7-tck alive a little longer

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