ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.164
Committed: Wed May 20 06:13:09 2015 UTC (8 years, 11 months ago) by jsr166
Content type: text/xml
Branch: MAIN
Changes since 1.163: +7 -0 lines
Log Message:
add -Werror to all javac invocations

File Contents

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