ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.275
Committed: Wed Jul 18 01:16:42 2018 UTC (5 years, 9 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.274: +13 -1 lines
Log Message:
add usual boilerplate jdk version support for jdk12

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