/[cvs]/jsr166/build.xml
ViewVC logotype

Diff of /jsr166/build.xml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.47 by tim, Fri Aug 1 19:34:05 2003 UTC revision 1.131 by jsr166, Fri Feb 1 18:31:17 2013 UTC
# Line 8  Line 8 
8    
9    User-specific settings are read from user.properties.    User-specific settings are read from user.properties.
10    See user.properties.sample for an explanation of some useful settings.    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    As of 2013-02, the very latest lambda 8 jdk is needed for jdk8.
26  ------------------------------------------------------------------------------  ------------------------------------------------------------------------------
27    </description>    </description>
28    
29    <target name="usage" description="Advises user to run with -projecthelp">    <target name="usage" description="Display main targets by running 'ant -projecthelp'">
30      <echo>Run "ant -projecthelp" for full usage information.</echo>      <java classname="org.apache.tools.ant.Main">
31          <arg value="-projecthelp" />
32        </java>
33    </target>    </target>
34    
35    
# Line 21  Line 38 
38    
39    
40    <!-- Compilation options -->    <!-- Compilation options -->
41    <property name="build.sourcelevel"    value="1.5"/>    <property name="build.sourcelevel"    value="6"/>
   <property name="build.docsourcelevel" value="1.4"/>  
42    <property name="build.debug"          value="true"/>    <property name="build.debug"          value="true"/>
43    <property name="build.debuglevel"     value="source,lines,vars"/>    <property name="build.debuglevel"     value="source,lines,vars"/>
44    <property name="build.deprecation"    value="false"/>    <property name="build.deprecation"    value="false"/>
45      <property name="build.javadoc.access" value="protected"/>
46    
47    <!-- Build locations -->    <!-- Build locations -->
48    <property name="build.dir"            location="build"/>    <property name="build.dir"                   location="build"/>
49    <property name="build.classes.dir"    location="${build.dir}/classes"/>    <property name="build.classes.dir"           location="${build.dir}/classes"/>
50    <property name="build.emulation.dir"  location="${build.dir}/emulation"/>    <property name="build.testcases.dir"         location="${build.dir}/testcases"/>
51    <property name="build.testcases.dir"  location="${build.dir}/testcases"/>    <property name="build.loops.dir"             location="${build.dir}/loops"/>
52    <property name="build.lib.dir"        location="${build.dir}/lib"/>    <property name="build.reports.dir"           location="${build.dir}/reports"/>
53    <property name="build.ant.dir"        location="${build.dir}/ant"/>  
54    <property name="build.javadocs.dir"   location="${build.dir}/javadocs"/>    <property name="build.4jdk7.dir"             location="${build.dir}/jsr166-4jdk7"/>
55    <property name="build.stripped.dir"   location="${build.dir}/stripped"/>    <property name="build.4jdk7.classes.dir"     location="${build.4jdk7.dir}/classes"/>
56    <property name="build.reports.dir"    location="${build.dir}/reports"/>    <property name="build.4jdk7.tck.classes.dir" location="${build.4jdk7.dir}/tck-classes"/>
57    <property name="build.doccheck.dir"   location="${build.dir}/doccheck"/>    <property name="build.4jdk7.docs.dir"        location="${build.4jdk7.dir}/docs"/>
58    <property name="build.filter.src.dir" location="${build.dir}/filtersrc"/>  
59    <property name="build.filter.doccheck.dir" location="${build.dir}/filterdocchk"/>    <property name="build.jsr166x.dir"           location="${build.dir}/jsr166x"/>
60      <property name="build.jsr166y.dir"           location="${build.dir}/jsr166y"/>
61      <property name="build.jsr166e.dir"           location="${build.dir}/jsr166e"/>
62      <property name="build.extra166y.dir"         location="${build.dir}/extra166y"/>
63    
64      <property name="build.jsr166x.classes.dir"   location="${build.jsr166x.dir}/classes"/>
65      <property name="build.jsr166y.classes.dir"   location="${build.jsr166y.dir}/classes"/>
66      <property name="build.jsr166e.classes.dir"   location="${build.jsr166e.dir}/classes"/>
67      <property name="build.extra166y.classes.dir" location="${build.extra166y.dir}/classes"/>
68    
69      <!-- JDK locations -->
70      <property name="jdks.home"  location="${user.home}/jdk"/>
71    
72      <macrodef name="defjdklocations">
73        <attribute name="v"/>
74        <sequential>
75        <property name="jdk@{v}.home"   location="${jdks.home}/jdk@{v}"/>
76        <property name="java@{v}"       location="${jdk@{v}.home}/bin/java"/>
77        <property name="javac@{v}"      location="${jdk@{v}.home}/bin/javac"/>
78        <property name="javadoc@{v}"    location="${jdk@{v}.home}/bin/javadoc"/>
79        <property name="jdk@{v}src.dir" location="${jdks.home}/src/jdk@{v}/jdk/src/share/classes"/>
80        <local name="boot.jar.dir"/>
81        <property name="boot.jar.dir"   location="${jdk@{v}.home}/jre/lib"/>
82        <path id="bootclasspath@{v}">
83          <pathelement path="${boot.jar.dir}/resources.jar"/>
84          <pathelement path="${boot.jar.dir}/rt.jar"/>
85          <pathelement path="${boot.jar.dir}/jsse.jar"/>
86          <pathelement path="${boot.jar.dir}/jce.jar"/>
87          <pathelement path="${boot.jar.dir}/charsets.jar"/>
88        </path>
89        <property name="bootclasspath@{v}" value="${toString:bootclasspath@{v}}"/>
90        </sequential>
91      </macrodef>
92    
93      <macrodef name="mirror-dir">
94        <attribute name="src"/>
95        <attribute name="dst"/>
96        <sequential>
97        <delete dir="@{dst}"/>
98        <mkdir dir="@{dst}"/>
99        <copy todir="@{dst}" preservelastmodified="true">
100          <fileset dir="@{src}"/>
101        </copy>
102        </sequential>
103      </macrodef>
104    
105      <defjdklocations v="6"/>
106      <defjdklocations v="7"/>
107      <defjdklocations v="8"/>
108    
109    <!-- Source locations -->    <!-- Source locations -->
110    <property name="src.dir"              location="${basedir}/src/main"/>    <property name="src.dir"              location="${basedir}/src/main"/>
   <property name="emulation.src.dir"    location="${basedir}/src/emulation"/>  
111    <property name="test.src.dir"         location="${basedir}/src/test"/>    <property name="test.src.dir"         location="${basedir}/src/test"/>
112    <property name="ant.src.dir"          location="${basedir}/etc/ant"/>    <property name="loops.src.dir"        location="${basedir}/src/loops"/>
113    <property name="stylesheet.dir"       location="${basedir}/etc/xsl"/>    <property name="tck.src.dir"          location="${test.src.dir}/tck"/>
114      <property name="jtreg.src.dir"        location="${test.src.dir}/jtreg"/>
115    <property name="lib.dir"              location="${basedir}/lib"/>    <property name="lib.dir"              location="${basedir}/lib"/>
116    <property name="dist.dir"             location="${basedir}/dist"/>    <property name="dist.dir"             location="${basedir}/dist"/>
117      <property name="topsrc.dir"           location="${basedir}/src"/>
118    <!-- Distribution locations -->    <property name="4jdk7src.dir"         location="${topsrc.dir}/jdk7"/>
119    <property name="dist.javadocs.dir"    location="${dist.dir}/docs"/>    <property name="jsr166xsrc.dir"       location="${topsrc.dir}/jsr166x"/>
120      <property name="jsr166ysrc.dir"       location="${topsrc.dir}/jsr166y"/>
121      <property name="jsr166esrc.dir"       location="${topsrc.dir}/jsr166e"/>
122      <property name="extra166ysrc.dir"     location="${topsrc.dir}/extra166y"/>
123    
124      <!-- Javadoc locations -->
125      <property name="docs.dir"          location="${build.dir}/docs"/>
126      <property name="4jdk7docs.dir"     location="${build.4jdk7.dir}/docs"/>
127      <property name="jsr166xdocs.dir"   location="${build.jsr166x.dir}/docs"/>
128      <property name="jsr166ydocs.dir"   location="${build.jsr166y.dir}/docs"/>
129      <property name="jsr166edocs.dir"   location="${build.jsr166e.dir}/docs"/>
130      <property name="extra166ydocs.dir" location="${build.extra166y.dir}/docs"/>
131    
132      <property name="dist.docs.dir"          location="${dist.dir}/docs"/>
133      <property name="dist.4jdk7docs.dir"     location="${dist.dir}/jsr166-4jdk7docs"/>
134      <property name="dist.jsr166xdocs.dir"   location="${dist.dir}/jsr166xdocs"/>
135      <property name="dist.jsr166ydocs.dir"   location="${dist.dir}/jsr166ydocs"/>
136      <property name="dist.jsr166edocs.dir"   location="${dist.dir}/jsr166edocs"/>
137      <property name="dist.extra166ydocs.dir" location="${dist.dir}/extra166ydocs"/>
138    
139    <!-- Jar locations -->    <!-- Jar locations -->
140    <property name="product.jar"          location="${build.lib.dir}/jsr166.jar"/>    <property name="product.jar"      location="${build.dir}/jsr166.jar"/>
141    <property name="junit.jar"            location="${lib.dir}/junit.jar"/>    <property name="4jdk7product.jar" location="${build.4jdk7.dir}/jsr166-4jdk7.jar"/>
142    <property name="rt.jar"               location="${java.home}/lib/rt.jar"/>    <property name="jsr166x.jar"      location="${build.jsr166x.dir}/jsr166x.jar"/>
143      <property name="jsr166y.jar"      location="${build.jsr166y.dir}/jsr166y.jar"/>
144      <property name="jsr166e.jar"      location="${build.jsr166e.dir}/jsr166e.jar"/>
145      <property name="extra166y.jar"    location="${build.extra166y.dir}/extra166y.jar"/>
146      <property name="junit.jar"        location="${lib.dir}/junit.jar"/>
147    
148      <!-- Canonical location of jdk API docs, to use with javadoc link attribute -->
149      <property name="jdkapi5docs.url"      value="http://docs.oracle.com/javase/1.5.0/docs/api/"/>
150      <property name="jdkapi6docs.url"      value="http://docs.oracle.com/javase/6/docs/api/"/>
151      <property name="jdkapi7docs.url"      value="http://docs.oracle.com/javase/7/docs/api/"/>
152    
153      <property name="jdkapi8docs.url"      value="http://download.java.net/jdk8/docs/api/"/>
154      <!-- The below does not yet exist as of 2013-01 -->
155      <!-- <property name="jdkapi8docs.url" value="http://docs.oracle.com/javase/8/docs/api/"/> -->
156    
157      <!-- Default jdk api doc location (latest stable release seems best) -->
158      <property name="jdkapidocs.url"       value="${jdkapi7docs.url}"/>
159    
160      <!-- Define the "jtreg" task -->
161      <!-- See the docs in "jtreg -onlineHelp" -->
162      <taskdef name="jtreg" classname="com.sun.javatest.regtest.Main$$Ant"
163               classpath="${lib.dir}/jtreg.jar" />
164    
165      <!-- Test classpath -->
166      <path id="test.classpath">
167        <pathelement location="${build.testcases.dir}"/>
168        <pathelement location="${junit.jar}"/>
169      </path>
170    
171      <macrodef name="run-tck-tests">
172        <attribute name="tck.src.dir" default="${tck.src.dir}"/>
173        <attribute name="source" default="6"/>
174        <attribute name="target"/>
175        <attribute name="workdir"/>
176        <attribute name="classes"/>
177        <attribute name="jvmflags" default=""/>
178        <sequential>
179    
180        <mkdir dir="@{workdir}/tck-classes"/>
181    
182        <javac srcdir="@{tck.src.dir}"
183               destdir="@{workdir}/tck-classes"
184               debug="${build.debug}"
185               debuglevel="${build.debuglevel}"
186               deprecation="${build.deprecation}"
187               source="@{source}"
188               classpath="${junit.jar}"
189               bootclasspath="@{classes}:${bootclasspath@{source}}"
190               includeAntRuntime="false"
191               includeJavaRuntime="false"
192               executable="${javac@{target}}"
193               fork="true">
194    
195          <include name="*.java"/>
196          <compilerarg value="-XDignore.symbol.file=true"/>
197          <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation"/>
198          <compilerarg line="${build.args}"/>
199    
200        </javac>
201    
202    <!-- Files excluded from dist-docs and emulation jar -->      <java classname="JSR166TestCase"
203    <patternset id="unsafe.exclusion">            failonerror="true"
204      <exclude name="java/util/Random.*"/>            jvm="${java@{target}}"
205      <exclude name="sun/misc/Unsafe.*"/>            fork="true">
206    </patternset>          <jvmarg value="-Xbootclasspath/p:@{classes}"/>
207            <jvmarg line="@{jvmflags}"/>
208    <!-- Files excludes from emulation jar -->          <classpath>
209    <patternset id="atomic.exclusion">            <pathelement location="${junit.jar}"/>
210      <exclude name="java/util/concurrent/atomic/AtomicBoolean*"/>            <pathelement location="@{workdir}/tck-classes"/>
211      <exclude name="java/util/concurrent/atomic/AtomicInteger*"/>          </classpath>
212      <exclude name="java/util/concurrent/atomic/AtomicLong*"/>      </java>
     <exclude name="java/util/concurrent/atomic/AtomicReference*"/>  
   </patternset>  
213    
214        </sequential>
215      </macrodef>
216    
217      <!-- ALoops classpath -->
218      <path id="loops.classpath">
219        <pathelement location="${build.loops.dir}"/>
220      </path>
221    
222      <!-- Support @jls tag, used in jdk8+ javadoc -->
223      <property name="javadoc.jls.cite" value="The Java&amp;trade; Language Specification"/>
224      <property name="javadoc.jls.option" value="jls:a:See &lt;cite&gt;${javadoc.jls.cite}&lt;/cite&gt;:"/>
225    
226    <!-- Main targets -->    <!-- Main targets -->
227    
228    <target name="compile"    <target name="dists"
229            depends="init, configure-compiler, prepare-src"            depends="dist, 4jdk7dist, jsr166edist, jsr166ydist, extra166ydist, jsr166xdist"
230            description="Compiles main sources to build folder">            description="Builds all public jars and docs"/>
231    
232      <property name="prepare.src.dir" value="${src.dir}"/>    <target name="compile"
233              depends="configure-compiler"
234              description="Compiles src/main sources to build dir">
235    
236      <mkdir dir="${build.classes.dir}"/>      <mkdir dir="${build.classes.dir}"/>
237    
238  <!--      <javac srcdir="${src.dir}"
239      <echo>javac ${gjc.args}</echo>             destdir="${build.classes.dir}"
240      <echo>bootclasspath=${compile.bootclasspath}</echo>             debug="${build.debug}"
241  -->             debuglevel="${build.debuglevel}"
242               deprecation="${build.deprecation}"
243      <javac srcdir="${prepare.src.dir}"             classpath=""
244            destdir="${build.classes.dir}"             includeAntRuntime="false"
245              debug="${build.debug}"             includeJavaRuntime="false"
246         debuglevel="${build.debuglevel}"             executable="${javac8}"
247        deprecation="${build.deprecation}"             fork="true">
248             source="${build.sourcelevel}"  
249               fork="true">        <include name="**/*.java"/>
250          <compilerarg value="-XDignore.symbol.file=true"/>
251        <compilerarg    line="${gjc.args}"/>        <compilerarg value="-Xlint:all"/>
252        <bootclasspath refid="compile.bootclasspath"/>        <compilerarg line="${build.args}"/>
253    
254      </javac>      </javac>
   
255    </target>    </target>
256    
257    
258    <target name="jar"    <target name="jar"
259            depends="configure-emulation, init-jar, native-jar, emulation-jar"            depends="compile"
260            description="Builds library jar from compiled sources"/>            description="Builds library jar from compiled sources">
261    
262        <jar destfile="${product.jar}">
263          <fileset dir="${build.classes.dir}"/>
264        </jar>
265      </target>
266    
267    
268    <target name="test"    <target name="test"
269            depends="init, configure-tests, report-tests"            depends="configure-tests, report-tests"
270            description="Runs all tests (requires JUnit 3.8.1 in ${ant.home}/lib)" />            description="Runs all tests (requires JUnit 3.8.1 in ${ant.home}/lib)" />
271    
272    
273    <target name="checkstyle"    <target name="docs"
274            depends="filter-src"            description="Builds javadocs for src/main to dist dir">
           description="Reports on style errors in Java source (verbose, mostly chaff)">  
275    
276      <taskdef resource="checkstyletask.properties"      <delete dir="${docs.dir}"/>
277              classpath="${lib.dir}/checkstyle-all-2.4.jar"/>      <mkdir dir="${docs.dir}"/>
278    
279      <checkstyle>      <!-- the packagenames="none" hack below prevents scanning the -->
280        <formatter type="plain"/>  <!-- also available: type="xml" -->      <!-- sourcepath for packages -->
       <fileset dir="${build.filter.src.dir}" includes="**/*.java"/>  
     </checkstyle>  
281    
282        <javadoc destdir="${docs.dir}"
283                 packagenames="none"
284                 link="${jdkapi8docs.url}"
285                 overview="${src.dir}/intro.html"
286                 access="${build.javadoc.access}"
287                 sourcepath="${src.dir}:${jdk8src.dir}"
288                 classpath=""
289                 executable="${javadoc8}">
290          <fileset dir="${src.dir}" defaultexcludes="yes">
291            <include name="**/*.java"/>
292          </fileset>
293          <arg value="-XDignore.symbol.file=true"/>
294          <arg value="-tag"/>
295          <arg value="${javadoc.jls.option}"/>
296        </javadoc>
297    </target>    </target>
298    
299    
300    <target name="doccheck"    <target name="dist"
301            depends="filter-doccheck"            depends="dist-clean, dist-jar, dist-docs"
302            description="Reports on javadoc style errors">            description="Puts all distributable products in single hierarchy"/>
303    
304    
305      <target name="release"
306              depends="dist"
307              description="Puts entire CVS tree, plus distribution productions, in a jar">
308    
309      <delete dir="${build.doccheck.dir}"/>      <property name="release.jar" value="dist/jsr166-${version}-dist.jar"/>
     <mkdir dir="${build.doccheck.dir}"/>  
310    
311      <javadoc doclet="com.sun.tools.doclets.doccheck.DocCheck"      <jar basedir="${basedir}" destfile="${release.jar}">
312           docletpath="${lib.dir}/doccheck.jar"        <!-- <exclude name="build/**"/> -->
313              destdir="${build.doccheck.dir}">        <exclude name="${release.jar}"/>
314        <packageset dir="${build.filter.doccheck.dir}"/>        <exclude name="user.properties"/>
315      </javadoc>        <exclude name="etc/notes/**"/>
316          <exclude name="src/emulation/**"/>
317          <exclude name="**/SyntaxTest.java"/>
318          <exclude name="**/SuperfluousAbstract.java"/>
319        </jar>
320      </target>
321    
322    
323      <target name="clean"
324              description="Removes all build products">
325    
326        <delete dir="${build.dir}"/>
327    
328    </target>    </target>
329    
330    
331    <target name="docs"    <target name="dist-clean"
332            depends="filter-src"            description="Removes all build and distribution products">
           description="Builds javadocs with custom tags to build folder">  
333    
334      <delete dir="${build.javadocs.dir}"/>      <delete dir="${dist.dir}"/>
     <mkdir dir="${build.javadocs.dir}"/>  
335    
336      <javadoc destdir="${build.javadocs.dir}"    </target>
                 link="http://java.sun.com/j2se/1.4.1/docs/api"  
             overview="${src.dir}/intro.html"  
               source="${build.docsourcelevel}">  
   
       <tag name="revised" description="Last revised:"/>  
       <tag name="spec"    description="Specified by:"/>  
       <tag name="editor"  description="Last edited by:"/>  
       <tag name="fixme"   description="FIX ME:"/>  
337    
       <packageset dir="${build.filter.src.dir}"/>  
338    
339      </javadoc>    <!-- Internal targets -->
340    
341    
342      <target name="dist-jar"
343              depends="clean, jar">
344        <copy file="${product.jar}" todir="${dist.dir}"/>
345    </target>    </target>
346    
347      <target name="dist-docs"
348              depends="clean, docs">
349        <mirror-dir src="${docs.dir}" dst="${dist.docs.dir}"/>
350      </target>
351    
   <target name="strip"  
           depends="init, configure-compiler"  
           description="Strip generics from java source (not working yet)">  
352    
353      <mkdir dir="${build.stripped.dir}"/>    <target name="compile-tests"
354              depends="jar">
355    
356      <!--      <mkdir dir="${build.testcases.dir}"/>
357       # javac -s doesn't reliably generate compilable code. It generates  
358       # bridge methods (marked as "synthetic") that can have identical      <javac srcdir="${tck.src.dir}"
359       # signatures to existing methods except for the return value.             destdir="${build.testcases.dir}"
360       -->             debug="${build.debug}"
361      <javac srcdir="${src.dir}"             debuglevel="${build.debuglevel}"
362            destdir="${build.stripped.dir}"             deprecation="${build.deprecation}"
363               source="6"
364               classpath="${junit.jar}"
365               bootclasspath="@{product.jar}:${bootclasspath6}"
366               includeAntRuntime="false"
367               includeJavaRuntime="false"
368               executable="${javac8}"
369               fork="true">
370    
371          <include name="**/*.java"/>
372          <compilerarg value="-XDignore.symbol.file=true"/>
373          <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation"/>
374          <compilerarg line="${build.args}"/>
375    
376        </javac>
377    
378        <javac srcdir="${test.src.dir}"
379               destdir="${build.testcases.dir}"
380               debug="${build.debug}"
381               debuglevel="${build.debuglevel}"
382               deprecation="${build.deprecation}"
383               source="6"
384               classpath=""
385               bootclasspath="@{product.jar}:${bootclasspath6}"
386               includeAntRuntime="false"
387               includeJavaRuntime="false"
388               executable="${javac8}"
389               fork="true">
390    
391          <include name="jsr166/test/**/*.java"/>
392          <compilerarg value="-XDignore.symbol.file=true"/>
393          <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation"/>
394          <compilerarg line="${build.args}"/>
395    
396        </javac>
397    
398    <!--
399        <javac srcdir="${jtreg.src.dir}"
400              destdir="${build.testcases.dir}"
401              debug="${build.debug}"              debug="${build.debug}"
402         debuglevel="${build.debuglevel}"         debuglevel="${build.debuglevel}"
403        deprecation="${build.deprecation}"        deprecation="${build.deprecation}"
404             source="${build.sourcelevel}"             source="${build.sourcelevel}"
405               fork="true">               fork="true">
406    
407        <compilerarg    line="${gjc.args} -s"/>        <compilerarg value="-Xbootclasspath/p:${product.jar}"/>
408        <bootclasspath refid="compile.bootclasspath"/>        <compilerarg value="-XDignore.symbol.file=true"/>
409          <compilerarg line="${build.args}"/>
410    
411      </javac>      </javac>
412    -->
413    
414    </target>    </target>
415    
416      <target name="test-tck"
417              depends="jar"
418              description="Runs tck tests for main directly">
419    
420        <run-tck-tests
421          target="8"
422          workdir="${build.dir}"
423          classes="${product.jar}"/>
424      </target>
425    
426    <target name="dist"    <target name="run-tests"
427            depends="init, dist-clean, dist-jar, dist-docs"            depends="compile-tests">
           description="Puts all distributable products in single hierarchy"/>  
428    
429    <target name="release"      <!-- May be overridden by user.properties -->
430            depends="dist"      <property name="testcase" value="*"/>
           description="Puts entire CVS tree, plus distribution productions, in a jar">  
431    
432  <!--      <mkdir dir="${build.reports.dir}"/>
     #keep build dir? - dl  
     <delete dir="${build.dir}"/>  
 -->  
     <property name="release.jar" value="dist/jsr166-${version}-dist.jar"/>  
433    
434      <jar basedir="${basedir}" destfile="${release.jar}">      <junit printsummary="true"
435        <exclude name="${release.jar}"/>               showoutput="true"
436        <exclude name="user.properties"/>            errorProperty="junit.failed"
437        <exclude name="etc/notes/**"/>          failureProperty="junit.failed"
438        <exclude name="lib/gjc/2.1/**"/>                      dir="${build.reports.dir}"
439        <exclude name="**/SyntaxTest.java"/>                      jvm="${java8}"
440      </jar>                     fork="true">
441    
442    </target>        <jvmarg value="-Xbootclasspath/p:${product.jar}"/>
443          <jvmarg value="-server"/>
444          <jvmarg value="-showversion"/>
445    
446    <target name="clean"        <classpath refid="test.classpath"/>
           description="Removes all build products">  
447    
448      <delete dir="${build.dir}"/>        <formatter type="xml"/>
     <delete dir="${build.classes.dir}"/>  
     <delete dir="${build.lib.dir}"/>  
449    
450    </target>        <batchtest todir="${build.reports.dir}" unless="no.test.tck">
451            <fileset dir="${tck.src.dir}">
452              <include name="**/${testcase}Test.java"/>
453            </fileset>
454          </batchtest>
455    
456          <batchtest todir="${build.reports.dir}" if="do.test.old">
457            <fileset dir="${test.src.dir}">
458              <include name="jsr166/test/**/${testcase}Test.java"/>
459            </fileset>
460          </batchtest>
461    
462    <target name="dist-clean"  <!--
463            description="Removes all build and distribution products">        <batchtest todir="${build.reports.dir}" if="do.test.jtreg">
464            <fileset dir="${jtreg.src.dir}">
465              <include name="**/${testcase}Test.java"/>
466            </fileset>
467          </batchtest>
468    -->
469    
470      <delete dir="${dist.dir}"/>      </junit>
471    
472    </target>    </target>
473    
474    
475    <target name="dist-docs"    <target name="report-tests"
476            depends="filter-src"            depends="run-tests">
           description="Builds javadocs without custom tags to dist folder">  
   
     <delete dir="${dist.javadocs.dir}"/>  
     <mkdir dir="${dist.javadocs.dir}"/>  
477    
478      <javadoc destdir="${dist.javadocs.dir}"      <!-- Sets junit.report.format to frames if redirection is present,
479                  link="http://java.sun.com/j2se/1.4.1/docs/api"           otherwise sets it to noframes. -->
480              overview="${src.dir}/intro.html"      <available property="junit.report.format"
481                source="${build.docsourcelevel}">                    value="frames"
482                  classname="org.apache.xalan.lib.Redirect"
483        />
484        <property name="junit.report.format" value="noframes"/>
485    
486        <packageset dir="${build.filter.src.dir}"/>      <junitreport todir="${build.reports.dir}">
487          <fileset dir="${build.reports.dir}">
488            <include name="TEST-*.xml"/>
489          </fileset>
490          <report format="${junit.report.format}" todir="${build.reports.dir}"
491          />
492        </junitreport>
493    
494      </javadoc>      <fail message="Test Cases Failed" if="junit.failed"/>
495    
496    </target>    </target>
497    
498    
499      <target name="configure-compiler">
500    
501    <!-- Internal targets -->      <property name="unchecked.option" value="-Xlint:unchecked"/>
502    
503        <condition property="warnunchecked.arg" value="${unchecked.option}">
504          <istrue value="${build.warnunchecked}"/>
505        </condition>
506    
507        <property name="warnunchecked.arg" value=""/>
508    
   <target name="init">  
509    
510      <!-- Version is kept in a separate file -->      <!-- Common options in javac invocations -->
511      <loadfile property="version" srcFile="version.properties"/>      <property name="build.args" value="${warnunchecked.arg}"/>
     <echo>Building JSR-166 version ${version}</echo>  
512    
513    </target>    </target>
514    
515    
516    <target name="init-jar">    <target name="configure-tests"
517           depends="configure-compiler">
518    
519      <mkdir dir="${build.lib.dir}"/>      <!-- junit.framework.Protectable is in JUnit 3.8.1 but not in 3.7 -->
520        <available property="junit.available"
521                   classname="junit.framework.Protectable"/>
522    
523    </target>      <!-- Xalan -->
524        <available property="xalan.available"
525                   classname="org.apache.xalan.Version"/>
526    
527    
528    <target name="native-jar"      <!-- Ant 1.6beta and later don't need or want this check -->
529            depends="compile"      <!--
530            unless="build.emulation.true">      <fail message="Need JUnit 3.8.1 in ${ant.home}${file.separator}lib to run tests"
531              unless="junit.available"/>
532    
533      <jar destfile="${product.jar}">      <fail message="Need Xalan 2.5.1 jar in ${ant.home}${file.separator}lib to run tests"
534        <fileset dir="${build.classes.dir}"/>            unless="xalan.available"/>
535      </jar>      -->
536    
537    </target>    </target>
538    
539    
540    <target name="compile-emulation"    <!-- Various demos and test programs -->
           depends="init, configure-compiler"  
           if="build.emulation.true">  
541    
     <mkdir dir="${build.emulation.dir}"/>  
542    
543      <javac srcdir="${emulation.src.dir}"    <target name="loops" depends="configure-compiler"
544            destdir="${build.emulation.dir}"            description="Benchmark from Doug Lea's AQS paper">
545    
546        <mkdir dir="${build.loops.dir}"/>
547    
548        <javac srcdir="${loops.src.dir}"
549              destdir="${build.loops.dir}"
550              debug="${build.debug}"              debug="${build.debug}"
551         debuglevel="${build.debuglevel}"         debuglevel="${build.debuglevel}"
552        deprecation="${build.deprecation}"        deprecation="${build.deprecation}"
553             source="${build.sourcelevel}"             source="${build.sourcelevel}"
554               fork="true">               fork="true">
555    
556        <compilerarg    line="${gjc.args}"/>        <compilerarg line="${build.args}"/>
557        <bootclasspath refid="compile.bootclasspath"/>        <classpath refid="loops.classpath"/>
558          <compilerarg value="-XDignore.symbol.file=true"/>
559    
560      </javac>      </javac>
561    
562        <java classname="ALoops" fork="true">
563          <classpath refid="loops.classpath"/>
564        </java>
565    
566    </target>    </target>
567    
568    
569    <target name="emulation-jar"    <!-- jsr166 4jdk7 -->
           depends="compile-emulation"  
           if="build.emulation.true">  
570    
571      <target name="4jdk7compile"
572              depends="configure-compiler"
573              description="Compiles src/jdk7 sources, targeting jdk7">
574    
575      <jar destfile="${product.jar}" duplicate="add">      <mkdir dir="${build.4jdk7.classes.dir}"/>
576        <fileset dir="${build.classes.dir}">  
577          <patternset refid="atomic.exclusion"/>      <javac srcdir="${4jdk7src.dir}"
578          <patternset refid="unsafe.exclusion"/>             destdir="${build.4jdk7.classes.dir}"
579        </fileset>             debug="${build.debug}"
580        <fileset dir="${build.emulation.dir}"/>             debuglevel="${build.debuglevel}"
581      </jar>             deprecation="${build.deprecation}"
582               source="6"
583               classpath=""
584               bootclasspath="${bootclasspath6}"
585               includeAntRuntime="false"
586               includeJavaRuntime="false"
587               executable="${javac7}"
588               fork="true">
589    
590          <include name="**/*.java"/>
591          <compilerarg value="-XDignore.symbol.file=true"/>
592          <compilerarg value="-Xlint:all"/>
593          <compilerarg line="${build.args}"/>
594    
595        </javac>
596    </target>    </target>
597    
598    
599    <target name="dist-jar"    <target name="4jdk7jar"
600            depends="clean, jar">            depends="4jdk7compile"
601              description="Builds library jar from compiled sources">
602    
603      <copy file="${product.jar}" todir="${dist.dir}"/>      <jar destfile="${4jdk7product.jar}">
604          <fileset dir="${build.4jdk7.classes.dir}"/>
605        </jar>
606    
607    </target>    </target>
608    
609    
610    <target name="compile-ant-filter"    <target name="4jdk7-test-tck"
611            depends="init">            depends="4jdk7jar"
612              description="Runs tck tests for jsr166-4jdk7 directly">
613    
614        <run-tck-tests
615          target="7"
616          workdir="${build.4jdk7.dir}"
617          classes="${4jdk7product.jar}"/>
618      </target>
619    
     <mkdir dir="${build.ant.dir}"/>  
620    
621      <javac srcdir="${ant.src.dir}"    <target name="4jdk7-test-tck-junit"
622            destdir="${build.ant.dir}"            depends="4jdk7compile"
623             source="1.4"            description="Runs tck tests for jsr166-4jdk7 via junit task (experimental)">
624      />  
625        <junit printsummary="true"
626               showoutput="true"
627               errorProperty="junit.failed"
628               failureProperty="junit.failed"
629               includeantruntime="true"
630               jvm="${java7}"
631               fork="true">
632    
633          <jvmarg value="-Xbootclasspath/p:${4jdk7product.jar}"/>
634          <jvmarg value="-server"/>
635    
636          <classpath>
637            <pathelement location="${junit.jar}"/>
638            <pathelement location="${build.4jdk7.tck.classes.dir}"/>
639          </classpath>
640    
641          <formatter type="brief"/>
642    
643          <test name="JSR166TestCase" haltonfailure="no">
644          </test>
645    
646        </junit>
647    </target>    </target>
648    
649      <target name="4jdk7-test-jtreg"
650              depends="4jdk7compile"
651              description="Runs jtreg tests for jsr166-4jdk7 using the jtreg ant task">
652        <delete dir="${build.4jdk7.dir}/JTwork"   quiet="true"/>
653        <delete dir="${build.4jdk7.dir}/JTreport" quiet="true"/>
654        <mkdir dir="${build.4jdk7.dir}/JTwork/scratch"/>
655        <mkdir dir="${build.4jdk7.dir}/JTreport"/>
656        <jtreg dir="${jtreg.src.dir}"
657               jdk="${jdk7.home}"
658               workDir="${build.4jdk7.dir}/JTwork"
659               reportDir="${build.4jdk7.dir}/JTreport">
660    
661          <arg value="-Xbootclasspath/p:${4jdk7product.jar}"/>
662          <arg value="-agentvm"/>
663          <arg value="-v:nopass,fail"/>
664          <arg value="-vmoptions:-esa -ea"/>
665          <arg value="-automatic"/>
666          <arg value="-k:!ignore"/>
667        </jtreg>
668      </target>
669    
   <target name="filter-src"  
           depends="compile-ant-filter">  
670    
671      <mkdir dir="${build.filter.src.dir}"/>    <target name="4jdk7-test"
672              depends="4jdk7-test-tck, 4jdk7-test-jtreg"
673              description="Runs tck and jtreg tests for jsr166-4jdk7">
674      </target>
675    
     <copy todir="${build.filter.src.dir}">  
       <fileset dir="${src.dir}">  
         <include name="**/*.html"/>  
       </fileset>  
     </copy>  
676    
677      <copy todir="${build.filter.src.dir}">    <target name="4jdk7docs"
678        <fileset dir="${src.dir}">            description="Builds javadocs for src/jdk7 to dist dir">
679          <exclude name="**/*.html"/>  
680          <patternset refid="unsafe.exclusion"/>      <delete dir="${4jdk7docs.dir}"/>
681        <mkdir dir="${4jdk7docs.dir}"/>
682    
683        <javadoc destdir="${4jdk7docs.dir}"
684                 packagenames="none"
685                 link="${jdkapi7docs.url}"
686                 overview="${4jdk7src.dir}/intro.html"
687                 access="${build.javadoc.access}"
688                 sourcepath="${4jdk7src.dir}:${jdk7src.dir}"
689                 classpath=""
690                 executable="${javadoc7}">
691          <fileset dir="${4jdk7src.dir}" defaultexcludes="yes">
692            <include name="**/*.java"/>
693        </fileset>        </fileset>
694        <filterchain>        <arg value="-XDignore.symbol.file=true"/>
695        </javadoc>
696      </target>
697    
698          <!--  
699           # This filter gets rid of angle-bracketed type parameters    <target name="4jdk7dist"
700           # so that javadoc can run on the result. The following            depends="4jdk7dist-jar, 4jdk7dist-docs"
701           # heuristic seems to work:            description="Puts all distributable products in single hierarchy"/>
702           #  
703           # For all lines not starting with space(s)-asterisk-space(s),  
704           #   replace <something> with a space, where there may be more    <target name="4jdk7clean"
705           #   than one right angle bracket at the end, and "something"            description="Removes all 4jdk7 build products">
706           #   must not contain parens or pipes. (This may need some  
707           #   tweaking.)      <delete dir="${build.4jdk7.dir}"/>
          -->  
   
         <filterreader classname="jsr166.ant.filters.ReplaceFilter"  
                       classpath="${build.ant.dir}">  
           <param name="notmatching" value="^\s+\*\s.*$"/>  
           <param name="pattern"     value="&lt;[^|>()]+?>+"/>  
           <param name="replacement" value=" "/>  
         </filterreader>  
   
   
         <!--  
          # This filter uncomments lines beginning with "//@" so that  
          # javadoc can see imports that are needed to resolve links  
          # but that shouldn't be in the compiled code.  
          -->  
   
         <filterreader classname="jsr166.ant.filters.ReplaceFilter"  
                       classpath="${build.ant.dir}">  
           <param name="matching"    value="^//@.*$"/>  
           <param name="pattern"     value="^//@"/>  
           <param name="replacement" value=""/>  
         </filterreader>  
       </filterchain>  
     </copy>  
708    
709    </target>    </target>
710    
711    
712      <target name="4jdk7dist-clean"
713              description="Removes all build and distribution products">
714    
715      </target>
716    
717    <target name="filter-doccheck"    <target name="4jdk7dist-jar"
718            depends="filter-src">            depends="4jdk7clean, 4jdk7jar">
719        <copy file="${4jdk7product.jar}" todir="${dist.dir}"/>
720      </target>
721    
     <mkdir dir="${build.filter.doccheck.dir}"/>  
722    
723      <copy todir="${build.filter.doccheck.dir}">    <target name="4jdk7dist-docs"
724        <fileset dir="${build.filter.src.dir}">            depends="4jdk7clean, 4jdk7docs">
725          <include name="**/*.html"/>      <mirror-dir src="${4jdk7docs.dir}" dst="${dist.4jdk7docs.dir}"/>
726        </fileset>    </target>
     </copy>  
727    
     <property name="generic.declarations"  
              value="/** Fake type parameter. */ public interface E {} /** Fake type parameter. */ public interface T {} /** Fake type parameter. */ public interface K {} /** Fake type parameter. */ public interface V {}"  
     />  
728    
729      <copy todir="${build.filter.doccheck.dir}">    <!-- jsr166x -->
       <fileset dir="${build.filter.src.dir}">  
         <exclude name="**/*.html"/>  
       </fileset>  
       <filterchain>  
         <!--  
          # These two filters try to make the source look like  
          # something that doccheck can process. The first removes  
          # -source 1.4 assertions and the second adds in a bunch  
          # of single letter public nested marker interfaces so that  
          # the generic type parameters are recognized.  
          -->  
   
         <filterreader classname="jsr166.ant.filters.ReplaceFilter"  
                       classpath="${build.ant.dir}">  
           <param name="matching"    value="^\s*assert[\s ].*$"/>  
           <param name="pattern"     value="assert"/>  
           <param name="replacement" value="//assert"/>  
         </filterreader>  
   
         <filterreader classname="jsr166.ant.filters.ReplaceFilter"  
                       classpath="${build.ant.dir}">  
           <param name="matching"    value="^([^*]*(class|interface|implements) .*|)\{.*$"/>  
           <param name="pattern"     value="$"/>  
           <param name="replacement" value=" ${generic.declarations}"/>  
         </filterreader>  
730    
731        </filterchain>    <target name="jsr166xcompile"
732      </copy>            depends="configure-compiler"
733              description="Compiles jsr166x sources to build dir">
734    
735        <mkdir dir="${build.jsr166x.classes.dir}"/>
736    
737        <javac srcdir="${topsrc.dir}"
738               destdir="${build.jsr166x.classes.dir}"
739               debug="${build.debug}"
740               debuglevel="${build.debuglevel}"
741               deprecation="${build.deprecation}"
742               classpath=""
743               bootclasspath="${bootclasspath6}"
744               source="5"
745               includeAntRuntime="false"
746               includeJavaRuntime="false"
747               executable="${javac7}"
748               fork="true">
749    
750          <include name="jsr166x/**/*.java"/>
751          <compilerarg value="-XDignore.symbol.file=true"/>
752          <compilerarg value="-Xlint:all,-unchecked,-rawtypes"/>
753          <compilerarg line="${build.args}"/>
754    
755        </javac>
756    </target>    </target>
757    
758    
759    <target name="compile-tests"    <target name="jsr166xjar"
760            depends="jar">            depends="jsr166xcompile"
761              description="Builds library jar from compiled sources">
762    
763      <mkdir dir="${build.testcases.dir}"/>      <jar destfile="${jsr166x.jar}">
764          <fileset dir="${build.jsr166x.classes.dir}"/>
765        </jar>
766    
767  <!--    </target>
     <echo>javac ${gjc.args}</echo>  
     <echo>bootclasspath=${test.compile.bootclasspath}</echo>  
     <echo>classpath="${test.classpath}"</echo>  
 -->  
768    
     <javac srcdir="${test.src.dir}"  
           destdir="${build.testcases.dir}"  
             debug="${build.debug}"  
        debuglevel="${build.debuglevel}"  
       deprecation="${build.deprecation}"  
            source="${build.sourcelevel}"  
              fork="true">  
769    
770        <compilerarg    line="${gjc.args}"/>    <target name="jsr166xdocs"
771        <bootclasspath refid="test.compile.bootclasspath"/>            description="Builds javadocs to dist dir">
       <classpath     refid="test.classpath"/>  
772    
773      </javac>      <delete dir="${jsr166xdocs.dir}"/>
774        <mkdir dir="${jsr166xdocs.dir}"/>
775    
776        <javadoc destdir="${jsr166xdocs.dir}"
777                 packagenames="jsr166x.*"
778                 link="${jdkapidocs.url}"
779                 access="${build.javadoc.access}"
780                 sourcepath="${topsrc.dir}:${jdk6src.dir}"
781                 bootclasspath="${bootclasspath6}"
782                 source="5"
783                 executable="${javadoc7}">
784          <arg value="-XDignore.symbol.file=true"/>
785    
786        </javadoc>
787    </target>    </target>
788    
789    
790    <target name="run-tests"    <target name="jsr166xdist"
791            depends="compile-tests">            depends="jsr166xdist-jar, jsr166xdist-docs"
792              description="Puts all distributable products in single hierarchy"/>
793    
     <!-- May be overridden by user.properties -->  
     <property name="testcase" value="*"/>  
794    
795      <mkdir dir="${build.reports.dir}"/>    <target name="jsr166xclean"
796              description="Removes all jsr166x build products">
797    
798      <junit printsummary="true"      <delete dir="${build.jsr166x.dir}"/>
              showoutput="true"  
           errorProperty="junit.failed"  
         failureProperty="junit.failed"  
                     dir="${build.reports.dir}"  
                    fork="true">  
799    
800        <jvmarg value="-Xbootclasspath/p:${test.run.bootclasspath}"/>    </target>
801    
       <formatter type="xml"/>  
802    
803        <batchtest todir="${build.reports.dir}">    <target name="jsr166xdist-clean"
804          <fileset dir="${test.src.dir}">            description="Removes all build and distribution products">
           <include name="**/${testcase}Test.java"/>  
         </fileset>  
       </batchtest>  
805    
806      </junit>    </target>
807    
808    
809      <target name="jsr166xdist-jar"
810              depends="jsr166xclean, jsr166xjar">
811        <copy file="${jsr166x.jar}" todir="${dist.dir}"/>
812    </target>    </target>
813    
814      <target name="jsr166xdist-docs"
815              depends="jsr166xclean, jsr166xdocs">
816        <mirror-dir src="${jsr166xdocs.dir}" dst="${dist.jsr166xdocs.dir}"/>
817      </target>
818    
819    <target name="report-tests"    <!-- jsr166y -->
           depends="run-tests">  
820    
     <!-- Sets junit.report.format to frames if Xalan is present,  
          otherwise sets it to noframes. -->  
     <available property="junit.report.format"  
                   value="frames"  
               classname="org.apache.xalan.lib.Redirect"  
     />  
     <property name="junit.report.format" value="noframes"/>  
821    
822      <junitreport todir="${build.reports.dir}">    <target name="jsr166ycompile"
823        <fileset dir="${build.reports.dir}">            depends="configure-compiler"
824          <include name="TEST-*.xml"/>            description="Compiles jsr166y sources">
       </fileset>  
       <report styledir="${stylesheet.dir}"  
                 format="${junit.report.format}"  
                  todir="${build.reports.dir}"  
       />  
     </junitreport>  
825    
826      <fail message="Test Cases Failed" if="junit.failed"/>      <mkdir dir="${build.jsr166y.classes.dir}"/>
827    
828        <javac srcdir="${topsrc.dir}"
829               destdir="${build.jsr166y.classes.dir}"
830               debug="${build.debug}"
831               debuglevel="${build.debuglevel}"
832               deprecation="${build.deprecation}"
833               source="6"
834               classpath=""
835               bootclasspath="${bootclasspath6}"
836               includeAntRuntime="false"
837               includeJavaRuntime="false"
838               executable="${javac7}"
839               fork="true">
840    
841          <include name="jsr166y/**/*.java"/>
842          <compilerarg value="-XDignore.symbol.file=true"/>
843          <compilerarg value="-Xlint:all"/>
844          <compilerarg line="${build.args}"/>
845    
846        </javac>
847    </target>    </target>
848    
849    
850    <target name="configure-compiler">    <target name="jsr166yjar"
851              depends="jsr166ycompile"
852              description="Builds library jar from compiled sources">
853    
854      <property name="gjc.version"      <jar destfile="${jsr166y.jar}" index="true">
855               value="2.2"/>        <fileset dir="${build.jsr166y.classes.dir}"/>
856        </jar>
857    
858      <condition property="novariance.arg" value="-novariance">    </target>
       <and>  
         <equals arg1="${gjc.version}" arg2="2.0"/>  
         <or>  
           <not><isset property="gjc.novariance"/></not>  
           <istrue value="${gjc.novariance}"/>  
         </or>  
       </and>  
     </condition>  
859    
     <property name="novariance.arg"  
              value=""/>  
860    
861      <property name="gjc.dir"    <target name="jsr166ydocs"
862               value="${lib.dir}/gjc"/>            description="Builds javadocs to dist dir">
863    
864      <property name="javac.jar"      <delete dir="${jsr166ydocs.dir}"/>
865            location="${gjc.dir}/${gjc.version}/javac.jar"/>      <mkdir dir="${jsr166ydocs.dir}"/>
866    
867      <property name="collect.jar"      <javadoc destdir="${jsr166ydocs.dir}"
868            location="${gjc.dir}/${gjc.version}/collect${novariance.arg}.jar"/>               packagenames="jsr166y.*"
869                 link="${jdkapidocs.url}"
870                 access="${build.javadoc.access}"
871                 sourcepath="${topsrc.dir}:${jdk6src.dir}"
872                 bootclasspath="${bootclasspath6}"
873                 source="6"
874                 executable="${javadoc7}">
875          <arg value="-XDignore.symbol.file=true"/>
876    
877        </javadoc>
878      </target>
879    
     <condition property="warnunchecked.arg" value="-warnunchecked">  
       <istrue value="${gjc.warnunchecked}"/>  
     </condition>  
880    
881      <property name="warnunchecked.arg" value=""/>    <target name="jsr166ydist"
882              depends="jsr166ydist-jar, jsr166ydist-docs"
883              description="Puts all distributable products in single hierarchy"/>
884    
     <condition property="prepare.src.dir" value="${build.dir}/prepare-src">  
       <istrue value="${build.nothreads}"/>  
     </condition>  
885    
886      <target name="jsr166yclean"
887              description="Removes all jsr166y build products">
888    
889      <!--      <delete dir="${build.jsr166y.dir}"/>
      ! Bootclasspath munging for source compilation.  
      -->  
890    
891      <path id="pre.bootclasspath">    </target>
       <pathelement location="${javac.jar}"/>  
     </path>  
892    
     <path id="compile.bootclasspath">  
       <pathelement location="${build.classes.dir}"/>  
       <pathelement location="${collect.jar}"/>  
       <pathelement location="${rt.jar}"/>  
     </path>  
893    
894      <!-- Flatten paths into platform-appropriate strings -->    <target name="jsr166ydist-clean"
895      <property name="pre.bootclasspath"     refid="pre.bootclasspath"/>            description="Removes all build and distribution products">
     <property name="compile.bootclasspath" refid="compile.bootclasspath"/>  
896    
897      </target>
898    
899      <!-- Common options in javac invocations -->    <target name="jsr166ydist-jar"
900      <property name="gjc.args"            depends="jsr166yclean, jsr166yjar">
901               value="-J-Xbootclasspath/p:${pre.bootclasspath} ${warnunchecked.arg} ${novariance.arg}"      <copy file="${jsr166y.jar}" todir="${dist.dir}"/>
902      />    </target>
903    
904      <target name="jsr166ydist-docs"
905              depends="jsr166yclean, jsr166ydocs">
906        <mirror-dir src="${jsr166ydocs.dir}" dst="${dist.jsr166ydocs.dir}"/>
907    </target>    </target>
908    
909    
910    <target name="prepare-src"    <!-- extra166y -->
           depends="configure-compiler"  
           if="prepare.src.dir">  
911    
     <mkdir dir="${prepare.src.dir}"/>  
     <copy todir="${prepare.src.dir}">  
       <fileset dir="${src.dir}">  
         <exclude name="java/lang/**"/>  
       </fileset>  
     </copy>  
912    
913      <target name="extra166ycompile"
914              depends="configure-compiler, jsr166yjar"
915              description="Compiles extra166y sources">
916    
917        <mkdir dir="${build.extra166y.classes.dir}"/>
918    
919        <javac srcdir="${topsrc.dir}"
920               destdir="${build.extra166y.classes.dir}"
921               debug="${build.debug}"
922               debuglevel="${build.debuglevel}"
923               deprecation="${build.deprecation}"
924               bootclasspath="@{jsr166y.jar}:${bootclasspath6}"
925               classpath=""
926               source="6"
927               includeAntRuntime="false"
928               includeJavaRuntime="false"
929               executable="${javac7}"
930               fork="true">
931    
932          <include name="extra166y/**/*.java"/>
933          <compilerarg value="-XDignore.symbol.file=true"/>
934          <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
935          <compilerarg line="${build.args}"/>
936    
937        </javac>
938    </target>    </target>
939    
940    
941    <target name="configure-emulation">    <target name="extra166yjar"
942              depends="extra166ycompile"
943              description="Builds library jar from compiled sources">
944    
945      <condition property="build.emulation.true">      <jar destfile="${extra166y.jar}" index="true">
946        <or>        <fileset dir="${build.extra166y.classes.dir}"/>
947          <and>      </jar>
           <os family="windows"/>  
           <not>  
             <isset property="build.emulation"/>  
           </not>  
         </and>  
         <istrue value="${build.emulation}"/>  
       </or>  
     </condition>  
948    
949    </target>    </target>
950    
951    
952    <target name="configure-tests"    <target name="extra166ydocs"
953         depends="configure-compiler">            description="Builds javadocs to build dir">
954    
955      <!-- junit.framework.Protectable is in JUnit 3.8.1 but not in 3.7 -->      <delete dir="${extra166ydocs.dir}"/>
956      <available property="junit.available"      <mkdir dir="${extra166ydocs.dir}"/>
                classname="junit.framework.Protectable"/>  
957    
958      <fail message="Need JUnit 3.8.1 in ${ant.home}${file.separator}lib to run tests"      <javadoc destdir="${extra166ydocs.dir}"
959            unless="junit.available"/>               packagenames="extra166y.*"
960                 link="${jdkapidocs.url}"
961                 access="${build.javadoc.access}"
962                 sourcepath="${topsrc.dir}:${jdk6src.dir}"
963                 bootclasspath="${bootclasspath6}"
964                 source="6"
965                 executable="${javadoc7}">
966          <arg value="-XDignore.symbol.file=true"/>
967    
968        </javadoc>
969      </target>
970    
     <!--  
      ! Bootclasspath munging for testing, so JUnit can test our local  
      ! modifications to java.*.  
      -->  
   
     <path id="test.classpath">  
       <pathelement location="${product.jar}"/>  
       <pathelement location="${build.testcases.dir}"/>  
       <pathelement location="${junit.jar}"/>  
     </path>  
971    
972      <path id="test.compile.bootclasspath">    <target name="extra166ydist"
973        <pathelement location="${javac.jar}"/>            depends="extra166ydist-jar, extra166ydist-docs"
974        <pathelement location="${collect.jar}"/>            description="Puts all distributable products in single hierarchy"/>
       <pathelement location="${rt.jar}"/>  
     </path>  
975    
     <path id="test.run.bootclasspath">  
       <pathelement location="${javac.jar}"/>  
       <path refid="test.classpath"/>  
     </path>  
976    
977      <!-- Flatten test classpaths into platform-appropriate strings -->    <target name="extra166yclean"
978      <property name="test.classpath"             refid="test.classpath"/>            description="Removes all extra166y build products">
979      <property name="test.compile.bootclasspath" refid="test.compile.bootclasspath"/>  
980      <property name="test.run.bootclasspath"     refid="test.run.bootclasspath"/>      <delete dir="${build.extra166y.dir}"/>
981    
982    </target>    </target>
983    
984    
985      <target name="extra166ydist-clean"
986              description="Removes all build and distribution products">
987    
988    <!-- Anthill targets -->    </target>
989    
990    <target name="anthill-build"    <target name="extra166ydist-jar"
991            depends="jar, test, docs, dist-docs"/>            depends="extra166yclean, extra166yjar">
992        <copy file="${extra166y.jar}" todir="${dist.dir}"/>
993      </target>
994    
995    <target name="anthill-publish">    <target name="extra166ydist-docs"
996              depends="extra166yclean, extra166ydocs">
997        <mirror-dir src="${extra166ydocs.dir}" dst="${dist.extra166ydocs.dir}"/>
998      </target>
999    
1000      <copy todir="${deployDir}/docs/private">    <!-- jsr166e -->
       <fileset dir="${build.javadocs.dir}"/>  
     </copy>  
1001    
1002      <copy todir="${deployDir}/docs/public">    <target name="jsr166ecompile"
1003        <fileset dir="${dist.javadocs.dir}"/>            depends="configure-compiler"
1004      </copy>            description="Compiles jsr166e sources">
1005    
1006      <copy tofile="${deployDir}/index.html"      <mkdir dir="${build.jsr166e.classes.dir}"/>
           file="${basedir}/etc/anthill-index.html"/>  
1007    
1008      <copy todir="${deployDir}/notes">      <javac srcdir="${topsrc.dir}"
1009        <fileset dir="${basedir}/etc/notes"/>             destdir="${build.jsr166e.classes.dir}"
1010      </copy>             debug="${build.debug}"
1011               debuglevel="${build.debuglevel}"
1012               deprecation="${build.deprecation}"
1013               source="7"
1014               classpath=""
1015               includeAntRuntime="false"
1016               includeJavaRuntime="false"
1017               executable="${javac7}"
1018               fork="true">
1019    
1020          <include name="jsr166e/**/*.java"/>
1021          <compilerarg value="-XDignore.symbol.file=true"/>
1022          <compilerarg value="-Xlint:all"/>
1023          <compilerarg line="${build.args}"/>
1024    
1025        </javac>
1026    </target>    </target>
1027    
1028    
1029    <target name="ng" depends="test">    <target name="jsr166ejar"
1030      <java classname="SuperfluousAbstract" fork="true">            depends="jsr166ecompile"
1031              description="Builds library jar from compiled sources">
1032    
1033        <jvmarg value="-Xbootclasspath/p:${test.run.bootclasspath}"/>      <jar destfile="${jsr166e.jar}" index="true">
1034          <fileset dir="${build.jsr166e.classes.dir}"/>
1035        </jar>
1036    
1037      </java>    </target>
1038    
1039    
1040      <target name="jsr166edocs"
1041              description="Builds javadocs to build dir">
1042    
1043        <delete dir="${jsr166edocs.dir}"/>
1044        <mkdir dir="${jsr166edocs.dir}"/>
1045    
1046        <javadoc destdir="${jsr166edocs.dir}"
1047                 packagenames="jsr166e.*"
1048                 link="${jdkapidocs.url}"
1049                 access="${build.javadoc.access}"
1050                 sourcepath="${topsrc.dir}:${jdk7src.dir}"
1051                 source="7"
1052                 executable="${javadoc7}">
1053          <arg value="-XDignore.symbol.file=true"/>
1054    
1055        </javadoc>
1056      </target>
1057    
1058    
1059      <target name="jsr166e-test-tck"
1060              depends="jsr166ejar"
1061              description="Runs tck tests for jsr166e">
1062    
1063        <run-tck-tests
1064          tck.src.dir="${test.src.dir}/tck-jsr166e"
1065          source="7"
1066          target="8"
1067          workdir="${build.jsr166e.dir}"
1068          classes="${jsr166e.jar}"/>
1069      </target>
1070    
1071    
1072      <target name="jsr166edist"
1073              depends="jsr166edist-jar, jsr166edist-docs"
1074              description="Puts all distributable products in single hierarchy"/>
1075    
1076    
1077      <target name="jsr166eclean"
1078              description="Removes all jsr166e build products">
1079        <delete dir="${build.jsr166e.dir}"/>
1080      </target>
1081    
1082    
1083      <target name="jsr166edist-clean"
1084              description="Removes all build and distribution products">
1085    
1086      </target>
1087    
1088      <target name="jsr166edist-jar"
1089              depends="jsr166eclean, jsr166ejar">
1090        <copy file="${jsr166e.jar}" todir="${dist.dir}"/>
1091      </target>
1092    
1093      <target name="jsr166edist-docs"
1094              depends="jsr166eclean, jsr166edocs">
1095        <mirror-dir src="${jsr166edocs.dir}" dst="${dist.jsr166edocs.dir}"/>
1096      </target>
1097    
1098    
1099    <!-- Find buglets that can be detected by static build tools -->
1100    
1101      <target name="lint">
1102        <antcall target="dists">
1103          <param name="build.javadoc.access" value="private"/>
1104        </antcall>
1105    </target>    </target>
1106    
1107    

Legend:
Removed from v.1.47  
changed lines
  Added in v.1.131

dl@cs.oswego.edu
ViewVC Help
Powered by ViewVC 1.1.27