ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.237
Committed: Fri Mar 24 15:57:26 2017 UTC (7 years, 1 month ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.236: +1 -3 lines
Log Message:
whitespace

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