ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.279
Committed: Mon Oct 1 03:04:48 2018 UTC (5 years, 6 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.278: +3 -1 lines
Log Message:
pin java.docroot.url to java10.docroot.url until 8211194 is fixed

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