ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.301
Committed: Sat Aug 10 16:48:04 2019 UTC (4 years, 8 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.300: +38 -69 lines
Log Message:
drop support for jdk9 and jdk10; drop backward compatibility hacks

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