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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.50  
changed lines
  Added in v.1.151

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