ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
(Generate patch)

Comparing jsr166/build.xml (file contents):
Revision 1.166 by jsr166, Mon Aug 10 06:32:23 2015 UTC vs.
Revision 1.183 by jsr166, Sat Sep 26 17:58:52 2015 UTC

# Line 1 | Line 1
1 < <project name="jsr166" default="usage">
1 > <project name="jsr166" default="usage"
2 >  xmlns:if="ant:if" xmlns:unless="ant:unless">
3  
4    <description>
5   ------------------------------------------------------------------------------
# Line 28 | Line 29
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  
# Line 38 | Line 44
44      </java>
45    </target>
46  
47 +  <!-- HOWTO printf debug: <echo message="prop=${prop}"/> -->
48  
49    <!-- User-specific settings -->
50    <property file="user.properties"/>
# Line 50 | Line 57
57    <property name="build.deprecation"    value="false"/>
58    <property name="build.javadoc.access" value="protected"/>
59  
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
60    <!-- Build locations -->
61    <property name="build.dir"                   location="build"/>
62    <property name="build.classes.dir"           location="${build.dir}/classes"/>
# Line 93 | Line 89
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 <    <property name="jdk@{v}src.dir" location="${jdks.home}/src/jdk@{v}/jdk/src/share/classes"/>
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"/>
103 <    <path id="bootclasspath@{v}">
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}}"/>
110 >    <property name="bootclasspath@{v}" value="${toString:bootclasspath@{v}}" unless:set="modules"/>
111      </sequential>
112    </macrodef>
113  
# Line 129 | Line 133
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="jtreg.src.dir"        location="${test.src.dir}/jtreg"/>
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"/>
# Line 193 | Line 200
200      <pathelement location="${junit.jar}"/>
201    </path>
202  
203 +  <!-- Tck options; see JSR166TestCase.java
204 +   To profile a single tck test class:
205 +   ant -Djsr166.profileTests=true -Djsr166.profileThreshold=10 -Djsr166.tckTestClass=CompletableFutureTest tck
206 +   To stress test a single tck test class:
207 +   ant -Djsr166.tckTestClass=CountedCompleterTest -Djsr166.runsPerTest=100 tck
208 +   To stress test a single tck test method:
209 +   ant -Djsr166.tckTestClass=RecursiveTaskTest -Djsr166.runsPerTest=1000 -Djsr166.methodFilter=testAbnormalInvokeAll3 tck
210 +  -->
211 +  <property name="jsr166.tckTestClass"     value="JSR166TestCase"/>
212    <macrodef name="run-tck-tests">
213      <attribute name="tck.src.dir" default="${tck.src.dir}"/>
214      <attribute name="target"/>
# Line 201 | Line 217
217      <attribute name="classes"/>
218      <attribute name="jvmflags" default="-ea -esa -Djsr166.testImplementationDetails=true"/>
219      <element name="javac-elements" optional="true"/>
220 +
221      <sequential>
222  
223 +    <local name="modules"/>
224 +    <condition property="modules">
225 +      <available file="${jdk@{compile-target}.home}/jmods" type="dir"/>
226 +    </condition>
227 +
228      <mkdir dir="@{workdir}/tck-classes"/>
229  
230      <javac srcdir="@{tck.src.dir}"
# Line 221 | Line 243
243        <include name="*.java"/>
244        <compilerarg value="-XDignore.symbol.file=true"/>
245        <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation"/>
246 <      <compilerarg value="-Xbootclasspath/p:@{classes}"/>
246 >      <compilerarg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
247 >      <compilerarg value="-Xoverride:${build.classes.dir}" if:set="modules"/>
248        <compilerarg line="${build.args}"/>
249        <javac-elements/>
250  
# Line 231 | Line 254
254            failonerror="true"
255            jvm="${java@{target}}"
256            fork="true">
257 <        <jvmarg value="-Xbootclasspath/p:@{classes}"/>
257 >        <jvmarg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
258 >        <jvmarg value="-Xoverride:${build.classes.dir}" if:set="modules"/>
259          <jvmarg line="@{jvmflags}"/>
260  
261 <        <!-- ant -Djava.util.concurrent.ForkJoinPool.common.parallelism=1 test-tck -->
262 <        <syspropertyset id="java.util.concurrent.ForkJoinPool-properties">
261 >        <!-- ant -Djava.util.concurrent.ForkJoinPool.common.parallelism=1 tck -->
262 >        <syspropertyset id="system-properties-used-by-tck">
263            <propertyref prefix="java.util.concurrent.ForkJoinPool"/>
264 +          <propertyref prefix="jsr166"/>
265          </syspropertyset>
266  
242        <sysproperty key="jsr166.profileTests"     value="${jsr166.profileTests}"/>
243        <sysproperty key="jsr166.profileThreshold" value="${jsr166.profileThreshold}"/>
244        <sysproperty key="jsr166.runsPerTest"      value="${jsr166.runsPerTest}"/>
267          <classpath>
268            <pathelement location="${junit.jar}"/>
269            <pathelement location="@{workdir}/tck-classes"/>
# Line 252 | Line 274
274    </macrodef>
275  
276    <!-- Define jtreg test sets for different jdk versions -->
277 <  <fileset dir="${jtreg.src.dir}">
277 >  <fileset dir="${jtreg9.src.dir}">
278      <patternset id="jdk9.jtreg.tests">
279        <include name="**/*.java"/>
280      </patternset>
281    </fileset>
282  
283 <  <fileset dir="${jtreg.src.dir}">
283 >  <fileset dir="${jtreg8.src.dir}">
284      <patternset id="jdk8.jtreg.tests">
285        <include name="**/*.java"/>
286 <      <exclude name="util/Spliterator/SpliteratorCharacteristics.java"/>
286 >      <exclude name="**/SpliteratorCharacteristics.java"/>
287 >      <!-- https://bugs.openjdk.java.net/browse/JDK-6842353 -->
288 >      <exclude name="**/GCDuringIteration.java"/>
289      </patternset>
290    </fileset>
291  
292 <  <fileset dir="${jtreg.src.dir}">
292 >  <fileset dir="${jtreg7.src.dir}">
293      <patternset id="jdk7.jtreg.tests">
294        <include name="**/*.java"/>
271      <exclude name="util/Collection/CollectionDefaults.java"/>
272      <exclude name="util/List/ListDefaults.java"/>
273      <exclude name="util/Spliterator/**/*.java"/>
274      <exclude name="util/concurrent/CompletableFuture/**/*.java"/>
275      <exclude name="util/concurrent/forkjoin/SubmissionTest.java"/>
276      <exclude name="util/concurrent/locks/StampedLock/**/*.java"/>
295      </patternset>
296    </fileset>
297  
298    <macrodef name="run-jtreg-tests">
299 <    <!-- ant -Djtreg.src.dir=src/test/jtreg/util/concurrent/CompletableFuture test-jtreg -->
282 <    <attribute name="jtreg.src.dir" default="${jtreg.src.dir}"/>
299 >    <!-- ant -Djtreg9.src.dir=src/test/jtreg/util/concurrent/CompletableFuture jtreg -->
300      <attribute name="source" default="7"/>
301      <attribute name="target"/>
302      <attribute name="workdir"/>
303      <attribute name="classes"/>
304      <attribute name="jtregflags" default=""/>
305 +
306      <sequential>
307 +
308 +    <local name="modules"/>
309 +    <condition property="modules">
310 +      <available file="${jdk@{target}.home}/jmods" type="dir"/>
311 +    </condition>
312 +
313      <delete dir="@{workdir}/JTwork"   quiet="true"/>
314      <delete dir="@{workdir}/JTreport" quiet="true"/>
315      <mkdir dir="@{workdir}/JTwork/scratch"/>
316      <mkdir dir="@{workdir}/JTreport"/>
317 <    <jtreg dir="@{jtreg.src.dir}"
317 >    <jtreg dir="${jtreg@{target}.src.dir}"
318             jdk="${jdk@{target}.home}"
319             workDir="@{workdir}/JTwork"
320             reportDir="@{workdir}/JTreport">
321        <patternset refid="jdk@{target}.jtreg.tests"/>
322 <      <arg value="-Xbootclasspath/p:@{classes}"/>
322 >      <arg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
323 >      <arg value="-Xoverride:${build.classes.dir}" if:set="modules"/>
324        <arg value="-agentvm"/>
325        <arg value="-v:nopass,fail"/>
326        <arg value="-vmoptions:-esa -ea"/>
# Line 328 | Line 353
353            depends="configure-compiler"
354            description="Compiles src/main sources to build dir">
355  
356 <    <mkdir dir="${build.classes.dir}"/>
356 >    <local name="modules"/>
357 >    <condition property="modules">
358 >      <and>
359 >        <available file="${jdk9.home}/jmods" type="dir"/>
360 >        <equals arg1="9" arg2="${build.main.java.version}"/>
361 >      </and>
362 >    </condition>
363 >
364 >    <local name="destdir"/>
365 >    <property name="destdir" value="${build.classes.dir}/java.base" if:set="modules"/>
366 >    <property name="destdir" value="${build.classes.dir}" unless:set="modules"/>
367 >
368 >    <mkdir dir="${destdir}"/>
369  
370      <javac srcdir="${src.dir}"
371 <           destdir="${build.classes.dir}"
371 >           destdir="${destdir}"
372             debug="${build.debug}"
373             debuglevel="${build.debuglevel}"
374             deprecation="${build.deprecation}"
# Line 342 | Line 379
379             fork="true">
380  
381        <include name="**/*.java"/>
382 +      <compilerarg value="-Xmodule:java.base" if:set="modules"/>
383        <compilerarg value="-Xprefer:source"/>
384        <compilerarg value="-XDignore.symbol.file=true"/>
385        <compilerarg value="-Xlint:all"/>
# Line 360 | Line 398
398  
399      <jar destfile="${product.jar}">
400        <fileset dir="${build.classes.dir}"/>
401 +      <manifest>
402 +        <attribute name="Built-By" value="${user.name}"/>
403 +        <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
404 +      </manifest>
405      </jar>
406    </target>
407  
# Line 387 | Line 429
429        <arg line="-Xdocrootparent ${java9.docroot.url}"/>
430        <arg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
431        <arg value="-XDignore.symbol.file=true"/>
432 + <!--  TODO     <arg value="-Xmodule:java.base"/> -->
433        <arg value="-tag"/>
434        <arg value="${javadoc.jls.option}"/>
435        <arg value="-tag"/>
# Line 418 | Line 461
461        <exclude name="src/emulation/**"/>
462        <exclude name="**/SyntaxTest.java"/>
463        <exclude name="**/SuperfluousAbstract.java"/>
464 +      <manifest>
465 +        <attribute name="Built-By" value="${user.name}"/>
466 +        <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
467 +      </manifest>
468      </jar>
469    </target>
470  
# Line 449 | Line 496
496      <mirror-dir src="${docs.dir}" dst="${dist.docs.dir}"/>
497    </target>
498  
499 <  <target name="tck" depends="test-tck" description="alias for test-tck"/>
453 <  <target name="test-tck"
499 >  <target name="tck"
500            depends="jar"
501            description="Runs tck tests for main directly">
502  
# Line 460 | Line 506
506        classes="${product.jar}"/>
507    </target>
508  
509 <  <target name="test-tck-parallelism-1"
510 <          description="Runs test-tck with given common pool parallelism">
511 <    <antcall target="test-tck">
509 >  <target name="tck-parallelism-1"
510 >          description="Runs tck with given common pool parallelism">
511 >    <antcall target="tck">
512        <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="1"/>
513      </antcall>
514    </target>
515  
516 <  <target name="test-tck-parallelism-0"
517 <          description="Runs test-tck with given common pool parallelism">
518 <    <antcall target="test-tck">
516 >  <target name="tck-parallelism-0"
517 >          description="Runs tck with given common pool parallelism">
518 >    <antcall target="tck">
519        <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="0"/>
520      </antcall>
521    </target>
522  
523 <  <target name="jtreg" depends="test-jtreg" description="alias for test-jtreg"/>
478 <  <target name="test-jtreg"
523 >  <target name="jtreg"
524            depends="jar"
525            description="Runs jtreg tests for main using the jtreg ant task">
526      <run-jtreg-tests
# Line 485 | Line 530
530    </target>
531  
532    <target name="test"
533 <          depends="test-tck, test-tck-parallelism-1, test-jtreg"
533 >          depends="tck, tck-parallelism-1, jtreg"
534            description="Runs tck and jtreg tests for main">
535    </target>
536  
537 +  <target name="jtreg8" description="Runs jtreg tests with jdk8">
538 +
539 +    <antcall target="jtreg">
540 +      <param name="build.main.java.version" value="8"/>
541 +      <param name="build.main.javac" value="${javac8}"/>
542 +    </antcall>
543 +
544 +  </target>
545 +
546    <target name="test89"
547            description="Runs tck and jtreg tests for main for multiple java versions">
548  
# Line 496 | Line 550
550      <antcall target="test">
551        <param name="build.main.java.version" value="8"/>
552        <param name="build.main.javac" value="${javac8}"/>
499      <param name="jtreg.exclude.file" value="${jtreg.src.dir}/jdk9tests"/>
553      </antcall>
554  
555      <antcall target="clean"/>
# Line 510 | Line 563
563  
564  
565    <target name="configure-compiler">
566 +    <fail message="ant version too old">
567 +      <condition>
568 +        <not> <antversion atleast="1.9.1"/> </not>
569 +      </condition>
570 +    </fail>
571  
572      <property name="unchecked.option" value="-Xlint:unchecked"/>
573  
# Line 573 | Line 631
631  
632        <include name="*.java"/>
633        <compilerarg value="-XDignore.symbol.file=true"/>
634 <      <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation"/>
634 >      <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
635        <compilerarg value="-Xbootclasspath/p:${product.jar}"/>
636        <compilerarg line="${build.args}"/>
637  
# Line 649 | Line 707
707  
708      <jar destfile="${4jdk7product.jar}">
709        <fileset dir="${build.4jdk7.classes.dir}"/>
710 +      <manifest>
711 +        <attribute name="Built-By" value="${user.name}"/>
712 +        <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
713 +      </manifest>
714      </jar>
715  
716    </target>
717  
718  
719 <  <target name="4jdk7-test-tck"
719 >  <target name="4jdk7-tck"
720            depends="4jdk7jar"
721            description="Runs tck tests for jsr166-4jdk7 directly">
722  
# Line 666 | Line 728
728          <!-- JDK8+ test classes -->
729          <exclude name="*8Test.java"/>
730          <exclude name="*9Test.java"/>
731 +        <exclude name="*10Test.java"/>
732          <exclude name="DoubleAccumulatorTest.java"/>
733          <exclude name="DoubleAdderTest.java"/>
734          <exclude name="LongAccumulatorTest.java"/>
# Line 673 | Line 736
736          <exclude name="CompletableFutureTest.java"/>
737          <exclude name="SplittableRandomTest.java"/>
738          <exclude name="StampedLockTest.java"/>
739 +        <exclude name="SubmissionPublisherTest.java"/>
740        </javac-elements>
741      </run-tck-tests>
742    </target>
743  
744  
745 <  <target name="4jdk7-test-tck-junit"
745 >  <target name="4jdk7-tck-junit"
746            depends="4jdk7compile"
747            description="Runs tck tests for jsr166-4jdk7 via junit task (experimental)">
748  
# Line 706 | Line 770
770      </junit>
771    </target>
772  
773 <  <target name="4jdk7-test-jtreg"
773 >  <target name="4jdk7-jtreg"
774            depends="4jdk7jar"
775            description="Runs jtreg tests for jsr166-4jdk7 using the jtreg ant task">
776      <run-jtreg-tests
# Line 717 | Line 781
781  
782  
783    <target name="4jdk7-test"
784 <          depends="4jdk7-test-tck, 4jdk7-test-jtreg"
784 >          depends="4jdk7-tck, 4jdk7-jtreg"
785            description="Runs tck and jtreg tests for jsr166-4jdk7">
786    </target>
787  
# Line 807 | Line 871
871  
872      <jar destfile="${jsr166x.jar}">
873        <fileset dir="${build.jsr166x.classes.dir}"/>
874 +      <manifest>
875 +        <attribute name="Built-By" value="${user.name}"/>
876 +        <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
877 +      </manifest>
878      </jar>
879  
880    </target>
# Line 894 | Line 962
962  
963      <jar destfile="${jsr166y.jar}" index="true">
964        <fileset dir="${build.jsr166y.classes.dir}"/>
965 +      <manifest>
966 +        <attribute name="Built-By" value="${user.name}"/>
967 +        <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
968 +      </manifest>
969      </jar>
970  
971    </target>
# Line 982 | Line 1054
1054  
1055      <jar destfile="${extra166y.jar}" index="true">
1056        <fileset dir="${build.extra166y.classes.dir}"/>
1057 +      <manifest>
1058 +        <attribute name="Built-By" value="${user.name}"/>
1059 +        <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1060 +      </manifest>
1061      </jar>
1062  
1063    </target>
# Line 1097 | Line 1173
1173  
1174      <jar destfile="${jsr166e.jar}" index="true">
1175        <fileset dir="${build.jsr166e.classes.dir}"/>
1176 +      <manifest>
1177 +        <attribute name="Built-By" value="${user.name}"/>
1178 +        <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1179 +      </manifest>
1180      </jar>
1181  
1182    </target>
# Line 1122 | Line 1202
1202    </target>
1203  
1204  
1205 <  <target name="jsr166e-test-tck-one-java-version"
1205 >  <target name="jsr166e-tck-one-java-version"
1206            depends="jsr166ejar">
1207  
1208      <echo message="Testing with jdk${build.jsr166e.java.version} ..."/>
# Line 1134 | Line 1214
1214        classes="${jsr166e.jar}"/>
1215    </target>
1216  
1217 <  <target name="jsr166e-test-tck"
1217 >  <target name="jsr166e-tck"
1218            description="Runs tck tests for jsr166e for multiple java versions">
1219  
1220   <!--     <antcall target="clean"/> -->
1221 < <!--     <antcall target="jsr166e-test-tck-one-java-version"> -->
1221 > <!--     <antcall target="jsr166e-tck-one-java-version"> -->
1222   <!--       <param name="build.jsr166e.java.version" value="8"/> -->
1223   <!--       <param name="build.jsr166e.javac" value="${javac8}"/> -->
1224   <!--     </antcall> -->
1225  
1226      <antcall target="clean"/>
1227 <    <antcall target="jsr166e-test-tck-one-java-version">
1227 >    <antcall target="jsr166e-tck-one-java-version">
1228        <param name="build.jsr166e.java.version" value="7"/>
1229        <param name="build.jsr166e.javac" value="${javac7}"/>
1230      </antcall>
1231  
1232      <antcall target="clean"/>
1233 <    <antcall target="jsr166e-test-tck-one-java-version">
1233 >    <antcall target="jsr166e-tck-one-java-version">
1234        <param name="build.jsr166e.java.version" value="6"/>
1235        <param name="build.jsr166e.javac" value="${javac6}"/>
1236      </antcall>
# Line 1158 | Line 1238
1238  
1239  
1240    <target name="jsr166e-test"
1241 <          depends="jsr166e-test-tck"
1241 >          depends="jsr166e-tck"
1242            description="Runs all tests for jsr166e">
1243    </target>
1244  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines