ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.177
Committed: Fri Sep 11 18:43:46 2015 UTC (8 years, 7 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.176: +9 -2 lines
Log Message:
properly conditionally detect jdk9 source layout; requires ant 1.9.1

File Contents

# Content
1 <project name="jsr166" default="usage"
2 xmlns:if="ant:if" xmlns:unless="ant:unless">
3
4 <description>
5 ------------------------------------------------------------------------------
6 Build file for JSR-166
7
8 Usage: ant [target]
9
10 User-specific settings are read from user.properties.
11 See user.properties.sample for an explanation of some useful settings.
12
13 The repository contains all dependencies except for ant and the JDK
14 itself. Because the JDK version matters and because different
15 targets require different JDKs, we assume that users have created a
16 hierarchy containing:
17 $HOME/jdk/jdk6
18 $HOME/jdk/jdk7
19 $HOME/jdk/jdk8
20 $HOME/jdk/jdk9
21 where each of the above is a JDK or a symlink to same, and
22 $HOME/jdk/src/jdk6
23 $HOME/jdk/src/jdk7
24 $HOME/jdk/src/jdk8
25 $HOME/jdk/src/jdk9
26 where each of the above is a complete JDK source tree
27 (e.g. mercurial forest) or a symlink to same.
28
29 Alternatively, define ant variables thus:
30 ant -Djdk$N.home=...
31 for $N in 6 7 8 9 ...
32 ------------------------------------------------------------------------------
33 </description>
34
35 <!-- Display main targets by running 'ant -projecthelp' -->
36 <target name="usage">
37 <java classname="org.apache.tools.ant.Main">
38 <arg value="-projecthelp" />
39 </java>
40 </target>
41
42 <!-- HOWTO printf debug: <echo message="prop=${prop}"/> -->
43
44 <!-- User-specific settings -->
45 <property file="user.properties"/>
46
47
48 <!-- Compilation options -->
49 <property name="build.sourcelevel" value="6"/>
50 <property name="build.debug" value="true"/>
51 <property name="build.debuglevel" value="source,lines,vars"/>
52 <property name="build.deprecation" value="false"/>
53 <property name="build.javadoc.access" value="protected"/>
54
55 <!-- Tck options; see JSR166TestCase.java
56 To profile a single tck test class:
57 ant -Djsr166.profileTests=true -Djsr166.profileThreshold=10 -Djsr166.tckTestClass=CompletableFutureTest tck
58 To stress test a single tck test class:
59 ant -Djsr166.tckTestClass=CountedCompleterTest -Djsr166.runsPerTest=100 tck
60 -->
61 <property name="jsr166.profileTests" value="false"/>
62 <property name="jsr166.profileThreshold" value="100"/>
63 <property name="jsr166.runsPerTest" value="1"/>
64 <property name="jsr166.tckTestClass" value="JSR166TestCase"/>
65
66 <!-- Build locations -->
67 <property name="build.dir" location="build"/>
68 <property name="build.classes.dir" location="${build.dir}/classes"/>
69 <property name="build.testcases.dir" location="${build.dir}/testcases"/>
70 <property name="build.loops.dir" location="${build.dir}/loops"/>
71 <property name="build.reports.dir" location="${build.dir}/reports"/>
72
73 <property name="build.4jdk7.dir" location="${build.dir}/jsr166-4jdk7"/>
74 <property name="build.4jdk7.classes.dir" location="${build.4jdk7.dir}/classes"/>
75 <property name="build.4jdk7.tck.classes.dir" location="${build.4jdk7.dir}/tck-classes"/>
76 <property name="build.4jdk7.docs.dir" location="${build.4jdk7.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 <available property="jdk@{v}.have.java.base"
99 file="${jdks.home}/src/jdk@{v}/jdk/src/java.base/share/classes" type="dir"/>
100 <property name="jdk@{v}src.dir" location="${jdks.home}/src/jdk@{v}/jdk/src/java.base/share/classes"
101 if:set="jdk@{v}.have.java.base"/>
102 <property name="jdk@{v}src.dir" location="${jdks.home}/src/jdk@{v}/jdk/src/share/classes"
103 unless:set="jdk@{v}.have.java.base"/>
104 <local name="boot.jar.dir"/>
105 <property name="boot.jar.dir" location="${jdk@{v}.home}/jre/lib"/>
106 <path id="bootclasspath@{v}">
107 <pathelement path="${boot.jar.dir}/resources.jar"/>
108 <pathelement path="${boot.jar.dir}/rt.jar"/>
109 <pathelement path="${boot.jar.dir}/jsse.jar"/>
110 <pathelement path="${boot.jar.dir}/jce.jar"/>
111 <pathelement path="${boot.jar.dir}/charsets.jar"/>
112 </path>
113 <property name="bootclasspath@{v}" value="${toString:bootclasspath@{v}}"/>
114 </sequential>
115 </macrodef>
116
117 <macrodef name="mirror-dir">
118 <attribute name="src"/>
119 <attribute name="dst"/>
120 <sequential>
121 <delete dir="@{dst}"/>
122 <mkdir dir="@{dst}"/>
123 <copy todir="@{dst}" preservelastmodified="true">
124 <fileset dir="@{src}"/>
125 </copy>
126 </sequential>
127 </macrodef>
128
129 <defjdklocations v="6"/>
130 <defjdklocations v="7"/>
131 <defjdklocations v="8"/>
132 <defjdklocations v="9"/>
133
134 <!-- Source locations -->
135 <property name="src.dir" location="${basedir}/src/main"/>
136 <property name="test.src.dir" location="${basedir}/src/test"/>
137 <property name="loops.src.dir" location="${basedir}/src/loops"/>
138 <property name="tck.src.dir" location="${test.src.dir}/tck"/>
139 <property name="jtreg7.src.dir" location="${test.src.dir}/jtreg-jdk7"/>
140 <property name="jtreg8.src.dir" location="${test.src.dir}/jtreg"/>
141 <property name="jtreg9.src.dir" location="${test.src.dir}/jtreg"/>
142 <property name="jtreg.src.dir" location="${jtreg9.src.dir}"/>
143 <property name="lib.dir" location="${basedir}/lib"/>
144 <property name="dist.dir" location="${basedir}/dist"/>
145 <property name="topsrc.dir" location="${basedir}/src"/>
146 <property name="4jdk7src.dir" location="${topsrc.dir}/jdk7"/>
147 <property name="jsr166xsrc.dir" location="${topsrc.dir}/jsr166x"/>
148 <property name="jsr166ysrc.dir" location="${topsrc.dir}/jsr166y"/>
149 <property name="jsr166esrc.dir" location="${topsrc.dir}/jsr166e"/>
150 <property name="extra166ysrc.dir" location="${topsrc.dir}/extra166y"/>
151
152 <!-- Javadoc locations -->
153 <property name="docs.dir" location="${build.dir}/docs"/>
154 <property name="4jdk7docs.dir" location="${build.4jdk7.dir}/docs"/>
155 <property name="jsr166xdocs.dir" location="${build.jsr166x.dir}/docs"/>
156 <property name="jsr166ydocs.dir" location="${build.jsr166y.dir}/docs"/>
157 <property name="jsr166edocs.dir" location="${build.jsr166e.dir}/docs"/>
158 <property name="extra166ydocs.dir" location="${build.extra166y.dir}/docs"/>
159
160 <property name="dist.docs.dir" location="${dist.dir}/docs"/>
161 <property name="dist.4jdk7docs.dir" location="${dist.dir}/jsr166-4jdk7docs"/>
162 <property name="dist.jsr166xdocs.dir" location="${dist.dir}/jsr166xdocs"/>
163 <property name="dist.jsr166ydocs.dir" location="${dist.dir}/jsr166ydocs"/>
164 <property name="dist.jsr166edocs.dir" location="${dist.dir}/jsr166edocs"/>
165 <property name="dist.extra166ydocs.dir" location="${dist.dir}/extra166ydocs"/>
166
167 <!-- Jar locations -->
168 <property name="product.jar" location="${build.dir}/jsr166.jar"/>
169 <property name="4jdk7product.jar" location="${build.4jdk7.dir}/jsr166-4jdk7.jar"/>
170 <property name="jsr166x.jar" location="${build.jsr166x.dir}/jsr166x.jar"/>
171 <property name="jsr166y.jar" location="${build.jsr166y.dir}/jsr166y.jar"/>
172 <property name="jsr166e.jar" location="${build.jsr166e.dir}/jsr166e.jar"/>
173 <property name="extra166y.jar" location="${build.extra166y.dir}/extra166y.jar"/>
174 <property name="junit.jar" location="${lib.dir}/junit.jar"/>
175
176 <!-- Canonical location of jdk docs root, to use with javadoc -Xdocrootparent flag -->
177 <property name="java5.docroot.url" value="http://docs.oracle.com/javase/1.5.0/docs"/>
178 <property name="java6.docroot.url" value="http://docs.oracle.com/javase/6/docs"/>
179 <property name="java7.docroot.url" value="http://docs.oracle.com/javase/7/docs"/>
180 <property name="java8.docroot.url" value="http://docs.oracle.com/javase/8/docs"/>
181 <!-- The expected canonical location does not yet exist as of 2014-07 -->
182 <!-- <property name="java9.docroot.url" value="http://docs.oracle.com/javase/9/docs"/> -->
183 <property name="java9.docroot.url" value="http://download.java.net/jdk9/docs"/>
184 <!-- Default jdk doc location (latest stable release seems best) -->
185 <property name="java.docroot.url" value="${java8.docroot.url}"/>
186
187 <!-- Canonical location of jdk API docs, to use with javadoc link attribute -->
188 <property name="java5.api.url" value="${java5.docroot.url}/api/"/>
189 <property name="java6.api.url" value="${java6.docroot.url}/api/"/>
190 <property name="java7.api.url" value="${java7.docroot.url}/api/"/>
191 <property name="java8.api.url" value="${java8.docroot.url}/api/"/>
192 <property name="java9.api.url" value="${java9.docroot.url}/api/"/>
193 <property name="java.api.url" value="${java.docroot.url}/api/"/>
194
195 <!-- Define the "jtreg" task -->
196 <!-- See the docs in "jtreg -onlineHelp" -->
197 <taskdef name="jtreg" classname="com.sun.javatest.regtest.Main$$Ant"
198 classpath="${lib.dir}/jtreg.jar" />
199
200 <!-- Test classpath -->
201 <path id="test.classpath">
202 <pathelement location="${build.testcases.dir}"/>
203 <pathelement location="${junit.jar}"/>
204 </path>
205
206 <macrodef name="run-tck-tests">
207 <attribute name="tck.src.dir" default="${tck.src.dir}"/>
208 <attribute name="target"/>
209 <attribute name="compile-target" default="@{target}"/>
210 <attribute name="workdir"/>
211 <attribute name="classes"/>
212 <attribute name="jvmflags" default="-ea -esa -Djsr166.testImplementationDetails=true"/>
213 <element name="javac-elements" optional="true"/>
214 <sequential>
215
216 <mkdir dir="@{workdir}/tck-classes"/>
217
218 <javac srcdir="@{tck.src.dir}"
219 destdir="@{workdir}/tck-classes"
220 debug="${build.debug}"
221 debuglevel="${build.debuglevel}"
222 deprecation="${build.deprecation}"
223 source="@{compile-target}"
224 target="@{compile-target}"
225 classpath="${junit.jar}"
226 includeAntRuntime="false"
227 includeJavaRuntime="false"
228 executable="${javac@{compile-target}}"
229 fork="true">
230
231 <include name="*.java"/>
232 <compilerarg value="-XDignore.symbol.file=true"/>
233 <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation"/>
234 <compilerarg value="-Xbootclasspath/p:@{classes}"/>
235 <compilerarg line="${build.args}"/>
236 <javac-elements/>
237
238 </javac>
239
240 <java classname="${jsr166.tckTestClass}"
241 failonerror="true"
242 jvm="${java@{target}}"
243 fork="true">
244 <jvmarg value="-Xbootclasspath/p:@{classes}"/>
245 <jvmarg line="@{jvmflags}"/>
246
247 <!-- ant -Djava.util.concurrent.ForkJoinPool.common.parallelism=1 tck -->
248 <syspropertyset id="java.util.concurrent.ForkJoinPool-properties">
249 <propertyref prefix="java.util.concurrent.ForkJoinPool"/>
250 </syspropertyset>
251
252 <sysproperty key="jsr166.profileTests" value="${jsr166.profileTests}"/>
253 <sysproperty key="jsr166.profileThreshold" value="${jsr166.profileThreshold}"/>
254 <sysproperty key="jsr166.runsPerTest" value="${jsr166.runsPerTest}"/>
255 <classpath>
256 <pathelement location="${junit.jar}"/>
257 <pathelement location="@{workdir}/tck-classes"/>
258 </classpath>
259 </java>
260
261 </sequential>
262 </macrodef>
263
264 <!-- Define jtreg test sets for different jdk versions -->
265 <fileset dir="${jtreg9.src.dir}">
266 <patternset id="jdk9.jtreg.tests">
267 <include name="**/*.java"/>
268 </patternset>
269 </fileset>
270
271 <fileset dir="${jtreg8.src.dir}">
272 <patternset id="jdk8.jtreg.tests">
273 <include name="**/*.java"/>
274 <exclude name="**/SpliteratorCharacteristics.java"/>
275 <!-- https://bugs.openjdk.java.net/browse/JDK-6842353 -->
276 <exclude name="**/GCDuringIteration.java"/>
277 </patternset>
278 </fileset>
279
280 <fileset dir="${jtreg7.src.dir}">
281 <patternset id="jdk7.jtreg.tests">
282 <include name="**/*.java"/>
283 </patternset>
284 </fileset>
285
286 <macrodef name="run-jtreg-tests">
287 <!-- ant -Djtreg9.src.dir=src/test/jtreg/util/concurrent/CompletableFuture jtreg -->
288 <attribute name="source" default="7"/>
289 <attribute name="target"/>
290 <attribute name="workdir"/>
291 <attribute name="classes"/>
292 <attribute name="jtregflags" default=""/>
293 <sequential>
294 <delete dir="@{workdir}/JTwork" quiet="true"/>
295 <delete dir="@{workdir}/JTreport" quiet="true"/>
296 <mkdir dir="@{workdir}/JTwork/scratch"/>
297 <mkdir dir="@{workdir}/JTreport"/>
298 <jtreg dir="${jtreg@{target}.src.dir}"
299 jdk="${jdk@{target}.home}"
300 workDir="@{workdir}/JTwork"
301 reportDir="@{workdir}/JTreport">
302 <patternset refid="jdk@{target}.jtreg.tests"/>
303 <arg value="-Xbootclasspath/p:@{classes}"/>
304 <arg value="-agentvm"/>
305 <arg value="-v:nopass,fail"/>
306 <arg value="-vmoptions:-esa -ea"/>
307 <arg value="-automatic"/>
308 <arg value="-k:!ignore"/>
309 <arg line="@{jtregflags}"/>
310 </jtreg>
311 </sequential>
312 </macrodef>
313
314 <!-- ALoops classpath -->
315 <path id="loops.classpath">
316 <pathelement location="${build.loops.dir}"/>
317 </path>
318
319 <!-- Support @jls tag, used in jdk8+ javadoc -->
320 <property name="javadoc.jls.cite" value="The Java&amp;trade; Language Specification"/>
321 <property name="javadoc.jls.option" value="jls:a:See &lt;cite&gt;${javadoc.jls.cite}&lt;/cite&gt;:"/>
322
323 <!-- Main targets -->
324
325 <property name="build.main.java.version" value="9"/>
326 <property name="build.main.javac" value="${javac9}"/>
327
328 <target name="dists"
329 depends="dist, 4jdk7dist, jsr166edist, jsr166ydist, extra166ydist, jsr166xdist"
330 description="Builds all public jars and docs"/>
331
332 <target name="compile"
333 depends="configure-compiler"
334 description="Compiles src/main sources to build dir">
335
336 <mkdir dir="${build.classes.dir}"/>
337
338 <javac srcdir="${src.dir}"
339 destdir="${build.classes.dir}"
340 debug="${build.debug}"
341 debuglevel="${build.debuglevel}"
342 deprecation="${build.deprecation}"
343 classpath=""
344 includeAntRuntime="false"
345 includeJavaRuntime="false"
346 executable="${build.main.javac}"
347 fork="true">
348
349 <include name="**/*.java"/>
350 <compilerarg value="-Xprefer:source"/>
351 <compilerarg value="-XDignore.symbol.file=true"/>
352 <compilerarg value="-Xlint:all"/>
353 <compilerarg value="-Werror"/>
354 <compilerarg value="-Xdoclint:all/protected"/>
355 <compilerarg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
356 <compilerarg line="${build.args}"/>
357
358 </javac>
359 </target>
360
361
362 <target name="jar"
363 depends="compile"
364 description="Builds library jar from compiled sources">
365
366 <jar destfile="${product.jar}">
367 <fileset dir="${build.classes.dir}"/>
368 </jar>
369 </target>
370
371
372 <target name="docs"
373 description="Builds javadocs for src/main to dist dir">
374
375 <delete dir="${docs.dir}"/>
376 <mkdir dir="${docs.dir}"/>
377
378 <!-- the packagenames="none" hack below prevents scanning the -->
379 <!-- sourcepath for packages -->
380
381 <javadoc destdir="${docs.dir}"
382 packagenames="none"
383 link="${java9.api.url}"
384 overview="${src.dir}/intro.html"
385 access="${build.javadoc.access}"
386 sourcepath="${src.dir}:${jdk9src.dir}"
387 classpath=""
388 executable="${javadoc9}">
389 <fileset dir="${src.dir}" defaultexcludes="yes">
390 <include name="**/*.java"/>
391 </fileset>
392 <arg line="-Xdocrootparent ${java9.docroot.url}"/>
393 <arg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
394 <arg value="-XDignore.symbol.file=true"/>
395 <arg value="-tag"/>
396 <arg value="${javadoc.jls.option}"/>
397 <arg value="-tag"/>
398 <arg value="apiNote:a:&lt;em&gt;API Note:&lt;/em&gt;"/>
399 <arg value="-tag"/>
400 <arg value="implSpec:a:&lt;em&gt;Implementation Requirements:&lt;/em&gt;"/>
401 <arg value="-tag"/>
402 <arg value="implNote:a:&lt;em&gt;Implementation Note:&lt;/em&gt;"/>
403 </javadoc>
404 </target>
405
406
407 <target name="dist"
408 depends="dist-clean, dist-jar, dist-docs"
409 description="Puts all distributable products in single hierarchy"/>
410
411
412 <target name="release"
413 depends="dist"
414 description="Puts entire CVS tree, plus distribution productions, in a jar">
415
416 <property name="release.jar" value="dist/jsr166-${version}-dist.jar"/>
417
418 <jar basedir="${basedir}" destfile="${release.jar}">
419 <!-- <exclude name="build/**"/> -->
420 <exclude name="${release.jar}"/>
421 <exclude name="user.properties"/>
422 <exclude name="etc/notes/**"/>
423 <exclude name="src/emulation/**"/>
424 <exclude name="**/SyntaxTest.java"/>
425 <exclude name="**/SuperfluousAbstract.java"/>
426 </jar>
427 </target>
428
429
430 <target name="clean"
431 description="Removes all build products">
432
433 <delete dir="${build.dir}"/>
434
435 </target>
436
437
438 <target name="dist-clean"
439 description="Removes all build and distribution products">
440
441 <delete dir="${build.dir}"/>
442 <delete dir="${dist.dir}"/>
443
444 </target>
445
446
447 <target name="dist-jar"
448 depends="clean, jar">
449 <copy file="${product.jar}" todir="${dist.dir}"/>
450 </target>
451
452 <target name="dist-docs"
453 depends="clean, docs">
454 <mirror-dir src="${docs.dir}" dst="${dist.docs.dir}"/>
455 </target>
456
457 <target name="tck"
458 depends="jar"
459 description="Runs tck tests for main directly">
460
461 <run-tck-tests
462 target="${build.main.java.version}"
463 workdir="${build.dir}"
464 classes="${product.jar}"/>
465 </target>
466
467 <target name="tck-parallelism-1"
468 description="Runs tck with given common pool parallelism">
469 <antcall target="tck">
470 <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="1"/>
471 </antcall>
472 </target>
473
474 <target name="tck-parallelism-0"
475 description="Runs tck with given common pool parallelism">
476 <antcall target="tck">
477 <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="0"/>
478 </antcall>
479 </target>
480
481 <target name="jtreg"
482 depends="jar"
483 description="Runs jtreg tests for main using the jtreg ant task">
484 <run-jtreg-tests
485 target="${build.main.java.version}"
486 workdir="${build.dir}"
487 classes="${product.jar}"/>
488 </target>
489
490 <target name="test"
491 depends="tck, tck-parallelism-1, jtreg"
492 description="Runs tck and jtreg tests for main">
493 </target>
494
495 <target name="jtreg8" description="Runs jtreg tests with jdk8">
496
497 <antcall target="jtreg">
498 <param name="build.main.java.version" value="8"/>
499 <param name="build.main.javac" value="${javac8}"/>
500 </antcall>
501
502 </target>
503
504 <target name="test89"
505 description="Runs tck and jtreg tests for main for multiple java versions">
506
507 <antcall target="clean"/>
508 <antcall target="test">
509 <param name="build.main.java.version" value="8"/>
510 <param name="build.main.javac" value="${javac8}"/>
511 </antcall>
512
513 <antcall target="clean"/>
514 <antcall target="test">
515 <param name="build.main.java.version" value="9"/>
516 <param name="build.main.javac" value="${javac9}"/>
517 </antcall>
518
519 </target>
520
521
522
523 <target name="configure-compiler">
524
525 <property name="unchecked.option" value="-Xlint:unchecked"/>
526
527 <condition property="warnunchecked.arg" value="${unchecked.option}">
528 <istrue value="${build.warnunchecked}"/>
529 </condition>
530
531 <property name="warnunchecked.arg" value=""/>
532
533
534 <!-- Common options in javac invocations -->
535 <property name="build.args" value="${warnunchecked.arg}"/>
536
537 </target>
538
539
540
541 <!-- Various demos and test programs -->
542
543
544 <target name="loops" depends="configure-compiler"
545 description="Benchmark from Doug Lea's AQS paper">
546
547 <mkdir dir="${build.loops.dir}"/>
548
549 <javac srcdir="${loops.src.dir}"
550 destdir="${build.loops.dir}"
551 debug="${build.debug}"
552 debuglevel="${build.debuglevel}"
553 deprecation="${build.deprecation}"
554 source="${build.sourcelevel}"
555 fork="true">
556
557 <compilerarg line="${build.args}"/>
558 <classpath refid="loops.classpath"/>
559 <compilerarg value="-XDignore.symbol.file=true"/>
560
561 </javac>
562
563 <java classname="ALoops" fork="true">
564 <classpath refid="loops.classpath"/>
565 </java>
566
567 </target>
568
569
570 <target name="compile-test-loops" depends="jar"
571 description="compile all the perf tests in src/test/loops">
572
573 <mkdir dir="${build.dir}/test/loops"/>
574
575 <javac srcdir="${basedir}/src/test/loops"
576 destdir="${build.dir}/test/loops"
577 debug="${build.debug}"
578 debuglevel="${build.debuglevel}"
579 deprecation="${build.deprecation}"
580 includeAntRuntime="false"
581 includeJavaRuntime="false"
582 executable="${javac9}"
583 fork="true">
584
585 <include name="*.java"/>
586 <compilerarg value="-XDignore.symbol.file=true"/>
587 <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
588 <compilerarg value="-Xbootclasspath/p:${product.jar}"/>
589 <compilerarg line="${build.args}"/>
590
591 </javac>
592
593 </target>
594
595
596 <!-- jsr166 4jdk7 -->
597
598 <target name="4jdk7compile"
599 depends="configure-compiler"
600 description="Compiles src/jdk7 sources, targeting jdk7">
601
602 <mkdir dir="${build.4jdk7.classes.dir}"/>
603
604 <javac srcdir="${4jdk7src.dir}"
605 destdir="${build.4jdk7.classes.dir}"
606 debug="${build.debug}"
607 debuglevel="${build.debuglevel}"
608 deprecation="${build.deprecation}"
609 source="6"
610 classpath=""
611 bootclasspath="${bootclasspath6}"
612 includeAntRuntime="false"
613 includeJavaRuntime="false"
614 executable="${javac7}"
615 fork="true">
616
617 <include name="**/*.java"/>
618 <compilerarg value="-Xprefer:source"/>
619 <compilerarg value="-XDignore.symbol.file=true"/>
620 <compilerarg value="-Xlint:all"/>
621 <compilerarg value="-Werror"/>
622 <compilerarg line="${build.args}"/>
623
624 </javac>
625 </target>
626
627 <target name="4jdk7doclint"
628 depends="configure-compiler"
629 description="Finds doclint warnings">
630
631 <mkdir dir="${build.4jdk7.classes.dir}"/>
632
633 <javac srcdir="${4jdk7src.dir}"
634 destdir="${build.4jdk7.classes.dir}"
635 debug="${build.debug}"
636 debuglevel="${build.debuglevel}"
637 deprecation="${build.deprecation}"
638 source="6"
639 classpath=""
640 bootclasspath="${bootclasspath7}"
641 includeAntRuntime="false"
642 includeJavaRuntime="false"
643 executable="${javac8}"
644 fork="true">
645
646 <include name="**/*.java"/>
647 <compilerarg value="-Xprefer:source"/>
648 <compilerarg value="-XDignore.symbol.file=true"/>
649 <compilerarg value="-Xlint:all"/>
650 <compilerarg value="-Xdoclint:all/protected"/>
651 <compilerarg line="${build.args}"/>
652
653 </javac>
654 </target>
655
656
657 <target name="4jdk7jar"
658 depends="4jdk7compile"
659 description="Builds library jar from compiled sources">
660
661 <jar destfile="${4jdk7product.jar}">
662 <fileset dir="${build.4jdk7.classes.dir}"/>
663 </jar>
664
665 </target>
666
667
668 <target name="4jdk7-tck"
669 depends="4jdk7jar"
670 description="Runs tck tests for jsr166-4jdk7 directly">
671
672 <run-tck-tests
673 target="7"
674 workdir="${build.4jdk7.dir}"
675 classes="${4jdk7product.jar}">
676 <javac-elements>
677 <!-- JDK8+ test classes -->
678 <exclude name="*8Test.java"/>
679 <exclude name="*9Test.java"/>
680 <exclude name="*10Test.java"/>
681 <exclude name="DoubleAccumulatorTest.java"/>
682 <exclude name="DoubleAdderTest.java"/>
683 <exclude name="LongAccumulatorTest.java"/>
684 <exclude name="LongAdderTest.java"/>
685 <exclude name="CompletableFutureTest.java"/>
686 <exclude name="SplittableRandomTest.java"/>
687 <exclude name="StampedLockTest.java"/>
688 <exclude name="SubmissionPublisherTest.java"/>
689 </javac-elements>
690 </run-tck-tests>
691 </target>
692
693
694 <target name="4jdk7-tck-junit"
695 depends="4jdk7compile"
696 description="Runs tck tests for jsr166-4jdk7 via junit task (experimental)">
697
698 <junit printsummary="true"
699 showoutput="true"
700 errorProperty="junit.failed"
701 failureProperty="junit.failed"
702 includeantruntime="true"
703 jvm="${java7}"
704 fork="true">
705
706 <jvmarg value="-Xbootclasspath/p:${4jdk7product.jar}"/>
707 <jvmarg value="-server"/>
708
709 <classpath>
710 <pathelement location="${junit.jar}"/>
711 <pathelement location="${build.4jdk7.tck.classes.dir}"/>
712 </classpath>
713
714 <formatter type="brief"/>
715
716 <test name="${jsr166.tckTestClass}" haltonfailure="no">
717 </test>
718
719 </junit>
720 </target>
721
722 <target name="4jdk7-jtreg"
723 depends="4jdk7jar"
724 description="Runs jtreg tests for jsr166-4jdk7 using the jtreg ant task">
725 <run-jtreg-tests
726 target="7"
727 workdir="${build.4jdk7.dir}"
728 classes="${4jdk7product.jar}"/>
729 </target>
730
731
732 <target name="4jdk7-test"
733 depends="4jdk7-tck, 4jdk7-jtreg"
734 description="Runs tck and jtreg tests for jsr166-4jdk7">
735 </target>
736
737
738 <target name="4jdk7docs"
739 description="Builds javadocs for src/jdk7 to dist dir">
740
741 <delete dir="${4jdk7docs.dir}"/>
742 <mkdir dir="${4jdk7docs.dir}"/>
743
744 <javadoc destdir="${4jdk7docs.dir}"
745 packagenames="none"
746 link="${java7.api.url}"
747 overview="${4jdk7src.dir}/intro.html"
748 access="${build.javadoc.access}"
749 sourcepath="${4jdk7src.dir}:${jdk7src.dir}"
750 classpath=""
751 executable="${javadoc7}">
752 <fileset dir="${4jdk7src.dir}" defaultexcludes="yes">
753 <include name="**/*.java"/>
754 </fileset>
755 <arg line="-Xdocrootparent ${java7.docroot.url}"/>
756 <arg value="-XDignore.symbol.file=true"/>
757 </javadoc>
758 </target>
759
760
761 <target name="4jdk7dist"
762 depends="4jdk7dist-jar, 4jdk7dist-docs"
763 description="Puts all distributable products in single hierarchy"/>
764
765
766 <target name="4jdk7clean"
767 description="Removes all 4jdk7 build products">
768
769 <delete dir="${build.4jdk7.dir}"/>
770
771 </target>
772
773
774 <target name="4jdk7dist-jar"
775 depends="4jdk7clean, 4jdk7jar">
776 <copy file="${4jdk7product.jar}" todir="${dist.dir}"/>
777 </target>
778
779
780 <target name="4jdk7dist-docs"
781 depends="4jdk7clean, 4jdk7docs">
782 <mirror-dir src="${4jdk7docs.dir}" dst="${dist.4jdk7docs.dir}"/>
783 </target>
784
785
786 <!-- jsr166x -->
787
788 <target name="jsr166xcompile"
789 depends="configure-compiler"
790 description="Compiles jsr166x sources to build dir">
791
792 <mkdir dir="${build.jsr166x.classes.dir}"/>
793
794 <javac srcdir="${topsrc.dir}"
795 destdir="${build.jsr166x.classes.dir}"
796 debug="${build.debug}"
797 debuglevel="${build.debuglevel}"
798 deprecation="${build.deprecation}"
799 classpath=""
800 bootclasspath="${bootclasspath6}"
801 source="5"
802 includeAntRuntime="false"
803 includeJavaRuntime="false"
804 executable="${javac7}"
805 fork="true">
806
807 <include name="jsr166x/**/*.java"/>
808 <compilerarg value="-XDignore.symbol.file=true"/>
809 <compilerarg value="-Xlint:all,-unchecked,-rawtypes"/>
810 <compilerarg value="-Werror"/>
811 <compilerarg line="${build.args}"/>
812
813 </javac>
814 </target>
815
816
817 <target name="jsr166xjar"
818 depends="jsr166xcompile"
819 description="Builds library jar from compiled sources">
820
821 <jar destfile="${jsr166x.jar}">
822 <fileset dir="${build.jsr166x.classes.dir}"/>
823 </jar>
824
825 </target>
826
827
828 <target name="jsr166xdocs"
829 description="Builds javadocs to dist dir">
830
831 <delete dir="${jsr166xdocs.dir}"/>
832 <mkdir dir="${jsr166xdocs.dir}"/>
833
834 <javadoc destdir="${jsr166xdocs.dir}"
835 packagenames="jsr166x.*"
836 link="${java.api.url}"
837 access="${build.javadoc.access}"
838 sourcepath="${topsrc.dir}:${jdk6src.dir}"
839 bootclasspath="${bootclasspath6}"
840 source="5"
841 executable="${javadoc7}">
842 <arg line="-Xdocrootparent ${java.docroot.url}"/>
843 <arg value="-XDignore.symbol.file=true"/>
844
845 </javadoc>
846 </target>
847
848
849 <target name="jsr166xdist"
850 depends="jsr166xdist-jar, jsr166xdist-docs"
851 description="Puts all distributable products in single hierarchy"/>
852
853
854 <target name="jsr166xclean"
855 description="Removes all jsr166x build products">
856
857 <delete dir="${build.jsr166x.dir}"/>
858
859 </target>
860
861
862 <target name="jsr166xdist-jar"
863 depends="jsr166xclean, jsr166xjar">
864 <copy file="${jsr166x.jar}" todir="${dist.dir}"/>
865 </target>
866
867 <target name="jsr166xdist-docs"
868 depends="jsr166xclean, jsr166xdocs">
869 <mirror-dir src="${jsr166xdocs.dir}" dst="${dist.jsr166xdocs.dir}"/>
870 </target>
871
872 <!-- jsr166y -->
873
874
875 <target name="jsr166ycompile"
876 depends="configure-compiler"
877 description="Compiles jsr166y sources">
878
879 <mkdir dir="${build.jsr166y.classes.dir}"/>
880
881 <javac srcdir="${topsrc.dir}"
882 destdir="${build.jsr166y.classes.dir}"
883 debug="${build.debug}"
884 debuglevel="${build.debuglevel}"
885 deprecation="${build.deprecation}"
886 source="6"
887 classpath=""
888 bootclasspath="${bootclasspath6}"
889 includeAntRuntime="false"
890 includeJavaRuntime="false"
891 executable="${javac7}"
892 fork="true">
893
894 <include name="jsr166y/**/*.java"/>
895 <compilerarg value="-XDignore.symbol.file=true"/>
896 <compilerarg value="-Xlint:all"/>
897 <compilerarg value="-Werror"/>
898 <compilerarg line="${build.args}"/>
899
900 </javac>
901 </target>
902
903
904 <target name="jsr166yjar"
905 depends="jsr166ycompile"
906 description="Builds library jar from compiled sources">
907
908 <jar destfile="${jsr166y.jar}" index="true">
909 <fileset dir="${build.jsr166y.classes.dir}"/>
910 </jar>
911
912 </target>
913
914
915 <target name="jsr166ydocs"
916 description="Builds javadocs to dist dir">
917
918 <delete dir="${jsr166ydocs.dir}"/>
919 <mkdir dir="${jsr166ydocs.dir}"/>
920
921 <javadoc destdir="${jsr166ydocs.dir}"
922 packagenames="jsr166y.*"
923 link="${java.api.url}"
924 access="${build.javadoc.access}"
925 sourcepath="${topsrc.dir}:${jdk6src.dir}"
926 bootclasspath="${bootclasspath6}"
927 source="6"
928 executable="${javadoc7}">
929 <arg line="-Xdocrootparent ${java.docroot.url}"/>
930 <arg value="-XDignore.symbol.file=true"/>
931
932 </javadoc>
933 </target>
934
935
936 <target name="jsr166ydist"
937 depends="jsr166ydist-jar, jsr166ydist-docs"
938 description="Puts all distributable products in single hierarchy"/>
939
940
941 <target name="jsr166yclean"
942 description="Removes all jsr166y build products">
943
944 <delete dir="${build.jsr166y.dir}"/>
945
946 </target>
947
948
949 <target name="jsr166ydist-jar"
950 depends="jsr166yclean, jsr166yjar">
951 <copy file="${jsr166y.jar}" todir="${dist.dir}"/>
952 </target>
953
954 <target name="jsr166ydist-docs"
955 depends="jsr166yclean, jsr166ydocs">
956 <mirror-dir src="${jsr166ydocs.dir}" dst="${dist.jsr166ydocs.dir}"/>
957 </target>
958
959
960 <!-- extra166y -->
961
962
963 <target name="extra166ycompile"
964 depends="configure-compiler, jsr166yjar"
965 description="Compiles extra166y sources">
966
967 <mkdir dir="${build.extra166y.classes.dir}"/>
968
969 <javac srcdir="${topsrc.dir}"
970 destdir="${build.extra166y.classes.dir}"
971 debug="${build.debug}"
972 debuglevel="${build.debuglevel}"
973 deprecation="${build.deprecation}"
974 bootclasspath="@{jsr166y.jar}:${bootclasspath6}"
975 classpath=""
976 source="6"
977 includeAntRuntime="false"
978 includeJavaRuntime="false"
979 executable="${javac7}"
980 fork="true">
981
982 <include name="extra166y/**/*.java"/>
983 <compilerarg value="-XDignore.symbol.file=true"/>
984 <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
985 <compilerarg value="-Werror"/>
986 <compilerarg line="${build.args}"/>
987
988 </javac>
989 </target>
990
991
992 <target name="extra166yjar"
993 depends="extra166ycompile"
994 description="Builds library jar from compiled sources">
995
996 <jar destfile="${extra166y.jar}" index="true">
997 <fileset dir="${build.extra166y.classes.dir}"/>
998 </jar>
999
1000 </target>
1001
1002
1003 <target name="extra166ydocs"
1004 description="Builds javadocs to build dir">
1005
1006 <delete dir="${extra166ydocs.dir}"/>
1007 <mkdir dir="${extra166ydocs.dir}"/>
1008
1009 <javadoc destdir="${extra166ydocs.dir}"
1010 packagenames="extra166y.*"
1011 link="${java.api.url}"
1012 access="${build.javadoc.access}"
1013 sourcepath="${topsrc.dir}:${jdk6src.dir}"
1014 bootclasspath="${bootclasspath6}"
1015 source="6"
1016 executable="${javadoc7}">
1017 <arg line="-Xdocrootparent ${java.docroot.url}"/>
1018 <arg value="-XDignore.symbol.file=true"/>
1019
1020 </javadoc>
1021 </target>
1022
1023
1024 <target name="extra166ydist"
1025 depends="extra166ydist-jar, extra166ydist-docs"
1026 description="Puts all distributable products in single hierarchy"/>
1027
1028
1029 <target name="extra166yclean"
1030 description="Removes all extra166y build products">
1031
1032 <delete dir="${build.extra166y.dir}"/>
1033
1034 </target>
1035
1036
1037 <target name="extra166ydist-jar"
1038 depends="extra166yclean, extra166yjar">
1039 <copy file="${extra166y.jar}" todir="${dist.dir}"/>
1040 </target>
1041
1042 <target name="extra166ydist-docs"
1043 depends="extra166yclean, extra166ydocs">
1044 <mirror-dir src="${extra166ydocs.dir}" dst="${dist.extra166ydocs.dir}"/>
1045 </target>
1046
1047 <!-- jsr166e -->
1048
1049 <property name="build.jsr166e.java.version" value="6"/>
1050 <property name="build.jsr166e.javac" value="${javac6}"/>
1051
1052 <target name="jsr166ecompile"
1053 depends="configure-compiler"
1054 description="Compiles jsr166e sources">
1055
1056 <mkdir dir="${build.jsr166e.classes.dir}"/>
1057
1058 <javac srcdir="${topsrc.dir}"
1059 destdir="${build.jsr166e.classes.dir}"
1060 debug="${build.debug}"
1061 debuglevel="${build.debuglevel}"
1062 deprecation="${build.deprecation}"
1063 source="${build.jsr166e.java.version}"
1064 classpath=""
1065 includeAntRuntime="false"
1066 includeJavaRuntime="false"
1067 executable="${build.jsr166e.javac}"
1068 fork="true">
1069
1070 <include name="jsr166e/**/*.java"/>
1071 <compilerarg value="-XDignore.symbol.file=true"/>
1072 <compilerarg value="-Xlint:all"/>
1073 <compilerarg value="-Werror"/>
1074 <compilerarg line="${build.args}"/>
1075
1076 </javac>
1077 </target>
1078
1079 <!-- jsr166e: find doclint errors -->
1080 <target name="jsr166edoclint">
1081
1082 <mkdir dir="${build.jsr166e.classes.dir}"/>
1083
1084 <javac srcdir="${topsrc.dir}"
1085 destdir="${build.jsr166e.classes.dir}"
1086 debug="${build.debug}"
1087 debuglevel="${build.debuglevel}"
1088 deprecation="${build.deprecation}"
1089 source="${build.jsr166e.java.version}"
1090 classpath=""
1091 bootclasspath="${bootclasspath7}"
1092 includeAntRuntime="false"
1093 includeJavaRuntime="false"
1094 executable="${javac8}"
1095 fork="true">
1096
1097 <include name="jsr166e/**/*.java"/>
1098 <compilerarg value="-XDignore.symbol.file=true"/>
1099 <compilerarg value="-Xlint:all"/>
1100 <compilerarg value="-Werror"/>
1101 <compilerarg value="-Xdoclint:all/protected"/>
1102
1103 </javac>
1104 </target>
1105
1106
1107 <target name="jsr166ejar"
1108 depends="jsr166ecompile"
1109 description="Builds library jar from compiled sources">
1110
1111 <jar destfile="${jsr166e.jar}" index="true">
1112 <fileset dir="${build.jsr166e.classes.dir}"/>
1113 </jar>
1114
1115 </target>
1116
1117
1118 <target name="jsr166edocs"
1119 description="Builds javadocs to build dir">
1120
1121 <delete dir="${jsr166edocs.dir}"/>
1122 <mkdir dir="${jsr166edocs.dir}"/>
1123
1124 <javadoc destdir="${jsr166edocs.dir}"
1125 packagenames="jsr166e.*"
1126 link="${java.api.url}"
1127 access="${build.javadoc.access}"
1128 sourcepath="${topsrc.dir}:${jdk6src.dir}"
1129 source="${build.jsr166e.java.version}"
1130 executable="${javadoc7}">
1131 <arg line="-Xdocrootparent ${java.docroot.url}"/>
1132 <arg value="-XDignore.symbol.file=true"/>
1133
1134 </javadoc>
1135 </target>
1136
1137
1138 <target name="jsr166e-tck-one-java-version"
1139 depends="jsr166ejar">
1140
1141 <echo message="Testing with jdk${build.jsr166e.java.version} ..."/>
1142
1143 <run-tck-tests
1144 tck.src.dir="${test.src.dir}/tck-jsr166e"
1145 target="${build.jsr166e.java.version}"
1146 workdir="${build.jsr166e.dir}"
1147 classes="${jsr166e.jar}"/>
1148 </target>
1149
1150 <target name="jsr166e-tck"
1151 description="Runs tck tests for jsr166e for multiple java versions">
1152
1153 <!-- <antcall target="clean"/> -->
1154 <!-- <antcall target="jsr166e-tck-one-java-version"> -->
1155 <!-- <param name="build.jsr166e.java.version" value="8"/> -->
1156 <!-- <param name="build.jsr166e.javac" value="${javac8}"/> -->
1157 <!-- </antcall> -->
1158
1159 <antcall target="clean"/>
1160 <antcall target="jsr166e-tck-one-java-version">
1161 <param name="build.jsr166e.java.version" value="7"/>
1162 <param name="build.jsr166e.javac" value="${javac7}"/>
1163 </antcall>
1164
1165 <antcall target="clean"/>
1166 <antcall target="jsr166e-tck-one-java-version">
1167 <param name="build.jsr166e.java.version" value="6"/>
1168 <param name="build.jsr166e.javac" value="${javac6}"/>
1169 </antcall>
1170 </target>
1171
1172
1173 <target name="jsr166e-test"
1174 depends="jsr166e-tck"
1175 description="Runs all tests for jsr166e">
1176 </target>
1177
1178 <target name="jsr166edist"
1179 depends="jsr166edist-jar, jsr166edist-docs"
1180 description="Puts all distributable products in single hierarchy"/>
1181
1182
1183 <target name="jsr166eclean"
1184 description="Removes all jsr166e build products">
1185 <delete dir="${build.jsr166e.dir}"/>
1186 </target>
1187
1188
1189 <target name="jsr166edist-jar"
1190 depends="jsr166eclean, jsr166ejar">
1191 <copy file="${jsr166e.jar}" todir="${dist.dir}"/>
1192 </target>
1193
1194 <target name="jsr166edist-docs"
1195 depends="jsr166eclean, jsr166edocs">
1196 <mirror-dir src="${jsr166edocs.dir}" dst="${dist.jsr166edocs.dir}"/>
1197 </target>
1198
1199
1200 <!-- Find buglets that can be detected by static build tools -->
1201
1202 <target name="lint">
1203 <antcall target="dists">
1204 <param name="build.javadoc.access" value="public"/>
1205 </antcall>
1206 </target>
1207
1208 <!-- Generates all doclint warnings, even for private methods (rarely useful) -->
1209 <target name="lint-private">
1210 <antcall target="dist">
1211 <param name="build.javadoc.access" value="private"/>
1212 </antcall>
1213 </target>
1214
1215
1216 </project>