ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.307
Committed: Sun Oct 6 19:03:54 2019 UTC (4 years, 6 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.306: +2 -1 lines
Log Message:
run javadoc with -quiet

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.307 <delete dir="${docs.dir}" quiet="true"/>
376 jsr166 1.127 <mkdir dir="${docs.dir}"/>
377 tim 1.59
378 jsr166 1.305 <!-- old school frames via docs/index.html?overview-summary.html -->
379     <!-- dash-dash-frames no longer a supported option in jdk13+ -->
380     <local name="use-frames"/>
381     <condition property="use-frames">
382     <equals arg1="${build.main.javadoc}" arg2="${javadoc12}"/>
383     </condition>
384    
385 jsr166 1.88 <!-- the packagenames="none" hack below prevents scanning the -->
386     <!-- sourcepath for packages -->
387    
388 jsr166 1.226 <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}" -->
389     <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}:${jdk9.src.home}/jdk/src/java.logging/share/classes" -->
390     <!-- TODO: sourcepath="${src.dir}:${jdk9.home}/src.zip" -->
391     <!-- TODO: <arg line="-sourcepath ${src.dir}:${jdk9.home}/src.zip"/> -->
392     <!-- TODO: <arg line="- -module-source-path ${jdk9.home}/src.zip"/> -->
393 jsr166 1.127 <javadoc destdir="${docs.dir}"
394 jsr166 1.88 packagenames="none"
395 jsr166 1.290 link="${java.api.url}"
396 jsr166 1.88 overview="${src.dir}/intro.html"
397 jsr166 1.130 access="${build.javadoc.access}"
398 jsr166 1.216 sourcepath="${src.dir}"
399 jsr166 1.100 classpath=""
400 jsr166 1.290 source="${build.main.javadoc.source}"
401 jsr166 1.247 executable="${build.main.javadoc}">
402 jsr166 1.291 <!-- TODO: JDK-8214571 failonerror = "true" -->
403 jsr166 1.119 <fileset dir="${src.dir}" defaultexcludes="yes">
404     <include name="**/*.java"/>
405     </fileset>
406 jsr166 1.290 <arg line="-Xdocrootparent ${java.docroot.url}"/>
407 jsr166 1.146 <arg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
408 jsr166 1.307 <arg value="-quiet"/>
409 jsr166 1.100 <arg value="-XDignore.symbol.file=true"/>
410 jsr166 1.243 <arg value="-html5"/>
411 jsr166 1.234 <arg value="--patch-module=java.base=${src.dir}"/>
412 jsr166 1.305 <arg value="--frames" if:set="use-frames"/>
413 jsr166 1.265 <arg value="--override-methods=summary"/>
414     <arg value="-tag"/> <arg value="${javadoc.jls.option}"/>
415     <arg value="-tag"/> <arg value="implSpec:a:Implementation Requirements:"/>
416     <arg value="-tag"/> <arg value="implNote:a:Implementation Note:"/>
417 jsr166 1.273 <arg value="-tag"/> <arg value="apiNote:a:API Note:"/>
418 jsr166 1.220 <!-- tags added in jdk9: currently unused -->
419 jsr166 1.265 <!-- <arg value="-tag"/> <arg value="revised:X"/> -->
420     <!-- <arg value="-tag"/> <arg value="spec:X"/> -->
421 tim 1.59 </javadoc>
422     </target>
423    
424    
425 tim 1.28 <target name="dist"
426 jsr166 1.125 depends="dist-clean, dist-jar, dist-docs"
427 tim 1.16 description="Puts all distributable products in single hierarchy"/>
428 tim 1.1
429 tim 1.58
430 tim 1.11 <target name="clean"
431     description="Removes all build products">
432     <delete dir="${build.dir}"/>
433 tim 1.1 </target>
434    
435    
436 tim 1.11 <target name="dist-clean"
437     description="Removes all build and distribution products">
438 jsr166 1.148 <delete dir="${build.dir}"/>
439 tim 1.11 <delete dir="${dist.dir}"/>
440 tim 1.9 </target>
441 tim 1.10
442    
443 tim 1.28 <target name="dist-jar"
444     depends="clean, jar">
445 tim 1.11 <copy file="${product.jar}" todir="${dist.dir}"/>
446 jsr166 1.125 </target>
447 tim 1.27
448 jsr166 1.125 <target name="dist-docs"
449     depends="clean, docs">
450 jsr166 1.127 <mirror-dir src="${docs.dir}" dst="${dist.docs.dir}"/>
451 tim 1.11 </target>
452    
453 jsr166 1.174 <target name="tck"
454 jsr166 1.304 depends="jar"
455 jsr166 1.205 description="Runs tck tests for src/main directly">
456 jsr166 1.131
457     <run-tck-tests
458 jsr166 1.290 target="${java.runtime.target}"
459 jsr166 1.131 workdir="${build.dir}"
460 jsr166 1.236 classes="${product.jar}">
461     <javac-elements>
462     <compilerarg value="-Werror"/>
463     </javac-elements>
464     </run-tck-tests>
465 jsr166 1.131 </target>
466 tim 1.1
467 jsr166 1.174 <target name="tck-parallelism-1"
468 jsr166 1.208 description="Runs tck with common pool parallelism 1">
469 jsr166 1.174 <antcall target="tck">
470 jsr166 1.160 <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="1"/>
471     </antcall>
472     </target>
473    
474 jsr166 1.174 <target name="tck-parallelism-0"
475 jsr166 1.208 description="Runs tck with common pool parallelism 0">
476 jsr166 1.174 <antcall target="tck">
477 jsr166 1.160 <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="0"/>
478     </antcall>
479     </target>
480    
481 jsr166 1.213 <target name="tck-security-manager"
482     description="Runs tck with a security manager">
483     <antcall target="tck">
484     <param name="jsr166.useSecurityManager" value="true"/>
485     </antcall>
486     </target>
487    
488 jsr166 1.174 <target name="jtreg"
489 jsr166 1.304 depends="jar"
490 jsr166 1.205 description="Runs jtreg tests for src/main using the jtreg ant task">
491 jsr166 1.135 <run-jtreg-tests
492 jsr166 1.290 target="${java.runtime.target}"
493 jsr166 1.135 workdir="${build.dir}"
494     classes="${product.jar}"/>
495     </target>
496    
497 jsr166 1.142 <target name="test"
498 jsr166 1.208 depends="tck, tck-parallelism-1, tck-parallelism-0, jtreg"
499 jsr166 1.241 description="Runs tck and jtreg tests for src/main"/>
500 jsr166 1.135
501 jsr166 1.284 <target name="test-version-permutations"
502 jsr166 1.304 depends="test11, test12, test13, test14, test11-12, test11-13, test11-14, clean, test, docs">
503 jsr166 1.284 </target>
504 jsr166 1.151
505 jsr166 1.284 <target name="test11">
506     <antcall>
507 jsr166 1.290 <param name="java.runtime.target" value="11"/>
508 jsr166 1.278 <param name="build.main.javac" value="${javac11}"/>
509 jsr166 1.290 <param name="build.main.javadoc" value="${javadoc12}"/>
510     <param name="build.main.javadoc.source" value="11"/>
511 jsr166 1.306 <target name="clean"/>
512 jsr166 1.284 <target name="test"/>
513     <target name="docs"/>
514 jsr166 1.260 </antcall>
515 jsr166 1.284 </target>
516 jsr166 1.260
517 jsr166 1.284 <target name="test12">
518     <antcall>
519 jsr166 1.290 <param name="java.runtime.target" value="12"/>
520 jsr166 1.278 <param name="build.main.javac" value="${javac12}"/>
521 jsr166 1.284 <param name="build.main.javadoc" value="${javadoc12}"/>
522 jsr166 1.290 <param name="build.main.javadoc.source" value="12"/>
523 jsr166 1.306 <target name="clean"/>
524 jsr166 1.284 <target name="test"/>
525     <target name="docs"/>
526 jsr166 1.278 </antcall>
527 jsr166 1.284 </target>
528    
529 jsr166 1.294 <target name="test13">
530     <antcall>
531     <param name="java.runtime.target" value="13"/>
532     <param name="build.main.javac" value="${javac13}"/>
533     <param name="build.main.javadoc" value="${javadoc13}"/>
534     <param name="build.main.javadoc.source" value="13"/>
535 jsr166 1.306 <target name="clean"/>
536 jsr166 1.294 <target name="test"/>
537     <target name="docs"/>
538     </antcall>
539     </target>
540    
541 jsr166 1.299 <target name="test14">
542     <antcall>
543     <param name="java.runtime.target" value="14"/>
544     <param name="build.main.javac" value="${javac14}"/>
545     <param name="build.main.javadoc" value="${javadoc14}"/>
546     <param name="build.main.javadoc.source" value="14"/>
547 jsr166 1.306 <target name="clean"/>
548 jsr166 1.299 <target name="test"/>
549     <target name="docs"/>
550     </antcall>
551     </target>
552    
553 jsr166 1.301 <target name="test11-12">
554 jsr166 1.284 <antcall>
555 jsr166 1.290 <param name="java.runtime.target" value="12"/>
556 jsr166 1.301 <param name="build.main.javac" value="${javac11}"/>
557 jsr166 1.278 <param name="build.main.javadoc" value="${javadoc12}"/>
558 jsr166 1.301 <param name="build.main.javadoc.source" value="11"/>
559 jsr166 1.306 <target name="clean"/>
560 jsr166 1.284 <target name="test"/>
561     <target name="docs"/>
562 jsr166 1.275 </antcall>
563 jsr166 1.248 </target>
564 jsr166 1.151
565 jsr166 1.301 <target name="test11-13">
566 jsr166 1.294 <antcall>
567     <param name="java.runtime.target" value="13"/>
568 jsr166 1.301 <param name="build.main.javac" value="${javac11}"/>
569 jsr166 1.294 <param name="build.main.javadoc" value="${javadoc13}"/>
570 jsr166 1.301 <param name="build.main.javadoc.source" value="11"/>
571 jsr166 1.306 <target name="clean"/>
572 jsr166 1.294 <target name="test"/>
573     <target name="docs"/>
574     </antcall>
575     </target>
576    
577 jsr166 1.301 <target name="test11-14">
578 jsr166 1.299 <antcall>
579     <param name="java.runtime.target" value="14"/>
580 jsr166 1.301 <param name="build.main.javac" value="${javac11}"/>
581 jsr166 1.299 <param name="build.main.javadoc" value="${javadoc14}"/>
582 jsr166 1.301 <param name="build.main.javadoc.source" value="11"/>
583 jsr166 1.306 <target name="clean"/>
584 jsr166 1.299 <target name="test"/>
585     <target name="docs"/>
586     </antcall>
587     </target>
588    
589 tim 1.18
590 tim 1.32 <target name="configure-compiler">
591 jsr166 1.180 <fail message="ant version too old">
592 jsr166 1.237 <condition> <not> <antversion atleast="1.9.1"/> </not> </condition>
593 jsr166 1.180 </fail>
594 tim 1.54
595     <property name="unchecked.option" value="-Xlint:unchecked"/>
596    
597     <condition property="warnunchecked.arg" value="${unchecked.option}">
598 tim 1.57 <istrue value="${build.warnunchecked}"/>
599 tim 1.32 </condition>
600    
601 tim 1.37 <property name="warnunchecked.arg" value=""/>
602 tim 1.34
603 tim 1.32
604     <!-- Common options in javac invocations -->
605 tim 1.57 <property name="build.args" value="${warnunchecked.arg}"/>
606 tim 1.33
607     </target>
608    
609    
610 jsr166 1.166 <target name="compile-test-loops" depends="jar"
611 jsr166 1.241 description="Compiles all the perf tests in src/test/loops">
612 jsr166 1.166
613     <mkdir dir="${build.dir}/test/loops"/>
614    
615     <javac srcdir="${basedir}/src/test/loops"
616     destdir="${build.dir}/test/loops"
617     debug="${build.debug}"
618     debuglevel="${build.debuglevel}"
619     deprecation="${build.deprecation}"
620     includeAntRuntime="false"
621     includeJavaRuntime="false"
622 jsr166 1.219 encoding="ASCII"
623 jsr166 1.247 executable="${build.main.javac}"
624 jsr166 1.166 fork="true">
625    
626     <include name="*.java"/>
627     <compilerarg value="-XDignore.symbol.file=true"/>
628 jsr166 1.304 <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation"/>
629     <compilerarg value="--patch-module=java.base=${src.dir}"/>
630 jsr166 1.166 <compilerarg line="${build.args}"/>
631     </javac>
632     </target>
633    
634    
635 jsr166 1.304 <!-- old branches no longer maintained. build support deleted -->
636     <!-- jsr166 4jdk8; (no longer maintained as of 2019-10) -->
637 jsr166 1.241 <!-- jsr166 4jdk7 (no longer maintained) -->
638     <!-- jsr166x (no longer maintained) -->
639     <!-- jsr166y (no longer maintained) -->
640     <!-- extra166y (no longer maintained) -->
641     <!-- jsr166e (no longer maintained) -->
642 dl 1.90
643 jsr166 1.130 <!-- Find buglets that can be detected by static build tools -->
644    
645 jsr166 1.269 <!-- <target name="lint"> -->
646     <!-- <antcall target="dists"> -->
647     <!-- <param name="build.javadoc.access" value="protected"/> -->
648     <!-- </antcall> -->
649     <!-- </target> -->
650 jsr166 1.161
651     <!-- Generates all doclint warnings, even for private methods (rarely useful) -->
652 jsr166 1.269 <target name="doclint-private">
653 jsr166 1.161 <antcall target="dist">
654 jsr166 1.130 <param name="build.javadoc.access" value="private"/>
655     </antcall>
656     </target>
657    
658 jsr166 1.236
659     <!-- ==============================================================
660 jsr166 1.287 Experimental errorprone support
661     https://errorprone.info
662     https://errorprone.info/docs/installation
663     https://github.com/google/error-prone/issues/1143
664 jsr166 1.236 =================================================================== -->
665 jsr166 1.288 <path id="errorprone.processorpath.path">
666     <pathelement location="${lib.dir}/error_prone_core-2.3.2-with-dependencies.jar"/>
667     <pathelement location="${lib.dir}/dataflow-2.5.7.jar"/>
668     <pathelement location="${lib.dir}/javacutil-2.5.7.jar"/>
669     <pathelement location="${lib.dir}/jFormatString-3.0.0.jar"/>
670     </path>
671     <property name="errorprone.processorpath" refid="errorprone.processorpath.path" />
672 jsr166 1.267 <property name="errorprone.jsr166.user.flags" value=""/>
673 jsr166 1.261 <property name="errorprone.jsr166.flags"
674 jsr166 1.263 value="-Xep:HashtableContains:OFF
675 jsr166 1.261 -Xep:JdkObsolete:OFF
676     -Xep:MissingOverride:OFF
677     -Xep:MissingFail:OFF
678 jsr166 1.288 -Xep:ThreadPriorityCheck:OFF
679 jsr166 1.263 -Xep:MixedArrayDimensions:ERROR
680     -Xep:RemoveUnusedImports:ERROR
681     -Xep:EmptyIf:ERROR
682     -Xep:MultipleTopLevelClasses:ERROR
683     -Xep:ClassName:ERROR
684     -Xep:LongLiteralLowerCaseSuffix:ERROR
685     -Xep:RedundantThrows:ERROR
686 jsr166 1.261 -Xep:IdentityBinaryExpression:WARN
687 jsr166 1.287 -Xep:ConstructorInvokesOverridable:WARN
688 jsr166 1.267 -Xep:MethodCanBeStatic:WARN
689     ${errorprone.jsr166.user.flags}"/>
690 jsr166 1.261 <!-- -Xep:WildcardImport:ERROR -->
691     <property name="errorprone.jsr166.test.flags"
692 jsr166 1.263 value="-Xep:StringSplitter:OFF
693     -Xep:BoxedPrimitiveConstructor:OFF
694     -Xep:ModifyingCollectionWithItself:OFF"/>
695 jsr166 1.261 <!-- ant -emacs errorprone |& grep -EA1 '(warning|error):|warnings' -->
696 jsr166 1.236 <target name="errorprone"
697     depends="clean, configure-compiler"
698 jsr166 1.241 description="Run errorprone over jsr166 source code (experimental)">
699 jsr166 1.236
700     <local name="destdir"/>
701     <property name="destdir" value="${build.classes.dir}/java.base"/>
702     <mkdir dir="${destdir}"/>
703    
704     <javac srcdir="${src.dir}"
705     destdir="${destdir}"
706     debug="${build.debug}"
707     debuglevel="${build.debuglevel}"
708     deprecation="${build.deprecation}"
709     classpath=""
710     includeAntRuntime="false"
711     includeJavaRuntime="false"
712     encoding="ASCII"
713     executable="${build.main.javac}"
714     fork="true">
715    
716     <include name="**/*.java"/>
717 jsr166 1.272 <!-- Needed to silence -Xep:FutureReturnValueIgnored -->
718     <compilerarg value="-J--illegal-access=permit"/>
719 jsr166 1.264 <compilerarg value="-XDcompilePolicy=simple"/>
720 jsr166 1.288 <compilerarg value="-processorpath"/>
721     <compilerarg pathref="errorprone.processorpath.path"/>
722 jsr166 1.236 <compilerarg value="-Xplugin:ErrorProne
723 jsr166 1.261 ${errorprone.jsr166.flags}"/>
724 jsr166 1.236 <compilerarg value="--patch-module=java.base=${src.dir}"/>
725     <compilerarg value="-Xprefer:source"/>
726     <compilerarg value="-XDignore.symbol.file=true"/>
727     <compilerarg value="-Xlint:all"/>
728     <compilerarg value="-Xdoclint:all/protected,reference/private"/>
729     <compilerarg line="-Xmaxerrs 3000 -Xmaxwarns 3000"/>
730     <compilerarg line="${build.args}"/>
731     </javac>
732    
733     <jar destfile="${product.jar}">
734     <fileset dir="${destdir}"/>
735     </jar>
736    
737     <run-tck-tests
738 jsr166 1.290 target="${java.runtime.target}"
739 jsr166 1.236 workdir="${build.dir}"
740     classes="${product.jar}">
741     <javac-elements>
742 jsr166 1.272 <!-- Needed to silence -Xep:FutureReturnValueIgnored -->
743     <compilerarg value="-J--illegal-access=permit"/>
744 jsr166 1.264 <compilerarg value="-XDcompilePolicy=simple"/>
745 jsr166 1.286 <compilerarg line="-processorpath ${errorprone.processorpath}"/>
746 jsr166 1.241 <compilerarg value="-Xplugin:ErrorProne
747 jsr166 1.261 ${errorprone.jsr166.flags}
748     ${errorprone.jsr166.test.flags}"/>
749 jsr166 1.236 <compilerarg line="-Xmaxerrs 3000 -Xmaxwarns 3000"/>
750     </javac-elements>
751     </run-tck-tests>
752     </target>
753    
754 jsr166 1.261 <!-- ant -emacs errorprone-jtreg |& grep -EA1 '(warning|error):' -->
755 jsr166 1.262 <!-- -XDcompilePolicy=simple or byfile avoids confusing UnusedImports -->
756 jsr166 1.255 <target name="errorprone-jtreg"
757     depends="jar"
758     description="Run errorprone over jtreg tests (experimental)">
759    
760     <run-jtreg-tests
761 jsr166 1.290 target="${java.runtime.target}"
762 jsr166 1.255 workdir="${build.dir}"
763     classes="${product.jar}"
764     verbose="all">
765     <jtreg-elements>
766 jsr166 1.264 <arg value="-javacoption:-XDcompilePolicy=simple"/>
767 jsr166 1.255 <arg value="-javacoption:-processorpath"/>
768 jsr166 1.286 <arg value="-javacoption:${errorprone.processorpath}"/>
769 jsr166 1.255 <arg value="-javacoption:-Xplugin:ErrorProne
770 jsr166 1.261 ${errorprone.jsr166.flags}
771     ${errorprone.jsr166.test.flags}
772 jsr166 1.270 -Xep:MultipleTopLevelClasses:WARN
773 jsr166 1.261 -Xep:NonAtomicVolatileUpdate:OFF"/>
774 jsr166 1.255 </jtreg-elements>
775     </run-jtreg-tests>
776     </target>
777    
778 jsr166 1.236
779 jsr166 1.229 <!-- ==============================================================
780     Running guava tests against jsr166 code
781     =================================================================== -->
782    
783     <!-- <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" -->
784 jsr166 1.230 <!-- organisation="com.google.guava" module="guava-testlib" revision="21.0"/> -->
785     <!-- <property name="guava.version" value="21.0"/> -->
786 jsr166 1.229
787     <!-- HOWTO debug print a path id -->
788     <!-- <pathconvert property="guava.testlib.classpath" refid="guava.testlib.classpath" /> -->
789     <!-- <echo message="guava.testlib.classpath=${guava.testlib.classpath}"/> -->
790    
791     <!-- <ivy:retrieve pathid="guava.tests.classpath" type="jar" inline="true" conf="*" pattern="${lib.dir}/[type]/[artifact].[ext]" -->
792     <!-- organisation="com.google.guava" module="guava-tests"/> -->
793     <!-- <get src="http://repo2.maven.org/maven2/com/google/guava/guava-tests/${guava.version}/guava-tests-${guava.version}-tests.jar" -->
794     <!-- dest="${lib.dir}/jar/guava-tests-tests.jar" usetimestamp="true"/> -->
795     <!-- <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" type="*" -->
796     <!-- organisation="com.google.guava" module="guava-testlib" revision="${guava.version}"/> -->
797    
798     <!-- <test name="com.google.common.collect.testing.TestsForQueuesInJavaUtil"/> -->
799     <!-- <test name="com.google.common.collect.testing.TestsForListsInJavaUtil"/> -->
800     <!-- <test name="com.google.common.collect.testing.TestsForSetsInJavaUtil"/> -->
801     <!-- <test name="com.google.common.collect.testing.TestsForMapsInJavaUtil"/> -->
802    
803     <!-- <ivy:retrieve pathid="guava.testlib.classpath" -->
804     <!-- type="*" inline="true" conf="*(private),*(public)" -->
805     <!-- pattern="${guava.dir}/[artifact].[ext]" -->
806     <!-- organisation="com.google.guava" module="guava-testlib"/> -->
807    
808     <!-- Work around bug below by downloading guava-testlib-tests.jar "by hand": -->
809     <!-- https://issues.apache.org/jira/browse/IVY-1444 -->
810     <!-- maven tests artifacts cannot be downloaded because they are mapped to private configurations -->
811    
812     <target name="init-ivy">
813     <get src="http://repo2.maven.org/maven2/org/apache/ivy/ivy/2.4.0/ivy-2.4.0.jar"
814     dest="${build.dir}/ivy.jar" usetimestamp="true" skipexisting="true"/>
815     <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant"
816     classpath="${build.dir}/ivy.jar"/>
817     </target>
818    
819     <target name="guava-tests" depends="jar, init-ivy"
820     description="Guava tests run against jsr166 collections">
821     <property name="guava.dir" value="${build.dir}/guava-testlib"/>
822     <mkdir dir="${guava.dir}"/>
823     <ivy:retrieve pathid="guava.testlib.classpath"
824     type="jar,bundle" inline="true" conf="default,master"
825     pattern="${guava.dir}/[artifact].[ext]"
826     organisation="com.google.guava" module="guava-testlib"/>
827 jsr166 1.230 <property name="guava.version" value="21.0"/>
828 jsr166 1.229 <get src="http://repo2.maven.org/maven2/com/google/guava/guava-testlib/${guava.version}/guava-testlib-${guava.version}-tests.jar"
829     dest="${guava.dir}/guava-testlib-tests.jar" usetimestamp="true"/>
830     <junit printsummary="true" showoutput="true" haltonfailure="true"
831 jsr166 1.247 jvm="${build.main.java}" fork="true">
832 jsr166 1.252 <jvmarg line="-ea -esa --patch-module=java.base=${product.jar}"/>
833 jsr166 1.229 <formatter type="brief"/>
834     <classpath>
835     <pathelement location="${guava.dir}/guava-testlib-tests.jar"/>
836     <path refid="guava.testlib.classpath"/>
837     </classpath>
838    
839     <!-- "6" in "OpenJdk6Tests" misleadingly means "6+" -->
840     <test name="com.google.common.collect.testing.OpenJdk6Tests"/>
841     </junit>
842     </target>
843 jsr166 1.130
844 tim 1.1 </project>