/[cvs]/jsr166/build.xml
ViewVC logotype

Contents of /jsr166/build.xml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.273 - (show annotations)
Fri Jun 22 17:45:02 2018 UTC (17 months, 3 weeks ago) by jsr166
Branch: MAIN
Changes since 1.272: +1 -2 lines
File MIME type: text/xml
TimeUnit#convert(Duration): use @apiNote

1 <project name="jsr166" default="usage"
2 xmlns:if="ant:if"
3 xmlns:unless="ant:unless"
4 xmlns:ivy="antlib:org.apache.ivy.ant">
5
6 <description>
7 ------------------------------------------------------------------------------
8 Build file for JSR-166
9
10 Usage: ant [target]
11
12 See http://gee.cs.oswego.edu/dl/concurrency-interest/index.html for
13 more details.
14
15 User-specific settings are read from user.properties.
16 See user.properties.sample for an explanation of some useful settings.
17
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 $HOME/jdk/jdk8
23 $HOME/jdk/jdk9
24 $HOME/jdk/jdk10
25 $HOME/jdk/jdk11
26 where each of the above is a JDK or a symlink to same, and
27 $HOME/jdk/src/jdk8
28 $HOME/jdk/src/jdk9
29 $HOME/jdk/src/jdk10
30 $HOME/jdk/src/jdk11
31 where each of the above is a complete JDK source tree
32 (e.g. mercurial forest) or a symlink to same.
33
34 Alternatively, define ant variables thus:
35 ant -Djdk$N.home=... -Djdk$N.src.home=...
36 for $N in 8 9 10 ...
37
38 As of 2016-03, the sources in src/main are for jdk9+ only.
39 ------------------------------------------------------------------------------
40 </description>
41
42 <!-- Run 'ant -projecthelp' (default target) -->
43 <target name="usage">
44 <java classname="org.apache.tools.ant.Main">
45 <arg value="-projecthelp" />
46 </java>
47 </target>
48
49 <!-- HOWTO printf debug: <echo message="prop=${prop}"/> -->
50
51 <!-- User-specific settings -->
52 <property file="user.properties"/>
53
54
55 <!-- Compilation options -->
56 <property name="build.sourcelevel" value="6"/>
57 <property name="build.debug" value="true"/>
58 <property name="build.debuglevel" value="source,lines,vars"/>
59 <property name="build.deprecation" value="false"/>
60 <property name="build.javadoc.access" value="protected"/>
61
62 <!-- Build locations -->
63 <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
68 <property name="build.4jdk7.dir" location="${build.dir}/jsr166-4jdk7"/>
69 <property name="build.4jdk7.classes.dir" location="${build.4jdk7.dir}/classes"/>
70 <property name="build.4jdk7.tck.classes.dir" location="${build.4jdk7.dir}/tck-classes"/>
71 <property name="build.4jdk7.docs.dir" location="${build.4jdk7.dir}/docs"/>
72
73 <property name="build.4jdk8.dir" location="${build.dir}/jsr166-4jdk8"/>
74 <property name="build.4jdk8.classes.dir" location="${build.4jdk8.dir}/classes"/>
75 <property name="build.4jdk8.tck.classes.dir" location="${build.4jdk8.dir}/tck-classes"/>
76 <property name="build.4jdk8.docs.dir" location="${build.4jdk8.dir}/docs"/>
77
78 <property name="build.jsr166x.dir" location="${build.dir}/jsr166x"/>
79 <property name="build.jsr166y.dir" location="${build.dir}/jsr166y"/>
80 <property name="build.jsr166e.dir" location="${build.dir}/jsr166e"/>
81 <property name="build.extra166y.dir" location="${build.dir}/extra166y"/>
82
83 <property name="build.jsr166x.classes.dir" location="${build.jsr166x.dir}/classes"/>
84 <property name="build.jsr166y.classes.dir" location="${build.jsr166y.dir}/classes"/>
85 <property name="build.jsr166e.classes.dir" location="${build.jsr166e.dir}/classes"/>
86 <property name="build.extra166y.classes.dir" location="${build.extra166y.dir}/classes"/>
87
88 <!-- JDK locations -->
89 <property name="jdks.home" location="${user.home}/jdk"/>
90
91 <macrodef name="defjdklocations">
92 <attribute name="v"/>
93 <sequential>
94 <property name="jdk@{v}.home" location="${jdks.home}/jdk@{v}"/>
95 <property name="java@{v}" location="${jdk@{v}.home}/bin/java"/>
96 <property name="javac@{v}" location="${jdk@{v}.home}/bin/javac"/>
97 <property name="javadoc@{v}" location="${jdk@{v}.home}/bin/javadoc"/>
98 <property name="jdk@{v}.src.home" location="${jdks.home}/src/jdk@{v}"/>
99 <local name="have.java.base"/>
100 <available property="have.java.base"
101 file="${jdk@{v}.src.home}/jdk/src/java.base/share/classes" type="dir"/>
102 <property name="jdk@{v}.src.dir" location="${jdk@{v}.src.home}/jdk/src/java.base/share/classes"
103 if:set="have.java.base"/>
104 <property name="jdk@{v}.src.dir" location="${jdk@{v}.src.home}/jdk/src/share/classes"
105 unless:set="have.java.base"/>
106 <local name="modules"/>
107 <available property="modules" file="${jdk@{v}.home}/jmods" type="dir"/>
108 <local name="boot.jar.dir"/>
109 <property name="boot.jar.dir" location="${jdk@{v}.home}/jre/lib" unless:set="modules"/>
110 <path id="bootclasspath@{v}" unless:set="modules">
111 <pathelement path="${boot.jar.dir}/resources.jar"/>
112 <pathelement path="${boot.jar.dir}/rt.jar"/>
113 <pathelement path="${boot.jar.dir}/jsse.jar"/>
114 <pathelement path="${boot.jar.dir}/jce.jar"/>
115 <pathelement path="${boot.jar.dir}/charsets.jar"/>
116 </path>
117 <property name="bootclasspath@{v}" value="${toString:bootclasspath@{v}}" unless:set="modules"/>
118 </sequential>
119 </macrodef>
120
121 <macrodef name="mirror-dir">
122 <attribute name="src"/>
123 <attribute name="dst"/>
124 <sequential>
125 <delete dir="@{dst}"/>
126 <mkdir dir="@{dst}"/>
127 <copy todir="@{dst}" preservelastmodified="true">
128 <fileset dir="@{src}"/>
129 </copy>
130 </sequential>
131 </macrodef>
132
133 <defjdklocations v="6"/>
134 <defjdklocations v="7"/>
135 <defjdklocations v="8"/>
136 <defjdklocations v="9"/>
137 <defjdklocations v="10"/>
138 <defjdklocations v="11"/>
139
140 <!-- Source locations -->
141 <property name="src.dir" location="${basedir}/src/main"/>
142 <property name="test.src.dir" location="${basedir}/src/test"/>
143 <property name="loops.src.dir" location="${basedir}/src/loops"/>
144 <property name="tck.src.dir" location="${test.src.dir}/tck"/>
145 <property name="jtreg7.src.dir" location="${test.src.dir}/jtreg-jdk7"/>
146 <property name="jtreg8.src.dir" location="${test.src.dir}/jtreg-jdk8"/>
147 <property name="jtreg9.src.dir" location="${test.src.dir}/jtreg"/>
148 <property name="jtreg10.src.dir" location="${test.src.dir}/jtreg"/>
149 <property name="jtreg11.src.dir" location="${test.src.dir}/jtreg"/>
150 <property name="jtreg.src.dir" location="${jtreg9.src.dir}"/>
151 <property name="lib.dir" location="${basedir}/lib"/>
152 <property name="dist.dir" location="${basedir}/dist"/>
153 <property name="topsrc.dir" location="${basedir}/src"/>
154 <property name="4jdk7src.dir" location="${topsrc.dir}/jdk7"/>
155 <property name="4jdk8src.dir" location="${topsrc.dir}/jdk8"/>
156 <property name="jsr166xsrc.dir" location="${topsrc.dir}/jsr166x"/>
157 <property name="jsr166ysrc.dir" location="${topsrc.dir}/jsr166y"/>
158 <property name="jsr166esrc.dir" location="${topsrc.dir}/jsr166e"/>
159 <property name="extra166ysrc.dir" location="${topsrc.dir}/extra166y"/>
160
161 <!-- Javadoc locations -->
162 <property name="docs.dir" location="${build.dir}/docs"/>
163 <property name="4jdk7docs.dir" location="${build.4jdk7.dir}/docs"/>
164 <property name="4jdk8docs.dir" location="${build.4jdk8.dir}/docs"/>
165 <property name="jsr166xdocs.dir" location="${build.jsr166x.dir}/docs"/>
166 <property name="jsr166ydocs.dir" location="${build.jsr166y.dir}/docs"/>
167 <property name="jsr166edocs.dir" location="${build.jsr166e.dir}/docs"/>
168 <property name="extra166ydocs.dir" location="${build.extra166y.dir}/docs"/>
169
170 <property name="dist.docs.dir" location="${dist.dir}/docs"/>
171 <property name="dist.4jdk7docs.dir" location="${dist.dir}/jsr166-4jdk7docs"/>
172 <property name="dist.4jdk8docs.dir" location="${dist.dir}/jsr166-4jdk8docs"/>
173 <property name="dist.jsr166xdocs.dir" location="${dist.dir}/jsr166xdocs"/>
174 <property name="dist.jsr166ydocs.dir" location="${dist.dir}/jsr166ydocs"/>
175 <property name="dist.jsr166edocs.dir" location="${dist.dir}/jsr166edocs"/>
176 <property name="dist.extra166ydocs.dir" location="${dist.dir}/extra166ydocs"/>
177
178 <!-- Jar locations -->
179 <property name="product.jar" location="${build.dir}/jsr166.jar"/>
180 <property name="4jdk7product.jar" location="${build.4jdk7.dir}/jsr166-4jdk7.jar"/>
181 <property name="4jdk8product.jar" location="${build.4jdk8.dir}/jsr166-4jdk8.jar"/>
182 <property name="jsr166x.jar" location="${build.jsr166x.dir}/jsr166x.jar"/>
183 <property name="jsr166y.jar" location="${build.jsr166y.dir}/jsr166y.jar"/>
184 <property name="jsr166e.jar" location="${build.jsr166e.dir}/jsr166e.jar"/>
185 <property name="extra166y.jar" location="${build.extra166y.dir}/extra166y.jar"/>
186 <property name="junit.jar" location="${lib.dir}/junit.jar"/>
187
188 <!-- Canonical location of jdk docs root, to use with javadoc -Xdocrootparent flag -->
189 <!-- Switched to https: in 2017-10 - JDK-8190312 -->
190 <property name="java5.docroot.url" value="https://docs.oracle.com/javase/1.5.0/docs"/>
191 <property name="java6.docroot.url" value="https://docs.oracle.com/javase/6/docs"/>
192 <property name="java7.docroot.url" value="https://docs.oracle.com/javase/7/docs"/>
193 <property name="java8.docroot.url" value="https://docs.oracle.com/javase/8/docs"/>
194 <property name="java9.docroot.url" value="https://docs.oracle.com/javase/9/docs"/>
195 <property name="java10.docroot.url" value="https://docs.oracle.com/javase/10/docs"/>
196 <!-- The location of jdk early access docs (RIP) -->
197 <!-- <property name="java9.docroot.url" value="http://download.java.net/java/jdk9/docs"/> -->
198 <!-- <property name="java10.docroot.url" value="http://download.java.net/java/jdk10/docs"/> -->
199 <property name="java11.docroot.url" value="http://download.java.net/java/jdk11/docs"/>
200 <!-- Default jdk doc location (latest stable release seems best) -->
201 <property name="java.docroot.url" value="${java10.docroot.url}"/>
202
203 <!-- Canonical location of jdk API docs, to use with javadoc link attribute -->
204 <property name="java5.api.url" value="${java5.docroot.url}/api/"/>
205 <property name="java6.api.url" value="${java6.docroot.url}/api/"/>
206 <property name="java7.api.url" value="${java7.docroot.url}/api/"/>
207 <property name="java8.api.url" value="${java8.docroot.url}/api/"/>
208 <property name="java9.api.url" value="${java9.docroot.url}/api/"/>
209 <property name="java10.api.url" value="${java10.docroot.url}/api/"/>
210 <property name="java11.api.url" value="${java11.docroot.url}/api/"/>
211 <property name="java.api.url" value="${java.docroot.url}/api/"/>
212
213 <!-- Define the "jtreg" task -->
214 <!-- See the docs in "jtreg -onlineHelp" -->
215 <taskdef name="jtreg" classname="com.sun.javatest.regtest.Main$$Ant"
216 classpath="${lib.dir}/jtreg.jar" />
217
218 <!-- Tck options; see JSR166TestCase.java
219 To profile a single tck test class:
220 ant -Djsr166.profileTests=true -Djsr166.profileThreshold=10 -Djsr166.tckTestClass=CompletableFutureTest tck
221 To stress test a single tck test class:
222 ant -Djsr166.tckTestClass=CountedCompleterTest -Djsr166.runsPerTest=100 tck
223 To stress test a single tck test method:
224 ant -Djsr166.tckTestClass=RecursiveTaskTest -Djsr166.runsPerTest=1000 -Djsr166.methodFilter=testAbnormalInvokeAll3 tck
225 -->
226 <property name="jsr166.tckTestClass" value="JSR166TestCase"/>
227 <macrodef name="run-tck-tests">
228 <attribute name="tck.src.dir" default="${tck.src.dir}"/>
229 <attribute name="target"/>
230 <attribute name="compile-target" default="@{target}"/>
231 <attribute name="workdir"/>
232 <attribute name="classes"/>
233 <!--
234 <attribute name="jvmflags" default="-XX:+UseParallelGC -XX:-UseBiasedLocking -ea -esa -Djsr166.testImplementationDetails=true"/>
235 -->
236 <attribute name="jvmflags" default="-ea -esa -Djsr166.testImplementationDetails=true"/>
237 <element name="javac-elements" optional="true"/>
238
239 <sequential>
240
241 <local name="modules"/>
242 <condition property="modules">
243 <available file="${jdk@{compile-target}.home}/jmods" type="dir"/>
244 </condition>
245
246 <local name="use-doclint"/>
247 <condition property="use-doclint">
248 <not> <equals arg1="@{target}" arg2="7"/> </not>
249 </condition>
250
251 <mkdir dir="@{workdir}/tck-classes"/>
252
253 <javac srcdir="@{tck.src.dir}"
254 destdir="@{workdir}/tck-classes"
255 debug="${build.debug}"
256 debuglevel="${build.debuglevel}"
257 deprecation="${build.deprecation}"
258 source="@{compile-target}"
259 target="@{compile-target}"
260 classpath="${junit.jar}"
261 includeAntRuntime="false"
262 includeJavaRuntime="false"
263 encoding="ASCII"
264 executable="${javac@{compile-target}}"
265 fork="true">
266
267 <include name="*.java"/>
268 <compilerarg value="-XDignore.symbol.file=true"/>
269 <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation,-try"/>
270 <compilerarg value="-Xdoclint:reference/private" if:set="use-doclint"/>
271 <compilerarg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
272 <compilerarg value="--patch-module=java.base=@{classes}" if:set="modules"/>
273 <compilerarg line="${build.args}"/>
274 <javac-elements/>
275
276 </javac>
277
278 <java classname="${jsr166.tckTestClass}"
279 failonerror="true"
280 jvm="${java@{target}}"
281 fork="true">
282 <jvmarg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
283 <jvmarg value="--patch-module=java.base=@{classes}" if:set="modules"/>
284 <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" if:set="modules"/>
285 <jvmarg value="--add-opens=java.base/java.util=ALL-UNNAMED" if:set="modules"/>
286 <jvmarg value="--add-opens=java.base/java.util.concurrent=ALL-UNNAMED" if:set="modules"/>
287 <jvmarg value="--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED" if:set="modules"/>
288 <jvmarg value="--add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED" if:set="modules"/>
289 <jvmarg line="@{jvmflags}"/>
290 <!-- ant -Dvmoptions="-Xmx8m" -Djsr166.tckTestClass=CompletableFutureTest tck -->
291 <jvmarg line="${vmoptions}" if:set="vmoptions"/>
292
293 <!-- ant -Djava.util.concurrent.ForkJoinPool.common.parallelism=1 tck -->
294 <syspropertyset id="system-properties-used-by-tck">
295 <propertyref prefix="java.util.concurrent.ForkJoinPool"/>
296 <propertyref prefix="jsr166."/>
297 <propertyref name="test.timeout.factor"/>
298 </syspropertyset>
299
300 <classpath>
301 <pathelement location="${junit.jar}"/>
302 <pathelement location="@{workdir}/tck-classes"/>
303 </classpath>
304 </java>
305
306 </sequential>
307 </macrodef>
308
309 <!-- Define jtreg test sets for different jdk versions -->
310 <!-- ant -Djtreg.test.pattern="**/ConcurrentHashMap/" -->
311 <!-- ant -Djtreg.test.pattern="**/ToArray.java" -->
312 <property name="jtreg.test.pattern" value="**/*.java"/>
313 <macrodef name="defjtregtests">
314 <attribute name="v"/>
315 <sequential>
316 <fileset dir="${jtreg@{v}.src.dir}">
317 <patternset id="jdk@{v}.jtreg.tests">
318 <include name="${jtreg.test.pattern}"/>
319 </patternset>
320 </fileset>
321 </sequential>
322 </macrodef>
323
324 <defjtregtests v="11"/>
325 <defjtregtests v="10"/>
326 <defjtregtests v="9"/>
327 <defjtregtests v="8"/>
328 <defjtregtests v="7"/>
329
330 <!-- ant -Djtreg.flags=-timeoutFactor:4 -->
331 <property name="jtreg.flags" value=""/>
332
333 <macrodef name="run-jtreg-tests">
334 <!-- ant -Djtreg9.src.dir=src/test/jtreg/util/concurrent/CompletableFuture jtreg -->
335 <attribute name="target"/>
336 <attribute name="workdir"/>
337 <attribute name="classes"/>
338 <attribute name="verbose" default="${jtreg.verbose}"/>
339 <attribute name="jtregflags" default=""/>
340 <element name="jtreg-elements" optional="true"/>
341
342 <sequential>
343
344 <!-- ant -Djtreg.verbose=time,fail,error jtreg -->
345 <property name="jtreg.verbose" value="nopass,fail,error"/>
346
347 <local name="modules"/>
348 <condition property="modules">
349 <available file="${jdk@{target}.home}/jmods" type="dir"/>
350 </condition>
351
352 <delete dir="@{workdir}/JTwork" quiet="true"/>
353 <jtreg dir="${jtreg@{target}.src.dir}"
354 jdk="${jdk@{target}.home}"
355 workDir="@{workdir}/JTwork">
356 <patternset refid="jdk@{target}.jtreg.tests"/>
357 <arg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
358 <arg value="-javacoptions:--patch-module=java.base=@{classes}" if:set="modules"/>
359 <arg value="-vmoptions:--patch-module=java.base=@{classes}" if:set="modules"/>
360 <arg value="-agentvm"/>
361 <arg value="-noreport"/>
362 <arg value="-verbose:@{verbose}"/>
363 <arg value="-vmoptions:-esa -ea"/>
364 <arg value="-automatic"/>
365 <arg value="-k:!ignore"/>
366 <arg line="@{jtregflags}"/>
367 <arg line="${jtreg.flags}"/>
368 <jtreg-elements/>
369 </jtreg>
370 </sequential>
371 </macrodef>
372
373 <!-- ALoops classpath -->
374 <path id="loops.classpath">
375 <pathelement location="${build.loops.dir}"/>
376 </path>
377
378 <!-- Support @jls tag, used in jdk8+ javadoc -->
379 <property name="javadoc.jls.cite" value="The Java&amp;trade; Language Specification"/>
380 <property name="javadoc.jls.option" value="jls:a:See &lt;cite&gt;${javadoc.jls.cite}&lt;/cite&gt;:"/>
381
382 <!-- Main targets -->
383
384 <property name="build.main.java.version" value="9"/>
385 <!-- Workaround "no nested properties in ant" -->
386 <macrodef name="define-build-main-properties">
387 <attribute name="v"/>
388 <sequential>
389 <property name="build.main.java" value="${java@{v}}"/>
390 <property name="build.main.javac" value="${javac@{v}}"/>
391 <!-- Force javadoc version to be at least 10,
392 so we can use override-methods=summary -->
393 <condition property="build.main.javadoc"
394 value="${javadoc11}"
395 else="${javadoc@{v}}">
396 <equals arg1="@{v}" arg2="9"/>
397 </condition>
398 </sequential>
399 </macrodef>
400 <define-build-main-properties v="${build.main.java.version}"/>
401
402 <target name="dists"
403 depends="dist, 4jdk8dist"
404 description="Builds all public jars and docs"/>
405 <!--
406 depends="dist, 4jdk8dist, 4jdk7dist, jsr166edist, jsr166ydist, extra166ydist, jsr166xdist"
407 -->
408
409 <target name="compile"
410 depends="configure-compiler"
411 description="Compiles src/main sources to build dir">
412
413 <local name="destdir"/>
414 <property name="destdir" value="${build.classes.dir}/java.base"/>
415
416 <mkdir dir="${destdir}"/>
417
418 <javac srcdir="${src.dir}"
419 destdir="${destdir}"
420 debug="${build.debug}"
421 debuglevel="${build.debuglevel}"
422 deprecation="${build.deprecation}"
423 classpath=""
424 includeAntRuntime="false"
425 includeJavaRuntime="false"
426 encoding="ASCII"
427 executable="${build.main.javac}"
428 fork="true">
429
430 <include name="**/*.java"/>
431 <compilerarg value="--patch-module=java.base=${src.dir}"/>
432 <compilerarg value="-Xprefer:source"/>
433 <compilerarg value="-XDignore.symbol.file=true"/>
434 <compilerarg value="-Xlint:all"/>
435 <compilerarg line="--doclint-format html5"/>
436 <compilerarg value="-Xdoclint:all/protected,reference/private"/>
437 <compilerarg value="-Werror"/>
438 <compilerarg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
439 <compilerarg line="${build.args}"/>
440
441 </javac>
442 </target>
443
444
445 <target name="jar"
446 depends="compile"
447 description="Builds library jar for src/main from compiled sources">
448 <local name="subdir"/>
449 <available property="subdir" file="${build.classes.dir}/java.base" type="dir" value="/java.base"/>
450 <jar destfile="${product.jar}">
451 <fileset dir="${build.classes.dir}${subdir}"/>
452 <manifest>
453 <attribute name="Built-By" value="${user.name}"/>
454 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
455 </manifest>
456 </jar>
457 </target>
458
459
460 <target name="docs"
461 description="Builds javadocs for src/main to dist dir">
462
463 <delete dir="${docs.dir}"/>
464 <mkdir dir="${docs.dir}"/>
465
466 <!-- the packagenames="none" hack below prevents scanning the -->
467 <!-- sourcepath for packages -->
468
469 <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}" -->
470 <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}:${jdk9.src.home}/jdk/src/java.logging/share/classes" -->
471 <!-- TODO: sourcepath="${src.dir}:${jdk9.home}/src.zip" -->
472 <!-- TODO: <arg line="-sourcepath ${src.dir}:${jdk9.home}/src.zip"/> -->
473 <!-- TODO: <arg line="- -module-source-path ${jdk9.home}/src.zip"/> -->
474 <javadoc destdir="${docs.dir}"
475 packagenames="none"
476 link="${java9.api.url}"
477 overview="${src.dir}/intro.html"
478 access="${build.javadoc.access}"
479 sourcepath="${src.dir}"
480 classpath=""
481 source="9"
482 executable="${build.main.javadoc}">
483 <fileset dir="${src.dir}" defaultexcludes="yes">
484 <include name="**/*.java"/>
485 </fileset>
486 <arg line="-Xdocrootparent ${java9.docroot.url}"/>
487 <arg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
488 <arg value="-XDignore.symbol.file=true"/>
489 <arg value="-html5"/>
490 <arg value="--patch-module=java.base=${src.dir}"/>
491 <arg value="--override-methods=summary"/>
492 <arg value="-tag"/> <arg value="${javadoc.jls.option}"/>
493 <arg value="-tag"/> <arg value="implSpec:a:Implementation Requirements:"/>
494 <arg value="-tag"/> <arg value="implNote:a:Implementation Note:"/>
495 <arg value="-tag"/> <arg value="apiNote:a:API Note:"/>
496 <!-- tags added in jdk9: currently unused -->
497 <!-- <arg value="-tag"/> <arg value="revised:X"/> -->
498 <!-- <arg value="-tag"/> <arg value="spec:X"/> -->
499 </javadoc>
500 </target>
501
502
503 <target name="dist"
504 depends="dist-clean, dist-jar, dist-docs"
505 description="Puts all distributable products in single hierarchy"/>
506
507
508 <target name="release"
509 depends="dist"
510 description="Puts entire CVS tree, plus distribution productions, in a jar">
511
512 <property name="release.jar" value="dist/jsr166-${version}-dist.jar"/>
513
514 <jar basedir="${basedir}" destfile="${release.jar}">
515 <!-- <exclude name="build/**"/> -->
516 <exclude name="${release.jar}"/>
517 <exclude name="user.properties"/>
518 <exclude name="etc/notes/**"/>
519 <exclude name="src/emulation/**"/>
520 <exclude name="**/SyntaxTest.java"/>
521 <exclude name="**/SuperfluousAbstract.java"/>
522 <manifest>
523 <attribute name="Built-By" value="${user.name}"/>
524 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
525 </manifest>
526 </jar>
527 </target>
528
529
530 <target name="clean"
531 description="Removes all build products">
532 <delete dir="${build.dir}"/>
533 </target>
534
535
536 <target name="dist-clean"
537 description="Removes all build and distribution products">
538 <delete dir="${build.dir}"/>
539 <delete dir="${dist.dir}"/>
540 </target>
541
542
543 <target name="dist-jar"
544 depends="clean, jar">
545 <copy file="${product.jar}" todir="${dist.dir}"/>
546 </target>
547
548 <target name="dist-docs"
549 depends="clean, docs">
550 <mirror-dir src="${docs.dir}" dst="${dist.docs.dir}"/>
551 </target>
552
553 <target name="tck"
554 depends="jar"
555 description="Runs tck tests for src/main directly">
556
557 <run-tck-tests
558 target="${build.main.java.version}"
559 workdir="${build.dir}"
560 classes="${product.jar}">
561 <javac-elements>
562 <compilerarg value="-Werror"/>
563 </javac-elements>
564 </run-tck-tests>
565 </target>
566
567 <target name="tck-parallelism-1"
568 description="Runs tck with common pool parallelism 1">
569 <antcall target="tck">
570 <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="1"/>
571 </antcall>
572 </target>
573
574 <target name="tck-parallelism-0"
575 description="Runs tck with common pool parallelism 0">
576 <antcall target="tck">
577 <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="0"/>
578 </antcall>
579 </target>
580
581 <target name="tck-security-manager"
582 description="Runs tck with a security manager">
583 <antcall target="tck">
584 <param name="jsr166.useSecurityManager" value="true"/>
585 </antcall>
586 </target>
587
588 <target name="jtreg"
589 depends="jar"
590 description="Runs jtreg tests for src/main using the jtreg ant task">
591 <run-jtreg-tests
592 target="${build.main.java.version}"
593 workdir="${build.dir}"
594 classes="${product.jar}"/>
595 </target>
596
597 <target name="test"
598 depends="tck, tck-parallelism-1, tck-parallelism-0, jtreg"
599 description="Runs tck and jtreg tests for src/main"/>
600
601 <!-- <target name="jtreg8" description="Runs jtreg tests with jdk8"> -->
602
603 <!-- <antcall target="jtreg"> -->
604 <!-- <param name="build.main.java.version" value="8"/> -->
605 <!-- <param name="build.main.javac" value="${javac8}"/> -->
606 <!-- </antcall> -->
607
608 <!-- </target> -->
609
610 <target name="test91011"
611 description="Runs tck and jtreg tests for src/main for multiple java versions">
612
613 <antcall target="clean"/>
614 <antcall target="test">
615 <param name="build.main.java.version" value="9"/>
616 </antcall>
617
618 <antcall target="clean"/>
619 <antcall target="test">
620 <param name="build.main.java.version" value="10"/>
621 </antcall>
622
623 <antcall target="clean"/>
624 <antcall target="test">
625 <param name="build.main.java.version" value="11"/>
626 </antcall>
627
628 <!-- Clean up to avoid obscure wrong class file version bugs -->
629 <antcall target="clean"/>
630
631 </target>
632
633
634
635 <target name="configure-compiler">
636 <fail message="ant version too old">
637 <condition> <not> <antversion atleast="1.9.1"/> </not> </condition>
638 </fail>
639
640 <property name="unchecked.option" value="-Xlint:unchecked"/>
641
642 <condition property="warnunchecked.arg" value="${unchecked.option}">
643 <istrue value="${build.warnunchecked}"/>
644 </condition>
645
646 <property name="warnunchecked.arg" value=""/>
647
648
649 <!-- Common options in javac invocations -->
650 <property name="build.args" value="${warnunchecked.arg}"/>
651
652 </target>
653
654
655
656 <!-- Various demos and test programs -->
657
658
659 <!-- description="Benchmark from Doug Lea's AQS paper" -->
660 <target name="loops" depends="configure-compiler">
661
662 <mkdir dir="${build.loops.dir}"/>
663
664 <javac srcdir="${loops.src.dir}"
665 destdir="${build.loops.dir}"
666 debug="${build.debug}"
667 debuglevel="${build.debuglevel}"
668 deprecation="${build.deprecation}"
669 source="${build.sourcelevel}"
670 target="${build.sourcelevel}"
671 encoding="ASCII"
672 fork="true">
673
674 <compilerarg line="${build.args}"/>
675 <classpath refid="loops.classpath"/>
676 <compilerarg value="-XDignore.symbol.file=true"/>
677
678 </javac>
679
680 <java classname="ALoops" fork="true">
681 <classpath refid="loops.classpath"/>
682 </java>
683 </target>
684
685
686 <target name="compile-test-loops" depends="jar"
687 description="Compiles all the perf tests in src/test/loops">
688
689 <mkdir dir="${build.dir}/test/loops"/>
690
691 <javac srcdir="${basedir}/src/test/loops"
692 destdir="${build.dir}/test/loops"
693 debug="${build.debug}"
694 debuglevel="${build.debuglevel}"
695 deprecation="${build.deprecation}"
696 includeAntRuntime="false"
697 includeJavaRuntime="false"
698 encoding="ASCII"
699 executable="${build.main.javac}"
700 fork="true">
701
702 <include name="*.java"/>
703 <compilerarg value="-XDignore.symbol.file=true"/>
704 <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
705 <compilerarg value="-Xbootclasspath/p:${product.jar}"/>
706 <compilerarg line="${build.args}"/>
707 </javac>
708 </target>
709
710
711 <!-- jsr166 4jdk8 -->
712
713 <target name="4jdk8compile"
714 depends="configure-compiler"
715 description="Compiles src/jdk8 sources, targeting jdk8">
716
717 <mkdir dir="${build.4jdk8.classes.dir}"/>
718
719 <javac srcdir="${4jdk8src.dir}"
720 destdir="${build.4jdk8.classes.dir}"
721 debug="${build.debug}"
722 debuglevel="${build.debuglevel}"
723 deprecation="${build.deprecation}"
724 source="8"
725 target="8"
726 classpath=""
727 bootclasspath="${bootclasspath8}"
728 includeAntRuntime="false"
729 includeJavaRuntime="false"
730 encoding="ASCII"
731 executable="${javac8}"
732 fork="true">
733 <include name="**/*.java"/>
734 <compilerarg value="-Xprefer:source"/>
735 <compilerarg value="-XDignore.symbol.file=true"/>
736 <compilerarg value="-Xlint:all"/>
737 <compilerarg value="-Werror"/>
738 <compilerarg line="${build.args}"/>
739 </javac>
740 </target>
741
742 <target name="4jdk8doclint"
743 depends="configure-compiler"
744 description="Finds doclint warnings">
745
746 <mkdir dir="${build.4jdk8.classes.dir}"/>
747
748 <javac srcdir="${4jdk8src.dir}"
749 destdir="${build.4jdk8.classes.dir}"
750 debug="${build.debug}"
751 debuglevel="${build.debuglevel}"
752 deprecation="${build.deprecation}"
753 source="8"
754 target="8"
755 classpath=""
756 bootclasspath="${bootclasspath8}"
757 includeAntRuntime="false"
758 includeJavaRuntime="false"
759 encoding="ASCII"
760 executable="${javac8}"
761 fork="true">
762 <include name="**/*.java"/>
763 <compilerarg value="-Xprefer:source"/>
764 <compilerarg value="-XDignore.symbol.file=true"/>
765 <compilerarg value="-Xlint:all"/>
766 <compilerarg value="-Xdoclint:all/protected,reference/private"/>
767 <compilerarg line="${build.args}"/>
768 </javac>
769 </target>
770
771
772 <target name="4jdk8jar"
773 depends="4jdk8compile"
774 description="Builds library jar from compiled sources">
775
776 <jar destfile="${4jdk8product.jar}">
777 <fileset dir="${build.4jdk8.classes.dir}"/>
778 <manifest>
779 <attribute name="Built-By" value="${user.name}"/>
780 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
781 </manifest>
782 </jar>
783 </target>
784
785
786 <target name="4jdk8-tck"
787 depends="4jdk8jar"
788 description="Runs tck tests for jsr166-4jdk8 directly">
789
790 <run-tck-tests
791 target="8"
792 workdir="${build.4jdk8.dir}"
793 classes="${4jdk8product.jar}">
794 <javac-elements>
795 <!-- JDK9+ test classes -->
796 <exclude name="*9Test.java"/>
797 <exclude name="*10Test.java"/>
798 <compilerarg value="-Werror"/>
799 </javac-elements>
800 </run-tck-tests>
801 </target>
802
803
804 <target name="4jdk8-jtreg"
805 depends="4jdk8jar"
806 description="Runs jtreg tests for jsr166-4jdk8 using the jtreg ant task">
807 <run-jtreg-tests
808 target="8"
809 workdir="${build.4jdk8.dir}"
810 classes="${4jdk8product.jar}"/>
811 </target>
812
813
814 <target name="4jdk8-test"
815 depends="4jdk8-tck, 4jdk8-jtreg"
816 description="Runs tck and jtreg tests for jsr166-4jdk8"/>
817
818
819 <target name="4jdk8docs"
820 description="Builds javadocs for src/jdk8 to dist dir">
821
822 <delete dir="${4jdk8docs.dir}"/>
823 <mkdir dir="${4jdk8docs.dir}"/>
824
825 <javadoc destdir="${4jdk8docs.dir}"
826 packagenames="none"
827 link="${java8.api.url}"
828 overview="${4jdk8src.dir}/intro.html"
829 access="${build.javadoc.access}"
830 sourcepath="${4jdk8src.dir}:${jdk8.src.dir}"
831 classpath=""
832 source="8"
833 executable="${javadoc8}"
834 failonerror = "true">
835 <fileset dir="${4jdk8src.dir}" defaultexcludes="yes">
836 <include name="**/*.java"/>
837 </fileset>
838 <arg line="-Xdocrootparent ${java8.docroot.url}"/>
839 <arg value="-XDignore.symbol.file=true"/>
840 <arg value="-tag"/> <arg value="${javadoc.jls.option}"/>
841 <arg value="-tag"/> <arg value="implSpec:a:&lt;em&gt;Implementation Requirements:&lt;/em&gt;"/>
842 <arg value="-tag"/> <arg value="implNote:a:&lt;em&gt;Implementation Note:&lt;/em&gt;"/>
843 <!-- @apiNote tag currently unused -->
844 <!-- <arg value="-tag"/> <arg value="apiNote:a:&lt;em&gt;API Note:&lt;/em&gt;"/> -->
845 </javadoc>
846 </target>
847
848
849 <target name="4jdk8dist"
850 depends="4jdk8dist-jar, 4jdk8dist-docs"
851 description="Puts all distributable products in single hierarchy"/>
852
853
854 <target name="4jdk8clean"
855 description="Removes all 4jdk8 build products">
856 <delete dir="${build.4jdk8.dir}"/>
857 </target>
858
859
860 <target name="4jdk8dist-jar"
861 depends="4jdk8clean, 4jdk8jar">
862 <copy file="${4jdk8product.jar}" todir="${dist.dir}"/>
863 </target>
864
865
866 <target name="4jdk8dist-docs"
867 depends="4jdk8clean, 4jdk8docs">
868 <mirror-dir src="${4jdk8docs.dir}" dst="${dist.4jdk8docs.dir}"/>
869 </target>
870
871
872 <!-- jsr166 4jdk7 (no longer maintained) -->
873
874 <target name="4jdk7compile" depends="configure-compiler">
875 <mkdir dir="${build.4jdk7.classes.dir}"/>
876
877 <javac srcdir="${4jdk7src.dir}"
878 destdir="${build.4jdk7.classes.dir}"
879 debug="${build.debug}"
880 debuglevel="${build.debuglevel}"
881 deprecation="${build.deprecation}"
882 source="6"
883 target="6"
884 classpath=""
885 bootclasspath="${bootclasspath6}"
886 includeAntRuntime="false"
887 includeJavaRuntime="false"
888 encoding="ASCII"
889 executable="${javac7}"
890 fork="true">
891
892 <include name="**/*.java"/>
893 <compilerarg value="-Xprefer:source"/>
894 <compilerarg value="-XDignore.symbol.file=true"/>
895 <compilerarg value="-Xlint:all"/>
896 <compilerarg value="-Werror"/>
897 <compilerarg line="${build.args}"/>
898 </javac>
899 </target>
900
901 <target name="4jdk7doclint" depends="configure-compiler">
902 <mkdir dir="${build.4jdk7.classes.dir}"/>
903
904 <javac srcdir="${4jdk7src.dir}"
905 destdir="${build.4jdk7.classes.dir}"
906 debug="${build.debug}"
907 debuglevel="${build.debuglevel}"
908 deprecation="${build.deprecation}"
909 source="6"
910 target="6"
911 classpath=""
912 bootclasspath="${bootclasspath6}"
913 includeAntRuntime="false"
914 includeJavaRuntime="false"
915 encoding="ASCII"
916 executable="${javac8}"
917 fork="true">
918
919 <include name="**/*.java"/>
920 <compilerarg value="-Xprefer:source"/>
921 <compilerarg value="-XDignore.symbol.file=true"/>
922 <compilerarg value="-Xlint:all"/>
923 <compilerarg value="-Xdoclint:all/protected"/>
924 <compilerarg line="${build.args}"/>
925 </javac>
926 </target>
927
928 <target name="4jdk7jar" depends="4jdk7compile">
929 <jar destfile="${4jdk7product.jar}">
930 <fileset dir="${build.4jdk7.classes.dir}"/>
931 <manifest>
932 <attribute name="Built-By" value="${user.name}"/>
933 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
934 </manifest>
935 </jar>
936 </target>
937
938 <target name="4jdk7-tck" depends="4jdk7jar">
939 <run-tck-tests
940 target="7"
941 workdir="${build.4jdk7.dir}"
942 classes="${4jdk7product.jar}">
943 <javac-elements>
944 <!-- JDK8+ test classes -->
945 <exclude name="*8Test.java"/>
946 <exclude name="*9Test.java"/>
947 <exclude name="*10Test.java"/>
948 <exclude name="DoubleAccumulatorTest.java"/>
949 <exclude name="DoubleAdderTest.java"/>
950 <exclude name="LongAccumulatorTest.java"/>
951 <exclude name="LongAdderTest.java"/>
952 <exclude name="CompletableFutureTest.java"/>
953 <exclude name="SplittableRandomTest.java"/>
954 <exclude name="StampedLockTest.java"/>
955 <exclude name="SubmissionPublisherTest.java"/>
956 <compilerarg value="-Werror"/>
957 </javac-elements>
958 </run-tck-tests>
959 </target>
960
961 <!-- Runs tck tests for jsr166-4jdk7 via junit task (dead experiment) -->
962 <target name="4jdk7-tck-junit" depends="4jdk7compile">
963
964 <junit printsummary="true"
965 showoutput="true"
966 errorProperty="junit.failed"
967 failureProperty="junit.failed"
968 includeantruntime="true"
969 jvm="${java7}"
970 fork="true">
971
972 <jvmarg value="-Xbootclasspath/p:${4jdk7product.jar}"/>
973 <jvmarg value="-server"/>
974
975 <classpath>
976 <pathelement location="${junit.jar}"/>
977 <pathelement location="${build.4jdk7.tck.classes.dir}"/>
978 </classpath>
979
980 <formatter type="brief"/>
981
982 <test name="${jsr166.tckTestClass}" haltonfailure="no">
983 </test>
984 </junit>
985 </target>
986
987 <target name="4jdk7-jtreg" depends="4jdk7jar">
988 <run-jtreg-tests
989 target="7"
990 workdir="${build.4jdk7.dir}"
991 classes="${4jdk7product.jar}"/>
992 </target>
993
994 <target name="4jdk7-test" depends="4jdk7-tck, 4jdk7-jtreg"/>
995
996 <target name="4jdk7docs">
997 <delete dir="${4jdk7docs.dir}"/>
998 <mkdir dir="${4jdk7docs.dir}"/>
999
1000 <javadoc destdir="${4jdk7docs.dir}"
1001 packagenames="none"
1002 link="${java7.api.url}"
1003 overview="${4jdk7src.dir}/intro.html"
1004 access="${build.javadoc.access}"
1005 sourcepath="${4jdk7src.dir}:${jdk7.src.dir}"
1006 classpath=""
1007 executable="${javadoc7}"
1008 failonerror = "true">
1009 <fileset dir="${4jdk7src.dir}" defaultexcludes="yes">
1010 <include name="**/*.java"/>
1011 </fileset>
1012 <arg line="-Xdocrootparent ${java7.docroot.url}"/>
1013 <arg value="-XDignore.symbol.file=true"/>
1014 </javadoc>
1015 </target>
1016
1017 <target name="4jdk7dist" depends="4jdk7dist-jar, 4jdk7dist-docs"/>
1018
1019 <target name="4jdk7clean">
1020 <delete dir="${build.4jdk7.dir}"/>
1021 </target>
1022
1023 <target name="4jdk7dist-jar" depends="4jdk7clean, 4jdk7jar">
1024 <copy file="${4jdk7product.jar}" todir="${dist.dir}"/>
1025 </target>
1026
1027 <target name="4jdk7dist-docs" depends="4jdk7clean, 4jdk7docs">
1028 <mirror-dir src="${4jdk7docs.dir}" dst="${dist.4jdk7docs.dir}"/>
1029 </target>
1030
1031
1032 <!-- jsr166x (no longer maintained) -->
1033
1034 <target name="jsr166xcompile" depends="configure-compiler">
1035 <mkdir dir="${build.jsr166x.classes.dir}"/>
1036
1037 <javac srcdir="${topsrc.dir}"
1038 destdir="${build.jsr166x.classes.dir}"
1039 debug="${build.debug}"
1040 debuglevel="${build.debuglevel}"
1041 deprecation="${build.deprecation}"
1042 classpath=""
1043 bootclasspath="${bootclasspath6}"
1044 source="5"
1045 target="5"
1046 includeAntRuntime="false"
1047 includeJavaRuntime="false"
1048 encoding="ASCII"
1049 executable="${javac7}"
1050 fork="true">
1051 <include name="jsr166x/**/*.java"/>
1052 <compilerarg value="-XDignore.symbol.file=true"/>
1053 <compilerarg value="-Xlint:all,-unchecked,-rawtypes"/>
1054 <compilerarg value="-Werror"/>
1055 <compilerarg line="${build.args}"/>
1056 </javac>
1057 </target>
1058
1059 <target name="jsr166xjar" depends="jsr166xcompile">
1060 <jar destfile="${jsr166x.jar}">
1061 <fileset dir="${build.jsr166x.classes.dir}"/>
1062 <manifest>
1063 <attribute name="Built-By" value="${user.name}"/>
1064 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1065 </manifest>
1066 </jar>
1067 </target>
1068
1069 <target name="jsr166xdocs">
1070 <delete dir="${jsr166xdocs.dir}"/>
1071 <mkdir dir="${jsr166xdocs.dir}"/>
1072
1073 <javadoc destdir="${jsr166xdocs.dir}"
1074 packagenames="jsr166x.*"
1075 link="${java.api.url}"
1076 access="${build.javadoc.access}"
1077 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1078 bootclasspath="${bootclasspath6}"
1079 source="5"
1080 executable="${javadoc7}"
1081 failonerror = "true">
1082 <arg line="-Xdocrootparent ${java.docroot.url}"/>
1083 <arg value="-XDignore.symbol.file=true"/>
1084 </javadoc>
1085 </target>
1086
1087 <target name="jsr166xdist" depends="jsr166xdist-jar, jsr166xdist-docs"/>
1088
1089 <target name="jsr166xclean">
1090 <delete dir="${build.jsr166x.dir}"/>
1091 </target>
1092
1093 <target name="jsr166xdist-jar" depends="jsr166xclean, jsr166xjar">
1094 <copy file="${jsr166x.jar}" todir="${dist.dir}"/>
1095 </target>
1096
1097 <target name="jsr166xdist-docs" depends="jsr166xclean, jsr166xdocs">
1098 <mirror-dir src="${jsr166xdocs.dir}" dst="${dist.jsr166xdocs.dir}"/>
1099 </target>
1100
1101
1102 <!-- jsr166y (no longer maintained) -->
1103
1104 <target name="jsr166ycompile" depends="configure-compiler">
1105 <mkdir dir="${build.jsr166y.classes.dir}"/>
1106
1107 <javac srcdir="${topsrc.dir}"
1108 destdir="${build.jsr166y.classes.dir}"
1109 debug="${build.debug}"
1110 debuglevel="${build.debuglevel}"
1111 deprecation="${build.deprecation}"
1112 source="6"
1113 target="6"
1114 classpath=""
1115 bootclasspath="${bootclasspath6}"
1116 includeAntRuntime="false"
1117 includeJavaRuntime="false"
1118 encoding="ASCII"
1119 executable="${javac7}"
1120 fork="true">
1121
1122 <include name="jsr166y/**/*.java"/>
1123 <compilerarg value="-XDignore.symbol.file=true"/>
1124 <compilerarg value="-Xlint:all"/>
1125 <compilerarg value="-Werror"/>
1126 <compilerarg line="${build.args}"/>
1127 </javac>
1128 </target>
1129
1130 <target name="jsr166yjar" depends="jsr166ycompile">
1131 <jar destfile="${jsr166y.jar}" index="true">
1132 <fileset dir="${build.jsr166y.classes.dir}"/>
1133 <manifest>
1134 <attribute name="Built-By" value="${user.name}"/>
1135 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1136 </manifest>
1137 </jar>
1138 </target>
1139
1140 <target name="jsr166ydocs">
1141 <delete dir="${jsr166ydocs.dir}"/>
1142 <mkdir dir="${jsr166ydocs.dir}"/>
1143
1144 <javadoc destdir="${jsr166ydocs.dir}"
1145 packagenames="jsr166y.*"
1146 link="${java.api.url}"
1147 access="${build.javadoc.access}"
1148 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1149 bootclasspath="${bootclasspath6}"
1150 source="6"
1151 executable="${javadoc7}"
1152 failonerror = "true">
1153 <arg line="-Xdocrootparent ${java.docroot.url}"/>
1154 <arg value="-XDignore.symbol.file=true"/>
1155 </javadoc>
1156 </target>
1157
1158 <target name="jsr166ydist" depends="jsr166ydist-jar, jsr166ydist-docs"/>
1159
1160 <target name="jsr166yclean">
1161 <delete dir="${build.jsr166y.dir}"/>
1162 </target>
1163
1164 <target name="jsr166ydist-jar" depends="jsr166yclean, jsr166yjar">
1165 <copy file="${jsr166y.jar}" todir="${dist.dir}"/>
1166 </target>
1167
1168 <target name="jsr166ydist-docs" depends="jsr166yclean, jsr166ydocs">
1169 <mirror-dir src="${jsr166ydocs.dir}" dst="${dist.jsr166ydocs.dir}"/>
1170 </target>
1171
1172
1173 <!-- extra166y (no longer maintained) -->
1174
1175 <target name="extra166ycompile" depends="configure-compiler, jsr166yjar">
1176 <mkdir dir="${build.extra166y.classes.dir}"/>
1177
1178 <javac srcdir="${topsrc.dir}"
1179 destdir="${build.extra166y.classes.dir}"
1180 debug="${build.debug}"
1181 debuglevel="${build.debuglevel}"
1182 deprecation="${build.deprecation}"
1183 bootclasspath="@{jsr166y.jar}:${bootclasspath6}"
1184 classpath=""
1185 source="6"
1186 target="6"
1187 includeAntRuntime="false"
1188 includeJavaRuntime="false"
1189 encoding="ASCII"
1190 executable="${javac7}"
1191 fork="true">
1192
1193 <include name="extra166y/**/*.java"/>
1194 <compilerarg value="-XDignore.symbol.file=true"/>
1195 <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
1196 <compilerarg value="-Werror"/>
1197 <compilerarg line="${build.args}"/>
1198 </javac>
1199 </target>
1200
1201 <target name="extra166yjar" depends="extra166ycompile">
1202 <jar destfile="${extra166y.jar}" index="true">
1203 <fileset dir="${build.extra166y.classes.dir}"/>
1204 <manifest>
1205 <attribute name="Built-By" value="${user.name}"/>
1206 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1207 </manifest>
1208 </jar>
1209 </target>
1210
1211 <target name="extra166ydocs">
1212 <delete dir="${extra166ydocs.dir}"/>
1213 <mkdir dir="${extra166ydocs.dir}"/>
1214
1215 <javadoc destdir="${extra166ydocs.dir}"
1216 packagenames="extra166y.*"
1217 link="${java.api.url}"
1218 access="${build.javadoc.access}"
1219 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1220 bootclasspath="${bootclasspath6}"
1221 source="6"
1222 executable="${javadoc7}">
1223 <arg line="-Xdocrootparent ${java.docroot.url}"/>
1224 <arg value="-XDignore.symbol.file=true"/>
1225 </javadoc>
1226 </target>
1227
1228 <target name="extra166ydist" depends="extra166ydist-jar, extra166ydist-docs"/>
1229
1230 <target name="extra166yclean">
1231 <delete dir="${build.extra166y.dir}"/>
1232 </target>
1233
1234 <target name="extra166ydist-jar" depends="extra166yclean, extra166yjar">
1235 <copy file="${extra166y.jar}" todir="${dist.dir}"/>
1236 </target>
1237
1238 <target name="extra166ydist-docs" depends="extra166yclean, extra166ydocs">
1239 <mirror-dir src="${extra166ydocs.dir}" dst="${dist.extra166ydocs.dir}"/>
1240 </target>
1241
1242
1243 <!-- jsr166e (no longer maintained) -->
1244
1245 <property name="build.jsr166e.java.version" value="6"/>
1246 <property name="build.jsr166e.javac" value="${javac6}"/>
1247
1248 <target name="jsr166ecompile" depends="configure-compiler">
1249 <mkdir dir="${build.jsr166e.classes.dir}"/>
1250
1251 <javac srcdir="${topsrc.dir}"
1252 destdir="${build.jsr166e.classes.dir}"
1253 debug="${build.debug}"
1254 debuglevel="${build.debuglevel}"
1255 deprecation="${build.deprecation}"
1256 source="${build.jsr166e.java.version}"
1257 target="${build.jsr166e.java.version}"
1258 classpath=""
1259 includeAntRuntime="false"
1260 includeJavaRuntime="false"
1261 executable="${build.jsr166e.javac}"
1262 fork="true">
1263
1264 <include name="jsr166e/**/*.java"/>
1265 <compilerarg value="-XDignore.symbol.file=true"/>
1266 <compilerarg value="-Xlint:all"/>
1267 <compilerarg value="-Werror"/>
1268 <compilerarg line="${build.args}"/>
1269 </javac>
1270 </target>
1271
1272 <target name="jsr166edoclint">
1273 <mkdir dir="${build.jsr166e.classes.dir}"/>
1274
1275 <javac srcdir="${topsrc.dir}"
1276 destdir="${build.jsr166e.classes.dir}"
1277 debug="${build.debug}"
1278 debuglevel="${build.debuglevel}"
1279 deprecation="${build.deprecation}"
1280 source="${build.jsr166e.java.version}"
1281 target="${build.jsr166e.java.version}"
1282 classpath=""
1283 bootclasspath="${bootclasspath6}"
1284 includeAntRuntime="false"
1285 includeJavaRuntime="false"
1286 executable="${javac8}"
1287 fork="true">
1288
1289 <include name="jsr166e/**/*.java"/>
1290 <compilerarg value="-XDignore.symbol.file=true"/>
1291 <compilerarg value="-Xlint:all"/>
1292 <compilerarg value="-Werror"/>
1293 <compilerarg value="-Xdoclint:all/protected"/>
1294 </javac>
1295 </target>
1296
1297 <target name="jsr166ejar" depends="jsr166ecompile">
1298 <jar destfile="${jsr166e.jar}" index="true">
1299 <fileset dir="${build.jsr166e.classes.dir}"/>
1300 <manifest>
1301 <attribute name="Built-By" value="${user.name}"/>
1302 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1303 </manifest>
1304 </jar>
1305 </target>
1306
1307 <target name="jsr166edocs">
1308 <delete dir="${jsr166edocs.dir}"/>
1309 <mkdir dir="${jsr166edocs.dir}"/>
1310
1311 <javadoc destdir="${jsr166edocs.dir}"
1312 packagenames="jsr166e.*"
1313 link="${java.api.url}"
1314 access="${build.javadoc.access}"
1315 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1316 source="${build.jsr166e.java.version}"
1317 executable="${javadoc7}"
1318 failonerror = "true">
1319 <arg line="-Xdocrootparent ${java.docroot.url}"/>
1320 <arg value="-XDignore.symbol.file=true"/>
1321 </javadoc>
1322 </target>
1323
1324 <target name="jsr166e-tck-one-java-version" depends="jsr166ejar">
1325 <echo message="Testing with jdk${build.jsr166e.java.version} ..."/>
1326 <run-tck-tests
1327 tck.src.dir="${test.src.dir}/tck-jsr166e"
1328 target="${build.jsr166e.java.version}"
1329 workdir="${build.jsr166e.dir}"
1330 classes="${jsr166e.jar}"/>
1331 </target>
1332
1333 <target name="jsr166e-tck">
1334
1335 <!-- <antcall target="clean"/> -->
1336 <!-- <antcall target="jsr166e-tck-one-java-version"> -->
1337 <!-- <param name="build.jsr166e.java.version" value="8"/> -->
1338 <!-- <param name="build.jsr166e.javac" value="${javac8}"/> -->
1339 <!-- </antcall> -->
1340
1341 <antcall target="clean"/>
1342 <antcall target="jsr166e-tck-one-java-version">
1343 <param name="build.jsr166e.java.version" value="7"/>
1344 <param name="build.jsr166e.javac" value="${javac7}"/>
1345 </antcall>
1346
1347 <antcall target="clean"/>
1348 <antcall target="jsr166e-tck-one-java-version">
1349 <param name="build.jsr166e.java.version" value="6"/>
1350 <param name="build.jsr166e.javac" value="${javac6}"/>
1351 </antcall>
1352 </target>
1353
1354 <target name="jsr166e-test" depends="jsr166e-tck"/>
1355
1356 <target name="jsr166edist" depends="jsr166edist-jar, jsr166edist-docs"/>
1357
1358 <target name="jsr166eclean">
1359 <delete dir="${build.jsr166e.dir}"/>
1360 </target>
1361
1362 <target name="jsr166edist-jar"
1363 depends="jsr166eclean, jsr166ejar">
1364 <copy file="${jsr166e.jar}" todir="${dist.dir}"/>
1365 </target>
1366
1367 <target name="jsr166edist-docs" depends="jsr166eclean, jsr166edocs">
1368 <mirror-dir src="${jsr166edocs.dir}" dst="${dist.jsr166edocs.dir}"/>
1369 </target>
1370
1371
1372 <!-- Find buglets that can be detected by static build tools -->
1373
1374 <!-- <target name="lint"> -->
1375 <!-- <antcall target="dists"> -->
1376 <!-- <param name="build.javadoc.access" value="protected"/> -->
1377 <!-- </antcall> -->
1378 <!-- </target> -->
1379
1380 <!-- Generates all doclint warnings, even for private methods (rarely useful) -->
1381 <target name="doclint-private">
1382 <antcall target="dist">
1383 <param name="build.javadoc.access" value="private"/>
1384 </antcall>
1385 </target>
1386
1387
1388 <!-- ==============================================================
1389 Experimental errorprone support - http://errorprone.info
1390 =================================================================== -->
1391 <property name="errorprone.jar" location="${lib.dir}/error_prone_ant-2.3.1.jar"/>
1392 <property name="errorprone.jsr166.user.flags" value=""/>
1393 <property name="errorprone.jsr166.flags"
1394 value="-Xep:HashtableContains:OFF
1395 -Xep:JdkObsolete:OFF
1396 -Xep:MissingOverride:OFF
1397 -Xep:MissingFail:OFF
1398 -Xep:MixedArrayDimensions:ERROR
1399 -Xep:RemoveUnusedImports:ERROR
1400 -Xep:EmptyIf:ERROR
1401 -Xep:MultipleTopLevelClasses:ERROR
1402 -Xep:ClassName:ERROR
1403 -Xep:LongLiteralLowerCaseSuffix:ERROR
1404 -Xep:RedundantThrows:ERROR
1405 -Xep:IdentityBinaryExpression:WARN
1406 -Xep:MethodCanBeStatic:WARN
1407 ${errorprone.jsr166.user.flags}"/>
1408 <!-- -Xep:WildcardImport:ERROR -->
1409 <property name="errorprone.jsr166.test.flags"
1410 value="-Xep:StringSplitter:OFF
1411 -Xep:BoxedPrimitiveConstructor:OFF
1412 -Xep:ModifyingCollectionWithItself:OFF"/>
1413 <!-- ant -emacs errorprone |& grep -EA1 '(warning|error):|warnings' -->
1414 <target name="errorprone"
1415 depends="clean, configure-compiler"
1416 description="Run errorprone over jsr166 source code (experimental)">
1417
1418 <local name="destdir"/>
1419 <property name="destdir" value="${build.classes.dir}/java.base"/>
1420 <mkdir dir="${destdir}"/>
1421
1422 <javac srcdir="${src.dir}"
1423 destdir="${destdir}"
1424 debug="${build.debug}"
1425 debuglevel="${build.debuglevel}"
1426 deprecation="${build.deprecation}"
1427 classpath=""
1428 includeAntRuntime="false"
1429 includeJavaRuntime="false"
1430 encoding="ASCII"
1431 executable="${build.main.javac}"
1432 fork="true">
1433
1434 <include name="**/*.java"/>
1435 <!-- Needed to silence -Xep:FutureReturnValueIgnored -->
1436 <compilerarg value="-J--illegal-access=permit"/>
1437 <compilerarg value="-XDcompilePolicy=simple"/>
1438 <compilerarg line="-processorpath ${errorprone.jar}"/>
1439 <compilerarg value="-Xplugin:ErrorProne
1440 ${errorprone.jsr166.flags}"/>
1441 <compilerarg value="--patch-module=java.base=${src.dir}"/>
1442 <compilerarg value="-Xprefer:source"/>
1443 <compilerarg value="-XDignore.symbol.file=true"/>
1444 <compilerarg value="-Xlint:all"/>
1445 <compilerarg value="-Xdoclint:all/protected,reference/private"/>
1446 <compilerarg line="-Xmaxerrs 3000 -Xmaxwarns 3000"/>
1447 <compilerarg line="${build.args}"/>
1448 </javac>
1449
1450 <jar destfile="${product.jar}">
1451 <fileset dir="${destdir}"/>
1452 </jar>
1453
1454 <run-tck-tests
1455 target="${build.main.java.version}"
1456 workdir="${build.dir}"
1457 classes="${product.jar}">
1458 <javac-elements>
1459 <!-- Needed to silence -Xep:FutureReturnValueIgnored -->
1460 <compilerarg value="-J--illegal-access=permit"/>
1461 <compilerarg value="-XDcompilePolicy=simple"/>
1462 <compilerarg line="-processorpath ${errorprone.jar}"/>
1463 <compilerarg value="-Xplugin:ErrorProne
1464 ${errorprone.jsr166.flags}
1465 ${errorprone.jsr166.test.flags}"/>
1466 <compilerarg line="-Xmaxerrs 3000 -Xmaxwarns 3000"/>
1467 </javac-elements>
1468 </run-tck-tests>
1469 </target>
1470
1471 <!-- ant -emacs errorprone-jtreg |& grep -EA1 '(warning|error):' -->
1472 <!-- -XDcompilePolicy=simple or byfile avoids confusing UnusedImports -->
1473 <target name="errorprone-jtreg"
1474 depends="jar"
1475 description="Run errorprone over jtreg tests (experimental)">
1476
1477 <run-jtreg-tests
1478 target="${build.main.java.version}"
1479 workdir="${build.dir}"
1480 classes="${product.jar}"
1481 verbose="all">
1482 <jtreg-elements>
1483 <arg value="-javacoption:-XDcompilePolicy=simple"/>
1484 <arg value="-javacoption:-processorpath"/>
1485 <arg value="-javacoption:${errorprone.jar}"/>
1486 <arg value="-javacoption:-Xplugin:ErrorProne
1487 ${errorprone.jsr166.flags}
1488 ${errorprone.jsr166.test.flags}
1489 -Xep:MultipleTopLevelClasses:WARN
1490 -Xep:NonAtomicVolatileUpdate:OFF"/>
1491 </jtreg-elements>
1492 </run-jtreg-tests>
1493 </target>
1494
1495
1496 <!-- ==============================================================
1497 Running guava tests against jsr166 code
1498 =================================================================== -->
1499
1500 <!-- <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" -->
1501 <!-- organisation="com.google.guava" module="guava-testlib" revision="21.0"/> -->
1502 <!-- <property name="guava.version" value="21.0"/> -->
1503
1504 <!-- HOWTO debug print a path id -->
1505 <!-- <pathconvert property="guava.testlib.classpath" refid="guava.testlib.classpath" /> -->
1506 <!-- <echo message="guava.testlib.classpath=${guava.testlib.classpath}"/> -->
1507
1508 <!-- <ivy:retrieve pathid="guava.tests.classpath" type="jar" inline="true" conf="*" pattern="${lib.dir}/[type]/[artifact].[ext]" -->
1509 <!-- organisation="com.google.guava" module="guava-tests"/> -->
1510 <!-- <get src="http://repo2.maven.org/maven2/com/google/guava/guava-tests/${guava.version}/guava-tests-${guava.version}-tests.jar" -->
1511 <!-- dest="${lib.dir}/jar/guava-tests-tests.jar" usetimestamp="true"/> -->
1512 <!-- <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" type="*" -->
1513 <!-- organisation="com.google.guava" module="guava-testlib" revision="${guava.version}"/> -->
1514
1515 <!-- <test name="com.google.common.collect.testing.TestsForQueuesInJavaUtil"/> -->
1516 <!-- <test name="com.google.common.collect.testing.TestsForListsInJavaUtil"/> -->
1517 <!-- <test name="com.google.common.collect.testing.TestsForSetsInJavaUtil"/> -->
1518 <!-- <test name="com.google.common.collect.testing.TestsForMapsInJavaUtil"/> -->
1519
1520 <!-- <ivy:retrieve pathid="guava.testlib.classpath" -->
1521 <!-- type="*" inline="true" conf="*(private),*(public)" -->
1522 <!-- pattern="${guava.dir}/[artifact].[ext]" -->
1523 <!-- organisation="com.google.guava" module="guava-testlib"/> -->
1524
1525 <!-- Work around bug below by downloading guava-testlib-tests.jar "by hand": -->
1526 <!-- https://issues.apache.org/jira/browse/IVY-1444 -->
1527 <!-- maven tests artifacts cannot be downloaded because they are mapped to private configurations -->
1528
1529 <target name="init-ivy">
1530 <get src="http://repo2.maven.org/maven2/org/apache/ivy/ivy/2.4.0/ivy-2.4.0.jar"
1531 dest="${build.dir}/ivy.jar" usetimestamp="true" skipexisting="true"/>
1532 <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant"
1533 classpath="${build.dir}/ivy.jar"/>
1534 </target>
1535
1536 <target name="guava-tests" depends="jar, init-ivy"
1537 description="Guava tests run against jsr166 collections">
1538 <property name="guava.dir" value="${build.dir}/guava-testlib"/>
1539 <mkdir dir="${guava.dir}"/>
1540 <ivy:retrieve pathid="guava.testlib.classpath"
1541 type="jar,bundle" inline="true" conf="default,master"
1542 pattern="${guava.dir}/[artifact].[ext]"
1543 organisation="com.google.guava" module="guava-testlib"/>
1544 <property name="guava.version" value="21.0"/>
1545 <get src="http://repo2.maven.org/maven2/com/google/guava/guava-testlib/${guava.version}/guava-testlib-${guava.version}-tests.jar"
1546 dest="${guava.dir}/guava-testlib-tests.jar" usetimestamp="true"/>
1547 <junit printsummary="true" showoutput="true" haltonfailure="true"
1548 jvm="${build.main.java}" fork="true">
1549 <jvmarg line="-ea -esa --patch-module=java.base=${product.jar}"/>
1550 <formatter type="brief"/>
1551 <classpath>
1552 <pathelement location="${guava.dir}/guava-testlib-tests.jar"/>
1553 <path refid="guava.testlib.classpath"/>
1554 </classpath>
1555
1556 <!-- "6" in "OpenJdk6Tests" misleadingly means "6+" -->
1557 <test name="com.google.common.collect.testing.OpenJdk6Tests"/>
1558 </junit>
1559 </target>
1560
1561 </project>

dl@cs.oswego.edu
ViewVC Help
Powered by ViewVC 1.1.27