ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.327
Committed: Fri Nov 25 20:33:50 2022 UTC (17 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.326: +7 -2 lines
Log Message:
beginnings of support for jdk20

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