ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.276
Committed: Wed Sep 26 06:40:33 2018 UTC (5 years, 7 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.275: +4 -3 lines
Log Message:
switch to jdk11 api docs

File Contents

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