ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.299
Committed: Fri Jun 14 20:10:53 2019 UTC (4 years, 10 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.298: +33 -2 lines
Log Message:
support jdk14

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