ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.304
Committed: Sun Oct 6 17:34:58 2019 UTC (4 years, 6 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.303: +46 -813 lines
Log Message:
delete pre-jdk11 compatibility support; no longer maintained

File Contents

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