ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.314
Committed: Wed May 6 16:51:05 2020 UTC (3 years, 11 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.313: +4 -1 lines
Log Message:
re-enable doclint for non-private elements (see JDK-8214571)

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