ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.256
Committed: Sun Oct 22 03:57:51 2017 UTC (6 years, 6 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.255: +8 -4 lines
Log Message:
update to error_prone_ant 2.1.2

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