ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.253
Committed: Sun Sep 24 00:47:54 2017 UTC (6 years, 7 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.252: +8 -8 lines
Log Message:
migrate to jdk9 release javadoc location

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