ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.307
Committed: Sun Oct 6 19:03:54 2019 UTC (4 years, 6 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.306: +2 -1 lines
Log Message:
run javadoc with -quiet

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/jdk11
23 $HOME/jdk/jdk12
24 $HOME/jdk/jdk13
25 $HOME/jdk/jdk14
26 where each of the above is a JDK or a symlink to same, and
27 $HOME/jdk/src/jdk11
28 $HOME/jdk/src/jdk12
29 $HOME/jdk/src/jdk13
30 $HOME/jdk/src/jdk14
31 where each of the above is a JDK source tree or a symlink to same.
32
33 Alternatively, define ant variables thus:
34 ant -Djdk$N.home=... -Djdk$N.src.home=...
35 for $N in 11 .. 14 ...
36
37 As of 2016-03, the sources in src/main are for jdk9+ only.
38 As of 2019-08, the sources in src/main are for jdk11+ only.
39 As of 2019-10, compatibility support for jdk8 is dropped entirely.
40 ------------------------------------------------------------------------------
41 </description>
42
43 <!-- Run 'ant -projecthelp' (default target) -->
44 <target name="usage">
45 <java classname="org.apache.tools.ant.Main">
46 <arg value="-projecthelp" />
47 </java>
48 </target>
49
50 <!-- HOWTO printf debug: <echo message="prop=${prop}"/> -->
51
52 <!-- User-specific settings -->
53 <property file="user.properties"/>
54
55
56 <!-- Compilation options -->
57 <property name="build.debug" value="true"/>
58 <property name="build.debuglevel" value="source,lines,vars"/>
59 <property name="build.deprecation" value="false"/>
60 <property name="build.javadoc.access" value="protected"/>
61
62 <!-- Build locations -->
63 <property name="build.dir" location="build"/>
64 <property name="build.classes.dir" location="${build.dir}/classes"/>
65 <property name="build.testcases.dir" location="${build.dir}/testcases"/>
66 <property name="build.loops.dir" location="${build.dir}/loops"/>
67
68 <!-- JDK locations -->
69 <property name="jdks.home" location="${user.home}/jdk"/>
70
71 <macrodef name="defjdklocations">
72 <attribute name="v"/>
73 <sequential>
74 <property name="jdk@{v}.home" location="${jdks.home}/jdk@{v}"/>
75 <property name="java@{v}" location="${jdk@{v}.home}/bin/java"/>
76 <property name="javac@{v}" location="${jdk@{v}.home}/bin/javac"/>
77 <property name="javadoc@{v}" location="${jdk@{v}.home}/bin/javadoc"/>
78 <property name="jdk@{v}.src.home" location="${jdks.home}/src/jdk@{v}"/>
79 <property name="jdk@{v}.src.dir" location="${jdk@{v}.src.home}/jdk/src/java.base/share/classes"/>
80 </sequential>
81 </macrodef>
82
83 <macrodef name="mirror-dir">
84 <attribute name="src"/>
85 <attribute name="dst"/>
86 <sequential>
87 <delete dir="@{dst}"/>
88 <mkdir dir="@{dst}"/>
89 <copy todir="@{dst}" preservelastmodified="true">
90 <fileset dir="@{src}"/>
91 </copy>
92 </sequential>
93 </macrodef>
94
95 <defjdklocations v="11"/>
96 <defjdklocations v="12"/>
97 <defjdklocations v="13"/>
98 <defjdklocations v="14"/>
99
100 <!-- Source locations -->
101 <property name="src.dir" location="${basedir}/src/main"/>
102 <property name="test.src.dir" location="${basedir}/src/test"/>
103 <property name="loops.src.dir" location="${basedir}/src/loops"/>
104 <property name="tck.src.dir" location="${test.src.dir}/tck"/>
105 <property name="jtreg11.src.dir" location="${test.src.dir}/jtreg"/>
106 <property name="jtreg12.src.dir" location="${test.src.dir}/jtreg"/>
107 <property name="jtreg13.src.dir" location="${test.src.dir}/jtreg"/>
108 <property name="jtreg14.src.dir" location="${test.src.dir}/jtreg"/>
109 <property name="jtreg.src.dir" location="${jtreg11.src.dir}"/>
110 <property name="lib.dir" location="${basedir}/lib"/>
111 <property name="dist.dir" location="${basedir}/dist"/>
112 <property name="topsrc.dir" location="${basedir}/src"/>
113
114 <!-- Javadoc locations -->
115 <property name="docs.dir" location="${build.dir}/docs"/>
116 <property name="dist.docs.dir" location="${dist.dir}/docs"/>
117
118 <!-- Jar locations -->
119 <property name="product.jar" location="${build.dir}/jsr166.jar"/>
120 <property name="junit.jar" location="${lib.dir}/junit.jar"/>
121
122 <!-- Canonical location of jdk docs root, to use with javadoc -Xdocrootparent flag -->
123 <!-- Switched to https: in 2017-10 - JDK-8190312 -->
124 <!-- <property name="java5.docroot.url" value="https://docs.oracle.com/javase/1.5.0/docs"/> -->
125 <!-- <property name="java6.docroot.url" value="https://docs.oracle.com/javase/6/docs"/> -->
126 <!-- <property name="java7.docroot.url" value="https://docs.oracle.com/javase/7/docs"/> -->
127 <!-- <property name="java8.docroot.url" value="https://docs.oracle.com/javase/8/docs"/> -->
128 <!-- The location of jdk early access docs (RIP) -->
129 <!-- <property name="java11.docroot.url" value="http://download.java.net/java/jdk11/docs"/> -->
130 <!-- <property name="java12.docroot.url" value="https://download.java.net/java/jdk12/docs"/> -->
131 <!-- <property name="java13.docroot.url" value="https://download.java.net/java/early_access/jdk13/docs"/> -->
132 <property name="java11.docroot.url" value="https://docs.oracle.com/en/java/javase/11/docs"/>
133 <property name="java12.docroot.url" value="https://docs.oracle.com/en/java/javase/12/docs"/>
134 <property name="java13.docroot.url" value="https://docs.oracle.com/en/java/javase/13/docs"/>
135 <property name="java14.docroot.url" value="https://download.java.net/java/early_access/jdk14/docs"/>
136 <!-- Default jdk doc location (latest stable LTS release seems best) -->
137 <property name="java.docroot.url" value="${java11.docroot.url}"/>
138
139 <!-- Canonical location of jdk API docs, to use with javadoc link attribute -->
140 <property name="java11.api.url" value="${java11.docroot.url}/api/"/>
141 <property name="java12.api.url" value="${java12.docroot.url}/api/"/>
142 <property name="java13.api.url" value="${java13.docroot.url}/api/"/>
143 <property name="java14.api.url" value="${java14.docroot.url}/api/"/>
144 <property name="java.api.url" value="${java.docroot.url}/api/"/>
145
146 <!-- Define the "jtreg" task -->
147 <!-- See the docs in "jtreg -onlineHelp" -->
148 <taskdef name="jtreg" classname="com.sun.javatest.regtest.Main$$Ant"
149 classpath="${lib.dir}/jtreg.jar" />
150
151 <!-- Tck configuration options; see JSR166TestCase.java
152 To profile a single tck test class:
153 ant -Djsr166.profileTests=true -Djsr166.profileThreshold=10 -Djsr166.tckTestClass=CompletableFutureTest tck
154 To stress test a single tck test class:
155 ant -Djsr166.tckTestClass=CountedCompleterTest -Djsr166.runsPerTest=100 tck
156 To stress test a single tck test method:
157 ant -Djsr166.tckTestClass=RecursiveTaskTest -Djsr166.runsPerTest=1000 -Djsr166.methodFilter=testAbnormalInvokeAll3 tck
158 -->
159 <property name="jsr166.tckTestClass" value="JSR166TestCase"/>
160 <macrodef name="run-tck-tests">
161 <attribute name="tck.src.dir" default="${tck.src.dir}"/>
162 <attribute name="target"/>
163 <attribute name="compile-target" default="@{target}"/>
164 <attribute name="workdir"/>
165 <attribute name="classes"/>
166 <!--
167 <attribute name="jvmflags" default="-XX:+UseParallelGC -XX:-UseBiasedLocking -ea -esa -Djsr166.testImplementationDetails=true"/>
168 -->
169 <attribute name="jvmflags" default="-ea -esa -Djsr166.testImplementationDetails=true"/>
170 <element name="javac-elements" optional="true"/>
171
172 <sequential>
173
174 <mkdir dir="@{workdir}/tck-classes"/>
175
176 <javac srcdir="@{tck.src.dir}"
177 destdir="@{workdir}/tck-classes"
178 debug="${build.debug}"
179 debuglevel="${build.debuglevel}"
180 deprecation="${build.deprecation}"
181 source="@{compile-target}"
182 target="@{compile-target}"
183 classpath="${junit.jar}"
184 includeAntRuntime="false"
185 includeJavaRuntime="false"
186 encoding="ASCII"
187 executable="${javac@{compile-target}}"
188 fork="true">
189
190 <include name="*.java"/>
191 <compilerarg value="-XDignore.symbol.file=true"/>
192 <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation,-try"/>
193 <compilerarg value="-Xdoclint:reference/private"/>
194 <compilerarg value="--patch-module=java.base=@{classes}"/>
195 <compilerarg line="${build.args}"/>
196 <javac-elements/>
197
198 </javac>
199
200 <java classname="${jsr166.tckTestClass}"
201 failonerror="true"
202 jvm="${java@{target}}"
203 fork="true">
204 <jvmarg value="--patch-module=java.base=@{classes}"/>
205 <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED"/>
206 <jvmarg value="--add-opens=java.base/java.util=ALL-UNNAMED"/>
207 <jvmarg value="--add-opens=java.base/java.util.concurrent=ALL-UNNAMED"/>
208 <jvmarg value="--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED"/>
209 <jvmarg value="--add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED"/>
210 <jvmarg line="@{jvmflags}"/>
211 <!-- ant -Dvmoptions="-Xmx8m" -Djsr166.tckTestClass=CompletableFutureTest tck -->
212 <jvmarg line="${vmoptions}" if:set="vmoptions"/>
213
214 <!-- ant -Djava.util.concurrent.ForkJoinPool.common.parallelism=1 tck -->
215 <syspropertyset id="system-properties-used-by-tck">
216 <propertyref prefix="java.util.concurrent.ForkJoinPool"/>
217 <propertyref prefix="jsr166."/>
218 <propertyref name="test.timeout.factor"/>
219 </syspropertyset>
220
221 <classpath>
222 <pathelement location="${junit.jar}"/>
223 <pathelement location="@{workdir}/tck-classes"/>
224 </classpath>
225 </java>
226
227 </sequential>
228 </macrodef>
229
230 <!-- Define jtreg test sets for different jdk versions -->
231 <!-- ant -Djtreg.test.pattern="**/ConcurrentHashMap/" -->
232 <!-- ant -Djtreg.test.pattern="**/ToArray.java" -->
233 <property name="jtreg.test.pattern" value="**/*.java"/>
234 <macrodef name="defjtregtests">
235 <attribute name="v"/>
236 <sequential>
237 <fileset dir="${jtreg@{v}.src.dir}">
238 <patternset id="jdk@{v}.jtreg.tests">
239 <include name="${jtreg.test.pattern}"/>
240 </patternset>
241 </fileset>
242 </sequential>
243 </macrodef>
244
245 <defjtregtests v="14"/>
246 <defjtregtests v="13"/>
247 <defjtregtests v="12"/>
248 <defjtregtests v="11"/>
249
250 <!-- ant -Djtreg.flags=-timeoutFactor:4 -->
251 <property name="jtreg.flags" value=""/>
252
253 <macrodef name="run-jtreg-tests">
254 <!-- ant -Djtreg11.src.dir=src/test/jtreg/util/concurrent/CompletableFuture jtreg -->
255 <attribute name="target"/>
256 <attribute name="workdir"/>
257 <attribute name="classes"/>
258 <attribute name="verbose" default="${jtreg.verbose}"/>
259 <attribute name="jtregflags" default=""/>
260 <element name="jtreg-elements" optional="true"/>
261
262 <sequential>
263
264 <!-- ant -Djtreg.verbose=time,fail,error jtreg -->
265 <property name="jtreg.verbose" value="nopass,fail,error"/>
266
267 <delete dir="@{workdir}/JTwork" quiet="true"/>
268 <jtreg dir="${jtreg@{target}.src.dir}"
269 jdk="${jdk@{target}.home}"
270 workDir="@{workdir}/JTwork">
271 <patternset refid="jdk@{target}.jtreg.tests"/>
272 <arg value="-javacoptions:--patch-module=java.base=@{classes}"/>
273 <arg value="-vmoptions:--patch-module=java.base=@{classes}"/>
274 <arg value="-agentvm"/>
275 <arg value="-noreport"/>
276 <arg value="-verbose:@{verbose}"/>
277 <arg value="-vmoptions:-esa -ea"/>
278 <arg value="-automatic"/>
279 <arg value="-k:!ignore"/>
280 <arg line="@{jtregflags}"/>
281 <arg line="${jtreg.flags}"/>
282 <jtreg-elements/>
283 </jtreg>
284 </sequential>
285 </macrodef>
286
287 <!-- ALoops classpath -->
288 <path id="loops.classpath">
289 <pathelement location="${build.loops.dir}"/>
290 </path>
291
292 <!-- Support @jls tag, used in jdk8+ javadoc -->
293 <!-- TODO: switch to @jls taglet, as supported by jdk14+ javadoc -->
294 <property name="javadoc.jls.cite" value="The Java&amp;trade; Language Specification"/>
295 <property name="javadoc.jls.option" value="jls:a:See &lt;cite&gt;${javadoc.jls.cite}&lt;/cite&gt;:"/>
296
297 <!-- Main targets -->
298
299 <!-- Default values: may seem strange ... -->
300 <!-- At runtime, target latest LTS, i.e. jdk11 -->
301 <!-- But at build time, target jdk9, for maximal binary portability -->
302 <!-- ButButBut as of 2019-08, target jdk11 at build time -->
303 <!-- Use javadoc12 (but -link to jdk11 api docs!), to get:
304 o override-methods=summary
305 o {@systemProperty ...}
306 o 8211194: issues linking to external documentation (was: missing package-list for JDK10 / JDK11 documentation)
307 o 8202628: javadoc generates bad links in TestModules.java
308 -->
309 <property name="java.runtime.target" value="11"/>
310 <property name="build.main.java" value="${java11}"/>
311 <property name="build.main.javac" value="${javac11}"/>
312 <property name="build.main.javadoc" value="${javadoc12}"/>
313 <property name="build.main.javadoc.source" value="${java.runtime.target}"/>
314
315 <target name="dists"
316 depends="dist"
317 description="Builds all public jars and docs"/>
318
319 <target name="compile"
320 depends="configure-compiler"
321 description="Compiles src/main sources to build dir">
322
323 <local name="destdir"/>
324 <property name="destdir" value="${build.classes.dir}/java.base"/>
325
326 <mkdir dir="${destdir}"/>
327
328 <javac srcdir="${src.dir}"
329 destdir="${destdir}"
330 debug="${build.debug}"
331 debuglevel="${build.debuglevel}"
332 deprecation="${build.deprecation}"
333 classpath=""
334 includeAntRuntime="false"
335 includeJavaRuntime="false"
336 encoding="ASCII"
337 executable="${build.main.javac}"
338 fork="true">
339
340 <include name="**/*.java"/>
341 <compilerarg value="--patch-module=java.base=${src.dir}"/>
342 <compilerarg value="-Xprefer:source"/>
343 <compilerarg value="-XDignore.symbol.file=true"/>
344 <!-- Xlint:-removal for jdk12 Unsafe Object -> Reference renaming -->
345 <compilerarg value="-Xlint:all,-removal"/>
346 <compilerarg line="--doclint-format html5"/>
347 <compilerarg value="-Xdoclint:all/protected,reference/private"/>
348 <compilerarg value="-Xdoclint/package:java.util.*"/>
349 <compilerarg value="-Werror"/>
350 <compilerarg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
351 <compilerarg line="${build.args}"/>
352
353 </javac>
354 </target>
355
356
357 <target name="jar"
358 depends="compile"
359 description="Builds library jar for src/main from compiled sources">
360 <local name="subdir"/>
361 <available property="subdir" file="${build.classes.dir}/java.base" type="dir" value="/java.base"/>
362 <jar destfile="${product.jar}">
363 <fileset dir="${build.classes.dir}${subdir}"/>
364 <manifest>
365 <attribute name="Built-By" value="${user.name}"/>
366 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
367 </manifest>
368 </jar>
369 </target>
370
371
372 <target name="docs"
373 description="Builds javadocs for src/main to dist dir">
374
375 <delete dir="${docs.dir}" quiet="true"/>
376 <mkdir dir="${docs.dir}"/>
377
378 <!-- old school frames via docs/index.html?overview-summary.html -->
379 <!-- dash-dash-frames no longer a supported option in jdk13+ -->
380 <local name="use-frames"/>
381 <condition property="use-frames">
382 <equals arg1="${build.main.javadoc}" arg2="${javadoc12}"/>
383 </condition>
384
385 <!-- the packagenames="none" hack below prevents scanning the -->
386 <!-- sourcepath for packages -->
387
388 <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}" -->
389 <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}:${jdk9.src.home}/jdk/src/java.logging/share/classes" -->
390 <!-- TODO: sourcepath="${src.dir}:${jdk9.home}/src.zip" -->
391 <!-- TODO: <arg line="-sourcepath ${src.dir}:${jdk9.home}/src.zip"/> -->
392 <!-- TODO: <arg line="- -module-source-path ${jdk9.home}/src.zip"/> -->
393 <javadoc destdir="${docs.dir}"
394 packagenames="none"
395 link="${java.api.url}"
396 overview="${src.dir}/intro.html"
397 access="${build.javadoc.access}"
398 sourcepath="${src.dir}"
399 classpath=""
400 source="${build.main.javadoc.source}"
401 executable="${build.main.javadoc}">
402 <!-- TODO: JDK-8214571 failonerror = "true" -->
403 <fileset dir="${src.dir}" defaultexcludes="yes">
404 <include name="**/*.java"/>
405 </fileset>
406 <arg line="-Xdocrootparent ${java.docroot.url}"/>
407 <arg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
408 <arg value="-quiet"/>
409 <arg value="-XDignore.symbol.file=true"/>
410 <arg value="-html5"/>
411 <arg value="--patch-module=java.base=${src.dir}"/>
412 <arg value="--frames" if:set="use-frames"/>
413 <arg value="--override-methods=summary"/>
414 <arg value="-tag"/> <arg value="${javadoc.jls.option}"/>
415 <arg value="-tag"/> <arg value="implSpec:a:Implementation Requirements:"/>
416 <arg value="-tag"/> <arg value="implNote:a:Implementation Note:"/>
417 <arg value="-tag"/> <arg value="apiNote:a:API Note:"/>
418 <!-- tags added in jdk9: currently unused -->
419 <!-- <arg value="-tag"/> <arg value="revised:X"/> -->
420 <!-- <arg value="-tag"/> <arg value="spec:X"/> -->
421 </javadoc>
422 </target>
423
424
425 <target name="dist"
426 depends="dist-clean, dist-jar, dist-docs"
427 description="Puts all distributable products in single hierarchy"/>
428
429
430 <target name="clean"
431 description="Removes all build products">
432 <delete dir="${build.dir}"/>
433 </target>
434
435
436 <target name="dist-clean"
437 description="Removes all build and distribution products">
438 <delete dir="${build.dir}"/>
439 <delete dir="${dist.dir}"/>
440 </target>
441
442
443 <target name="dist-jar"
444 depends="clean, jar">
445 <copy file="${product.jar}" todir="${dist.dir}"/>
446 </target>
447
448 <target name="dist-docs"
449 depends="clean, docs">
450 <mirror-dir src="${docs.dir}" dst="${dist.docs.dir}"/>
451 </target>
452
453 <target name="tck"
454 depends="jar"
455 description="Runs tck tests for src/main directly">
456
457 <run-tck-tests
458 target="${java.runtime.target}"
459 workdir="${build.dir}"
460 classes="${product.jar}">
461 <javac-elements>
462 <compilerarg value="-Werror"/>
463 </javac-elements>
464 </run-tck-tests>
465 </target>
466
467 <target name="tck-parallelism-1"
468 description="Runs tck with common pool parallelism 1">
469 <antcall target="tck">
470 <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="1"/>
471 </antcall>
472 </target>
473
474 <target name="tck-parallelism-0"
475 description="Runs tck with common pool parallelism 0">
476 <antcall target="tck">
477 <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="0"/>
478 </antcall>
479 </target>
480
481 <target name="tck-security-manager"
482 description="Runs tck with a security manager">
483 <antcall target="tck">
484 <param name="jsr166.useSecurityManager" value="true"/>
485 </antcall>
486 </target>
487
488 <target name="jtreg"
489 depends="jar"
490 description="Runs jtreg tests for src/main using the jtreg ant task">
491 <run-jtreg-tests
492 target="${java.runtime.target}"
493 workdir="${build.dir}"
494 classes="${product.jar}"/>
495 </target>
496
497 <target name="test"
498 depends="tck, tck-parallelism-1, tck-parallelism-0, jtreg"
499 description="Runs tck and jtreg tests for src/main"/>
500
501 <target name="test-version-permutations"
502 depends="test11, test12, test13, test14, test11-12, test11-13, test11-14, clean, test, docs">
503 </target>
504
505 <target name="test11">
506 <antcall>
507 <param name="java.runtime.target" value="11"/>
508 <param name="build.main.javac" value="${javac11}"/>
509 <param name="build.main.javadoc" value="${javadoc12}"/>
510 <param name="build.main.javadoc.source" value="11"/>
511 <target name="clean"/>
512 <target name="test"/>
513 <target name="docs"/>
514 </antcall>
515 </target>
516
517 <target name="test12">
518 <antcall>
519 <param name="java.runtime.target" value="12"/>
520 <param name="build.main.javac" value="${javac12}"/>
521 <param name="build.main.javadoc" value="${javadoc12}"/>
522 <param name="build.main.javadoc.source" value="12"/>
523 <target name="clean"/>
524 <target name="test"/>
525 <target name="docs"/>
526 </antcall>
527 </target>
528
529 <target name="test13">
530 <antcall>
531 <param name="java.runtime.target" value="13"/>
532 <param name="build.main.javac" value="${javac13}"/>
533 <param name="build.main.javadoc" value="${javadoc13}"/>
534 <param name="build.main.javadoc.source" value="13"/>
535 <target name="clean"/>
536 <target name="test"/>
537 <target name="docs"/>
538 </antcall>
539 </target>
540
541 <target name="test14">
542 <antcall>
543 <param name="java.runtime.target" value="14"/>
544 <param name="build.main.javac" value="${javac14}"/>
545 <param name="build.main.javadoc" value="${javadoc14}"/>
546 <param name="build.main.javadoc.source" value="14"/>
547 <target name="clean"/>
548 <target name="test"/>
549 <target name="docs"/>
550 </antcall>
551 </target>
552
553 <target name="test11-12">
554 <antcall>
555 <param name="java.runtime.target" value="12"/>
556 <param name="build.main.javac" value="${javac11}"/>
557 <param name="build.main.javadoc" value="${javadoc12}"/>
558 <param name="build.main.javadoc.source" value="11"/>
559 <target name="clean"/>
560 <target name="test"/>
561 <target name="docs"/>
562 </antcall>
563 </target>
564
565 <target name="test11-13">
566 <antcall>
567 <param name="java.runtime.target" value="13"/>
568 <param name="build.main.javac" value="${javac11}"/>
569 <param name="build.main.javadoc" value="${javadoc13}"/>
570 <param name="build.main.javadoc.source" value="11"/>
571 <target name="clean"/>
572 <target name="test"/>
573 <target name="docs"/>
574 </antcall>
575 </target>
576
577 <target name="test11-14">
578 <antcall>
579 <param name="java.runtime.target" value="14"/>
580 <param name="build.main.javac" value="${javac11}"/>
581 <param name="build.main.javadoc" value="${javadoc14}"/>
582 <param name="build.main.javadoc.source" value="11"/>
583 <target name="clean"/>
584 <target name="test"/>
585 <target name="docs"/>
586 </antcall>
587 </target>
588
589
590 <target name="configure-compiler">
591 <fail message="ant version too old">
592 <condition> <not> <antversion atleast="1.9.1"/> </not> </condition>
593 </fail>
594
595 <property name="unchecked.option" value="-Xlint:unchecked"/>
596
597 <condition property="warnunchecked.arg" value="${unchecked.option}">
598 <istrue value="${build.warnunchecked}"/>
599 </condition>
600
601 <property name="warnunchecked.arg" value=""/>
602
603
604 <!-- Common options in javac invocations -->
605 <property name="build.args" value="${warnunchecked.arg}"/>
606
607 </target>
608
609
610 <target name="compile-test-loops" depends="jar"
611 description="Compiles all the perf tests in src/test/loops">
612
613 <mkdir dir="${build.dir}/test/loops"/>
614
615 <javac srcdir="${basedir}/src/test/loops"
616 destdir="${build.dir}/test/loops"
617 debug="${build.debug}"
618 debuglevel="${build.debuglevel}"
619 deprecation="${build.deprecation}"
620 includeAntRuntime="false"
621 includeJavaRuntime="false"
622 encoding="ASCII"
623 executable="${build.main.javac}"
624 fork="true">
625
626 <include name="*.java"/>
627 <compilerarg value="-XDignore.symbol.file=true"/>
628 <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation"/>
629 <compilerarg value="--patch-module=java.base=${src.dir}"/>
630 <compilerarg line="${build.args}"/>
631 </javac>
632 </target>
633
634
635 <!-- old branches no longer maintained. build support deleted -->
636 <!-- jsr166 4jdk8; (no longer maintained as of 2019-10) -->
637 <!-- jsr166 4jdk7 (no longer maintained) -->
638 <!-- jsr166x (no longer maintained) -->
639 <!-- jsr166y (no longer maintained) -->
640 <!-- extra166y (no longer maintained) -->
641 <!-- jsr166e (no longer maintained) -->
642
643 <!-- Find buglets that can be detected by static build tools -->
644
645 <!-- <target name="lint"> -->
646 <!-- <antcall target="dists"> -->
647 <!-- <param name="build.javadoc.access" value="protected"/> -->
648 <!-- </antcall> -->
649 <!-- </target> -->
650
651 <!-- Generates all doclint warnings, even for private methods (rarely useful) -->
652 <target name="doclint-private">
653 <antcall target="dist">
654 <param name="build.javadoc.access" value="private"/>
655 </antcall>
656 </target>
657
658
659 <!-- ==============================================================
660 Experimental errorprone support
661 https://errorprone.info
662 https://errorprone.info/docs/installation
663 https://github.com/google/error-prone/issues/1143
664 =================================================================== -->
665 <path id="errorprone.processorpath.path">
666 <pathelement location="${lib.dir}/error_prone_core-2.3.2-with-dependencies.jar"/>
667 <pathelement location="${lib.dir}/dataflow-2.5.7.jar"/>
668 <pathelement location="${lib.dir}/javacutil-2.5.7.jar"/>
669 <pathelement location="${lib.dir}/jFormatString-3.0.0.jar"/>
670 </path>
671 <property name="errorprone.processorpath" refid="errorprone.processorpath.path" />
672 <property name="errorprone.jsr166.user.flags" value=""/>
673 <property name="errorprone.jsr166.flags"
674 value="-Xep:HashtableContains:OFF
675 -Xep:JdkObsolete:OFF
676 -Xep:MissingOverride:OFF
677 -Xep:MissingFail:OFF
678 -Xep:ThreadPriorityCheck:OFF
679 -Xep:MixedArrayDimensions:ERROR
680 -Xep:RemoveUnusedImports:ERROR
681 -Xep:EmptyIf:ERROR
682 -Xep:MultipleTopLevelClasses:ERROR
683 -Xep:ClassName:ERROR
684 -Xep:LongLiteralLowerCaseSuffix:ERROR
685 -Xep:RedundantThrows:ERROR
686 -Xep:IdentityBinaryExpression:WARN
687 -Xep:ConstructorInvokesOverridable:WARN
688 -Xep:MethodCanBeStatic:WARN
689 ${errorprone.jsr166.user.flags}"/>
690 <!-- -Xep:WildcardImport:ERROR -->
691 <property name="errorprone.jsr166.test.flags"
692 value="-Xep:StringSplitter:OFF
693 -Xep:BoxedPrimitiveConstructor:OFF
694 -Xep:ModifyingCollectionWithItself:OFF"/>
695 <!-- ant -emacs errorprone |& grep -EA1 '(warning|error):|warnings' -->
696 <target name="errorprone"
697 depends="clean, configure-compiler"
698 description="Run errorprone over jsr166 source code (experimental)">
699
700 <local name="destdir"/>
701 <property name="destdir" value="${build.classes.dir}/java.base"/>
702 <mkdir dir="${destdir}"/>
703
704 <javac srcdir="${src.dir}"
705 destdir="${destdir}"
706 debug="${build.debug}"
707 debuglevel="${build.debuglevel}"
708 deprecation="${build.deprecation}"
709 classpath=""
710 includeAntRuntime="false"
711 includeJavaRuntime="false"
712 encoding="ASCII"
713 executable="${build.main.javac}"
714 fork="true">
715
716 <include name="**/*.java"/>
717 <!-- Needed to silence -Xep:FutureReturnValueIgnored -->
718 <compilerarg value="-J--illegal-access=permit"/>
719 <compilerarg value="-XDcompilePolicy=simple"/>
720 <compilerarg value="-processorpath"/>
721 <compilerarg pathref="errorprone.processorpath.path"/>
722 <compilerarg value="-Xplugin:ErrorProne
723 ${errorprone.jsr166.flags}"/>
724 <compilerarg value="--patch-module=java.base=${src.dir}"/>
725 <compilerarg value="-Xprefer:source"/>
726 <compilerarg value="-XDignore.symbol.file=true"/>
727 <compilerarg value="-Xlint:all"/>
728 <compilerarg value="-Xdoclint:all/protected,reference/private"/>
729 <compilerarg line="-Xmaxerrs 3000 -Xmaxwarns 3000"/>
730 <compilerarg line="${build.args}"/>
731 </javac>
732
733 <jar destfile="${product.jar}">
734 <fileset dir="${destdir}"/>
735 </jar>
736
737 <run-tck-tests
738 target="${java.runtime.target}"
739 workdir="${build.dir}"
740 classes="${product.jar}">
741 <javac-elements>
742 <!-- Needed to silence -Xep:FutureReturnValueIgnored -->
743 <compilerarg value="-J--illegal-access=permit"/>
744 <compilerarg value="-XDcompilePolicy=simple"/>
745 <compilerarg line="-processorpath ${errorprone.processorpath}"/>
746 <compilerarg value="-Xplugin:ErrorProne
747 ${errorprone.jsr166.flags}
748 ${errorprone.jsr166.test.flags}"/>
749 <compilerarg line="-Xmaxerrs 3000 -Xmaxwarns 3000"/>
750 </javac-elements>
751 </run-tck-tests>
752 </target>
753
754 <!-- ant -emacs errorprone-jtreg |& grep -EA1 '(warning|error):' -->
755 <!-- -XDcompilePolicy=simple or byfile avoids confusing UnusedImports -->
756 <target name="errorprone-jtreg"
757 depends="jar"
758 description="Run errorprone over jtreg tests (experimental)">
759
760 <run-jtreg-tests
761 target="${java.runtime.target}"
762 workdir="${build.dir}"
763 classes="${product.jar}"
764 verbose="all">
765 <jtreg-elements>
766 <arg value="-javacoption:-XDcompilePolicy=simple"/>
767 <arg value="-javacoption:-processorpath"/>
768 <arg value="-javacoption:${errorprone.processorpath}"/>
769 <arg value="-javacoption:-Xplugin:ErrorProne
770 ${errorprone.jsr166.flags}
771 ${errorprone.jsr166.test.flags}
772 -Xep:MultipleTopLevelClasses:WARN
773 -Xep:NonAtomicVolatileUpdate:OFF"/>
774 </jtreg-elements>
775 </run-jtreg-tests>
776 </target>
777
778
779 <!-- ==============================================================
780 Running guava tests against jsr166 code
781 =================================================================== -->
782
783 <!-- <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" -->
784 <!-- organisation="com.google.guava" module="guava-testlib" revision="21.0"/> -->
785 <!-- <property name="guava.version" value="21.0"/> -->
786
787 <!-- HOWTO debug print a path id -->
788 <!-- <pathconvert property="guava.testlib.classpath" refid="guava.testlib.classpath" /> -->
789 <!-- <echo message="guava.testlib.classpath=${guava.testlib.classpath}"/> -->
790
791 <!-- <ivy:retrieve pathid="guava.tests.classpath" type="jar" inline="true" conf="*" pattern="${lib.dir}/[type]/[artifact].[ext]" -->
792 <!-- organisation="com.google.guava" module="guava-tests"/> -->
793 <!-- <get src="http://repo2.maven.org/maven2/com/google/guava/guava-tests/${guava.version}/guava-tests-${guava.version}-tests.jar" -->
794 <!-- dest="${lib.dir}/jar/guava-tests-tests.jar" usetimestamp="true"/> -->
795 <!-- <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" type="*" -->
796 <!-- organisation="com.google.guava" module="guava-testlib" revision="${guava.version}"/> -->
797
798 <!-- <test name="com.google.common.collect.testing.TestsForQueuesInJavaUtil"/> -->
799 <!-- <test name="com.google.common.collect.testing.TestsForListsInJavaUtil"/> -->
800 <!-- <test name="com.google.common.collect.testing.TestsForSetsInJavaUtil"/> -->
801 <!-- <test name="com.google.common.collect.testing.TestsForMapsInJavaUtil"/> -->
802
803 <!-- <ivy:retrieve pathid="guava.testlib.classpath" -->
804 <!-- type="*" inline="true" conf="*(private),*(public)" -->
805 <!-- pattern="${guava.dir}/[artifact].[ext]" -->
806 <!-- organisation="com.google.guava" module="guava-testlib"/> -->
807
808 <!-- Work around bug below by downloading guava-testlib-tests.jar "by hand": -->
809 <!-- https://issues.apache.org/jira/browse/IVY-1444 -->
810 <!-- maven tests artifacts cannot be downloaded because they are mapped to private configurations -->
811
812 <target name="init-ivy">
813 <get src="http://repo2.maven.org/maven2/org/apache/ivy/ivy/2.4.0/ivy-2.4.0.jar"
814 dest="${build.dir}/ivy.jar" usetimestamp="true" skipexisting="true"/>
815 <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant"
816 classpath="${build.dir}/ivy.jar"/>
817 </target>
818
819 <target name="guava-tests" depends="jar, init-ivy"
820 description="Guava tests run against jsr166 collections">
821 <property name="guava.dir" value="${build.dir}/guava-testlib"/>
822 <mkdir dir="${guava.dir}"/>
823 <ivy:retrieve pathid="guava.testlib.classpath"
824 type="jar,bundle" inline="true" conf="default,master"
825 pattern="${guava.dir}/[artifact].[ext]"
826 organisation="com.google.guava" module="guava-testlib"/>
827 <property name="guava.version" value="21.0"/>
828 <get src="http://repo2.maven.org/maven2/com/google/guava/guava-testlib/${guava.version}/guava-testlib-${guava.version}-tests.jar"
829 dest="${guava.dir}/guava-testlib-tests.jar" usetimestamp="true"/>
830 <junit printsummary="true" showoutput="true" haltonfailure="true"
831 jvm="${build.main.java}" fork="true">
832 <jvmarg line="-ea -esa --patch-module=java.base=${product.jar}"/>
833 <formatter type="brief"/>
834 <classpath>
835 <pathelement location="${guava.dir}/guava-testlib-tests.jar"/>
836 <path refid="guava.testlib.classpath"/>
837 </classpath>
838
839 <!-- "6" in "OpenJdk6Tests" misleadingly means "6+" -->
840 <test name="com.google.common.collect.testing.OpenJdk6Tests"/>
841 </junit>
842 </target>
843
844 </project>