ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.294
Committed: Mon Dec 31 07:05:54 2018 UTC (5 years, 3 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.293: +30 -1 lines
Log Message:
add jdk13 boilerplate

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