ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.257
Committed: Tue Oct 31 17:44:09 2017 UTC (6 years, 5 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.256: +6 -5 lines
Log Message:
switch from http: to https: for JDK-8190312

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