ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.295
Committed: Sun Mar 24 00:44:14 2019 UTC (5 years, 1 month ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.294: +2 -1 lines
Log Message:
Update java12.docroot.url for GA location

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