ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.291
Committed: Thu Dec 6 21:36:08 2018 UTC (5 years, 4 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.290: +1 -0 lines
Log Message:
add TODO

File Contents

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