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.100 by jsr166, Sat Jan 19 17:15:44 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 +  <!--   property name="javadoc.jls.cite" value="The Java&trade; Language Specification" -->
173 +  <property name="javadoc.jls.cite" value="The Java Language Specification"/>
174 +  <property name="javadoc.jls.option" value="jls:a:See &lt;cite&gt;${javadoc.jls.cite}&lt;/cite&gt;:"/>
175  
176    <!-- Main targets -->
177  
# Line 140 | Line 180
180            description="Builds all public jars and docs"/>
181  
182    <target name="compile"
183 <          depends="init, configure-compiler"
184 <          description="Compiles main sources to build folder">
183 >          depends="configure-compiler"
184 >          description="Compiles src/main sources to build folder">
185  
186      <mkdir dir="${build.classes.dir}"/>
187  
188      <javac srcdir="${src.dir}"
189 <          destdir="${build.classes.dir}"
190 <            debug="${build.debug}"
191 <       debuglevel="${build.debuglevel}"
192 <      deprecation="${build.deprecation}"
193 <           source="${build.sourcelevel}"
194 <             fork="true">
189 >           destdir="${build.classes.dir}"
190 >           debug="${build.debug}"
191 >           debuglevel="${build.debuglevel}"
192 >           deprecation="${build.deprecation}"
193 >           classpath=""
194 >           includeAntRuntime="false"
195 >           includeJavaRuntime="false"
196 >           executable="${javac8}"
197 >           fork="true">
198  
199        <include name="**/*.java"/>
200 +      <compilerarg line="${build.args}"/>
201        <compilerarg value="-XDignore.symbol.file=true"/>
202 +      <compilerarg value="-Xlint:all"/>
203  
204   <!--
205        <exclude name="java/lang/**"/>
# Line 189 | Line 234
234  
235  
236    <target name="docs"
237 <          description="Builds javadocs with custom tags to build folder">
237 >          description="Builds javadocs for src/main">
238  
239 <    <delete dir="${build.javadocs.dir}"/>
240 <    <mkdir dir="${build.javadocs.dir}"/>
239 >    <delete dir="${dist.javadocs.dir}"/>
240 >    <mkdir dir="${dist.javadocs.dir}"/>
241  
242      <!-- the packagenames="none" hack below prevents scanning the -->
243      <!-- sourcepath for packages -->
244  
245 <    <javadoc destdir="${build.javadocs.dir}"
245 >    <javadoc destdir="${dist.javadocs.dir}"
246               packagenames="none"
247 <             link="${jdkapidocs.url}"
247 >             link="${jdkapi8docs.url}"
248               overview="${src.dir}/intro.html"
249 <             sourcepath="${src.dir}:${jdksrc.dir}"
250 <             additionalparam="-XDignore.symbol.file=true" >
249 >             sourcepath="${src.dir}:${jdk8src.dir}"
250 >             classpath=""
251 >             executable="${javadoc8}">
252 >      <arg value="-XDignore.symbol.file=true"/>
253 >      <arg value="-tag"/>
254 >      <arg value="${javadoc.jls.option}"/>
255        <fileset dir="${src.dir}" defaultexcludes="yes">
256          <include name="**/*.java"/>
257        </fileset>
# Line 213 | Line 262
262  
263  
264    <target name="dist"
265 <          depends="init, dist-clean, dist-jar, dist-docs"
265 >          depends="init, dist-clean, dist-jar, docs"
266            description="Puts all distributable products in single hierarchy"/>
267  
268  
# Line 257 | Line 306
306  
307  
308  
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
309    <!-- Internal targets -->
310  
311  
# Line 504 | Line 529
529    </target>
530  
531  
532 <  <!-- jdk7 -->
532 >  <!-- jsr166 4jdk7 -->
533  
534  
535 <  <target name="jdk7compile"
535 >  <target name="4jdk7compile"
536            depends="configure-compiler"
537 <          description="Compiles src/jdk7 sources">
537 >          description="Compiles src/jdk7 sources, targeting jdk7">
538  
539 <    <mkdir dir="${build.jdk7.classes.dir}"/>
539 >    <mkdir dir="${build.4jdk7.classes.dir}"/>
540  
541 <    <javac srcdir="${jdk7src.dir}"
542 <           destdir="${build.jdk7.classes.dir}"
541 >    <javac srcdir="${4jdk7src.dir}"
542 >           destdir="${build.4jdk7.classes.dir}"
543             debug="${build.debug}"
544             debuglevel="${build.debuglevel}"
545             deprecation="${build.deprecation}"
# Line 523 | Line 548
548             bootclasspath="${bootclasspath6}"
549             includeAntRuntime="false"
550             includeJavaRuntime="false"
551 <           executable="${javac6}"
551 >           executable="${javac7}"
552             fork="true">
553  
554        <include name="**/*.java"/>
# Line 533 | Line 558
558  
559      </javac>
560  
561 <  </target>
561 >    <mkdir dir="${build.4jdk7.lib.dir}"/>
562  
563 +    <jar destfile="${4jdk7product.jar}" index="true">
564 +      <fileset dir="${build.4jdk7.classes.dir}"/>
565 +    </jar>
566  
567 +    <mkdir dir="${build.4jdk7.tck.classes.dir}"/>
568  
569 <  <target name="jdk7jar"
570 <          depends="jdk7compile"
571 <          description="Builds library jar from compiled sources">
569 >    <javac srcdir="${tck.src.dir}"
570 >           destdir="${build.4jdk7.tck.classes.dir}"
571 >           debug="${build.debug}"
572 >           debuglevel="${build.debuglevel}"
573 >           deprecation="${build.deprecation}"
574 >           source="1.6"
575 >           classpath="${junit.jar}"
576 >           bootclasspath="${4jdk7product.jar}:${bootclasspath6}"
577 >           includeAntRuntime="false"
578 >           includeJavaRuntime="false"
579 >           executable="${javac7}"
580 >           fork="true">
581  
582 <    <mkdir dir="${build.jdk7.lib.dir}"/>
582 >      <include name="**/*.java"/>
583 >      <compilerarg line="${build.args}"/>
584 >      <compilerarg value="-XDignore.symbol.file=true"/>
585 >      <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation"/>
586  
587 <    <jar destfile="${jdk7product.jar}" index="true">
547 <      <fileset dir="${build.jdk7.classes.dir}"/>
548 <    </jar>
587 >    </javac>
588  
589    </target>
590  
591  
592 +  <target name="4jdk7-test-tck"
593 +          depends="4jdk7compile"
594 +          description="Runs tck tests for jsr166-4jdk7 directly">
595 +    <run-tck-tests
596 +      jvm="${java7}"
597 +      tck.classes="${build.4jdk7.tck.classes.dir}"
598 +      product.jar="${4jdk7product.jar}"/>
599 +  </target>
600  
601 <  <target name="jdk7docs"
601 >
602 >  <target name="4jdk7-test-tck-junit"
603 >          depends="4jdk7compile"
604 >          description="Runs tck tests for jsr166-4jdk7 via junit task (experimental)">
605 >
606 >    <junit printsummary="true"
607 >           showoutput="true"
608 >           errorProperty="junit.failed"
609 >           failureProperty="junit.failed"
610 >           includeantruntime="true"
611 >           jvm="${java7}"
612 >           fork="true">
613 >
614 >      <jvmarg value="-Xbootclasspath/p:${4jdk7product.jar}"/>
615 >      <jvmarg value="-server"/>
616 >
617 >      <classpath>
618 >        <pathelement location="${junit.jar}"/>
619 >        <pathelement location="${build.4jdk7.tck.classes.dir}"/>
620 >      </classpath>
621 >
622 >      <formatter type="brief"/>
623 >
624 >      <test name="JSR166TestCase" haltonfailure="no">
625 >      </test>
626 >
627 >    </junit>
628 >  </target>
629 >
630 >
631 >  <target name="4jdk7docs"
632            description="Builds javadocs with custom tags to build folder">
633  
634 <    <delete dir="${build.jdk7.docs.dir}"/>
635 <    <mkdir dir="${build.jdk7.docs.dir}"/>
634 >    <delete dir="${build.4jdk7.docs.dir}"/>
635 >    <mkdir dir="${build.4jdk7.docs.dir}"/>
636  
637 <    <javadoc destdir="${build.jdk7.docs.dir}"
637 >    <javadoc destdir="${build.4jdk7.docs.dir}"
638               packagenames="none"
639               link="${jdkapi7docs.url}"
640 <             overview="${jdk7src.dir}/intro.html"
641 <             sourcepath="${jdk7src.dir}"
565 <             bootclasspath="${bootclasspath6}"
640 >             overview="${4jdk7src.dir}/intro.html"
641 >             sourcepath="${4jdk7src.dir}:${jdk7src.dir}"
642               classpath=""
643 <             source="1.6"
644 <             executable="${javadoc7}"
645 <             additionalparam="-XDignore.symbol.file=true" >
570 <      <fileset dir="${jdk7src.dir}" defaultexcludes="yes">
643 >             executable="${javadoc7}">
644 >      <arg value="-XDignore.symbol.file=true"/>
645 >      <fileset dir="${4jdk7src.dir}" defaultexcludes="yes">
646          <include name="**/*.java"/>
647        </fileset>
648      </javadoc>
# Line 575 | Line 650
650    </target>
651  
652  
653 <  <target name="jdk7dist"
654 <          depends="jdk7dist-clean, jdk7dist-jar, jdk7dist-docs"
653 >  <target name="4jdk7dist"
654 >          depends="4jdk7dist-clean, 4jdk7dist-jar, 4jdk7dist-docs"
655            description="Puts all distributable products in single hierarchy"/>
656  
657  
658  
659 <  <target name="jdk7clean"
659 >  <target name="4jdk7clean"
660            description="Removes all build products">
661  
662 <    <delete dir="${build.jdk7.dir}"/>
662 >    <delete dir="${build.4jdk7.dir}"/>
663  
664    </target>
665  
666  
667  
668 <  <target name="jdk7dist-clean"
668 >  <target name="4jdk7dist-clean"
669            description="Removes all build and distribution products">
670  
671    </target>
672  
673 <  <target name="jdk7dist-docs"
673 >  <target name="4jdk7dist-docs"
674            description="Builds javadocs without custom tags to dist folder">
675  
676 <    <delete dir="${dist.jdk7.docs.dir}"/>
677 <    <mkdir dir="${dist.jdk7.docs.dir}"/>
676 >    <delete dir="${dist.4jdk7.docs.dir}"/>
677 >    <mkdir dir="${dist.4jdk7.docs.dir}"/>
678  
679 <    <javadoc destdir="${dist.jdk7.docs.dir}"
679 >    <javadoc destdir="${dist.4jdk7.docs.dir}"
680               packagenames="none"
681               link="${jdkapi7docs.url}"
682 <             overview="${jdk7src.dir}/intro.html"
683 <             sourcepath="${jdk7src.dir}"
682 >             overview="${4jdk7src.dir}/intro.html"
683 >             sourcepath="${4jdk7src.dir}:${jdk7src.dir}"
684               classpath=""
685 <             executable="${javadoc7}"
611 <             bootclasspath="${bootclasspath6}"
612 <             source="1.6">
685 >             executable="${javadoc7}">
686        <arg value="-XDignore.symbol.file=true"/>
687 <      <fileset dir="${jdk7src.dir}" defaultexcludes="yes">
687 >      <fileset dir="${4jdk7src.dir}" defaultexcludes="yes">
688          <include name="**/*.java"/>
689        </fileset>
690      </javadoc>
691  
692    </target>
693  
694 <  <target name="jdk7dist-jar"
695 <          depends="jdk7clean, jdk7jar">
694 >  <target name="4jdk7dist-jar"
695 >          depends="4jdk7clean, 4jdk7compile">
696  
697 <    <copy file="${jdk7product.jar}" todir="${dist.dir}"/>
697 >    <copy file="${4jdk7product.jar}" todir="${dist.dir}"/>
698  
699    </target>
700  
# Line 937 | Line 1010
1010  
1011    <!-- jsr166e -->
1012  
940
1013    <target name="jsr166ecompile"
1014 <          depends="init, configure-compiler"
1014 >          depends="configure-compiler"
1015            description="Compiles jsr166e sources">
1016  
1017      <mkdir dir="${build.jsr166e.dir}"/>
1018  
1019 <    <javac srcdir="${jsr166esrc.dir}"
1020 <          destdir="${build.jsr166e.dir}"
1021 <            debug="${build.debug}"
1022 <       debuglevel="${build.debuglevel}"
1023 <      deprecation="${build.deprecation}"
1019 >    <javac srcdir="${topsrc.dir}"
1020 >           destdir="${build.jsr166e.dir}"
1021 >           debug="${build.debug}"
1022 >           debuglevel="${build.debuglevel}"
1023 >           deprecation="${build.deprecation}"
1024             source="1.7"
1025 <             fork="true">
1025 >           classpath=""
1026 >           includeAntRuntime="false"
1027 >           includeJavaRuntime="false"
1028 >           executable="${javac7}"
1029 >           fork="true">
1030  
1031 <      <include name="**/*.java"/>
1031 >      <include name="jsr166e/**/*.java"/>
1032        <compilerarg line="${build.args}"/>
1033        <compilerarg value="-XDignore.symbol.file=true"/>
1034 <      <compilerarg value="${bootclasspath.args}"/>
959 <
960 < <!--       <compilerarg line="-Xlint -Xmaxwarns 1000"/> -->
1034 >      <compilerarg value="-Xlint:all"/>
1035  
1036      </javac>
1037  
# Line 987 | Line 1061
1061  
1062      <javadoc destdir="${build.jsr166ejavadocs.dir}"
1063               packagenames="jsr166e,jsr166e.extra"
1064 <             link="${jdkapidocs.url}"
1064 >             link="${jdkapi7docs.url}"
1065               source="1.7"
1066 <             sourcepath="${topsrc.dir}:${jdksrc.dir}"
1067 <             additionalparam="-XDignore.symbol.file=true" />
1066 >             sourcepath="${topsrc.dir}:${jdk7src.dir}"
1067 >             executable="${javadoc7}"
1068 >             additionalparam="-XDignore.symbol.file=true" >
1069 >      <fileset dir="${topsrc.dir}" defaultexcludes="yes">
1070 >        <include name="jsr166e/**/*.java"/>
1071 >      </fileset>
1072 >    </javadoc>
1073  
1074    </target>
1075  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines