ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.185
Committed: Wed Sep 30 17:48:05 2015 UTC (8 years, 6 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.184: +0 -6 lines
Log Message:
delete unused property test.classpath

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