ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.265
Committed: Sun Feb 4 20:00:47 2018 UTC (6 years, 2 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.264: +20 -23 lines
Log Message:
force build.main.javadoc to be at least javadoc10, so we can start using --override-methods=summary

File Contents

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