ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.233
Committed: Wed Feb 15 19:27:33 2017 UTC (7 years, 2 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.232: +7 -7 lines
Log Message:
prefer value= to line=

File Contents

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