ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.181
Committed: Sun Sep 13 05:26:02 2015 UTC (8 years, 7 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.180: +4 -3 lines
Log Message:
use <local> for have.java.base

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