ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.172
Committed: Wed Sep 2 05:00:20 2015 UTC (8 years, 7 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.171: +2 -1 lines
Log Message:
import jtreg tests from openjdk

File Contents

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