ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.300
Committed: Sat Jul 13 18:31:40 2019 UTC (4 years, 9 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.299: +1 -0 lines
Log Message:
migrate to openjdk @jls taglet introduced in JDK-8224166

File Contents

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