ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.278
Committed: Mon Oct 1 00:10:52 2018 UTC (5 years, 6 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.277: +18 -4 lines
Log Message:
update to using jdk11 by default, except link to jdk10 javadocs;
sync @docRoot references in javadoc with upstream

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