ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.284
Committed: Sat Oct 27 01:16:23 2018 UTC (5 years, 6 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.283: +52 -71 lines
Log Message:
migrate to new jdk12 world

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