ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.308
Committed: Thu Oct 17 17:28:49 2019 UTC (4 years, 6 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.307: +1 -0 lines
Log Message:
ant -Dvmoptions=... should affect jtreg tests

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