ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.311
Committed: Mon Mar 2 19:36:41 2020 UTC (4 years, 1 month ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.310: +2 -2 lines
Log Message:
test-version-permutations: add description

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.299 <property name="java14.docroot.url" value="https://download.java.net/java/early_access/jdk14/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     <compilerarg value="-Xdoclint:all/protected,reference/private"/>
356 jsr166 1.298 <compilerarg value="-Xdoclint/package:java.util.*"/>
357 jsr166 1.164 <compilerarg value="-Werror"/>
358 jsr166 1.146 <compilerarg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
359 dl 1.73 <compilerarg line="${build.args}"/>
360 tim 1.1
361     </javac>
362     </target>
363    
364    
365 tim 1.28 <target name="jar"
366 tim 1.59 depends="compile"
367 jsr166 1.205 description="Builds library jar for src/main from compiled sources">
368 jsr166 1.212 <local name="subdir"/>
369     <available property="subdir" file="${build.classes.dir}/java.base" type="dir" value="/java.base"/>
370 tim 1.59 <jar destfile="${product.jar}">
371 jsr166 1.212 <fileset dir="${build.classes.dir}${subdir}"/>
372 jsr166 1.178 <manifest>
373 jsr166 1.179 <attribute name="Built-By" value="${user.name}"/>
374     <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
375 jsr166 1.178 </manifest>
376 tim 1.59 </jar>
377     </target>
378    
379 tim 1.1
380 tim 1.59 <target name="docs"
381 jsr166 1.102 description="Builds javadocs for src/main to dist dir">
382 tim 1.59
383 jsr166 1.307 <delete dir="${docs.dir}" quiet="true"/>
384 jsr166 1.127 <mkdir dir="${docs.dir}"/>
385 tim 1.59
386 jsr166 1.305 <!-- old school frames via docs/index.html?overview-summary.html -->
387     <!-- dash-dash-frames no longer a supported option in jdk13+ -->
388     <local name="use-frames"/>
389     <condition property="use-frames">
390     <equals arg1="${build.main.javadoc}" arg2="${javadoc12}"/>
391     </condition>
392    
393 jsr166 1.88 <!-- the packagenames="none" hack below prevents scanning the -->
394     <!-- sourcepath for packages -->
395    
396 jsr166 1.226 <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}" -->
397     <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}:${jdk9.src.home}/jdk/src/java.logging/share/classes" -->
398     <!-- TODO: sourcepath="${src.dir}:${jdk9.home}/src.zip" -->
399     <!-- TODO: <arg line="-sourcepath ${src.dir}:${jdk9.home}/src.zip"/> -->
400     <!-- TODO: <arg line="- -module-source-path ${jdk9.home}/src.zip"/> -->
401 jsr166 1.127 <javadoc destdir="${docs.dir}"
402 jsr166 1.88 packagenames="none"
403 jsr166 1.290 link="${java.api.url}"
404 jsr166 1.88 overview="${src.dir}/intro.html"
405 jsr166 1.130 access="${build.javadoc.access}"
406 jsr166 1.216 sourcepath="${src.dir}"
407 jsr166 1.100 classpath=""
408 jsr166 1.290 source="${build.main.javadoc.source}"
409 jsr166 1.247 executable="${build.main.javadoc}">
410 jsr166 1.291 <!-- TODO: JDK-8214571 failonerror = "true" -->
411 jsr166 1.119 <fileset dir="${src.dir}" defaultexcludes="yes">
412     <include name="**/*.java"/>
413     </fileset>
414 jsr166 1.290 <arg line="-Xdocrootparent ${java.docroot.url}"/>
415 jsr166 1.146 <arg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
416 jsr166 1.307 <arg value="-quiet"/>
417 jsr166 1.100 <arg value="-XDignore.symbol.file=true"/>
418 jsr166 1.243 <arg value="-html5"/>
419 jsr166 1.234 <arg value="--patch-module=java.base=${src.dir}"/>
420 jsr166 1.305 <arg value="--frames" if:set="use-frames"/>
421 jsr166 1.265 <arg value="--override-methods=summary"/>
422     <arg value="-tag"/> <arg value="${javadoc.jls.option}"/>
423     <arg value="-tag"/> <arg value="implSpec:a:Implementation Requirements:"/>
424     <arg value="-tag"/> <arg value="implNote:a:Implementation Note:"/>
425 jsr166 1.273 <arg value="-tag"/> <arg value="apiNote:a:API Note:"/>
426 jsr166 1.220 <!-- tags added in jdk9: currently unused -->
427 jsr166 1.265 <!-- <arg value="-tag"/> <arg value="revised:X"/> -->
428     <!-- <arg value="-tag"/> <arg value="spec:X"/> -->
429 tim 1.59 </javadoc>
430     </target>
431    
432    
433 tim 1.28 <target name="dist"
434 jsr166 1.125 depends="dist-clean, dist-jar, dist-docs"
435 tim 1.16 description="Puts all distributable products in single hierarchy"/>
436 tim 1.1
437 tim 1.58
438 tim 1.11 <target name="clean"
439     description="Removes all build products">
440     <delete dir="${build.dir}"/>
441 tim 1.1 </target>
442    
443    
444 tim 1.11 <target name="dist-clean"
445     description="Removes all build and distribution products">
446 jsr166 1.148 <delete dir="${build.dir}"/>
447 tim 1.11 <delete dir="${dist.dir}"/>
448 tim 1.9 </target>
449 tim 1.10
450    
451 tim 1.28 <target name="dist-jar"
452     depends="clean, jar">
453 tim 1.11 <copy file="${product.jar}" todir="${dist.dir}"/>
454 jsr166 1.125 </target>
455 tim 1.27
456 jsr166 1.125 <target name="dist-docs"
457     depends="clean, docs">
458 jsr166 1.127 <mirror-dir src="${docs.dir}" dst="${dist.docs.dir}"/>
459 tim 1.11 </target>
460    
461 jsr166 1.174 <target name="tck"
462 jsr166 1.304 depends="jar"
463 jsr166 1.205 description="Runs tck tests for src/main directly">
464 jsr166 1.131
465     <run-tck-tests
466 jsr166 1.290 target="${java.runtime.target}"
467 jsr166 1.131 workdir="${build.dir}"
468 jsr166 1.236 classes="${product.jar}">
469     <javac-elements>
470     <compilerarg value="-Werror"/>
471     </javac-elements>
472     </run-tck-tests>
473 jsr166 1.131 </target>
474 tim 1.1
475 jsr166 1.174 <target name="tck-parallelism-1"
476 jsr166 1.208 description="Runs tck with common pool parallelism 1">
477 jsr166 1.174 <antcall target="tck">
478 jsr166 1.160 <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="1"/>
479     </antcall>
480     </target>
481    
482 jsr166 1.174 <target name="tck-parallelism-0"
483 jsr166 1.208 description="Runs tck with common pool parallelism 0">
484 jsr166 1.174 <antcall target="tck">
485 jsr166 1.160 <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="0"/>
486     </antcall>
487     </target>
488    
489 jsr166 1.213 <target name="tck-security-manager"
490     description="Runs tck with a security manager">
491     <antcall target="tck">
492     <param name="jsr166.useSecurityManager" value="true"/>
493     </antcall>
494     </target>
495    
496 jsr166 1.174 <target name="jtreg"
497 jsr166 1.304 depends="jar"
498 jsr166 1.205 description="Runs jtreg tests for src/main using the jtreg ant task">
499 jsr166 1.135 <run-jtreg-tests
500 jsr166 1.290 target="${java.runtime.target}"
501 jsr166 1.135 workdir="${build.dir}"
502     classes="${product.jar}"/>
503     </target>
504    
505 jsr166 1.142 <target name="test"
506 jsr166 1.208 depends="tck, tck-parallelism-1, tck-parallelism-0, jtreg"
507 jsr166 1.241 description="Runs tck and jtreg tests for src/main"/>
508 jsr166 1.135
509 jsr166 1.284 <target name="test-version-permutations"
510 jsr166 1.311 depends="test11, test12, test13, test14, test15, test11-12, test11-13, test11-14, test11-15, clean, test, docs"
511     description="Runs tck and jtreg tests for various build-time and runtime java versions"/>
512 jsr166 1.151
513 jsr166 1.284 <target name="test11">
514     <antcall>
515 jsr166 1.290 <param name="java.runtime.target" value="11"/>
516 jsr166 1.278 <param name="build.main.javac" value="${javac11}"/>
517 jsr166 1.290 <param name="build.main.javadoc" value="${javadoc12}"/>
518     <param name="build.main.javadoc.source" value="11"/>
519 jsr166 1.306 <target name="clean"/>
520 jsr166 1.284 <target name="test"/>
521     <target name="docs"/>
522 jsr166 1.260 </antcall>
523 jsr166 1.284 </target>
524 jsr166 1.260
525 jsr166 1.284 <target name="test12">
526     <antcall>
527 jsr166 1.290 <param name="java.runtime.target" value="12"/>
528 jsr166 1.278 <param name="build.main.javac" value="${javac12}"/>
529 jsr166 1.284 <param name="build.main.javadoc" value="${javadoc12}"/>
530 jsr166 1.290 <param name="build.main.javadoc.source" value="12"/>
531 jsr166 1.306 <target name="clean"/>
532 jsr166 1.284 <target name="test"/>
533     <target name="docs"/>
534 jsr166 1.278 </antcall>
535 jsr166 1.284 </target>
536    
537 jsr166 1.294 <target name="test13">
538     <antcall>
539     <param name="java.runtime.target" value="13"/>
540     <param name="build.main.javac" value="${javac13}"/>
541     <param name="build.main.javadoc" value="${javadoc13}"/>
542     <param name="build.main.javadoc.source" value="13"/>
543 jsr166 1.306 <target name="clean"/>
544 jsr166 1.294 <target name="test"/>
545     <target name="docs"/>
546     </antcall>
547     </target>
548    
549 jsr166 1.299 <target name="test14">
550     <antcall>
551     <param name="java.runtime.target" value="14"/>
552     <param name="build.main.javac" value="${javac14}"/>
553     <param name="build.main.javadoc" value="${javadoc14}"/>
554     <param name="build.main.javadoc.source" value="14"/>
555 jsr166 1.306 <target name="clean"/>
556 jsr166 1.299 <target name="test"/>
557     <target name="docs"/>
558     </antcall>
559     </target>
560    
561 jsr166 1.310 <target name="test15">
562     <antcall>
563     <param name="java.runtime.target" value="15"/>
564     <param name="build.main.javac" value="${javac15}"/>
565     <param name="build.main.javadoc" value="${javadoc15}"/>
566     <param name="build.main.javadoc.source" value="15"/>
567     <target name="clean"/>
568     <target name="test"/>
569     <target name="docs"/>
570     </antcall>
571     </target>
572    
573 jsr166 1.301 <target name="test11-12">
574 jsr166 1.284 <antcall>
575 jsr166 1.290 <param name="java.runtime.target" value="12"/>
576 jsr166 1.301 <param name="build.main.javac" value="${javac11}"/>
577 jsr166 1.278 <param name="build.main.javadoc" value="${javadoc12}"/>
578 jsr166 1.301 <param name="build.main.javadoc.source" value="11"/>
579 jsr166 1.306 <target name="clean"/>
580 jsr166 1.284 <target name="test"/>
581     <target name="docs"/>
582 jsr166 1.275 </antcall>
583 jsr166 1.248 </target>
584 jsr166 1.151
585 jsr166 1.301 <target name="test11-13">
586 jsr166 1.294 <antcall>
587     <param name="java.runtime.target" value="13"/>
588 jsr166 1.301 <param name="build.main.javac" value="${javac11}"/>
589 jsr166 1.294 <param name="build.main.javadoc" value="${javadoc13}"/>
590 jsr166 1.301 <param name="build.main.javadoc.source" value="11"/>
591 jsr166 1.306 <target name="clean"/>
592 jsr166 1.294 <target name="test"/>
593     <target name="docs"/>
594     </antcall>
595     </target>
596    
597 jsr166 1.301 <target name="test11-14">
598 jsr166 1.299 <antcall>
599     <param name="java.runtime.target" value="14"/>
600 jsr166 1.301 <param name="build.main.javac" value="${javac11}"/>
601 jsr166 1.299 <param name="build.main.javadoc" value="${javadoc14}"/>
602 jsr166 1.301 <param name="build.main.javadoc.source" value="11"/>
603 jsr166 1.306 <target name="clean"/>
604 jsr166 1.299 <target name="test"/>
605     <target name="docs"/>
606     </antcall>
607     </target>
608    
609 jsr166 1.310 <target name="test11-15">
610     <antcall>
611     <param name="java.runtime.target" value="15"/>
612     <param name="build.main.javac" value="${javac11}"/>
613     <param name="build.main.javadoc" value="${javadoc15}"/>
614     <param name="build.main.javadoc.source" value="11"/>
615     <target name="clean"/>
616     <target name="test"/>
617     <target name="docs"/>
618     </antcall>
619     </target>
620    
621 tim 1.18
622 tim 1.32 <target name="configure-compiler">
623 jsr166 1.180 <fail message="ant version too old">
624 jsr166 1.237 <condition> <not> <antversion atleast="1.9.1"/> </not> </condition>
625 jsr166 1.180 </fail>
626 tim 1.54
627     <property name="unchecked.option" value="-Xlint:unchecked"/>
628    
629     <condition property="warnunchecked.arg" value="${unchecked.option}">
630 tim 1.57 <istrue value="${build.warnunchecked}"/>
631 tim 1.32 </condition>
632    
633 tim 1.37 <property name="warnunchecked.arg" value=""/>
634 tim 1.34
635 tim 1.32
636     <!-- Common options in javac invocations -->
637 tim 1.57 <property name="build.args" value="${warnunchecked.arg}"/>
638 tim 1.33
639     </target>
640    
641    
642 jsr166 1.166 <target name="compile-test-loops" depends="jar"
643 jsr166 1.241 description="Compiles all the perf tests in src/test/loops">
644 jsr166 1.166
645     <mkdir dir="${build.dir}/test/loops"/>
646    
647     <javac srcdir="${basedir}/src/test/loops"
648     destdir="${build.dir}/test/loops"
649     debug="${build.debug}"
650     debuglevel="${build.debuglevel}"
651     deprecation="${build.deprecation}"
652     includeAntRuntime="false"
653     includeJavaRuntime="false"
654 jsr166 1.219 encoding="ASCII"
655 jsr166 1.247 executable="${build.main.javac}"
656 jsr166 1.166 fork="true">
657    
658     <include name="*.java"/>
659     <compilerarg value="-XDignore.symbol.file=true"/>
660 jsr166 1.304 <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation"/>
661     <compilerarg value="--patch-module=java.base=${src.dir}"/>
662 jsr166 1.166 <compilerarg line="${build.args}"/>
663     </javac>
664     </target>
665    
666    
667 jsr166 1.304 <!-- old branches no longer maintained. build support deleted -->
668     <!-- jsr166 4jdk8; (no longer maintained as of 2019-10) -->
669 jsr166 1.241 <!-- jsr166 4jdk7 (no longer maintained) -->
670     <!-- jsr166x (no longer maintained) -->
671     <!-- jsr166y (no longer maintained) -->
672     <!-- extra166y (no longer maintained) -->
673     <!-- jsr166e (no longer maintained) -->
674 dl 1.90
675 jsr166 1.130 <!-- Find buglets that can be detected by static build tools -->
676    
677 jsr166 1.269 <!-- <target name="lint"> -->
678     <!-- <antcall target="dists"> -->
679     <!-- <param name="build.javadoc.access" value="protected"/> -->
680     <!-- </antcall> -->
681     <!-- </target> -->
682 jsr166 1.161
683     <!-- Generates all doclint warnings, even for private methods (rarely useful) -->
684 jsr166 1.269 <target name="doclint-private">
685 jsr166 1.161 <antcall target="dist">
686 jsr166 1.130 <param name="build.javadoc.access" value="private"/>
687     </antcall>
688     </target>
689    
690 jsr166 1.236
691     <!-- ==============================================================
692 jsr166 1.287 Experimental errorprone support
693     https://errorprone.info
694     https://errorprone.info/docs/installation
695     https://github.com/google/error-prone/issues/1143
696 jsr166 1.236 =================================================================== -->
697 jsr166 1.288 <path id="errorprone.processorpath.path">
698 jsr166 1.309 <pathelement location="${lib.dir}/error_prone_core-2.3.4-with-dependencies.jar"/>
699 jsr166 1.288 <pathelement location="${lib.dir}/dataflow-2.5.7.jar"/>
700     <pathelement location="${lib.dir}/javacutil-2.5.7.jar"/>
701     <pathelement location="${lib.dir}/jFormatString-3.0.0.jar"/>
702 jsr166 1.309 <pathelement location="${lib.dir}/caffeine-2.8.0.jar"/>
703 jsr166 1.288 </path>
704     <property name="errorprone.processorpath" refid="errorprone.processorpath.path" />
705 jsr166 1.267 <property name="errorprone.jsr166.user.flags" value=""/>
706 jsr166 1.261 <property name="errorprone.jsr166.flags"
707 jsr166 1.263 value="-Xep:HashtableContains:OFF
708 jsr166 1.261 -Xep:JdkObsolete:OFF
709     -Xep:MissingOverride:OFF
710     -Xep:MissingFail:OFF
711 jsr166 1.288 -Xep:ThreadPriorityCheck:OFF
712 jsr166 1.263 -Xep:MixedArrayDimensions:ERROR
713     -Xep:RemoveUnusedImports:ERROR
714     -Xep:EmptyIf:ERROR
715     -Xep:MultipleTopLevelClasses:ERROR
716     -Xep:ClassName:ERROR
717     -Xep:LongLiteralLowerCaseSuffix:ERROR
718     -Xep:RedundantThrows:ERROR
719 jsr166 1.261 -Xep:IdentityBinaryExpression:WARN
720 jsr166 1.287 -Xep:ConstructorInvokesOverridable:WARN
721 jsr166 1.267 -Xep:MethodCanBeStatic:WARN
722     ${errorprone.jsr166.user.flags}"/>
723 jsr166 1.261 <!-- -Xep:WildcardImport:ERROR -->
724     <property name="errorprone.jsr166.test.flags"
725 jsr166 1.263 value="-Xep:StringSplitter:OFF
726     -Xep:BoxedPrimitiveConstructor:OFF
727     -Xep:ModifyingCollectionWithItself:OFF"/>
728 jsr166 1.261 <!-- ant -emacs errorprone |& grep -EA1 '(warning|error):|warnings' -->
729 jsr166 1.236 <target name="errorprone"
730     depends="clean, configure-compiler"
731 jsr166 1.241 description="Run errorprone over jsr166 source code (experimental)">
732 jsr166 1.236
733     <local name="destdir"/>
734     <property name="destdir" value="${build.classes.dir}/java.base"/>
735     <mkdir dir="${destdir}"/>
736    
737     <javac srcdir="${src.dir}"
738     destdir="${destdir}"
739     debug="${build.debug}"
740     debuglevel="${build.debuglevel}"
741     deprecation="${build.deprecation}"
742     classpath=""
743     includeAntRuntime="false"
744     includeJavaRuntime="false"
745     encoding="ASCII"
746     executable="${build.main.javac}"
747     fork="true">
748    
749     <include name="**/*.java"/>
750 jsr166 1.272 <!-- Needed to silence -Xep:FutureReturnValueIgnored -->
751     <compilerarg value="-J--illegal-access=permit"/>
752 jsr166 1.264 <compilerarg value="-XDcompilePolicy=simple"/>
753 jsr166 1.288 <compilerarg value="-processorpath"/>
754     <compilerarg pathref="errorprone.processorpath.path"/>
755 jsr166 1.236 <compilerarg value="-Xplugin:ErrorProne
756 jsr166 1.261 ${errorprone.jsr166.flags}"/>
757 jsr166 1.236 <compilerarg value="--patch-module=java.base=${src.dir}"/>
758     <compilerarg value="-Xprefer:source"/>
759     <compilerarg value="-XDignore.symbol.file=true"/>
760     <compilerarg value="-Xlint:all"/>
761     <compilerarg value="-Xdoclint:all/protected,reference/private"/>
762     <compilerarg line="-Xmaxerrs 3000 -Xmaxwarns 3000"/>
763     <compilerarg line="${build.args}"/>
764     </javac>
765    
766     <jar destfile="${product.jar}">
767     <fileset dir="${destdir}"/>
768     </jar>
769    
770     <run-tck-tests
771 jsr166 1.290 target="${java.runtime.target}"
772 jsr166 1.236 workdir="${build.dir}"
773     classes="${product.jar}">
774     <javac-elements>
775 jsr166 1.272 <!-- Needed to silence -Xep:FutureReturnValueIgnored -->
776     <compilerarg value="-J--illegal-access=permit"/>
777 jsr166 1.264 <compilerarg value="-XDcompilePolicy=simple"/>
778 jsr166 1.286 <compilerarg line="-processorpath ${errorprone.processorpath}"/>
779 jsr166 1.241 <compilerarg value="-Xplugin:ErrorProne
780 jsr166 1.261 ${errorprone.jsr166.flags}
781     ${errorprone.jsr166.test.flags}"/>
782 jsr166 1.236 <compilerarg line="-Xmaxerrs 3000 -Xmaxwarns 3000"/>
783     </javac-elements>
784     </run-tck-tests>
785     </target>
786    
787 jsr166 1.261 <!-- ant -emacs errorprone-jtreg |& grep -EA1 '(warning|error):' -->
788 jsr166 1.262 <!-- -XDcompilePolicy=simple or byfile avoids confusing UnusedImports -->
789 jsr166 1.255 <target name="errorprone-jtreg"
790     depends="jar"
791     description="Run errorprone over jtreg tests (experimental)">
792    
793     <run-jtreg-tests
794 jsr166 1.290 target="${java.runtime.target}"
795 jsr166 1.255 workdir="${build.dir}"
796     classes="${product.jar}"
797     verbose="all">
798     <jtreg-elements>
799 jsr166 1.264 <arg value="-javacoption:-XDcompilePolicy=simple"/>
800 jsr166 1.255 <arg value="-javacoption:-processorpath"/>
801 jsr166 1.286 <arg value="-javacoption:${errorprone.processorpath}"/>
802 jsr166 1.255 <arg value="-javacoption:-Xplugin:ErrorProne
803 jsr166 1.261 ${errorprone.jsr166.flags}
804     ${errorprone.jsr166.test.flags}
805 jsr166 1.270 -Xep:MultipleTopLevelClasses:WARN
806 jsr166 1.261 -Xep:NonAtomicVolatileUpdate:OFF"/>
807 jsr166 1.255 </jtreg-elements>
808     </run-jtreg-tests>
809     </target>
810    
811 jsr166 1.236
812 jsr166 1.229 <!-- ==============================================================
813     Running guava tests against jsr166 code
814     =================================================================== -->
815    
816     <!-- <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" -->
817 jsr166 1.230 <!-- organisation="com.google.guava" module="guava-testlib" revision="21.0"/> -->
818     <!-- <property name="guava.version" value="21.0"/> -->
819 jsr166 1.229
820     <!-- HOWTO debug print a path id -->
821     <!-- <pathconvert property="guava.testlib.classpath" refid="guava.testlib.classpath" /> -->
822     <!-- <echo message="guava.testlib.classpath=${guava.testlib.classpath}"/> -->
823    
824     <!-- <ivy:retrieve pathid="guava.tests.classpath" type="jar" inline="true" conf="*" pattern="${lib.dir}/[type]/[artifact].[ext]" -->
825     <!-- organisation="com.google.guava" module="guava-tests"/> -->
826     <!-- <get src="http://repo2.maven.org/maven2/com/google/guava/guava-tests/${guava.version}/guava-tests-${guava.version}-tests.jar" -->
827     <!-- dest="${lib.dir}/jar/guava-tests-tests.jar" usetimestamp="true"/> -->
828     <!-- <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" type="*" -->
829     <!-- organisation="com.google.guava" module="guava-testlib" revision="${guava.version}"/> -->
830    
831     <!-- <test name="com.google.common.collect.testing.TestsForQueuesInJavaUtil"/> -->
832     <!-- <test name="com.google.common.collect.testing.TestsForListsInJavaUtil"/> -->
833     <!-- <test name="com.google.common.collect.testing.TestsForSetsInJavaUtil"/> -->
834     <!-- <test name="com.google.common.collect.testing.TestsForMapsInJavaUtil"/> -->
835    
836     <!-- <ivy:retrieve pathid="guava.testlib.classpath" -->
837     <!-- type="*" inline="true" conf="*(private),*(public)" -->
838     <!-- pattern="${guava.dir}/[artifact].[ext]" -->
839     <!-- organisation="com.google.guava" module="guava-testlib"/> -->
840    
841     <!-- Work around bug below by downloading guava-testlib-tests.jar "by hand": -->
842     <!-- https://issues.apache.org/jira/browse/IVY-1444 -->
843     <!-- maven tests artifacts cannot be downloaded because they are mapped to private configurations -->
844    
845     <target name="init-ivy">
846     <get src="http://repo2.maven.org/maven2/org/apache/ivy/ivy/2.4.0/ivy-2.4.0.jar"
847     dest="${build.dir}/ivy.jar" usetimestamp="true" skipexisting="true"/>
848     <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant"
849     classpath="${build.dir}/ivy.jar"/>
850     </target>
851    
852     <target name="guava-tests" depends="jar, init-ivy"
853     description="Guava tests run against jsr166 collections">
854     <property name="guava.dir" value="${build.dir}/guava-testlib"/>
855     <mkdir dir="${guava.dir}"/>
856     <ivy:retrieve pathid="guava.testlib.classpath"
857     type="jar,bundle" inline="true" conf="default,master"
858     pattern="${guava.dir}/[artifact].[ext]"
859     organisation="com.google.guava" module="guava-testlib"/>
860 jsr166 1.230 <property name="guava.version" value="21.0"/>
861 jsr166 1.229 <get src="http://repo2.maven.org/maven2/com/google/guava/guava-testlib/${guava.version}/guava-testlib-${guava.version}-tests.jar"
862     dest="${guava.dir}/guava-testlib-tests.jar" usetimestamp="true"/>
863     <junit printsummary="true" showoutput="true" haltonfailure="true"
864 jsr166 1.247 jvm="${build.main.java}" fork="true">
865 jsr166 1.252 <jvmarg line="-ea -esa --patch-module=java.base=${product.jar}"/>
866 jsr166 1.229 <formatter type="brief"/>
867     <classpath>
868     <pathelement location="${guava.dir}/guava-testlib-tests.jar"/>
869     <path refid="guava.testlib.classpath"/>
870     </classpath>
871    
872     <!-- "6" in "OpenJdk6Tests" misleadingly means "6+" -->
873     <test name="com.google.common.collect.testing.OpenJdk6Tests"/>
874     </junit>
875     </target>
876 jsr166 1.130
877 tim 1.1 </project>