ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.326
Committed: Fri Nov 25 19:33:39 2022 UTC (17 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.325: +2 -2 lines
Log Message:
regularize defjtregtests calls

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