ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.303
Committed: Tue Sep 17 16:20:44 2019 UTC (4 years, 7 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.302: +3 -2 lines
Log Message:
update java13.docroot.url for jdk13 GA

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