ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.298
Committed: Wed May 22 17:36:58 2019 UTC (4 years, 11 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.297: +1 -0 lines
Log Message:
8223593: Refactor code for reallocating storage

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