ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.328
Committed: Sat Jan 7 16:30:33 2023 UTC (15 months, 2 weeks ago) by jsr166
Content type: text/xml
Branch: MAIN
CVS Tags: HEAD
Changes since 1.327: +5 -0 lines
Log Message:
jdk21

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