ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.283
Committed: Wed Oct 24 22:31:14 2018 UTC (5 years, 6 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.282: +0 -22 lines
Log Message:
delete "release" target

File Contents

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