ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.302
Committed: Sun Aug 18 18:55:55 2019 UTC (4 years, 8 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.301: +1 -0 lines
Log Message:
document reason for -Xlint:-removal

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