ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.289
Committed: Sun Dec 2 22:40:03 2018 UTC (5 years, 4 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.288: +1 -0 lines
Log Message:
add breadcrumb for --frames

File Contents

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