ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.282
Committed: Tue Oct 9 01:34:19 2018 UTC (5 years, 6 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.281: +1 -0 lines
Log Message:
enable javadoc --frames for another release or two

File Contents

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