ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.231
Committed: Sun Jan 29 20:19:00 2017 UTC (7 years, 2 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.230: +1 -0 lines
Log Message:
add testCommonPoolThreadContextClassLoader

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