ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.305
Committed: Sun Oct 6 17:51:03 2019 UTC (4 years, 6 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.304: +8 -3 lines
Log Message:
only use --frames with javadoc12

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