ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.236
Committed: Mon Mar 20 00:03:57 2017 UTC (7 years, 1 month ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.235: +92 -1 lines
Log Message:
add experimental errorprone support

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