ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.249
Committed: Mon Jul 3 20:36:55 2017 UTC (6 years, 9 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.248: +2 -23 lines
Log Message:
update to (much less experimental) error_prone_ant-2.0.21

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