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.93 by jsr166, Mon Jan 14 08:58:47 2013 UTC vs.
Revision 1.101 by jsr166, Sat Jan 19 17:30:36 2013 UTC

# Line 8 | Line 8
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 +  where each of the above is a JDK or a symlink to same, and
20 +  $HOME/jdk/src/jdk6
21 +  $HOME/jdk/src/jdk7
22 +  $HOME/jdk/src/jdk8
23 +  where each of the above is a complete JDK source tree
24 +  (e.g. mercurial forest) or a symlink to same.
25   ------------------------------------------------------------------------------
26    </description>
27  
# Line 35 | Line 49
49    <property name="build.javadocs.dir"          location="${build.dir}/javadocs"/>
50    <property name="build.reports.dir"           location="${build.dir}/reports"/>
51  
52 <  <property name="build.jdk7.dir"              location="${build.dir}/jdk7"/>
53 <  <property name="build.jdk7.lib.dir"          location="${build.jdk7.dir}"/>
54 <  <property name="build.jdk7.classes.dir"      location="${build.jdk7.dir}/classes"/>
55 <  <property name="build.jdk7.docs.dir"         location="${build.jdk7.dir}/docs"/>
52 >  <property name="build.4jdk7.dir"              location="${build.dir}/4jdk7"/>
53 >  <property name="build.4jdk7.lib.dir"          location="${build.4jdk7.dir}"/>
54 >  <property name="build.4jdk7.classes.dir"      location="${build.4jdk7.dir}/classes"/>
55 >  <property name="build.4jdk7.tck.classes.dir"  location="${build.4jdk7.dir}/tck/classes"/>
56 >  <property name="build.4jdk7.docs.dir"         location="${build.4jdk7.dir}/docs"/>
57  
58    <property name="build.jsr166x.dir"           location="${build.dir}/jsr166x"/>
59    <property name="build.jsr166xlib.dir"        location="${build.dir}/jsr166xlib"/>
# Line 62 | Line 77
77    <macrodef name="defjdklocations">
78      <attribute name="v"/>
79      <sequential>
80 <    <property name="jdk@{v}.home"  location="${jdks.home}/jdk@{v}"/>
81 <    <property name="javac@{v}"     location="${jdk@{v}.home}/bin/javac"/>
82 <    <property name="javadoc@{v}"   location="${jdk@{v}.home}/bin/javadoc"/>
83 <    <property name="bootdir@{v}"   location="${jdk@{v}.home}/jre/lib"/>
84 <    <property name="bootclasspath@{v}"  
80 >    <property name="jdk@{v}.home"   location="${jdks.home}/jdk@{v}"/>
81 >    <property name="java@{v}"       location="${jdk@{v}.home}/bin/java"/>
82 >    <property name="javac@{v}"      location="${jdk@{v}.home}/bin/javac"/>
83 >    <property name="javadoc@{v}"    location="${jdk@{v}.home}/bin/javadoc"/>
84 >    <property name="bootdir@{v}"    location="${jdk@{v}.home}/jre/lib"/>
85 >    <property name="jdk@{v}src.dir" location="${jdks.home}/src/jdk@{v}/jdk/src/share/classes"/>
86 >    <property name="bootclasspath@{v}"
87       value="${bootdir@{v}}/resources.jar:${bootdir@{v}}/rt.jar:${bootdir@{v}}/jsse.jar:${bootdir@{v}}/jce.jar:${bootdir@{v}}/:${bootdir@{v}}/charsets.jar"/>
88      </sequential>
89    </macrodef>
# Line 75 | Line 92
92    <defjdklocations v="7"/>
93    <defjdklocations v="8"/>
94  
95 +  <macrodef name="run-tck-tests">
96 +    <attribute name="jvm"/>
97 +    <attribute name="tck.classes"/>
98 +    <attribute name="product.jar" default="${product.jar}"/>
99 +    <attribute name="jvmflags" default=""/>
100 +    <sequential>
101 +    <java classname="JSR166TestCase"
102 +          jvm="@{jvm}" fork="true">
103 +        <jvmarg value="-Xbootclasspath/p:@{product.jar}"/>
104 +        <jvmarg line="@{jvmflags}"/>
105 +        <classpath>
106 +          <pathelement location="${junit.jar}"/>
107 +          <pathelement location="@{tck.classes}"/>
108 +        </classpath>
109 +    </java>
110 +    </sequential>
111 +  </macrodef>
112 +
113    <!-- Source locations -->
114    <property name="src.dir"              location="${basedir}/src/main"/>
115    <property name="test.src.dir"         location="${basedir}/src/test"/>
# Line 84 | Line 119
119    <property name="lib.dir"              location="${basedir}/lib"/>
120    <property name="dist.dir"             location="${basedir}/dist"/>
121    <property name="topsrc.dir"           location="${basedir}/src"/>
122 <  <property name="jdk7src.dir"          location="${topsrc.dir}/jdk7"/>
122 >  <property name="4jdk7src.dir"         location="${topsrc.dir}/jdk7"/>
123    <property name="jsr166xsrc.dir"       location="${topsrc.dir}/jsr166x"/>
124    <property name="jsr166ysrc.dir"       location="${topsrc.dir}/jsr166y"/>
125    <property name="jsr166esrc.dir"       location="${topsrc.dir}/jsr166e"/>
# Line 93 | Line 128
128  
129    <!-- Distribution locations -->
130    <property name="dist.javadocs.dir"           location="${dist.dir}/docs"/>
131 <  <property name="dist.jdk7.docs.dir"          location="${dist.dir}/jsr166-jdk7docs"/>
131 >  <property name="dist.4jdk7.docs.dir"         location="${dist.dir}/jsr166-4jdk7docs"/>
132    <property name="dist.jsr166xjavadocs.dir"    location="${dist.dir}/jsr166xdocs"/>
133    <property name="dist.jsr166yjavadocs.dir"    location="${dist.dir}/jsr166ydocs"/>
134    <property name="dist.jsr166ejavadocs.dir"    location="${dist.dir}/jsr166edocs"/>
# Line 101 | Line 136
136  
137    <!-- Jar locations -->
138    <property name="product.jar"          location="${build.lib.dir}/jsr166.jar"/>
139 <  <property name="jdk7product.jar"      location="${build.jdk7.lib.dir}/jsr166-jdk7.jar"/>
139 >  <property name="4jdk7product.jar"     location="${build.4jdk7.lib.dir}/jsr166-4jdk7.jar"/>
140    <property name="jsr166xproduct.jar"   location="${build.jsr166xlib.dir}/jsr166x.jar"/>
141    <property name="jsr166yproduct.jar"   location="${build.jsr166ylib.dir}/jsr166y.jar"/>
142    <property name="jsr166eproduct.jar"   location="${build.jsr166elib.dir}/jsr166e.jar"/>
# Line 132 | Line 167
167      <pathelement location="${build.loops.dir}"/>
168    </path>
169  
170 +  <!-- Support @jls tag, used in jdk8+ javadoc -->
171 +  <!-- TODO: How do we get &trade to work? -->
172 +  <!-- TODO: Why isn't @jls a "standard" tag? -->
173 +  <!--   property name="javadoc.jls.cite" value="The Java&trade; Language Specification" -->
174 +  <property name="javadoc.jls.cite" value="The Java Language Specification"/>
175 +  <property name="javadoc.jls.option" value="jls:a:See &lt;cite&gt;${javadoc.jls.cite}&lt;/cite&gt;:"/>
176  
177    <!-- Main targets -->
178  
# Line 140 | Line 181
181            description="Builds all public jars and docs"/>
182  
183    <target name="compile"
184 <          depends="init, configure-compiler"
185 <          description="Compiles main sources to build folder">
184 >          depends="configure-compiler"
185 >          description="Compiles src/main sources to build folder">
186  
187      <mkdir dir="${build.classes.dir}"/>
188  
189      <javac srcdir="${src.dir}"
190 <          destdir="${build.classes.dir}"
191 <            debug="${build.debug}"
192 <       debuglevel="${build.debuglevel}"
193 <      deprecation="${build.deprecation}"
194 <           source="${build.sourcelevel}"
195 <             fork="true">
190 >           destdir="${build.classes.dir}"
191 >           debug="${build.debug}"
192 >           debuglevel="${build.debuglevel}"
193 >           deprecation="${build.deprecation}"
194 >           classpath=""
195 >           includeAntRuntime="false"
196 >           includeJavaRuntime="false"
197 >           executable="${javac8}"
198 >           fork="true">
199  
200        <include name="**/*.java"/>
201 +      <compilerarg line="${build.args}"/>
202        <compilerarg value="-XDignore.symbol.file=true"/>
203 +      <compilerarg value="-Xlint:all"/>
204  
205   <!--
206        <exclude name="java/lang/**"/>
# Line 189 | Line 235
235  
236  
237    <target name="docs"
238 <          description="Builds javadocs with custom tags to build folder">
238 >          description="Builds javadocs for src/main">
239  
240 <    <delete dir="${build.javadocs.dir}"/>
241 <    <mkdir dir="${build.javadocs.dir}"/>
240 >    <delete dir="${dist.javadocs.dir}"/>
241 >    <mkdir dir="${dist.javadocs.dir}"/>
242  
243      <!-- the packagenames="none" hack below prevents scanning the -->
244      <!-- sourcepath for packages -->
245  
246 <    <javadoc destdir="${build.javadocs.dir}"
246 >    <javadoc destdir="${dist.javadocs.dir}"
247               packagenames="none"
248 <             link="${jdkapidocs.url}"
248 >             link="${jdkapi8docs.url}"
249               overview="${src.dir}/intro.html"
250 <             sourcepath="${src.dir}:${jdksrc.dir}"
251 <             additionalparam="-XDignore.symbol.file=true" >
250 >             sourcepath="${src.dir}:${jdk8src.dir}"
251 >             classpath=""
252 >             executable="${javadoc8}">
253 >      <arg value="-XDignore.symbol.file=true"/>
254 >      <arg value="-tag"/>
255 >      <arg value="${javadoc.jls.option}"/>
256        <fileset dir="${src.dir}" defaultexcludes="yes">
257          <include name="**/*.java"/>
258        </fileset>
# Line 213 | Line 263
263  
264  
265    <target name="dist"
266 <          depends="init, dist-clean, dist-jar, dist-docs"
266 >          depends="init, dist-clean, dist-jar, docs"
267            description="Puts all distributable products in single hierarchy"/>
268  
269  
# Line 257 | Line 307
307  
308  
309  
260  <target name="dist-docs"
261          description="Builds javadocs without custom tags to dist folder">
262
263    <delete dir="${dist.javadocs.dir}"/>
264    <mkdir dir="${dist.javadocs.dir}"/>
265
266    <!-- the packagenames="none" hack below prevents scanning the -->
267    <!-- sourcepath for packages -->
268
269    <javadoc destdir="${dist.javadocs.dir}"
270             packagenames="none"
271             link="${jdkapidocs.url}"
272             overview="${src.dir}/intro.html"
273             sourcepath="${src.dir}:${jdksrc.dir}"
274             additionalparam="-XDignore.symbol.file=true" >
275      <fileset dir="${src.dir}" defaultexcludes="yes">
276        <include name="**/*.java"/>
277      </fileset>
278    </javadoc>
279
280  </target>
281
282
283
310    <!-- Internal targets -->
311  
312  
# Line 504 | Line 530
530    </target>
531  
532  
533 <  <!-- jdk7 -->
533 >  <!-- jsr166 4jdk7 -->
534  
535  
536 <  <target name="jdk7compile"
536 >  <target name="4jdk7compile"
537            depends="configure-compiler"
538 <          description="Compiles src/jdk7 sources">
538 >          description="Compiles src/jdk7 sources, targeting jdk7">
539  
540 <    <mkdir dir="${build.jdk7.classes.dir}"/>
540 >    <mkdir dir="${build.4jdk7.classes.dir}"/>
541  
542 <    <javac srcdir="${jdk7src.dir}"
543 <           destdir="${build.jdk7.classes.dir}"
542 >    <javac srcdir="${4jdk7src.dir}"
543 >           destdir="${build.4jdk7.classes.dir}"
544             debug="${build.debug}"
545             debuglevel="${build.debuglevel}"
546             deprecation="${build.deprecation}"
# Line 523 | Line 549
549             bootclasspath="${bootclasspath6}"
550             includeAntRuntime="false"
551             includeJavaRuntime="false"
552 <           executable="${javac6}"
552 >           executable="${javac7}"
553             fork="true">
554  
555        <include name="**/*.java"/>
# Line 533 | Line 559
559  
560      </javac>
561  
562 <  </target>
562 >    <mkdir dir="${build.4jdk7.lib.dir}"/>
563  
564 +    <jar destfile="${4jdk7product.jar}" index="true">
565 +      <fileset dir="${build.4jdk7.classes.dir}"/>
566 +    </jar>
567  
568 +    <mkdir dir="${build.4jdk7.tck.classes.dir}"/>
569  
570 <  <target name="jdk7jar"
571 <          depends="jdk7compile"
572 <          description="Builds library jar from compiled sources">
570 >    <javac srcdir="${tck.src.dir}"
571 >           destdir="${build.4jdk7.tck.classes.dir}"
572 >           debug="${build.debug}"
573 >           debuglevel="${build.debuglevel}"
574 >           deprecation="${build.deprecation}"
575 >           source="1.6"
576 >           classpath="${junit.jar}"
577 >           bootclasspath="${4jdk7product.jar}:${bootclasspath6}"
578 >           includeAntRuntime="false"
579 >           includeJavaRuntime="false"
580 >           executable="${javac7}"
581 >           fork="true">
582  
583 <    <mkdir dir="${build.jdk7.lib.dir}"/>
583 >      <include name="**/*.java"/>
584 >      <compilerarg line="${build.args}"/>
585 >      <compilerarg value="-XDignore.symbol.file=true"/>
586 >      <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation"/>
587  
588 <    <jar destfile="${jdk7product.jar}" index="true">
547 <      <fileset dir="${build.jdk7.classes.dir}"/>
548 <    </jar>
588 >    </javac>
589  
590    </target>
591  
592  
593 +  <target name="4jdk7-test-tck"
594 +          depends="4jdk7compile"
595 +          description="Runs tck tests for jsr166-4jdk7 directly">
596 +    <run-tck-tests
597 +      jvm="${java7}"
598 +      tck.classes="${build.4jdk7.tck.classes.dir}"
599 +      product.jar="${4jdk7product.jar}"/>
600 +  </target>
601  
602 <  <target name="jdk7docs"
602 >
603 >  <target name="4jdk7-test-tck-junit"
604 >          depends="4jdk7compile"
605 >          description="Runs tck tests for jsr166-4jdk7 via junit task (experimental)">
606 >
607 >    <junit printsummary="true"
608 >           showoutput="true"
609 >           errorProperty="junit.failed"
610 >           failureProperty="junit.failed"
611 >           includeantruntime="true"
612 >           jvm="${java7}"
613 >           fork="true">
614 >
615 >      <jvmarg value="-Xbootclasspath/p:${4jdk7product.jar}"/>
616 >      <jvmarg value="-server"/>
617 >
618 >      <classpath>
619 >        <pathelement location="${junit.jar}"/>
620 >        <pathelement location="${build.4jdk7.tck.classes.dir}"/>
621 >      </classpath>
622 >
623 >      <formatter type="brief"/>
624 >
625 >      <test name="JSR166TestCase" haltonfailure="no">
626 >      </test>
627 >
628 >    </junit>
629 >  </target>
630 >
631 >
632 >  <target name="4jdk7docs"
633            description="Builds javadocs with custom tags to build folder">
634  
635 <    <delete dir="${build.jdk7.docs.dir}"/>
636 <    <mkdir dir="${build.jdk7.docs.dir}"/>
635 >    <delete dir="${build.4jdk7.docs.dir}"/>
636 >    <mkdir dir="${build.4jdk7.docs.dir}"/>
637  
638 <    <javadoc destdir="${build.jdk7.docs.dir}"
638 >    <javadoc destdir="${build.4jdk7.docs.dir}"
639               packagenames="none"
640               link="${jdkapi7docs.url}"
641 <             overview="${jdk7src.dir}/intro.html"
642 <             sourcepath="${jdk7src.dir}"
565 <             bootclasspath="${bootclasspath6}"
641 >             overview="${4jdk7src.dir}/intro.html"
642 >             sourcepath="${4jdk7src.dir}:${jdk7src.dir}"
643               classpath=""
644 <             source="1.6"
645 <             executable="${javadoc7}"
646 <             additionalparam="-XDignore.symbol.file=true" >
570 <      <fileset dir="${jdk7src.dir}" defaultexcludes="yes">
644 >             executable="${javadoc7}">
645 >      <arg value="-XDignore.symbol.file=true"/>
646 >      <fileset dir="${4jdk7src.dir}" defaultexcludes="yes">
647          <include name="**/*.java"/>
648        </fileset>
649      </javadoc>
# Line 575 | Line 651
651    </target>
652  
653  
654 <  <target name="jdk7dist"
655 <          depends="jdk7dist-clean, jdk7dist-jar, jdk7dist-docs"
654 >  <target name="4jdk7dist"
655 >          depends="4jdk7dist-clean, 4jdk7dist-jar, 4jdk7dist-docs"
656            description="Puts all distributable products in single hierarchy"/>
657  
658  
659  
660 <  <target name="jdk7clean"
660 >  <target name="4jdk7clean"
661            description="Removes all build products">
662  
663 <    <delete dir="${build.jdk7.dir}"/>
663 >    <delete dir="${build.4jdk7.dir}"/>
664  
665    </target>
666  
667  
668  
669 <  <target name="jdk7dist-clean"
669 >  <target name="4jdk7dist-clean"
670            description="Removes all build and distribution products">
671  
672    </target>
673  
674 <  <target name="jdk7dist-docs"
674 >  <target name="4jdk7dist-docs"
675            description="Builds javadocs without custom tags to dist folder">
676  
677 <    <delete dir="${dist.jdk7.docs.dir}"/>
678 <    <mkdir dir="${dist.jdk7.docs.dir}"/>
677 >    <delete dir="${dist.4jdk7.docs.dir}"/>
678 >    <mkdir dir="${dist.4jdk7.docs.dir}"/>
679  
680 <    <javadoc destdir="${dist.jdk7.docs.dir}"
680 >    <javadoc destdir="${dist.4jdk7.docs.dir}"
681               packagenames="none"
682               link="${jdkapi7docs.url}"
683 <             overview="${jdk7src.dir}/intro.html"
684 <             sourcepath="${jdk7src.dir}"
683 >             overview="${4jdk7src.dir}/intro.html"
684 >             sourcepath="${4jdk7src.dir}:${jdk7src.dir}"
685               classpath=""
686 <             executable="${javadoc7}"
611 <             bootclasspath="${bootclasspath6}"
612 <             source="1.6">
686 >             executable="${javadoc7}">
687        <arg value="-XDignore.symbol.file=true"/>
688 <      <fileset dir="${jdk7src.dir}" defaultexcludes="yes">
688 >      <fileset dir="${4jdk7src.dir}" defaultexcludes="yes">
689          <include name="**/*.java"/>
690        </fileset>
691      </javadoc>
692  
693    </target>
694  
695 <  <target name="jdk7dist-jar"
696 <          depends="jdk7clean, jdk7jar">
695 >  <target name="4jdk7dist-jar"
696 >          depends="4jdk7clean, 4jdk7compile">
697  
698 <    <copy file="${jdk7product.jar}" todir="${dist.dir}"/>
698 >    <copy file="${4jdk7product.jar}" todir="${dist.dir}"/>
699  
700    </target>
701  
# Line 937 | Line 1011
1011  
1012    <!-- jsr166e -->
1013  
940
1014    <target name="jsr166ecompile"
1015 <          depends="init, configure-compiler"
1015 >          depends="configure-compiler"
1016            description="Compiles jsr166e sources">
1017  
1018      <mkdir dir="${build.jsr166e.dir}"/>
1019  
1020 <    <javac srcdir="${jsr166esrc.dir}"
1021 <          destdir="${build.jsr166e.dir}"
1022 <            debug="${build.debug}"
1023 <       debuglevel="${build.debuglevel}"
1024 <      deprecation="${build.deprecation}"
1020 >    <javac srcdir="${topsrc.dir}"
1021 >           destdir="${build.jsr166e.dir}"
1022 >           debug="${build.debug}"
1023 >           debuglevel="${build.debuglevel}"
1024 >           deprecation="${build.deprecation}"
1025             source="1.7"
1026 <             fork="true">
1026 >           classpath=""
1027 >           includeAntRuntime="false"
1028 >           includeJavaRuntime="false"
1029 >           executable="${javac7}"
1030 >           fork="true">
1031  
1032 <      <include name="**/*.java"/>
1032 >      <include name="jsr166e/**/*.java"/>
1033        <compilerarg line="${build.args}"/>
1034        <compilerarg value="-XDignore.symbol.file=true"/>
1035 <      <compilerarg value="${bootclasspath.args}"/>
959 <
960 < <!--       <compilerarg line="-Xlint -Xmaxwarns 1000"/> -->
1035 >      <compilerarg value="-Xlint:all"/>
1036  
1037      </javac>
1038  
# Line 987 | Line 1062
1062  
1063      <javadoc destdir="${build.jsr166ejavadocs.dir}"
1064               packagenames="jsr166e,jsr166e.extra"
1065 <             link="${jdkapidocs.url}"
1065 >             link="${jdkapi7docs.url}"
1066               source="1.7"
1067 <             sourcepath="${topsrc.dir}:${jdksrc.dir}"
1068 <             additionalparam="-XDignore.symbol.file=true" />
1067 >             sourcepath="${topsrc.dir}:${jdk7src.dir}"
1068 >             executable="${javadoc7}"
1069 >             additionalparam="-XDignore.symbol.file=true" >
1070 >      <fileset dir="${topsrc.dir}" defaultexcludes="yes">
1071 >        <include name="jsr166e/**/*.java"/>
1072 >      </fileset>
1073 >    </javadoc>
1074  
1075    </target>
1076  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines