ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.324
Committed: Wed Sep 29 01:13:44 2021 UTC (2 years, 6 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.323: +10 -3 lines
Log Message:
updates for jdk 17 and jdk 18

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