ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.178
Committed: Sun Sep 13 02:09:35 2015 UTC (8 years, 7 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.177: +28 -0 lines
Log Message:
add some provenance to jar manifest

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
533 <property name="unchecked.option" value="-Xlint:unchecked"/>
534
535 <condition property="warnunchecked.arg" value="${unchecked.option}">
536 <istrue value="${build.warnunchecked}"/>
537 </condition>
538
539 <property name="warnunchecked.arg" value=""/>
540
541
542 <!-- Common options in javac invocations -->
543 <property name="build.args" value="${warnunchecked.arg}"/>
544
545 </target>
546
547
548
549 <!-- Various demos and test programs -->
550
551
552 <target name="loops" depends="configure-compiler"
553 description="Benchmark from Doug Lea's AQS paper">
554
555 <mkdir dir="${build.loops.dir}"/>
556
557 <javac srcdir="${loops.src.dir}"
558 destdir="${build.loops.dir}"
559 debug="${build.debug}"
560 debuglevel="${build.debuglevel}"
561 deprecation="${build.deprecation}"
562 source="${build.sourcelevel}"
563 fork="true">
564
565 <compilerarg line="${build.args}"/>
566 <classpath refid="loops.classpath"/>
567 <compilerarg value="-XDignore.symbol.file=true"/>
568
569 </javac>
570
571 <java classname="ALoops" fork="true">
572 <classpath refid="loops.classpath"/>
573 </java>
574
575 </target>
576
577
578 <target name="compile-test-loops" depends="jar"
579 description="compile all the perf tests in src/test/loops">
580
581 <mkdir dir="${build.dir}/test/loops"/>
582
583 <javac srcdir="${basedir}/src/test/loops"
584 destdir="${build.dir}/test/loops"
585 debug="${build.debug}"
586 debuglevel="${build.debuglevel}"
587 deprecation="${build.deprecation}"
588 includeAntRuntime="false"
589 includeJavaRuntime="false"
590 executable="${javac9}"
591 fork="true">
592
593 <include name="*.java"/>
594 <compilerarg value="-XDignore.symbol.file=true"/>
595 <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
596 <compilerarg value="-Xbootclasspath/p:${product.jar}"/>
597 <compilerarg line="${build.args}"/>
598
599 </javac>
600
601 </target>
602
603
604 <!-- jsr166 4jdk7 -->
605
606 <target name="4jdk7compile"
607 depends="configure-compiler"
608 description="Compiles src/jdk7 sources, targeting jdk7">
609
610 <mkdir dir="${build.4jdk7.classes.dir}"/>
611
612 <javac srcdir="${4jdk7src.dir}"
613 destdir="${build.4jdk7.classes.dir}"
614 debug="${build.debug}"
615 debuglevel="${build.debuglevel}"
616 deprecation="${build.deprecation}"
617 source="6"
618 classpath=""
619 bootclasspath="${bootclasspath6}"
620 includeAntRuntime="false"
621 includeJavaRuntime="false"
622 executable="${javac7}"
623 fork="true">
624
625 <include name="**/*.java"/>
626 <compilerarg value="-Xprefer:source"/>
627 <compilerarg value="-XDignore.symbol.file=true"/>
628 <compilerarg value="-Xlint:all"/>
629 <compilerarg value="-Werror"/>
630 <compilerarg line="${build.args}"/>
631
632 </javac>
633 </target>
634
635 <target name="4jdk7doclint"
636 depends="configure-compiler"
637 description="Finds doclint warnings">
638
639 <mkdir dir="${build.4jdk7.classes.dir}"/>
640
641 <javac srcdir="${4jdk7src.dir}"
642 destdir="${build.4jdk7.classes.dir}"
643 debug="${build.debug}"
644 debuglevel="${build.debuglevel}"
645 deprecation="${build.deprecation}"
646 source="6"
647 classpath=""
648 bootclasspath="${bootclasspath7}"
649 includeAntRuntime="false"
650 includeJavaRuntime="false"
651 executable="${javac8}"
652 fork="true">
653
654 <include name="**/*.java"/>
655 <compilerarg value="-Xprefer:source"/>
656 <compilerarg value="-XDignore.symbol.file=true"/>
657 <compilerarg value="-Xlint:all"/>
658 <compilerarg value="-Xdoclint:all/protected"/>
659 <compilerarg line="${build.args}"/>
660
661 </javac>
662 </target>
663
664
665 <target name="4jdk7jar"
666 depends="4jdk7compile"
667 description="Builds library jar from compiled sources">
668
669 <jar destfile="${4jdk7product.jar}">
670 <fileset dir="${build.4jdk7.classes.dir}"/>
671 <manifest>
672 <attribute name="Built-By" value="${user.name}"/>
673 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
674 </manifest>
675 </jar>
676
677 </target>
678
679
680 <target name="4jdk7-tck"
681 depends="4jdk7jar"
682 description="Runs tck tests for jsr166-4jdk7 directly">
683
684 <run-tck-tests
685 target="7"
686 workdir="${build.4jdk7.dir}"
687 classes="${4jdk7product.jar}">
688 <javac-elements>
689 <!-- JDK8+ test classes -->
690 <exclude name="*8Test.java"/>
691 <exclude name="*9Test.java"/>
692 <exclude name="*10Test.java"/>
693 <exclude name="DoubleAccumulatorTest.java"/>
694 <exclude name="DoubleAdderTest.java"/>
695 <exclude name="LongAccumulatorTest.java"/>
696 <exclude name="LongAdderTest.java"/>
697 <exclude name="CompletableFutureTest.java"/>
698 <exclude name="SplittableRandomTest.java"/>
699 <exclude name="StampedLockTest.java"/>
700 <exclude name="SubmissionPublisherTest.java"/>
701 </javac-elements>
702 </run-tck-tests>
703 </target>
704
705
706 <target name="4jdk7-tck-junit"
707 depends="4jdk7compile"
708 description="Runs tck tests for jsr166-4jdk7 via junit task (experimental)">
709
710 <junit printsummary="true"
711 showoutput="true"
712 errorProperty="junit.failed"
713 failureProperty="junit.failed"
714 includeantruntime="true"
715 jvm="${java7}"
716 fork="true">
717
718 <jvmarg value="-Xbootclasspath/p:${4jdk7product.jar}"/>
719 <jvmarg value="-server"/>
720
721 <classpath>
722 <pathelement location="${junit.jar}"/>
723 <pathelement location="${build.4jdk7.tck.classes.dir}"/>
724 </classpath>
725
726 <formatter type="brief"/>
727
728 <test name="${jsr166.tckTestClass}" haltonfailure="no">
729 </test>
730
731 </junit>
732 </target>
733
734 <target name="4jdk7-jtreg"
735 depends="4jdk7jar"
736 description="Runs jtreg tests for jsr166-4jdk7 using the jtreg ant task">
737 <run-jtreg-tests
738 target="7"
739 workdir="${build.4jdk7.dir}"
740 classes="${4jdk7product.jar}"/>
741 </target>
742
743
744 <target name="4jdk7-test"
745 depends="4jdk7-tck, 4jdk7-jtreg"
746 description="Runs tck and jtreg tests for jsr166-4jdk7">
747 </target>
748
749
750 <target name="4jdk7docs"
751 description="Builds javadocs for src/jdk7 to dist dir">
752
753 <delete dir="${4jdk7docs.dir}"/>
754 <mkdir dir="${4jdk7docs.dir}"/>
755
756 <javadoc destdir="${4jdk7docs.dir}"
757 packagenames="none"
758 link="${java7.api.url}"
759 overview="${4jdk7src.dir}/intro.html"
760 access="${build.javadoc.access}"
761 sourcepath="${4jdk7src.dir}:${jdk7src.dir}"
762 classpath=""
763 executable="${javadoc7}">
764 <fileset dir="${4jdk7src.dir}" defaultexcludes="yes">
765 <include name="**/*.java"/>
766 </fileset>
767 <arg line="-Xdocrootparent ${java7.docroot.url}"/>
768 <arg value="-XDignore.symbol.file=true"/>
769 </javadoc>
770 </target>
771
772
773 <target name="4jdk7dist"
774 depends="4jdk7dist-jar, 4jdk7dist-docs"
775 description="Puts all distributable products in single hierarchy"/>
776
777
778 <target name="4jdk7clean"
779 description="Removes all 4jdk7 build products">
780
781 <delete dir="${build.4jdk7.dir}"/>
782
783 </target>
784
785
786 <target name="4jdk7dist-jar"
787 depends="4jdk7clean, 4jdk7jar">
788 <copy file="${4jdk7product.jar}" todir="${dist.dir}"/>
789 </target>
790
791
792 <target name="4jdk7dist-docs"
793 depends="4jdk7clean, 4jdk7docs">
794 <mirror-dir src="${4jdk7docs.dir}" dst="${dist.4jdk7docs.dir}"/>
795 </target>
796
797
798 <!-- jsr166x -->
799
800 <target name="jsr166xcompile"
801 depends="configure-compiler"
802 description="Compiles jsr166x sources to build dir">
803
804 <mkdir dir="${build.jsr166x.classes.dir}"/>
805
806 <javac srcdir="${topsrc.dir}"
807 destdir="${build.jsr166x.classes.dir}"
808 debug="${build.debug}"
809 debuglevel="${build.debuglevel}"
810 deprecation="${build.deprecation}"
811 classpath=""
812 bootclasspath="${bootclasspath6}"
813 source="5"
814 includeAntRuntime="false"
815 includeJavaRuntime="false"
816 executable="${javac7}"
817 fork="true">
818
819 <include name="jsr166x/**/*.java"/>
820 <compilerarg value="-XDignore.symbol.file=true"/>
821 <compilerarg value="-Xlint:all,-unchecked,-rawtypes"/>
822 <compilerarg value="-Werror"/>
823 <compilerarg line="${build.args}"/>
824
825 </javac>
826 </target>
827
828
829 <target name="jsr166xjar"
830 depends="jsr166xcompile"
831 description="Builds library jar from compiled sources">
832
833 <jar destfile="${jsr166x.jar}">
834 <fileset dir="${build.jsr166x.classes.dir}"/>
835 <manifest>
836 <attribute name="Built-By" value="${user.name}"/>
837 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
838 </manifest>
839 </jar>
840
841 </target>
842
843
844 <target name="jsr166xdocs"
845 description="Builds javadocs to dist dir">
846
847 <delete dir="${jsr166xdocs.dir}"/>
848 <mkdir dir="${jsr166xdocs.dir}"/>
849
850 <javadoc destdir="${jsr166xdocs.dir}"
851 packagenames="jsr166x.*"
852 link="${java.api.url}"
853 access="${build.javadoc.access}"
854 sourcepath="${topsrc.dir}:${jdk6src.dir}"
855 bootclasspath="${bootclasspath6}"
856 source="5"
857 executable="${javadoc7}">
858 <arg line="-Xdocrootparent ${java.docroot.url}"/>
859 <arg value="-XDignore.symbol.file=true"/>
860
861 </javadoc>
862 </target>
863
864
865 <target name="jsr166xdist"
866 depends="jsr166xdist-jar, jsr166xdist-docs"
867 description="Puts all distributable products in single hierarchy"/>
868
869
870 <target name="jsr166xclean"
871 description="Removes all jsr166x build products">
872
873 <delete dir="${build.jsr166x.dir}"/>
874
875 </target>
876
877
878 <target name="jsr166xdist-jar"
879 depends="jsr166xclean, jsr166xjar">
880 <copy file="${jsr166x.jar}" todir="${dist.dir}"/>
881 </target>
882
883 <target name="jsr166xdist-docs"
884 depends="jsr166xclean, jsr166xdocs">
885 <mirror-dir src="${jsr166xdocs.dir}" dst="${dist.jsr166xdocs.dir}"/>
886 </target>
887
888 <!-- jsr166y -->
889
890
891 <target name="jsr166ycompile"
892 depends="configure-compiler"
893 description="Compiles jsr166y sources">
894
895 <mkdir dir="${build.jsr166y.classes.dir}"/>
896
897 <javac srcdir="${topsrc.dir}"
898 destdir="${build.jsr166y.classes.dir}"
899 debug="${build.debug}"
900 debuglevel="${build.debuglevel}"
901 deprecation="${build.deprecation}"
902 source="6"
903 classpath=""
904 bootclasspath="${bootclasspath6}"
905 includeAntRuntime="false"
906 includeJavaRuntime="false"
907 executable="${javac7}"
908 fork="true">
909
910 <include name="jsr166y/**/*.java"/>
911 <compilerarg value="-XDignore.symbol.file=true"/>
912 <compilerarg value="-Xlint:all"/>
913 <compilerarg value="-Werror"/>
914 <compilerarg line="${build.args}"/>
915
916 </javac>
917 </target>
918
919
920 <target name="jsr166yjar"
921 depends="jsr166ycompile"
922 description="Builds library jar from compiled sources">
923
924 <jar destfile="${jsr166y.jar}" index="true">
925 <fileset dir="${build.jsr166y.classes.dir}"/>
926 <manifest>
927 <attribute name="Built-By" value="${user.name}"/>
928 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
929 </manifest>
930 </jar>
931
932 </target>
933
934
935 <target name="jsr166ydocs"
936 description="Builds javadocs to dist dir">
937
938 <delete dir="${jsr166ydocs.dir}"/>
939 <mkdir dir="${jsr166ydocs.dir}"/>
940
941 <javadoc destdir="${jsr166ydocs.dir}"
942 packagenames="jsr166y.*"
943 link="${java.api.url}"
944 access="${build.javadoc.access}"
945 sourcepath="${topsrc.dir}:${jdk6src.dir}"
946 bootclasspath="${bootclasspath6}"
947 source="6"
948 executable="${javadoc7}">
949 <arg line="-Xdocrootparent ${java.docroot.url}"/>
950 <arg value="-XDignore.symbol.file=true"/>
951
952 </javadoc>
953 </target>
954
955
956 <target name="jsr166ydist"
957 depends="jsr166ydist-jar, jsr166ydist-docs"
958 description="Puts all distributable products in single hierarchy"/>
959
960
961 <target name="jsr166yclean"
962 description="Removes all jsr166y build products">
963
964 <delete dir="${build.jsr166y.dir}"/>
965
966 </target>
967
968
969 <target name="jsr166ydist-jar"
970 depends="jsr166yclean, jsr166yjar">
971 <copy file="${jsr166y.jar}" todir="${dist.dir}"/>
972 </target>
973
974 <target name="jsr166ydist-docs"
975 depends="jsr166yclean, jsr166ydocs">
976 <mirror-dir src="${jsr166ydocs.dir}" dst="${dist.jsr166ydocs.dir}"/>
977 </target>
978
979
980 <!-- extra166y -->
981
982
983 <target name="extra166ycompile"
984 depends="configure-compiler, jsr166yjar"
985 description="Compiles extra166y sources">
986
987 <mkdir dir="${build.extra166y.classes.dir}"/>
988
989 <javac srcdir="${topsrc.dir}"
990 destdir="${build.extra166y.classes.dir}"
991 debug="${build.debug}"
992 debuglevel="${build.debuglevel}"
993 deprecation="${build.deprecation}"
994 bootclasspath="@{jsr166y.jar}:${bootclasspath6}"
995 classpath=""
996 source="6"
997 includeAntRuntime="false"
998 includeJavaRuntime="false"
999 executable="${javac7}"
1000 fork="true">
1001
1002 <include name="extra166y/**/*.java"/>
1003 <compilerarg value="-XDignore.symbol.file=true"/>
1004 <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
1005 <compilerarg value="-Werror"/>
1006 <compilerarg line="${build.args}"/>
1007
1008 </javac>
1009 </target>
1010
1011
1012 <target name="extra166yjar"
1013 depends="extra166ycompile"
1014 description="Builds library jar from compiled sources">
1015
1016 <jar destfile="${extra166y.jar}" index="true">
1017 <fileset dir="${build.extra166y.classes.dir}"/>
1018 <manifest>
1019 <attribute name="Built-By" value="${user.name}"/>
1020 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1021 </manifest>
1022 </jar>
1023
1024 </target>
1025
1026
1027 <target name="extra166ydocs"
1028 description="Builds javadocs to build dir">
1029
1030 <delete dir="${extra166ydocs.dir}"/>
1031 <mkdir dir="${extra166ydocs.dir}"/>
1032
1033 <javadoc destdir="${extra166ydocs.dir}"
1034 packagenames="extra166y.*"
1035 link="${java.api.url}"
1036 access="${build.javadoc.access}"
1037 sourcepath="${topsrc.dir}:${jdk6src.dir}"
1038 bootclasspath="${bootclasspath6}"
1039 source="6"
1040 executable="${javadoc7}">
1041 <arg line="-Xdocrootparent ${java.docroot.url}"/>
1042 <arg value="-XDignore.symbol.file=true"/>
1043
1044 </javadoc>
1045 </target>
1046
1047
1048 <target name="extra166ydist"
1049 depends="extra166ydist-jar, extra166ydist-docs"
1050 description="Puts all distributable products in single hierarchy"/>
1051
1052
1053 <target name="extra166yclean"
1054 description="Removes all extra166y build products">
1055
1056 <delete dir="${build.extra166y.dir}"/>
1057
1058 </target>
1059
1060
1061 <target name="extra166ydist-jar"
1062 depends="extra166yclean, extra166yjar">
1063 <copy file="${extra166y.jar}" todir="${dist.dir}"/>
1064 </target>
1065
1066 <target name="extra166ydist-docs"
1067 depends="extra166yclean, extra166ydocs">
1068 <mirror-dir src="${extra166ydocs.dir}" dst="${dist.extra166ydocs.dir}"/>
1069 </target>
1070
1071 <!-- jsr166e -->
1072
1073 <property name="build.jsr166e.java.version" value="6"/>
1074 <property name="build.jsr166e.javac" value="${javac6}"/>
1075
1076 <target name="jsr166ecompile"
1077 depends="configure-compiler"
1078 description="Compiles jsr166e sources">
1079
1080 <mkdir dir="${build.jsr166e.classes.dir}"/>
1081
1082 <javac srcdir="${topsrc.dir}"
1083 destdir="${build.jsr166e.classes.dir}"
1084 debug="${build.debug}"
1085 debuglevel="${build.debuglevel}"
1086 deprecation="${build.deprecation}"
1087 source="${build.jsr166e.java.version}"
1088 classpath=""
1089 includeAntRuntime="false"
1090 includeJavaRuntime="false"
1091 executable="${build.jsr166e.javac}"
1092 fork="true">
1093
1094 <include name="jsr166e/**/*.java"/>
1095 <compilerarg value="-XDignore.symbol.file=true"/>
1096 <compilerarg value="-Xlint:all"/>
1097 <compilerarg value="-Werror"/>
1098 <compilerarg line="${build.args}"/>
1099
1100 </javac>
1101 </target>
1102
1103 <!-- jsr166e: find doclint errors -->
1104 <target name="jsr166edoclint">
1105
1106 <mkdir dir="${build.jsr166e.classes.dir}"/>
1107
1108 <javac srcdir="${topsrc.dir}"
1109 destdir="${build.jsr166e.classes.dir}"
1110 debug="${build.debug}"
1111 debuglevel="${build.debuglevel}"
1112 deprecation="${build.deprecation}"
1113 source="${build.jsr166e.java.version}"
1114 classpath=""
1115 bootclasspath="${bootclasspath7}"
1116 includeAntRuntime="false"
1117 includeJavaRuntime="false"
1118 executable="${javac8}"
1119 fork="true">
1120
1121 <include name="jsr166e/**/*.java"/>
1122 <compilerarg value="-XDignore.symbol.file=true"/>
1123 <compilerarg value="-Xlint:all"/>
1124 <compilerarg value="-Werror"/>
1125 <compilerarg value="-Xdoclint:all/protected"/>
1126
1127 </javac>
1128 </target>
1129
1130
1131 <target name="jsr166ejar"
1132 depends="jsr166ecompile"
1133 description="Builds library jar from compiled sources">
1134
1135 <jar destfile="${jsr166e.jar}" index="true">
1136 <fileset dir="${build.jsr166e.classes.dir}"/>
1137 <manifest>
1138 <attribute name="Built-By" value="${user.name}"/>
1139 <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1140 </manifest>
1141 </jar>
1142
1143 </target>
1144
1145
1146 <target name="jsr166edocs"
1147 description="Builds javadocs to build dir">
1148
1149 <delete dir="${jsr166edocs.dir}"/>
1150 <mkdir dir="${jsr166edocs.dir}"/>
1151
1152 <javadoc destdir="${jsr166edocs.dir}"
1153 packagenames="jsr166e.*"
1154 link="${java.api.url}"
1155 access="${build.javadoc.access}"
1156 sourcepath="${topsrc.dir}:${jdk6src.dir}"
1157 source="${build.jsr166e.java.version}"
1158 executable="${javadoc7}">
1159 <arg line="-Xdocrootparent ${java.docroot.url}"/>
1160 <arg value="-XDignore.symbol.file=true"/>
1161
1162 </javadoc>
1163 </target>
1164
1165
1166 <target name="jsr166e-tck-one-java-version"
1167 depends="jsr166ejar">
1168
1169 <echo message="Testing with jdk${build.jsr166e.java.version} ..."/>
1170
1171 <run-tck-tests
1172 tck.src.dir="${test.src.dir}/tck-jsr166e"
1173 target="${build.jsr166e.java.version}"
1174 workdir="${build.jsr166e.dir}"
1175 classes="${jsr166e.jar}"/>
1176 </target>
1177
1178 <target name="jsr166e-tck"
1179 description="Runs tck tests for jsr166e for multiple java versions">
1180
1181 <!-- <antcall target="clean"/> -->
1182 <!-- <antcall target="jsr166e-tck-one-java-version"> -->
1183 <!-- <param name="build.jsr166e.java.version" value="8"/> -->
1184 <!-- <param name="build.jsr166e.javac" value="${javac8}"/> -->
1185 <!-- </antcall> -->
1186
1187 <antcall target="clean"/>
1188 <antcall target="jsr166e-tck-one-java-version">
1189 <param name="build.jsr166e.java.version" value="7"/>
1190 <param name="build.jsr166e.javac" value="${javac7}"/>
1191 </antcall>
1192
1193 <antcall target="clean"/>
1194 <antcall target="jsr166e-tck-one-java-version">
1195 <param name="build.jsr166e.java.version" value="6"/>
1196 <param name="build.jsr166e.javac" value="${javac6}"/>
1197 </antcall>
1198 </target>
1199
1200
1201 <target name="jsr166e-test"
1202 depends="jsr166e-tck"
1203 description="Runs all tests for jsr166e">
1204 </target>
1205
1206 <target name="jsr166edist"
1207 depends="jsr166edist-jar, jsr166edist-docs"
1208 description="Puts all distributable products in single hierarchy"/>
1209
1210
1211 <target name="jsr166eclean"
1212 description="Removes all jsr166e build products">
1213 <delete dir="${build.jsr166e.dir}"/>
1214 </target>
1215
1216
1217 <target name="jsr166edist-jar"
1218 depends="jsr166eclean, jsr166ejar">
1219 <copy file="${jsr166e.jar}" todir="${dist.dir}"/>
1220 </target>
1221
1222 <target name="jsr166edist-docs"
1223 depends="jsr166eclean, jsr166edocs">
1224 <mirror-dir src="${jsr166edocs.dir}" dst="${dist.jsr166edocs.dir}"/>
1225 </target>
1226
1227
1228 <!-- Find buglets that can be detected by static build tools -->
1229
1230 <target name="lint">
1231 <antcall target="dists">
1232 <param name="build.javadoc.access" value="public"/>
1233 </antcall>
1234 </target>
1235
1236 <!-- Generates all doclint warnings, even for private methods (rarely useful) -->
1237 <target name="lint-private">
1238 <antcall target="dist">
1239 <param name="build.javadoc.access" value="private"/>
1240 </antcall>
1241 </target>
1242
1243
1244 </project>