ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.244
Committed: Wed May 17 00:17:49 2017 UTC (6 years, 11 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.243: +2 -0 lines
Log Message:
specify source level for javadoc targets

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