ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.280
Committed: Sun Oct 7 03:43:04 2018 UTC (5 years, 6 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.279: +6 -5 lines
Log Message:
use javadoc12 to generate docs; but link to jdk11 javadoc

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