ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.313
Committed: Mon Apr 27 23:47:11 2020 UTC (4 years ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.312: +2 -1 lines
Log Message:
Temporarily disable doclint, due to https://bugs.openjdk.java.net/browse/JDK-8214571

File Contents

# User Rev Content
1 jsr166 1.177 <project name="jsr166" default="usage"
2 jsr166 1.285 xmlns:if="ant:if"
3 jsr166 1.266 xmlns:unless="ant:unless"
4 jsr166 1.229 xmlns:ivy="antlib:org.apache.ivy.ant">
5 tim 1.1
6     <description>
7 tim 1.29 ------------------------------------------------------------------------------
8     Build file for JSR-166
9 tim 1.18
10 tim 1.29 Usage: ant [target]
11    
12 jsr166 1.202 See http://gee.cs.oswego.edu/dl/concurrency-interest/index.html for
13     more details.
14    
15 tim 1.29 User-specific settings are read from user.properties.
16 tim 1.32 See user.properties.sample for an explanation of some useful settings.
17 jsr166 1.98
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 jsr166 1.260 $HOME/jdk/jdk11
23 jsr166 1.275 $HOME/jdk/jdk12
24 jsr166 1.293 $HOME/jdk/jdk13
25 jsr166 1.299 $HOME/jdk/jdk14
26 jsr166 1.310 $HOME/jdk/jdk15
27 jsr166 1.99 where each of the above is a JDK or a symlink to same, and
28 jsr166 1.260 $HOME/jdk/src/jdk11
29 jsr166 1.275 $HOME/jdk/src/jdk12
30 jsr166 1.293 $HOME/jdk/src/jdk13
31 jsr166 1.299 $HOME/jdk/src/jdk14
32 jsr166 1.310 $HOME/jdk/src/jdk15
33 jsr166 1.304 where each of the above is a JDK source tree or a symlink to same.
34 jsr166 1.159
35     Alternatively, define ant variables thus:
36 jsr166 1.199 ant -Djdk$N.home=... -Djdk$N.src.home=...
37 jsr166 1.310 for $N in 11 .. 15 ...
38 jsr166 1.182
39 jsr166 1.232 As of 2016-03, the sources in src/main are for jdk9+ only.
40 jsr166 1.301 As of 2019-08, the sources in src/main are for jdk11+ only.
41 jsr166 1.304 As of 2019-10, compatibility support for jdk8 is dropped entirely.
42 tim 1.29 ------------------------------------------------------------------------------
43 tim 1.18 </description>
44 tim 1.11
45 jsr166 1.210 <!-- Run 'ant -projecthelp' (default target) -->
46 jsr166 1.148 <target name="usage">
47 jsr166 1.129 <java classname="org.apache.tools.ant.Main">
48     <arg value="-projecthelp" />
49     </java>
50 tim 1.29 </target>
51 tim 1.3
52 jsr166 1.177 <!-- HOWTO printf debug: <echo message="prop=${prop}"/> -->
53 tim 1.11
54 tim 1.27 <!-- User-specific settings -->
55 tim 1.23 <property file="user.properties"/>
56 tim 1.27
57 tim 1.1
58     <!-- Compilation options -->
59     <property name="build.debug" value="true"/>
60     <property name="build.debuglevel" value="source,lines,vars"/>
61 tim 1.13 <property name="build.deprecation" value="false"/>
62 jsr166 1.130 <property name="build.javadoc.access" value="protected"/>
63 tim 1.1
64     <!-- Build locations -->
65 jsr166 1.79 <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 jsr166 1.92
70 jsr166 1.118 <!-- JDK locations -->
71 jsr166 1.92 <property name="jdks.home" location="${user.home}/jdk"/>
72 jsr166 1.93
73     <macrodef name="defjdklocations">
74     <attribute name="v"/>
75     <sequential>
76 jsr166 1.199 <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 jsr166 1.304 <property name="jdk@{v}.src.dir" location="${jdk@{v}.src.home}/jdk/src/java.base/share/classes"/>
82 jsr166 1.93 </sequential>
83     </macrodef>
84    
85 jsr166 1.125 <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 jsr166 1.260 <defjdklocations v="11"/>
98 jsr166 1.275 <defjdklocations v="12"/>
99 jsr166 1.294 <defjdklocations v="13"/>
100 jsr166 1.299 <defjdklocations v="14"/>
101 jsr166 1.310 <defjdklocations v="15"/>
102 jsr166 1.92
103 tim 1.1 <!-- Source locations -->
104 tim 1.22 <property name="src.dir" location="${basedir}/src/main"/>
105     <property name="test.src.dir" location="${basedir}/src/test"/>
106 jsr166 1.65 <property name="loops.src.dir" location="${basedir}/src/loops"/>
107 tim 1.60 <property name="tck.src.dir" location="${test.src.dir}/tck"/>
108 jsr166 1.260 <property name="jtreg11.src.dir" location="${test.src.dir}/jtreg"/>
109 jsr166 1.275 <property name="jtreg12.src.dir" location="${test.src.dir}/jtreg"/>
110 jsr166 1.294 <property name="jtreg13.src.dir" location="${test.src.dir}/jtreg"/>
111 jsr166 1.299 <property name="jtreg14.src.dir" location="${test.src.dir}/jtreg"/>
112 jsr166 1.310 <property name="jtreg15.src.dir" location="${test.src.dir}/jtreg"/>
113 jsr166 1.301 <property name="jtreg.src.dir" location="${jtreg11.src.dir}"/>
114 tim 1.1 <property name="lib.dir" location="${basedir}/lib"/>
115 tim 1.9 <property name="dist.dir" location="${basedir}/dist"/>
116 dl 1.70 <property name="topsrc.dir" location="${basedir}/src"/>
117 jsr166 1.91
118 jsr166 1.125 <!-- Javadoc locations -->
119 jsr166 1.127 <property name="docs.dir" location="${build.dir}/docs"/>
120 jsr166 1.304 <property name="dist.docs.dir" location="${dist.dir}/docs"/>
121 tim 1.1
122     <!-- Jar locations -->
123 jsr166 1.109 <property name="product.jar" location="${build.dir}/jsr166.jar"/>
124 jsr166 1.106 <property name="junit.jar" location="${lib.dir}/junit.jar"/>
125 jsr166 1.65
126 jsr166 1.152 <!-- Canonical location of jdk docs root, to use with javadoc -Xdocrootparent flag -->
127 jsr166 1.257 <!-- Switched to https: in 2017-10 - JDK-8190312 -->
128 jsr166 1.304 <!-- <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 jsr166 1.268 <!-- The location of jdk early access docs (RIP) -->
133 jsr166 1.276 <!-- <property name="java11.docroot.url" value="http://download.java.net/java/jdk11/docs"/> -->
134 jsr166 1.303 <!-- <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 jsr166 1.304 <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 jsr166 1.312 <property name="java14.docroot.url" value="https://docs.oracle.com/en/java/javase/14/docs"/>
140 jsr166 1.310 <property name="java15.docroot.url" value="https://download.java.net/java/early_access/jdk15/docs"/>
141 jsr166 1.290 <!-- Default jdk doc location (latest stable LTS release seems best) -->
142     <property name="java.docroot.url" value="${java11.docroot.url}"/>
143 jsr166 1.151
144 jsr166 1.152 <!-- Canonical location of jdk API docs, to use with javadoc link attribute -->
145 jsr166 1.260 <property name="java11.api.url" value="${java11.docroot.url}/api/"/>
146 jsr166 1.275 <property name="java12.api.url" value="${java12.docroot.url}/api/"/>
147 jsr166 1.294 <property name="java13.api.url" value="${java13.docroot.url}/api/"/>
148 jsr166 1.299 <property name="java14.api.url" value="${java14.docroot.url}/api/"/>
149 jsr166 1.310 <property name="java15.api.url" value="${java15.docroot.url}/api/"/>
150 jsr166 1.152 <property name="java.api.url" value="${java.docroot.url}/api/"/>
151 jsr166 1.91
152 jsr166 1.115 <!-- 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 jsr166 1.304 <!-- Tck configuration options; see JSR166TestCase.java
158 jsr166 1.183 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 jsr166 1.118 <macrodef name="run-tck-tests">
167 jsr166 1.122 <attribute name="tck.src.dir" default="${tck.src.dir}"/>
168 jsr166 1.118 <attribute name="target"/>
169 jsr166 1.138 <attribute name="compile-target" default="@{target}"/>
170 jsr166 1.118 <attribute name="workdir"/>
171 jsr166 1.122 <attribute name="classes"/>
172 dl 1.201 <!--
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 jsr166 1.132 <element name="javac-elements" optional="true"/>
177 jsr166 1.182
178 jsr166 1.118 <sequential>
179    
180     <mkdir dir="@{workdir}/tck-classes"/>
181    
182 jsr166 1.122 <javac srcdir="@{tck.src.dir}"
183 jsr166 1.118 destdir="@{workdir}/tck-classes"
184     debug="${build.debug}"
185     debuglevel="${build.debuglevel}"
186     deprecation="${build.deprecation}"
187 jsr166 1.138 source="@{compile-target}"
188     target="@{compile-target}"
189 jsr166 1.118 classpath="${junit.jar}"
190     includeAntRuntime="false"
191     includeJavaRuntime="false"
192 jsr166 1.219 encoding="ASCII"
193 jsr166 1.138 executable="${javac@{compile-target}}"
194 jsr166 1.118 fork="true">
195    
196 jsr166 1.121 <include name="*.java"/>
197 jsr166 1.118 <compilerarg value="-XDignore.symbol.file=true"/>
198 jsr166 1.187 <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation,-try"/>
199 jsr166 1.304 <compilerarg value="-Xdoclint:reference/private"/>
200     <compilerarg value="--patch-module=java.base=@{classes}"/>
201 jsr166 1.118 <compilerarg line="${build.args}"/>
202 jsr166 1.132 <javac-elements/>
203 jsr166 1.118
204     </javac>
205    
206 jsr166 1.140 <java classname="${jsr166.tckTestClass}"
207 jsr166 1.118 failonerror="true"
208     jvm="${java@{target}}"
209     fork="true">
210 jsr166 1.304 <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 jsr166 1.118 </java>
232    
233     </sequential>
234     </macrodef>
235    
236 jsr166 1.165 <!-- Define jtreg test sets for different jdk versions -->
237 jsr166 1.266 <!-- 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 jsr166 1.260
251 jsr166 1.310 <defjtregtests v="15"/>
252 jsr166 1.299 <defjtregtests v="14"/>
253 jsr166 1.294 <defjtregtests v="13"/>
254 jsr166 1.275 <defjtregtests v="12"/>
255 jsr166 1.266 <defjtregtests v="11"/>
256 jsr166 1.165
257 jsr166 1.195 <!-- ant -Djtreg.flags=-timeoutFactor:4 -->
258     <property name="jtreg.flags" value=""/>
259    
260 jsr166 1.135 <macrodef name="run-jtreg-tests">
261 jsr166 1.292 <!-- ant -Djtreg11.src.dir=src/test/jtreg/util/concurrent/CompletableFuture jtreg -->
262 jsr166 1.135 <attribute name="target"/>
263     <attribute name="workdir"/>
264     <attribute name="classes"/>
265 jsr166 1.255 <attribute name="verbose" default="${jtreg.verbose}"/>
266 jsr166 1.135 <attribute name="jtregflags" default=""/>
267 jsr166 1.255 <element name="jtreg-elements" optional="true"/>
268 jsr166 1.182
269 jsr166 1.135 <sequential>
270 jsr166 1.182
271 jsr166 1.188 <!-- ant -Djtreg.verbose=time,fail,error jtreg -->
272     <property name="jtreg.verbose" value="nopass,fail,error"/>
273    
274 jsr166 1.135 <delete dir="@{workdir}/JTwork" quiet="true"/>
275 jsr166 1.173 <jtreg dir="${jtreg@{target}.src.dir}"
276 jsr166 1.135 jdk="${jdk@{target}.home}"
277 jsr166 1.223 workDir="@{workdir}/JTwork">
278 jsr166 1.165 <patternset refid="jdk@{target}.jtreg.tests"/>
279 jsr166 1.304 <arg value="-javacoptions:--patch-module=java.base=@{classes}"/>
280     <arg value="-vmoptions:--patch-module=java.base=@{classes}"/>
281 jsr166 1.308 <arg value="-vmoptions:${vmoptions}" if:set="vmoptions"/>
282 jsr166 1.135 <arg value="-agentvm"/>
283 jsr166 1.223 <arg value="-noreport"/>
284 jsr166 1.255 <arg value="-verbose:@{verbose}"/>
285 jsr166 1.135 <arg value="-vmoptions:-esa -ea"/>
286     <arg value="-automatic"/>
287     <arg value="-k:!ignore"/>
288     <arg line="@{jtregflags}"/>
289 jsr166 1.195 <arg line="${jtreg.flags}"/>
290 jsr166 1.255 <jtreg-elements/>
291 jsr166 1.135 </jtreg>
292     </sequential>
293     </macrodef>
294    
295 jsr166 1.65 <!-- ALoops classpath -->
296     <path id="loops.classpath">
297     <pathelement location="${build.loops.dir}"/>
298     </path>
299    
300 jsr166 1.100 <!-- Support @jls tag, used in jdk8+ javadoc -->
301 jsr166 1.300 <!-- TODO: switch to @jls taglet, as supported by jdk14+ javadoc -->
302 jsr166 1.120 <property name="javadoc.jls.cite" value="The Java&amp;trade; Language Specification"/>
303 jsr166 1.100 <property name="javadoc.jls.option" value="jls:a:See &lt;cite&gt;${javadoc.jls.cite}&lt;/cite&gt;:"/>
304 tim 1.28
305 tim 1.59 <!-- Main targets -->
306 tim 1.28
307 jsr166 1.284 <!-- 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 jsr166 1.301 <!-- ButButBut as of 2019-08, target jdk11 at build time -->
311 jsr166 1.290 <!-- 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 jsr166 1.284 <property name="build.main.java" value="${java11}"/>
319 jsr166 1.301 <property name="build.main.javac" value="${javac11}"/>
320 jsr166 1.284 <property name="build.main.javadoc" value="${javadoc12}"/>
321 jsr166 1.290 <property name="build.main.javadoc.source" value="${java.runtime.target}"/>
322 jsr166 1.151
323 dl 1.80 <target name="dists"
324 jsr166 1.304 depends="dist"
325 jsr166 1.240 description="Builds all public jars and docs"/>
326 tim 1.11
327 tim 1.28 <target name="compile"
328 jsr166 1.100 depends="configure-compiler"
329 jsr166 1.102 description="Compiles src/main sources to build dir">
330 tim 1.27
331 jsr166 1.182 <local name="destdir"/>
332 jsr166 1.247 <property name="destdir" value="${build.classes.dir}/java.base"/>
333 jsr166 1.182
334     <mkdir dir="${destdir}"/>
335 tim 1.27
336 tim 1.60 <javac srcdir="${src.dir}"
337 jsr166 1.182 destdir="${destdir}"
338 jsr166 1.100 debug="${build.debug}"
339     debuglevel="${build.debuglevel}"
340     deprecation="${build.deprecation}"
341     classpath=""
342     includeAntRuntime="false"
343     includeJavaRuntime="false"
344 jsr166 1.219 encoding="ASCII"
345 jsr166 1.151 executable="${build.main.javac}"
346 jsr166 1.100 fork="true">
347 tim 1.1
348 jsr166 1.68 <include name="**/*.java"/>
349 jsr166 1.247 <compilerarg value="--patch-module=java.base=${src.dir}"/>
350 jsr166 1.133 <compilerarg value="-Xprefer:source"/>
351 dl 1.83 <compilerarg value="-XDignore.symbol.file=true"/>
352 jsr166 1.302 <!-- Xlint:-removal for jdk12 Unsafe Object -> Reference renaming -->
353 jsr166 1.284 <compilerarg value="-Xlint:all,-removal"/>
354 jsr166 1.243 <compilerarg line="--doclint-format html5"/>
355 jsr166 1.313 <!-- Temporarily disable doclint, due to https://bugs.openjdk.java.net/browse/JDK-8214571 -->
356     <!-- <compilerarg value="-Xdoclint:all/protected,reference/private"/> -->
357 jsr166 1.298 <compilerarg value="-Xdoclint/package:java.util.*"/>
358 jsr166 1.164 <compilerarg value="-Werror"/>
359 jsr166 1.146 <compilerarg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
360 dl 1.73 <compilerarg line="${build.args}"/>
361 tim 1.1
362     </javac>
363     </target>
364    
365    
366 tim 1.28 <target name="jar"
367 tim 1.59 depends="compile"
368 jsr166 1.205 description="Builds library jar for src/main from compiled sources">
369 jsr166 1.212 <local name="subdir"/>
370     <available property="subdir" file="${build.classes.dir}/java.base" type="dir" value="/java.base"/>
371 tim 1.59 <jar destfile="${product.jar}">
372 jsr166 1.212 <fileset dir="${build.classes.dir}${subdir}"/>
373 jsr166 1.178 <manifest>
374 jsr166 1.179 <attribute name="Built-By" value="${user.name}"/>
375     <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
376 jsr166 1.178 </manifest>
377 tim 1.59 </jar>
378     </target>
379    
380 tim 1.1
381 tim 1.59 <target name="docs"
382 jsr166 1.102 description="Builds javadocs for src/main to dist dir">
383 tim 1.59
384 jsr166 1.307 <delete dir="${docs.dir}" quiet="true"/>
385 jsr166 1.127 <mkdir dir="${docs.dir}"/>
386 tim 1.59
387 jsr166 1.305 <!-- old school frames via docs/index.html?overview-summary.html -->
388     <!-- dash-dash-frames no longer a supported option in jdk13+ -->
389     <local name="use-frames"/>
390     <condition property="use-frames">
391     <equals arg1="${build.main.javadoc}" arg2="${javadoc12}"/>
392     </condition>
393    
394 jsr166 1.88 <!-- the packagenames="none" hack below prevents scanning the -->
395     <!-- sourcepath for packages -->
396    
397 jsr166 1.226 <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}" -->
398     <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}:${jdk9.src.home}/jdk/src/java.logging/share/classes" -->
399     <!-- TODO: sourcepath="${src.dir}:${jdk9.home}/src.zip" -->
400     <!-- TODO: <arg line="-sourcepath ${src.dir}:${jdk9.home}/src.zip"/> -->
401     <!-- TODO: <arg line="- -module-source-path ${jdk9.home}/src.zip"/> -->
402 jsr166 1.127 <javadoc destdir="${docs.dir}"
403 jsr166 1.88 packagenames="none"
404 jsr166 1.290 link="${java.api.url}"
405 jsr166 1.88 overview="${src.dir}/intro.html"
406 jsr166 1.130 access="${build.javadoc.access}"
407 jsr166 1.216 sourcepath="${src.dir}"
408 jsr166 1.100 classpath=""
409 jsr166 1.290 source="${build.main.javadoc.source}"
410 jsr166 1.247 executable="${build.main.javadoc}">
411 jsr166 1.291 <!-- TODO: JDK-8214571 failonerror = "true" -->
412 jsr166 1.119 <fileset dir="${src.dir}" defaultexcludes="yes">
413     <include name="**/*.java"/>
414     </fileset>
415 jsr166 1.290 <arg line="-Xdocrootparent ${java.docroot.url}"/>
416 jsr166 1.146 <arg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
417 jsr166 1.307 <arg value="-quiet"/>
418 jsr166 1.100 <arg value="-XDignore.symbol.file=true"/>
419 jsr166 1.243 <arg value="-html5"/>
420 jsr166 1.234 <arg value="--patch-module=java.base=${src.dir}"/>
421 jsr166 1.305 <arg value="--frames" if:set="use-frames"/>
422 jsr166 1.265 <arg value="--override-methods=summary"/>
423     <arg value="-tag"/> <arg value="${javadoc.jls.option}"/>
424     <arg value="-tag"/> <arg value="implSpec:a:Implementation Requirements:"/>
425     <arg value="-tag"/> <arg value="implNote:a:Implementation Note:"/>
426 jsr166 1.273 <arg value="-tag"/> <arg value="apiNote:a:API Note:"/>
427 jsr166 1.220 <!-- tags added in jdk9: currently unused -->
428 jsr166 1.265 <!-- <arg value="-tag"/> <arg value="revised:X"/> -->
429     <!-- <arg value="-tag"/> <arg value="spec:X"/> -->
430 tim 1.59 </javadoc>
431     </target>
432    
433    
434 tim 1.28 <target name="dist"
435 jsr166 1.125 depends="dist-clean, dist-jar, dist-docs"
436 tim 1.16 description="Puts all distributable products in single hierarchy"/>
437 tim 1.1
438 tim 1.58
439 tim 1.11 <target name="clean"
440     description="Removes all build products">
441     <delete dir="${build.dir}"/>
442 tim 1.1 </target>
443    
444    
445 tim 1.11 <target name="dist-clean"
446     description="Removes all build and distribution products">
447 jsr166 1.148 <delete dir="${build.dir}"/>
448 tim 1.11 <delete dir="${dist.dir}"/>
449 tim 1.9 </target>
450 tim 1.10
451    
452 tim 1.28 <target name="dist-jar"
453     depends="clean, jar">
454 tim 1.11 <copy file="${product.jar}" todir="${dist.dir}"/>
455 jsr166 1.125 </target>
456 tim 1.27
457 jsr166 1.125 <target name="dist-docs"
458     depends="clean, docs">
459 jsr166 1.127 <mirror-dir src="${docs.dir}" dst="${dist.docs.dir}"/>
460 tim 1.11 </target>
461    
462 jsr166 1.174 <target name="tck"
463 jsr166 1.304 depends="jar"
464 jsr166 1.205 description="Runs tck tests for src/main directly">
465 jsr166 1.131
466     <run-tck-tests
467 jsr166 1.290 target="${java.runtime.target}"
468 jsr166 1.131 workdir="${build.dir}"
469 jsr166 1.236 classes="${product.jar}">
470     <javac-elements>
471     <compilerarg value="-Werror"/>
472     </javac-elements>
473     </run-tck-tests>
474 jsr166 1.131 </target>
475 tim 1.1
476 jsr166 1.174 <target name="tck-parallelism-1"
477 jsr166 1.208 description="Runs tck with common pool parallelism 1">
478 jsr166 1.174 <antcall target="tck">
479 jsr166 1.160 <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="1"/>
480     </antcall>
481     </target>
482    
483 jsr166 1.174 <target name="tck-parallelism-0"
484 jsr166 1.208 description="Runs tck with common pool parallelism 0">
485 jsr166 1.174 <antcall target="tck">
486 jsr166 1.160 <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="0"/>
487     </antcall>
488     </target>
489    
490 jsr166 1.213 <target name="tck-security-manager"
491     description="Runs tck with a security manager">
492     <antcall target="tck">
493     <param name="jsr166.useSecurityManager" value="true"/>
494     </antcall>
495     </target>
496    
497 jsr166 1.174 <target name="jtreg"
498 jsr166 1.304 depends="jar"
499 jsr166 1.205 description="Runs jtreg tests for src/main using the jtreg ant task">
500 jsr166 1.135 <run-jtreg-tests
501 jsr166 1.290 target="${java.runtime.target}"
502 jsr166 1.135 workdir="${build.dir}"
503     classes="${product.jar}"/>
504     </target>
505    
506 jsr166 1.142 <target name="test"
507 jsr166 1.208 depends="tck, tck-parallelism-1, tck-parallelism-0, jtreg"
508 jsr166 1.241 description="Runs tck and jtreg tests for src/main"/>
509 jsr166 1.135
510 jsr166 1.284 <target name="test-version-permutations"
511 jsr166 1.311 depends="test11, test12, test13, test14, test15, test11-12, test11-13, test11-14, test11-15, clean, test, docs"
512     description="Runs tck and jtreg tests for various build-time and runtime java versions"/>
513 jsr166 1.151
514 jsr166 1.284 <target name="test11">
515     <antcall>
516 jsr166 1.290 <param name="java.runtime.target" value="11"/>
517 jsr166 1.278 <param name="build.main.javac" value="${javac11}"/>
518 jsr166 1.290 <param name="build.main.javadoc" value="${javadoc12}"/>
519     <param name="build.main.javadoc.source" value="11"/>
520 jsr166 1.306 <target name="clean"/>
521 jsr166 1.284 <target name="test"/>
522     <target name="docs"/>
523 jsr166 1.260 </antcall>
524 jsr166 1.284 </target>
525 jsr166 1.260
526 jsr166 1.284 <target name="test12">
527     <antcall>
528 jsr166 1.290 <param name="java.runtime.target" value="12"/>
529 jsr166 1.278 <param name="build.main.javac" value="${javac12}"/>
530 jsr166 1.284 <param name="build.main.javadoc" value="${javadoc12}"/>
531 jsr166 1.290 <param name="build.main.javadoc.source" value="12"/>
532 jsr166 1.306 <target name="clean"/>
533 jsr166 1.284 <target name="test"/>
534     <target name="docs"/>
535 jsr166 1.278 </antcall>
536 jsr166 1.284 </target>
537    
538 jsr166 1.294 <target name="test13">
539     <antcall>
540     <param name="java.runtime.target" value="13"/>
541     <param name="build.main.javac" value="${javac13}"/>
542     <param name="build.main.javadoc" value="${javadoc13}"/>
543     <param name="build.main.javadoc.source" value="13"/>
544 jsr166 1.306 <target name="clean"/>
545 jsr166 1.294 <target name="test"/>
546     <target name="docs"/>
547     </antcall>
548     </target>
549    
550 jsr166 1.299 <target name="test14">
551     <antcall>
552     <param name="java.runtime.target" value="14"/>
553     <param name="build.main.javac" value="${javac14}"/>
554     <param name="build.main.javadoc" value="${javadoc14}"/>
555     <param name="build.main.javadoc.source" value="14"/>
556 jsr166 1.306 <target name="clean"/>
557 jsr166 1.299 <target name="test"/>
558     <target name="docs"/>
559     </antcall>
560     </target>
561    
562 jsr166 1.310 <target name="test15">
563     <antcall>
564     <param name="java.runtime.target" value="15"/>
565     <param name="build.main.javac" value="${javac15}"/>
566     <param name="build.main.javadoc" value="${javadoc15}"/>
567     <param name="build.main.javadoc.source" value="15"/>
568     <target name="clean"/>
569     <target name="test"/>
570     <target name="docs"/>
571     </antcall>
572     </target>
573    
574 jsr166 1.301 <target name="test11-12">
575 jsr166 1.284 <antcall>
576 jsr166 1.290 <param name="java.runtime.target" value="12"/>
577 jsr166 1.301 <param name="build.main.javac" value="${javac11}"/>
578 jsr166 1.278 <param name="build.main.javadoc" value="${javadoc12}"/>
579 jsr166 1.301 <param name="build.main.javadoc.source" value="11"/>
580 jsr166 1.306 <target name="clean"/>
581 jsr166 1.284 <target name="test"/>
582     <target name="docs"/>
583 jsr166 1.275 </antcall>
584 jsr166 1.248 </target>
585 jsr166 1.151
586 jsr166 1.301 <target name="test11-13">
587 jsr166 1.294 <antcall>
588     <param name="java.runtime.target" value="13"/>
589 jsr166 1.301 <param name="build.main.javac" value="${javac11}"/>
590 jsr166 1.294 <param name="build.main.javadoc" value="${javadoc13}"/>
591 jsr166 1.301 <param name="build.main.javadoc.source" value="11"/>
592 jsr166 1.306 <target name="clean"/>
593 jsr166 1.294 <target name="test"/>
594     <target name="docs"/>
595     </antcall>
596     </target>
597    
598 jsr166 1.301 <target name="test11-14">
599 jsr166 1.299 <antcall>
600     <param name="java.runtime.target" value="14"/>
601 jsr166 1.301 <param name="build.main.javac" value="${javac11}"/>
602 jsr166 1.299 <param name="build.main.javadoc" value="${javadoc14}"/>
603 jsr166 1.301 <param name="build.main.javadoc.source" value="11"/>
604 jsr166 1.306 <target name="clean"/>
605 jsr166 1.299 <target name="test"/>
606     <target name="docs"/>
607     </antcall>
608     </target>
609    
610 jsr166 1.310 <target name="test11-15">
611     <antcall>
612     <param name="java.runtime.target" value="15"/>
613     <param name="build.main.javac" value="${javac11}"/>
614     <param name="build.main.javadoc" value="${javadoc15}"/>
615     <param name="build.main.javadoc.source" value="11"/>
616     <target name="clean"/>
617     <target name="test"/>
618     <target name="docs"/>
619     </antcall>
620     </target>
621    
622 tim 1.18
623 tim 1.32 <target name="configure-compiler">
624 jsr166 1.180 <fail message="ant version too old">
625 jsr166 1.237 <condition> <not> <antversion atleast="1.9.1"/> </not> </condition>
626 jsr166 1.180 </fail>
627 tim 1.54
628     <property name="unchecked.option" value="-Xlint:unchecked"/>
629    
630     <condition property="warnunchecked.arg" value="${unchecked.option}">
631 tim 1.57 <istrue value="${build.warnunchecked}"/>
632 tim 1.32 </condition>
633    
634 tim 1.37 <property name="warnunchecked.arg" value=""/>
635 tim 1.34
636 tim 1.32
637     <!-- Common options in javac invocations -->
638 tim 1.57 <property name="build.args" value="${warnunchecked.arg}"/>
639 tim 1.33
640     </target>
641    
642    
643 jsr166 1.166 <target name="compile-test-loops" depends="jar"
644 jsr166 1.241 description="Compiles all the perf tests in src/test/loops">
645 jsr166 1.166
646     <mkdir dir="${build.dir}/test/loops"/>
647    
648     <javac srcdir="${basedir}/src/test/loops"
649     destdir="${build.dir}/test/loops"
650     debug="${build.debug}"
651     debuglevel="${build.debuglevel}"
652     deprecation="${build.deprecation}"
653     includeAntRuntime="false"
654     includeJavaRuntime="false"
655 jsr166 1.219 encoding="ASCII"
656 jsr166 1.247 executable="${build.main.javac}"
657 jsr166 1.166 fork="true">
658    
659     <include name="*.java"/>
660     <compilerarg value="-XDignore.symbol.file=true"/>
661 jsr166 1.304 <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation"/>
662     <compilerarg value="--patch-module=java.base=${src.dir}"/>
663 jsr166 1.166 <compilerarg line="${build.args}"/>
664     </javac>
665     </target>
666    
667    
668 jsr166 1.304 <!-- old branches no longer maintained. build support deleted -->
669     <!-- jsr166 4jdk8; (no longer maintained as of 2019-10) -->
670 jsr166 1.241 <!-- jsr166 4jdk7 (no longer maintained) -->
671     <!-- jsr166x (no longer maintained) -->
672     <!-- jsr166y (no longer maintained) -->
673     <!-- extra166y (no longer maintained) -->
674     <!-- jsr166e (no longer maintained) -->
675 dl 1.90
676 jsr166 1.130 <!-- Find buglets that can be detected by static build tools -->
677    
678 jsr166 1.269 <!-- <target name="lint"> -->
679     <!-- <antcall target="dists"> -->
680     <!-- <param name="build.javadoc.access" value="protected"/> -->
681     <!-- </antcall> -->
682     <!-- </target> -->
683 jsr166 1.161
684     <!-- Generates all doclint warnings, even for private methods (rarely useful) -->
685 jsr166 1.269 <target name="doclint-private">
686 jsr166 1.161 <antcall target="dist">
687 jsr166 1.130 <param name="build.javadoc.access" value="private"/>
688     </antcall>
689     </target>
690    
691 jsr166 1.236
692     <!-- ==============================================================
693 jsr166 1.287 Experimental errorprone support
694     https://errorprone.info
695     https://errorprone.info/docs/installation
696     https://github.com/google/error-prone/issues/1143
697 jsr166 1.236 =================================================================== -->
698 jsr166 1.288 <path id="errorprone.processorpath.path">
699 jsr166 1.309 <pathelement location="${lib.dir}/error_prone_core-2.3.4-with-dependencies.jar"/>
700 jsr166 1.288 <pathelement location="${lib.dir}/dataflow-2.5.7.jar"/>
701     <pathelement location="${lib.dir}/javacutil-2.5.7.jar"/>
702     <pathelement location="${lib.dir}/jFormatString-3.0.0.jar"/>
703 jsr166 1.309 <pathelement location="${lib.dir}/caffeine-2.8.0.jar"/>
704 jsr166 1.288 </path>
705     <property name="errorprone.processorpath" refid="errorprone.processorpath.path" />
706 jsr166 1.267 <property name="errorprone.jsr166.user.flags" value=""/>
707 jsr166 1.261 <property name="errorprone.jsr166.flags"
708 jsr166 1.263 value="-Xep:HashtableContains:OFF
709 jsr166 1.261 -Xep:JdkObsolete:OFF
710     -Xep:MissingOverride:OFF
711     -Xep:MissingFail:OFF
712 jsr166 1.288 -Xep:ThreadPriorityCheck:OFF
713 jsr166 1.263 -Xep:MixedArrayDimensions:ERROR
714     -Xep:RemoveUnusedImports:ERROR
715     -Xep:EmptyIf:ERROR
716     -Xep:MultipleTopLevelClasses:ERROR
717     -Xep:ClassName:ERROR
718     -Xep:LongLiteralLowerCaseSuffix:ERROR
719     -Xep:RedundantThrows:ERROR
720 jsr166 1.261 -Xep:IdentityBinaryExpression:WARN
721 jsr166 1.287 -Xep:ConstructorInvokesOverridable:WARN
722 jsr166 1.267 -Xep:MethodCanBeStatic:WARN
723     ${errorprone.jsr166.user.flags}"/>
724 jsr166 1.261 <!-- -Xep:WildcardImport:ERROR -->
725     <property name="errorprone.jsr166.test.flags"
726 jsr166 1.263 value="-Xep:StringSplitter:OFF
727     -Xep:BoxedPrimitiveConstructor:OFF
728     -Xep:ModifyingCollectionWithItself:OFF"/>
729 jsr166 1.261 <!-- ant -emacs errorprone |& grep -EA1 '(warning|error):|warnings' -->
730 jsr166 1.236 <target name="errorprone"
731     depends="clean, configure-compiler"
732 jsr166 1.241 description="Run errorprone over jsr166 source code (experimental)">
733 jsr166 1.236
734     <local name="destdir"/>
735     <property name="destdir" value="${build.classes.dir}/java.base"/>
736     <mkdir dir="${destdir}"/>
737    
738     <javac srcdir="${src.dir}"
739     destdir="${destdir}"
740     debug="${build.debug}"
741     debuglevel="${build.debuglevel}"
742     deprecation="${build.deprecation}"
743     classpath=""
744     includeAntRuntime="false"
745     includeJavaRuntime="false"
746     encoding="ASCII"
747     executable="${build.main.javac}"
748     fork="true">
749    
750     <include name="**/*.java"/>
751 jsr166 1.272 <!-- Needed to silence -Xep:FutureReturnValueIgnored -->
752     <compilerarg value="-J--illegal-access=permit"/>
753 jsr166 1.264 <compilerarg value="-XDcompilePolicy=simple"/>
754 jsr166 1.288 <compilerarg value="-processorpath"/>
755     <compilerarg pathref="errorprone.processorpath.path"/>
756 jsr166 1.236 <compilerarg value="-Xplugin:ErrorProne
757 jsr166 1.261 ${errorprone.jsr166.flags}"/>
758 jsr166 1.236 <compilerarg value="--patch-module=java.base=${src.dir}"/>
759     <compilerarg value="-Xprefer:source"/>
760     <compilerarg value="-XDignore.symbol.file=true"/>
761     <compilerarg value="-Xlint:all"/>
762     <compilerarg value="-Xdoclint:all/protected,reference/private"/>
763     <compilerarg line="-Xmaxerrs 3000 -Xmaxwarns 3000"/>
764     <compilerarg line="${build.args}"/>
765     </javac>
766    
767     <jar destfile="${product.jar}">
768     <fileset dir="${destdir}"/>
769     </jar>
770    
771     <run-tck-tests
772 jsr166 1.290 target="${java.runtime.target}"
773 jsr166 1.236 workdir="${build.dir}"
774     classes="${product.jar}">
775     <javac-elements>
776 jsr166 1.272 <!-- Needed to silence -Xep:FutureReturnValueIgnored -->
777     <compilerarg value="-J--illegal-access=permit"/>
778 jsr166 1.264 <compilerarg value="-XDcompilePolicy=simple"/>
779 jsr166 1.286 <compilerarg line="-processorpath ${errorprone.processorpath}"/>
780 jsr166 1.241 <compilerarg value="-Xplugin:ErrorProne
781 jsr166 1.261 ${errorprone.jsr166.flags}
782     ${errorprone.jsr166.test.flags}"/>
783 jsr166 1.236 <compilerarg line="-Xmaxerrs 3000 -Xmaxwarns 3000"/>
784     </javac-elements>
785     </run-tck-tests>
786     </target>
787    
788 jsr166 1.261 <!-- ant -emacs errorprone-jtreg |& grep -EA1 '(warning|error):' -->
789 jsr166 1.262 <!-- -XDcompilePolicy=simple or byfile avoids confusing UnusedImports -->
790 jsr166 1.255 <target name="errorprone-jtreg"
791     depends="jar"
792     description="Run errorprone over jtreg tests (experimental)">
793    
794     <run-jtreg-tests
795 jsr166 1.290 target="${java.runtime.target}"
796 jsr166 1.255 workdir="${build.dir}"
797     classes="${product.jar}"
798     verbose="all">
799     <jtreg-elements>
800 jsr166 1.264 <arg value="-javacoption:-XDcompilePolicy=simple"/>
801 jsr166 1.255 <arg value="-javacoption:-processorpath"/>
802 jsr166 1.286 <arg value="-javacoption:${errorprone.processorpath}"/>
803 jsr166 1.255 <arg value="-javacoption:-Xplugin:ErrorProne
804 jsr166 1.261 ${errorprone.jsr166.flags}
805     ${errorprone.jsr166.test.flags}
806 jsr166 1.270 -Xep:MultipleTopLevelClasses:WARN
807 jsr166 1.261 -Xep:NonAtomicVolatileUpdate:OFF"/>
808 jsr166 1.255 </jtreg-elements>
809     </run-jtreg-tests>
810     </target>
811    
812 jsr166 1.236
813 jsr166 1.229 <!-- ==============================================================
814     Running guava tests against jsr166 code
815     =================================================================== -->
816    
817     <!-- <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" -->
818 jsr166 1.230 <!-- organisation="com.google.guava" module="guava-testlib" revision="21.0"/> -->
819     <!-- <property name="guava.version" value="21.0"/> -->
820 jsr166 1.229
821     <!-- HOWTO debug print a path id -->
822     <!-- <pathconvert property="guava.testlib.classpath" refid="guava.testlib.classpath" /> -->
823     <!-- <echo message="guava.testlib.classpath=${guava.testlib.classpath}"/> -->
824    
825     <!-- <ivy:retrieve pathid="guava.tests.classpath" type="jar" inline="true" conf="*" pattern="${lib.dir}/[type]/[artifact].[ext]" -->
826     <!-- organisation="com.google.guava" module="guava-tests"/> -->
827     <!-- <get src="http://repo2.maven.org/maven2/com/google/guava/guava-tests/${guava.version}/guava-tests-${guava.version}-tests.jar" -->
828     <!-- dest="${lib.dir}/jar/guava-tests-tests.jar" usetimestamp="true"/> -->
829     <!-- <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" type="*" -->
830     <!-- organisation="com.google.guava" module="guava-testlib" revision="${guava.version}"/> -->
831    
832     <!-- <test name="com.google.common.collect.testing.TestsForQueuesInJavaUtil"/> -->
833     <!-- <test name="com.google.common.collect.testing.TestsForListsInJavaUtil"/> -->
834     <!-- <test name="com.google.common.collect.testing.TestsForSetsInJavaUtil"/> -->
835     <!-- <test name="com.google.common.collect.testing.TestsForMapsInJavaUtil"/> -->
836    
837     <!-- <ivy:retrieve pathid="guava.testlib.classpath" -->
838     <!-- type="*" inline="true" conf="*(private),*(public)" -->
839     <!-- pattern="${guava.dir}/[artifact].[ext]" -->
840     <!-- organisation="com.google.guava" module="guava-testlib"/> -->
841    
842     <!-- Work around bug below by downloading guava-testlib-tests.jar "by hand": -->
843     <!-- https://issues.apache.org/jira/browse/IVY-1444 -->
844     <!-- maven tests artifacts cannot be downloaded because they are mapped to private configurations -->
845    
846     <target name="init-ivy">
847     <get src="http://repo2.maven.org/maven2/org/apache/ivy/ivy/2.4.0/ivy-2.4.0.jar"
848     dest="${build.dir}/ivy.jar" usetimestamp="true" skipexisting="true"/>
849     <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant"
850     classpath="${build.dir}/ivy.jar"/>
851     </target>
852    
853     <target name="guava-tests" depends="jar, init-ivy"
854     description="Guava tests run against jsr166 collections">
855     <property name="guava.dir" value="${build.dir}/guava-testlib"/>
856     <mkdir dir="${guava.dir}"/>
857     <ivy:retrieve pathid="guava.testlib.classpath"
858     type="jar,bundle" inline="true" conf="default,master"
859     pattern="${guava.dir}/[artifact].[ext]"
860     organisation="com.google.guava" module="guava-testlib"/>
861 jsr166 1.230 <property name="guava.version" value="21.0"/>
862 jsr166 1.229 <get src="http://repo2.maven.org/maven2/com/google/guava/guava-testlib/${guava.version}/guava-testlib-${guava.version}-tests.jar"
863     dest="${guava.dir}/guava-testlib-tests.jar" usetimestamp="true"/>
864     <junit printsummary="true" showoutput="true" haltonfailure="true"
865 jsr166 1.247 jvm="${build.main.java}" fork="true">
866 jsr166 1.252 <jvmarg line="-ea -esa --patch-module=java.base=${product.jar}"/>
867 jsr166 1.229 <formatter type="brief"/>
868     <classpath>
869     <pathelement location="${guava.dir}/guava-testlib-tests.jar"/>
870     <path refid="guava.testlib.classpath"/>
871     </classpath>
872    
873     <!-- "6" in "OpenJdk6Tests" misleadingly means "6+" -->
874     <test name="com.google.common.collect.testing.OpenJdk6Tests"/>
875     </junit>
876     </target>
877 jsr166 1.130
878 tim 1.1 </project>