ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.180
Committed: Sun Sep 13 03:41:53 2015 UTC (8 years, 7 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.179: +5 -0 lines
Log Message:
check ant version

File Contents

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