ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.170
Committed: Wed Sep 2 03:53:43 2015 UTC (8 years, 7 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.169: +3 -2 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="util/concurrent/forkjoin/SubmissionTest.java"/>
278 <exclude name="**/StampedLock/**/*.java"/>
279 <exclude name="**/AtomicReferenceTest.java"/>
280 <exclude name="util/concurrent/atomic/Serial.java"/>
281 </patternset>
282 </fileset>
283
284 <macrodef name="run-jtreg-tests">
285 <!-- ant -Djtreg.src.dir=src/test/jtreg/util/concurrent/CompletableFuture test-jtreg -->
286 <attribute name="jtreg.src.dir" default="${jtreg.src.dir}"/>
287 <attribute name="source" default="7"/>
288 <attribute name="target"/>
289 <attribute name="workdir"/>
290 <attribute name="classes"/>
291 <attribute name="jtregflags" default=""/>
292 <sequential>
293 <delete dir="@{workdir}/JTwork" quiet="true"/>
294 <delete dir="@{workdir}/JTreport" quiet="true"/>
295 <mkdir dir="@{workdir}/JTwork/scratch"/>
296 <mkdir dir="@{workdir}/JTreport"/>
297 <jtreg dir="@{jtreg.src.dir}"
298 jdk="${jdk@{target}.home}"
299 workDir="@{workdir}/JTwork"
300 reportDir="@{workdir}/JTreport">
301 <patternset refid="jdk@{target}.jtreg.tests"/>
302 <arg value="-Xbootclasspath/p:@{classes}"/>
303 <arg value="-agentvm"/>
304 <arg value="-v:nopass,fail"/>
305 <arg value="-vmoptions:-esa -ea"/>
306 <arg value="-automatic"/>
307 <arg value="-k:!ignore"/>
308 <arg line="@{jtregflags}"/>
309 </jtreg>
310 </sequential>
311 </macrodef>
312
313 <!-- ALoops classpath -->
314 <path id="loops.classpath">
315 <pathelement location="${build.loops.dir}"/>
316 </path>
317
318 <!-- Support @jls tag, used in jdk8+ javadoc -->
319 <property name="javadoc.jls.cite" value="The Java&amp;trade; Language Specification"/>
320 <property name="javadoc.jls.option" value="jls:a:See &lt;cite&gt;${javadoc.jls.cite}&lt;/cite&gt;:"/>
321
322 <!-- Main targets -->
323
324 <property name="build.main.java.version" value="9"/>
325 <property name="build.main.javac" value="${javac9}"/>
326
327 <target name="dists"
328 depends="dist, 4jdk7dist, jsr166edist, jsr166ydist, extra166ydist, jsr166xdist"
329 description="Builds all public jars and docs"/>
330
331 <target name="compile"
332 depends="configure-compiler"
333 description="Compiles src/main sources to build dir">
334
335 <mkdir dir="${build.classes.dir}"/>
336
337 <javac srcdir="${src.dir}"
338 destdir="${build.classes.dir}"
339 debug="${build.debug}"
340 debuglevel="${build.debuglevel}"
341 deprecation="${build.deprecation}"
342 classpath=""
343 includeAntRuntime="false"
344 includeJavaRuntime="false"
345 executable="${build.main.javac}"
346 fork="true">
347
348 <include name="**/*.java"/>
349 <compilerarg value="-Xprefer:source"/>
350 <compilerarg value="-XDignore.symbol.file=true"/>
351 <compilerarg value="-Xlint:all"/>
352 <compilerarg value="-Werror"/>
353 <compilerarg value="-Xdoclint:all/protected"/>
354 <compilerarg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
355 <compilerarg line="${build.args}"/>
356
357 </javac>
358 </target>
359
360
361 <target name="jar"
362 depends="compile"
363 description="Builds library jar from compiled sources">
364
365 <jar destfile="${product.jar}">
366 <fileset dir="${build.classes.dir}"/>
367 </jar>
368 </target>
369
370
371 <target name="docs"
372 description="Builds javadocs for src/main to dist dir">
373
374 <delete dir="${docs.dir}"/>
375 <mkdir dir="${docs.dir}"/>
376
377 <!-- the packagenames="none" hack below prevents scanning the -->
378 <!-- sourcepath for packages -->
379
380 <javadoc destdir="${docs.dir}"
381 packagenames="none"
382 link="${java9.api.url}"
383 overview="${src.dir}/intro.html"
384 access="${build.javadoc.access}"
385 sourcepath="${src.dir}:${jdk9src.dir}"
386 classpath=""
387 executable="${javadoc9}">
388 <fileset dir="${src.dir}" defaultexcludes="yes">
389 <include name="**/*.java"/>
390 </fileset>
391 <arg line="-Xdocrootparent ${java9.docroot.url}"/>
392 <arg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
393 <arg value="-XDignore.symbol.file=true"/>
394 <arg value="-tag"/>
395 <arg value="${javadoc.jls.option}"/>
396 <arg value="-tag"/>
397 <arg value="apiNote:a:&lt;em&gt;API Note:&lt;/em&gt;"/>
398 <arg value="-tag"/>
399 <arg value="implSpec:a:&lt;em&gt;Implementation Requirements:&lt;/em&gt;"/>
400 <arg value="-tag"/>
401 <arg value="implNote:a:&lt;em&gt;Implementation Note:&lt;/em&gt;"/>
402 </javadoc>
403 </target>
404
405
406 <target name="dist"
407 depends="dist-clean, dist-jar, dist-docs"
408 description="Puts all distributable products in single hierarchy"/>
409
410
411 <target name="release"
412 depends="dist"
413 description="Puts entire CVS tree, plus distribution productions, in a jar">
414
415 <property name="release.jar" value="dist/jsr166-${version}-dist.jar"/>
416
417 <jar basedir="${basedir}" destfile="${release.jar}">
418 <!-- <exclude name="build/**"/> -->
419 <exclude name="${release.jar}"/>
420 <exclude name="user.properties"/>
421 <exclude name="etc/notes/**"/>
422 <exclude name="src/emulation/**"/>
423 <exclude name="**/SyntaxTest.java"/>
424 <exclude name="**/SuperfluousAbstract.java"/>
425 </jar>
426 </target>
427
428
429 <target name="clean"
430 description="Removes all build products">
431
432 <delete dir="${build.dir}"/>
433
434 </target>
435
436
437 <target name="dist-clean"
438 description="Removes all build and distribution products">
439
440 <delete dir="${build.dir}"/>
441 <delete dir="${dist.dir}"/>
442
443 </target>
444
445
446 <target name="dist-jar"
447 depends="clean, jar">
448 <copy file="${product.jar}" todir="${dist.dir}"/>
449 </target>
450
451 <target name="dist-docs"
452 depends="clean, docs">
453 <mirror-dir src="${docs.dir}" dst="${dist.docs.dir}"/>
454 </target>
455
456 <target name="tck" depends="test-tck" description="alias for test-tck"/>
457 <target name="test-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="test-tck-parallelism-1"
468 description="Runs test-tck with given common pool parallelism">
469 <antcall target="test-tck">
470 <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="1"/>
471 </antcall>
472 </target>
473
474 <target name="test-tck-parallelism-0"
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="0"/>
478 </antcall>
479 </target>
480
481 <target name="jtreg" depends="test-jtreg" description="alias for test-jtreg"/>
482 <target name="test-jtreg"
483 depends="jar"
484 description="Runs jtreg tests for main using the jtreg ant task">
485 <run-jtreg-tests
486 target="${build.main.java.version}"
487 workdir="${build.dir}"
488 classes="${product.jar}"/>
489 </target>
490
491 <target name="test"
492 depends="test-tck, test-tck-parallelism-1, test-jtreg"
493 description="Runs tck and jtreg tests for main">
494 </target>
495
496 <target name="jtreg8" description="Runs jtreg tests with jdk8">
497
498 <antcall target="jtreg">
499 <param name="build.main.java.version" value="8"/>
500 <param name="build.main.javac" value="${javac8}"/>
501 </antcall>
502
503 </target>
504
505 <target name="test89"
506 description="Runs tck and jtreg tests for main for multiple java versions">
507
508 <antcall target="clean"/>
509 <antcall target="test">
510 <param name="build.main.java.version" value="8"/>
511 <param name="build.main.javac" value="${javac8}"/>
512 </antcall>
513
514 <antcall target="clean"/>
515 <antcall target="test">
516 <param name="build.main.java.version" value="9"/>
517 <param name="build.main.javac" value="${javac9}"/>
518 </antcall>
519
520 </target>
521
522
523
524 <target name="configure-compiler">
525
526 <property name="unchecked.option" value="-Xlint:unchecked"/>
527
528 <condition property="warnunchecked.arg" value="${unchecked.option}">
529 <istrue value="${build.warnunchecked}"/>
530 </condition>
531
532 <property name="warnunchecked.arg" value=""/>
533
534
535 <!-- Common options in javac invocations -->
536 <property name="build.args" value="${warnunchecked.arg}"/>
537
538 </target>
539
540
541
542 <!-- Various demos and test programs -->
543
544
545 <target name="loops" depends="configure-compiler"
546 description="Benchmark from Doug Lea's AQS paper">
547
548 <mkdir dir="${build.loops.dir}"/>
549
550 <javac srcdir="${loops.src.dir}"
551 destdir="${build.loops.dir}"
552 debug="${build.debug}"
553 debuglevel="${build.debuglevel}"
554 deprecation="${build.deprecation}"
555 source="${build.sourcelevel}"
556 fork="true">
557
558 <compilerarg line="${build.args}"/>
559 <classpath refid="loops.classpath"/>
560 <compilerarg value="-XDignore.symbol.file=true"/>
561
562 </javac>
563
564 <java classname="ALoops" fork="true">
565 <classpath refid="loops.classpath"/>
566 </java>
567
568 </target>
569
570
571 <target name="compile-test-loops" depends="jar"
572 description="compile all the perf tests in src/test/loops">
573
574 <mkdir dir="${build.dir}/test/loops"/>
575
576 <javac srcdir="${basedir}/src/test/loops"
577 destdir="${build.dir}/test/loops"
578 debug="${build.debug}"
579 debuglevel="${build.debuglevel}"
580 deprecation="${build.deprecation}"
581 includeAntRuntime="false"
582 includeJavaRuntime="false"
583 executable="${javac9}"
584 fork="true">
585
586 <include name="*.java"/>
587 <compilerarg value="-XDignore.symbol.file=true"/>
588 <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
589 <compilerarg value="-Xbootclasspath/p:${product.jar}"/>
590 <compilerarg line="${build.args}"/>
591
592 </javac>
593
594 </target>
595
596
597 <!-- jsr166 4jdk7 -->
598
599 <target name="4jdk7compile"
600 depends="configure-compiler"
601 description="Compiles src/jdk7 sources, targeting jdk7">
602
603 <mkdir dir="${build.4jdk7.classes.dir}"/>
604
605 <javac srcdir="${4jdk7src.dir}"
606 destdir="${build.4jdk7.classes.dir}"
607 debug="${build.debug}"
608 debuglevel="${build.debuglevel}"
609 deprecation="${build.deprecation}"
610 source="6"
611 classpath=""
612 bootclasspath="${bootclasspath6}"
613 includeAntRuntime="false"
614 includeJavaRuntime="false"
615 executable="${javac7}"
616 fork="true">
617
618 <include name="**/*.java"/>
619 <compilerarg value="-Xprefer:source"/>
620 <compilerarg value="-XDignore.symbol.file=true"/>
621 <compilerarg value="-Xlint:all"/>
622 <compilerarg value="-Werror"/>
623 <compilerarg line="${build.args}"/>
624
625 </javac>
626 </target>
627
628 <target name="4jdk7doclint"
629 depends="configure-compiler"
630 description="Finds doclint warnings">
631
632 <mkdir dir="${build.4jdk7.classes.dir}"/>
633
634 <javac srcdir="${4jdk7src.dir}"
635 destdir="${build.4jdk7.classes.dir}"
636 debug="${build.debug}"
637 debuglevel="${build.debuglevel}"
638 deprecation="${build.deprecation}"
639 source="6"
640 classpath=""
641 bootclasspath="${bootclasspath7}"
642 includeAntRuntime="false"
643 includeJavaRuntime="false"
644 executable="${javac8}"
645 fork="true">
646
647 <include name="**/*.java"/>
648 <compilerarg value="-Xprefer:source"/>
649 <compilerarg value="-XDignore.symbol.file=true"/>
650 <compilerarg value="-Xlint:all"/>
651 <compilerarg value="-Xdoclint:all/protected"/>
652 <compilerarg line="${build.args}"/>
653
654 </javac>
655 </target>
656
657
658 <target name="4jdk7jar"
659 depends="4jdk7compile"
660 description="Builds library jar from compiled sources">
661
662 <jar destfile="${4jdk7product.jar}">
663 <fileset dir="${build.4jdk7.classes.dir}"/>
664 </jar>
665
666 </target>
667
668
669 <target name="4jdk7-test-tck"
670 depends="4jdk7jar"
671 description="Runs tck tests for jsr166-4jdk7 directly">
672
673 <run-tck-tests
674 target="7"
675 workdir="${build.4jdk7.dir}"
676 classes="${4jdk7product.jar}">
677 <javac-elements>
678 <!-- JDK8+ test classes -->
679 <exclude name="*8Test.java"/>
680 <exclude name="*9Test.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 </javac-elements>
689 </run-tck-tests>
690 </target>
691
692
693 <target name="4jdk7-test-tck-junit"
694 depends="4jdk7compile"
695 description="Runs tck tests for jsr166-4jdk7 via junit task (experimental)">
696
697 <junit printsummary="true"
698 showoutput="true"
699 errorProperty="junit.failed"
700 failureProperty="junit.failed"
701 includeantruntime="true"
702 jvm="${java7}"
703 fork="true">
704
705 <jvmarg value="-Xbootclasspath/p:${4jdk7product.jar}"/>
706 <jvmarg value="-server"/>
707
708 <classpath>
709 <pathelement location="${junit.jar}"/>
710 <pathelement location="${build.4jdk7.tck.classes.dir}"/>
711 </classpath>
712
713 <formatter type="brief"/>
714
715 <test name="${jsr166.tckTestClass}" haltonfailure="no">
716 </test>
717
718 </junit>
719 </target>
720
721 <target name="4jdk7-test-jtreg"
722 depends="4jdk7jar"
723 description="Runs jtreg tests for jsr166-4jdk7 using the jtreg ant task">
724 <run-jtreg-tests
725 target="7"
726 workdir="${build.4jdk7.dir}"
727 classes="${4jdk7product.jar}"/>
728 </target>
729
730
731 <target name="4jdk7-test"
732 depends="4jdk7-test-tck, 4jdk7-test-jtreg"
733 description="Runs tck and jtreg tests for jsr166-4jdk7">
734 </target>
735
736
737 <target name="4jdk7docs"
738 description="Builds javadocs for src/jdk7 to dist dir">
739
740 <delete dir="${4jdk7docs.dir}"/>
741 <mkdir dir="${4jdk7docs.dir}"/>
742
743 <javadoc destdir="${4jdk7docs.dir}"
744 packagenames="none"
745 link="${java7.api.url}"
746 overview="${4jdk7src.dir}/intro.html"
747 access="${build.javadoc.access}"
748 sourcepath="${4jdk7src.dir}:${jdk7src.dir}"
749 classpath=""
750 executable="${javadoc7}">
751 <fileset dir="${4jdk7src.dir}" defaultexcludes="yes">
752 <include name="**/*.java"/>
753 </fileset>
754 <arg line="-Xdocrootparent ${java7.docroot.url}"/>
755 <arg value="-XDignore.symbol.file=true"/>
756 </javadoc>
757 </target>
758
759
760 <target name="4jdk7dist"
761 depends="4jdk7dist-jar, 4jdk7dist-docs"
762 description="Puts all distributable products in single hierarchy"/>
763
764
765 <target name="4jdk7clean"
766 description="Removes all 4jdk7 build products">
767
768 <delete dir="${build.4jdk7.dir}"/>
769
770 </target>
771
772
773 <target name="4jdk7dist-jar"
774 depends="4jdk7clean, 4jdk7jar">
775 <copy file="${4jdk7product.jar}" todir="${dist.dir}"/>
776 </target>
777
778
779 <target name="4jdk7dist-docs"
780 depends="4jdk7clean, 4jdk7docs">
781 <mirror-dir src="${4jdk7docs.dir}" dst="${dist.4jdk7docs.dir}"/>
782 </target>
783
784
785 <!-- jsr166x -->
786
787 <target name="jsr166xcompile"
788 depends="configure-compiler"
789 description="Compiles jsr166x sources to build dir">
790
791 <mkdir dir="${build.jsr166x.classes.dir}"/>
792
793 <javac srcdir="${topsrc.dir}"
794 destdir="${build.jsr166x.classes.dir}"
795 debug="${build.debug}"
796 debuglevel="${build.debuglevel}"
797 deprecation="${build.deprecation}"
798 classpath=""
799 bootclasspath="${bootclasspath6}"
800 source="5"
801 includeAntRuntime="false"
802 includeJavaRuntime="false"
803 executable="${javac7}"
804 fork="true">
805
806 <include name="jsr166x/**/*.java"/>
807 <compilerarg value="-XDignore.symbol.file=true"/>
808 <compilerarg value="-Xlint:all,-unchecked,-rawtypes"/>
809 <compilerarg value="-Werror"/>
810 <compilerarg line="${build.args}"/>
811
812 </javac>
813 </target>
814
815
816 <target name="jsr166xjar"
817 depends="jsr166xcompile"
818 description="Builds library jar from compiled sources">
819
820 <jar destfile="${jsr166x.jar}">
821 <fileset dir="${build.jsr166x.classes.dir}"/>
822 </jar>
823
824 </target>
825
826
827 <target name="jsr166xdocs"
828 description="Builds javadocs to dist dir">
829
830 <delete dir="${jsr166xdocs.dir}"/>
831 <mkdir dir="${jsr166xdocs.dir}"/>
832
833 <javadoc destdir="${jsr166xdocs.dir}"
834 packagenames="jsr166x.*"
835 link="${java.api.url}"
836 access="${build.javadoc.access}"
837 sourcepath="${topsrc.dir}:${jdk6src.dir}"
838 bootclasspath="${bootclasspath6}"
839 source="5"
840 executable="${javadoc7}">
841 <arg line="-Xdocrootparent ${java.docroot.url}"/>
842 <arg value="-XDignore.symbol.file=true"/>
843
844 </javadoc>
845 </target>
846
847
848 <target name="jsr166xdist"
849 depends="jsr166xdist-jar, jsr166xdist-docs"
850 description="Puts all distributable products in single hierarchy"/>
851
852
853 <target name="jsr166xclean"
854 description="Removes all jsr166x build products">
855
856 <delete dir="${build.jsr166x.dir}"/>
857
858 </target>
859
860
861 <target name="jsr166xdist-jar"
862 depends="jsr166xclean, jsr166xjar">
863 <copy file="${jsr166x.jar}" todir="${dist.dir}"/>
864 </target>
865
866 <target name="jsr166xdist-docs"
867 depends="jsr166xclean, jsr166xdocs">
868 <mirror-dir src="${jsr166xdocs.dir}" dst="${dist.jsr166xdocs.dir}"/>
869 </target>
870
871 <!-- jsr166y -->
872
873
874 <target name="jsr166ycompile"
875 depends="configure-compiler"
876 description="Compiles jsr166y sources">
877
878 <mkdir dir="${build.jsr166y.classes.dir}"/>
879
880 <javac srcdir="${topsrc.dir}"
881 destdir="${build.jsr166y.classes.dir}"
882 debug="${build.debug}"
883 debuglevel="${build.debuglevel}"
884 deprecation="${build.deprecation}"
885 source="6"
886 classpath=""
887 bootclasspath="${bootclasspath6}"
888 includeAntRuntime="false"
889 includeJavaRuntime="false"
890 executable="${javac7}"
891 fork="true">
892
893 <include name="jsr166y/**/*.java"/>
894 <compilerarg value="-XDignore.symbol.file=true"/>
895 <compilerarg value="-Xlint:all"/>
896 <compilerarg value="-Werror"/>
897 <compilerarg line="${build.args}"/>
898
899 </javac>
900 </target>
901
902
903 <target name="jsr166yjar"
904 depends="jsr166ycompile"
905 description="Builds library jar from compiled sources">
906
907 <jar destfile="${jsr166y.jar}" index="true">
908 <fileset dir="${build.jsr166y.classes.dir}"/>
909 </jar>
910
911 </target>
912
913
914 <target name="jsr166ydocs"
915 description="Builds javadocs to dist dir">
916
917 <delete dir="${jsr166ydocs.dir}"/>
918 <mkdir dir="${jsr166ydocs.dir}"/>
919
920 <javadoc destdir="${jsr166ydocs.dir}"
921 packagenames="jsr166y.*"
922 link="${java.api.url}"
923 access="${build.javadoc.access}"
924 sourcepath="${topsrc.dir}:${jdk6src.dir}"
925 bootclasspath="${bootclasspath6}"
926 source="6"
927 executable="${javadoc7}">
928 <arg line="-Xdocrootparent ${java.docroot.url}"/>
929 <arg value="-XDignore.symbol.file=true"/>
930
931 </javadoc>
932 </target>
933
934
935 <target name="jsr166ydist"
936 depends="jsr166ydist-jar, jsr166ydist-docs"
937 description="Puts all distributable products in single hierarchy"/>
938
939
940 <target name="jsr166yclean"
941 description="Removes all jsr166y build products">
942
943 <delete dir="${build.jsr166y.dir}"/>
944
945 </target>
946
947
948 <target name="jsr166ydist-jar"
949 depends="jsr166yclean, jsr166yjar">
950 <copy file="${jsr166y.jar}" todir="${dist.dir}"/>
951 </target>
952
953 <target name="jsr166ydist-docs"
954 depends="jsr166yclean, jsr166ydocs">
955 <mirror-dir src="${jsr166ydocs.dir}" dst="${dist.jsr166ydocs.dir}"/>
956 </target>
957
958
959 <!-- extra166y -->
960
961
962 <target name="extra166ycompile"
963 depends="configure-compiler, jsr166yjar"
964 description="Compiles extra166y sources">
965
966 <mkdir dir="${build.extra166y.classes.dir}"/>
967
968 <javac srcdir="${topsrc.dir}"
969 destdir="${build.extra166y.classes.dir}"
970 debug="${build.debug}"
971 debuglevel="${build.debuglevel}"
972 deprecation="${build.deprecation}"
973 bootclasspath="@{jsr166y.jar}:${bootclasspath6}"
974 classpath=""
975 source="6"
976 includeAntRuntime="false"
977 includeJavaRuntime="false"
978 executable="${javac7}"
979 fork="true">
980
981 <include name="extra166y/**/*.java"/>
982 <compilerarg value="-XDignore.symbol.file=true"/>
983 <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
984 <compilerarg value="-Werror"/>
985 <compilerarg line="${build.args}"/>
986
987 </javac>
988 </target>
989
990
991 <target name="extra166yjar"
992 depends="extra166ycompile"
993 description="Builds library jar from compiled sources">
994
995 <jar destfile="${extra166y.jar}" index="true">
996 <fileset dir="${build.extra166y.classes.dir}"/>
997 </jar>
998
999 </target>
1000
1001
1002 <target name="extra166ydocs"
1003 description="Builds javadocs to build dir">
1004
1005 <delete dir="${extra166ydocs.dir}"/>
1006 <mkdir dir="${extra166ydocs.dir}"/>
1007
1008 <javadoc destdir="${extra166ydocs.dir}"
1009 packagenames="extra166y.*"
1010 link="${java.api.url}"
1011 access="${build.javadoc.access}"
1012 sourcepath="${topsrc.dir}:${jdk6src.dir}"
1013 bootclasspath="${bootclasspath6}"
1014 source="6"
1015 executable="${javadoc7}">
1016 <arg line="-Xdocrootparent ${java.docroot.url}"/>
1017 <arg value="-XDignore.symbol.file=true"/>
1018
1019 </javadoc>
1020 </target>
1021
1022
1023 <target name="extra166ydist"
1024 depends="extra166ydist-jar, extra166ydist-docs"
1025 description="Puts all distributable products in single hierarchy"/>
1026
1027
1028 <target name="extra166yclean"
1029 description="Removes all extra166y build products">
1030
1031 <delete dir="${build.extra166y.dir}"/>
1032
1033 </target>
1034
1035
1036 <target name="extra166ydist-jar"
1037 depends="extra166yclean, extra166yjar">
1038 <copy file="${extra166y.jar}" todir="${dist.dir}"/>
1039 </target>
1040
1041 <target name="extra166ydist-docs"
1042 depends="extra166yclean, extra166ydocs">
1043 <mirror-dir src="${extra166ydocs.dir}" dst="${dist.extra166ydocs.dir}"/>
1044 </target>
1045
1046 <!-- jsr166e -->
1047
1048 <property name="build.jsr166e.java.version" value="6"/>
1049 <property name="build.jsr166e.javac" value="${javac6}"/>
1050
1051 <target name="jsr166ecompile"
1052 depends="configure-compiler"
1053 description="Compiles jsr166e sources">
1054
1055 <mkdir dir="${build.jsr166e.classes.dir}"/>
1056
1057 <javac srcdir="${topsrc.dir}"
1058 destdir="${build.jsr166e.classes.dir}"
1059 debug="${build.debug}"
1060 debuglevel="${build.debuglevel}"
1061 deprecation="${build.deprecation}"
1062 source="${build.jsr166e.java.version}"
1063 classpath=""
1064 includeAntRuntime="false"
1065 includeJavaRuntime="false"
1066 executable="${build.jsr166e.javac}"
1067 fork="true">
1068
1069 <include name="jsr166e/**/*.java"/>
1070 <compilerarg value="-XDignore.symbol.file=true"/>
1071 <compilerarg value="-Xlint:all"/>
1072 <compilerarg value="-Werror"/>
1073 <compilerarg line="${build.args}"/>
1074
1075 </javac>
1076 </target>
1077
1078 <!-- jsr166e: find doclint errors -->
1079 <target name="jsr166edoclint">
1080
1081 <mkdir dir="${build.jsr166e.classes.dir}"/>
1082
1083 <javac srcdir="${topsrc.dir}"
1084 destdir="${build.jsr166e.classes.dir}"
1085 debug="${build.debug}"
1086 debuglevel="${build.debuglevel}"
1087 deprecation="${build.deprecation}"
1088 source="${build.jsr166e.java.version}"
1089 classpath=""
1090 bootclasspath="${bootclasspath7}"
1091 includeAntRuntime="false"
1092 includeJavaRuntime="false"
1093 executable="${javac8}"
1094 fork="true">
1095
1096 <include name="jsr166e/**/*.java"/>
1097 <compilerarg value="-XDignore.symbol.file=true"/>
1098 <compilerarg value="-Xlint:all"/>
1099 <compilerarg value="-Werror"/>
1100 <compilerarg value="-Xdoclint:all/protected"/>
1101
1102 </javac>
1103 </target>
1104
1105
1106 <target name="jsr166ejar"
1107 depends="jsr166ecompile"
1108 description="Builds library jar from compiled sources">
1109
1110 <jar destfile="${jsr166e.jar}" index="true">
1111 <fileset dir="${build.jsr166e.classes.dir}"/>
1112 </jar>
1113
1114 </target>
1115
1116
1117 <target name="jsr166edocs"
1118 description="Builds javadocs to build dir">
1119
1120 <delete dir="${jsr166edocs.dir}"/>
1121 <mkdir dir="${jsr166edocs.dir}"/>
1122
1123 <javadoc destdir="${jsr166edocs.dir}"
1124 packagenames="jsr166e.*"
1125 link="${java.api.url}"
1126 access="${build.javadoc.access}"
1127 sourcepath="${topsrc.dir}:${jdk6src.dir}"
1128 source="${build.jsr166e.java.version}"
1129 executable="${javadoc7}">
1130 <arg line="-Xdocrootparent ${java.docroot.url}"/>
1131 <arg value="-XDignore.symbol.file=true"/>
1132
1133 </javadoc>
1134 </target>
1135
1136
1137 <target name="jsr166e-test-tck-one-java-version"
1138 depends="jsr166ejar">
1139
1140 <echo message="Testing with jdk${build.jsr166e.java.version} ..."/>
1141
1142 <run-tck-tests
1143 tck.src.dir="${test.src.dir}/tck-jsr166e"
1144 target="${build.jsr166e.java.version}"
1145 workdir="${build.jsr166e.dir}"
1146 classes="${jsr166e.jar}"/>
1147 </target>
1148
1149 <target name="jsr166e-test-tck"
1150 description="Runs tck tests for jsr166e for multiple java versions">
1151
1152 <!-- <antcall target="clean"/> -->
1153 <!-- <antcall target="jsr166e-test-tck-one-java-version"> -->
1154 <!-- <param name="build.jsr166e.java.version" value="8"/> -->
1155 <!-- <param name="build.jsr166e.javac" value="${javac8}"/> -->
1156 <!-- </antcall> -->
1157
1158 <antcall target="clean"/>
1159 <antcall target="jsr166e-test-tck-one-java-version">
1160 <param name="build.jsr166e.java.version" value="7"/>
1161 <param name="build.jsr166e.javac" value="${javac7}"/>
1162 </antcall>
1163
1164 <antcall target="clean"/>
1165 <antcall target="jsr166e-test-tck-one-java-version">
1166 <param name="build.jsr166e.java.version" value="6"/>
1167 <param name="build.jsr166e.javac" value="${javac6}"/>
1168 </antcall>
1169 </target>
1170
1171
1172 <target name="jsr166e-test"
1173 depends="jsr166e-test-tck"
1174 description="Runs all tests for jsr166e">
1175 </target>
1176
1177 <target name="jsr166edist"
1178 depends="jsr166edist-jar, jsr166edist-docs"
1179 description="Puts all distributable products in single hierarchy"/>
1180
1181
1182 <target name="jsr166eclean"
1183 description="Removes all jsr166e build products">
1184 <delete dir="${build.jsr166e.dir}"/>
1185 </target>
1186
1187
1188 <target name="jsr166edist-jar"
1189 depends="jsr166eclean, jsr166ejar">
1190 <copy file="${jsr166e.jar}" todir="${dist.dir}"/>
1191 </target>
1192
1193 <target name="jsr166edist-docs"
1194 depends="jsr166eclean, jsr166edocs">
1195 <mirror-dir src="${jsr166edocs.dir}" dst="${dist.jsr166edocs.dir}"/>
1196 </target>
1197
1198
1199 <!-- Find buglets that can be detected by static build tools -->
1200
1201 <target name="lint">
1202 <antcall target="dists">
1203 <param name="build.javadoc.access" value="public"/>
1204 </antcall>
1205 </target>
1206
1207 <!-- Generates all doclint warnings, even for private methods (rarely useful) -->
1208 <target name="lint-private">
1209 <antcall target="dist">
1210 <param name="build.javadoc.access" value="private"/>
1211 </antcall>
1212 </target>
1213
1214
1215 </project>