ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.293
Committed: Thu Dec 13 01:15:07 2018 UTC (5 years, 4 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.292: +3 -1 lines
Log Message:
start on jdk13 !

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