ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.297
Committed: Mon Apr 29 14:16:38 2019 UTC (5 years ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.296: +1 -1 lines
Log Message:
The string "--" is not permitted within comments.

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