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