ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.290
Committed: Sun Dec 2 22:46:53 2018 UTC (5 years, 4 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.289: +34 -28 lines
Log Message:
update version-related properties

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