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

Diff of /jsr166/build.xml

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

revision 1.28 by tim, Wed May 28 13:37:59 2003 UTC revision 1.183 by jsr166, Sat Sep 26 17:58:52 2015 UTC
# Line 1  Line 1 
1  <project name="jsr166" default="usage">  <project name="jsr166" default="usage"
2      xmlns:if="ant:if" xmlns:unless="ant:unless">
3    
4    <description>    <description>
5      Build file for JSR-166  ------------------------------------------------------------------------------
6      Build file for JSR-166
7    
8      JUnit 3.8 or better must be in ${ant.home}/lib for the test target to work.    Usage: ant [target]
9    </description>  
10      User-specific settings are read from user.properties.
11      See user.properties.sample for an explanation of some useful settings.
12    
13      The repository contains all dependencies except for ant and the JDK
14      itself.  Because the JDK version matters and because different
15      targets require different JDKs, we assume that users have created a
16      hierarchy containing:
17      $HOME/jdk/jdk6
18      $HOME/jdk/jdk7
19      $HOME/jdk/jdk8
20      $HOME/jdk/jdk9
21      where each of the above is a JDK or a symlink to same, and
22      $HOME/jdk/src/jdk6
23      $HOME/jdk/src/jdk7
24      $HOME/jdk/src/jdk8
25      $HOME/jdk/src/jdk9
26      where each of the above is a complete JDK source tree
27      (e.g. mercurial forest) or a symlink to same.
28    
29      Alternatively, define ant variables thus:
30      ant -Djdk$N.home=...
31      for $N in 6 7 8 9 ...
32    
33      As of 2015-09, there is incomplete hacky support for jigsaw
34      Build for jigsaw using something like:
35      ant -Djdk9.home="$HOME/jdk/jigsaw" -Djdk9.src.dir="$HOME/jdk/src/jigsaw" clean test dist
36      "docs" target is still broken.
37    ------------------------------------------------------------------------------
38      </description>
39    
40    <target name="usage" description="Prints this message">    <!-- Display main targets by running 'ant -projecthelp' -->
41      <echo>    <target name="usage">
42  ant [target], where target is one of:      <java classname="org.apache.tools.ant.Main">
43          <arg value="-projecthelp" />
44   usage       (default) Prints this message      </java>
  compile     Compiles all sources to build folder  
  jar         Builds library jar from compiled sources  
  test        Runs all tests (requires JUnit 1.8 in ${ant.home}/lib)  
  docs        Builds javadocs with custom tags to build folder  
  dist-docs   Builds javadocs without custom tags to dist folder  
  dist        Puts all distributable products in single hierarchy  
   
  clean       Removes all build products  
  dist-clean  Removes all build and distribution products  
   
  checkstyle  Reports on style errors in Java source (verbose, mostly chaff)  
  doccheck    Reports on javadoc style errors (not working yet)  
     </echo>  
45    </target>    </target>
46    
47      <!-- HOWTO printf debug: <echo message="prop=${prop}"/> -->
48    
49    <!-- User-specific settings -->    <!-- User-specific settings -->
50    <property file="user.properties"/>    <property file="user.properties"/>
51    
   <!-- Set build.warnings in user.properties to turn on -warnunchecked -->  
   <!-- <property name="build.warnings" value=""/> -->  
   
52    
53    <!-- Compilation options -->    <!-- Compilation options -->
54    <property name="build.sourcelevel"    value="1.5"/>    <property name="build.sourcelevel"    value="6"/>
   <property name="build.docsourcelevel" value="1.4"/>  
55    <property name="build.debug"          value="true"/>    <property name="build.debug"          value="true"/>
56    <property name="build.debuglevel"     value="source,lines,vars"/>    <property name="build.debuglevel"     value="source,lines,vars"/>
57    <property name="build.deprecation"    value="false"/>    <property name="build.deprecation"    value="false"/>
58      <property name="build.javadoc.access" value="protected"/>
59    
60    <!-- Build locations -->    <!-- Build locations -->
61    <property name="build.dir"            location="build"/>    <property name="build.dir"                   location="build"/>
62    <property name="build.classes.dir"    location="${build.dir}/classes"/>    <property name="build.classes.dir"           location="${build.dir}/classes"/>
63    <property name="build.emulation.dir"  location="${build.dir}/emulation"/>    <property name="build.testcases.dir"         location="${build.dir}/testcases"/>
64    <property name="build.testcases.dir"  location="${build.dir}/testcases"/>    <property name="build.loops.dir"             location="${build.dir}/loops"/>
65    <property name="build.lib.dir"        location="${build.dir}/lib"/>    <property name="build.reports.dir"           location="${build.dir}/reports"/>
66    <property name="build.ant.dir"        location="${build.dir}/ant"/>  
67    <property name="build.javadocs.dir"   location="${build.dir}/javadocs"/>    <property name="build.4jdk7.dir"             location="${build.dir}/jsr166-4jdk7"/>
68    <property name="build.stripped.dir"   location="${build.dir}/stripped"/>    <property name="build.4jdk7.classes.dir"     location="${build.4jdk7.dir}/classes"/>
69    <property name="build.reports.dir"    location="${build.dir}/reports"/>    <property name="build.4jdk7.tck.classes.dir" location="${build.4jdk7.dir}/tck-classes"/>
70    <property name="build.doccheck.dir"   location="${build.dir}/doccheck"/>    <property name="build.4jdk7.docs.dir"        location="${build.4jdk7.dir}/docs"/>
71    <property name="build.filter.src.dir" location="${build.dir}/filtersrc"/>  
72      <property name="build.jsr166x.dir"           location="${build.dir}/jsr166x"/>
73      <property name="build.jsr166y.dir"           location="${build.dir}/jsr166y"/>
74      <property name="build.jsr166e.dir"           location="${build.dir}/jsr166e"/>
75      <property name="build.extra166y.dir"         location="${build.dir}/extra166y"/>
76    
77      <property name="build.jsr166x.classes.dir"   location="${build.jsr166x.dir}/classes"/>
78      <property name="build.jsr166y.classes.dir"   location="${build.jsr166y.dir}/classes"/>
79      <property name="build.jsr166e.classes.dir"   location="${build.jsr166e.dir}/classes"/>
80      <property name="build.extra166y.classes.dir" location="${build.extra166y.dir}/classes"/>
81    
82      <!-- JDK locations -->
83      <property name="jdks.home"  location="${user.home}/jdk"/>
84    
85      <macrodef name="defjdklocations">
86        <attribute name="v"/>
87        <sequential>
88        <property name="jdk@{v}.home"   location="${jdks.home}/jdk@{v}"/>
89        <property name="java@{v}"       location="${jdk@{v}.home}/bin/java"/>
90        <property name="javac@{v}"      location="${jdk@{v}.home}/bin/javac"/>
91        <property name="javadoc@{v}"    location="${jdk@{v}.home}/bin/javadoc"/>
92        <local name="have.java.base"/>
93        <available property="have.java.base"
94          file="${jdks.home}/src/jdk@{v}/jdk/src/java.base/share/classes" type="dir"/>
95        <property name="jdk@{v}src.dir" location="${jdks.home}/src/jdk@{v}/jdk/src/java.base/share/classes"
96          if:set="have.java.base"/>
97        <property name="jdk@{v}src.dir" location="${jdks.home}/src/jdk@{v}/jdk/src/share/classes"
98          unless:set="have.java.base"/>
99        <local name="modules"/>
100        <available property="modules" file="${jdk@{v}.home}/jmods" type="dir"/>
101        <local name="boot.jar.dir"/>
102        <property name="boot.jar.dir"   location="${jdk@{v}.home}/jre/lib" unless:set="modules"/>
103        <path id="bootclasspath@{v}" unless:set="modules">
104          <pathelement path="${boot.jar.dir}/resources.jar"/>
105          <pathelement path="${boot.jar.dir}/rt.jar"/>
106          <pathelement path="${boot.jar.dir}/jsse.jar"/>
107          <pathelement path="${boot.jar.dir}/jce.jar"/>
108          <pathelement path="${boot.jar.dir}/charsets.jar"/>
109        </path>
110        <property name="bootclasspath@{v}" value="${toString:bootclasspath@{v}}" unless:set="modules"/>
111        </sequential>
112      </macrodef>
113    
114      <macrodef name="mirror-dir">
115        <attribute name="src"/>
116        <attribute name="dst"/>
117        <sequential>
118        <delete dir="@{dst}"/>
119        <mkdir dir="@{dst}"/>
120        <copy todir="@{dst}" preservelastmodified="true">
121          <fileset dir="@{src}"/>
122        </copy>
123        </sequential>
124      </macrodef>
125    
126      <defjdklocations v="6"/>
127      <defjdklocations v="7"/>
128      <defjdklocations v="8"/>
129      <defjdklocations v="9"/>
130    
131    <!-- Source locations -->    <!-- Source locations -->
132    <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"/>  
133    <property name="test.src.dir"         location="${basedir}/src/test"/>    <property name="test.src.dir"         location="${basedir}/src/test"/>
134    <property name="ant.src.dir"          location="${basedir}/etc/ant"/>    <property name="loops.src.dir"        location="${basedir}/src/loops"/>
135    <property name="stylesheet.dir"       location="${basedir}/etc/xsl"/>    <property name="tck.src.dir"          location="${test.src.dir}/tck"/>
136      <property name="jtreg7.src.dir"       location="${test.src.dir}/jtreg-jdk7"/>
137      <property name="jtreg8.src.dir"       location="${test.src.dir}/jtreg"/>
138      <property name="jtreg9.src.dir"       location="${test.src.dir}/jtreg"/>
139      <property name="jtreg.src.dir"        location="${jtreg9.src.dir}"/>
140    <property name="lib.dir"              location="${basedir}/lib"/>    <property name="lib.dir"              location="${basedir}/lib"/>
141    <property name="dist.dir"             location="${basedir}/dist"/>    <property name="dist.dir"             location="${basedir}/dist"/>
142      <property name="topsrc.dir"           location="${basedir}/src"/>
143    <!-- Distribution locations -->    <property name="4jdk7src.dir"         location="${topsrc.dir}/jdk7"/>
144    <property name="dist.javadocs.dir"    location="${dist.dir}/docs"/>    <property name="jsr166xsrc.dir"       location="${topsrc.dir}/jsr166x"/>
145      <property name="jsr166ysrc.dir"       location="${topsrc.dir}/jsr166y"/>
146      <property name="jsr166esrc.dir"       location="${topsrc.dir}/jsr166e"/>
147      <property name="extra166ysrc.dir"     location="${topsrc.dir}/extra166y"/>
148    
149      <!-- Javadoc locations -->
150      <property name="docs.dir"          location="${build.dir}/docs"/>
151      <property name="4jdk7docs.dir"     location="${build.4jdk7.dir}/docs"/>
152      <property name="jsr166xdocs.dir"   location="${build.jsr166x.dir}/docs"/>
153      <property name="jsr166ydocs.dir"   location="${build.jsr166y.dir}/docs"/>
154      <property name="jsr166edocs.dir"   location="${build.jsr166e.dir}/docs"/>
155      <property name="extra166ydocs.dir" location="${build.extra166y.dir}/docs"/>
156    
157      <property name="dist.docs.dir"          location="${dist.dir}/docs"/>
158      <property name="dist.4jdk7docs.dir"     location="${dist.dir}/jsr166-4jdk7docs"/>
159      <property name="dist.jsr166xdocs.dir"   location="${dist.dir}/jsr166xdocs"/>
160      <property name="dist.jsr166ydocs.dir"   location="${dist.dir}/jsr166ydocs"/>
161      <property name="dist.jsr166edocs.dir"   location="${dist.dir}/jsr166edocs"/>
162      <property name="dist.extra166ydocs.dir" location="${dist.dir}/extra166ydocs"/>
163    
164    <!-- Jar locations -->    <!-- Jar locations -->
165    <property name="product.jar"          location="${build.lib.dir}/jsr166.jar"/>    <property name="product.jar"      location="${build.dir}/jsr166.jar"/>
166    <property name="javac.jar"            location="${lib.dir}/javac.jar"/>    <property name="4jdk7product.jar" location="${build.4jdk7.dir}/jsr166-4jdk7.jar"/>
167    <property name="collect.jar"          location="${lib.dir}/collect.jar"/>    <property name="jsr166x.jar"      location="${build.jsr166x.dir}/jsr166x.jar"/>
168    <property name="junit.jar"            location="${lib.dir}/junit.jar"/>    <property name="jsr166y.jar"      location="${build.jsr166y.dir}/jsr166y.jar"/>
169    <property name="rt.jar"               location="${java.home}/lib/rt.jar"/>    <property name="jsr166e.jar"      location="${build.jsr166e.dir}/jsr166e.jar"/>
170      <property name="extra166y.jar"    location="${build.extra166y.dir}/extra166y.jar"/>
171      <property name="junit.jar"        location="${lib.dir}/junit.jar"/>
172    
173      <!-- Canonical location of jdk docs root, to use with javadoc -Xdocrootparent flag -->
174      <property name="java5.docroot.url"      value="http://docs.oracle.com/javase/1.5.0/docs"/>
175      <property name="java6.docroot.url"      value="http://docs.oracle.com/javase/6/docs"/>
176      <property name="java7.docroot.url"      value="http://docs.oracle.com/javase/7/docs"/>
177      <property name="java8.docroot.url"      value="http://docs.oracle.com/javase/8/docs"/>
178      <!-- The expected canonical location does not yet exist as of 2014-07 -->
179      <!-- <property name="java9.docroot.url" value="http://docs.oracle.com/javase/9/docs"/> -->
180      <property name="java9.docroot.url"      value="http://download.java.net/jdk9/docs"/>
181      <!-- Default jdk doc location (latest stable release seems best) -->
182      <property name="java.docroot.url"       value="${java8.docroot.url}"/>
183    
184      <!-- Canonical location of jdk API docs, to use with javadoc link attribute -->
185      <property name="java5.api.url"      value="${java5.docroot.url}/api/"/>
186      <property name="java6.api.url"      value="${java6.docroot.url}/api/"/>
187      <property name="java7.api.url"      value="${java7.docroot.url}/api/"/>
188      <property name="java8.api.url"      value="${java8.docroot.url}/api/"/>
189      <property name="java9.api.url"      value="${java9.docroot.url}/api/"/>
190      <property name="java.api.url"       value="${java.docroot.url}/api/"/>
191    
192      <!-- Define the "jtreg" task -->
193      <!-- See the docs in "jtreg -onlineHelp" -->
194      <taskdef name="jtreg" classname="com.sun.javatest.regtest.Main$$Ant"
195               classpath="${lib.dir}/jtreg.jar" />
196    
197      <!-- Test classpath -->
198      <path id="test.classpath">
199        <pathelement location="${build.testcases.dir}"/>
200        <pathelement location="${junit.jar}"/>
201      </path>
202    
203      <!-- Tck options; see JSR166TestCase.java
204       To profile a single tck test class:
205       ant -Djsr166.profileTests=true -Djsr166.profileThreshold=10 -Djsr166.tckTestClass=CompletableFutureTest tck
206       To stress test a single tck test class:
207       ant -Djsr166.tckTestClass=CountedCompleterTest -Djsr166.runsPerTest=100 tck
208       To stress test a single tck test method:
209       ant -Djsr166.tckTestClass=RecursiveTaskTest -Djsr166.runsPerTest=1000 -Djsr166.methodFilter=testAbnormalInvokeAll3 tck
210      -->
211      <property name="jsr166.tckTestClass"     value="JSR166TestCase"/>
212      <macrodef name="run-tck-tests">
213        <attribute name="tck.src.dir" default="${tck.src.dir}"/>
214        <attribute name="target"/>
215        <attribute name="compile-target" default="@{target}"/>
216        <attribute name="workdir"/>
217        <attribute name="classes"/>
218        <attribute name="jvmflags" default="-ea -esa -Djsr166.testImplementationDetails=true"/>
219        <element name="javac-elements" optional="true"/>
220    
221        <sequential>
222    
223        <local name="modules"/>
224        <condition property="modules">
225          <available file="${jdk@{compile-target}.home}/jmods" type="dir"/>
226        </condition>
227    
228        <mkdir dir="@{workdir}/tck-classes"/>
229    
230        <javac srcdir="@{tck.src.dir}"
231               destdir="@{workdir}/tck-classes"
232               debug="${build.debug}"
233               debuglevel="${build.debuglevel}"
234               deprecation="${build.deprecation}"
235               source="@{compile-target}"
236               target="@{compile-target}"
237               classpath="${junit.jar}"
238               includeAntRuntime="false"
239               includeJavaRuntime="false"
240               executable="${javac@{compile-target}}"
241               fork="true">
242    
243          <include name="*.java"/>
244          <compilerarg value="-XDignore.symbol.file=true"/>
245          <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation"/>
246          <compilerarg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
247          <compilerarg value="-Xoverride:${build.classes.dir}" if:set="modules"/>
248          <compilerarg line="${build.args}"/>
249          <javac-elements/>
250    
251    <!--      </javac>
    ! Bootclasspath munging for source compilation.  
    -->  
252    
253    <path id="javac.bootclasspath.prefix">      <java classname="${jsr166.tckTestClass}"
254      <!-- <pathelement location="${src.dir}"/> -->            failonerror="true"
255      <pathelement location="${javac.jar}"/>            jvm="${java@{target}}"
256              fork="true">
257            <jvmarg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
258            <jvmarg value="-Xoverride:${build.classes.dir}" if:set="modules"/>
259            <jvmarg line="@{jvmflags}"/>
260    
261            <!-- ant -Djava.util.concurrent.ForkJoinPool.common.parallelism=1 tck -->
262            <syspropertyset id="system-properties-used-by-tck">
263              <propertyref prefix="java.util.concurrent.ForkJoinPool"/>
264              <propertyref prefix="jsr166"/>
265            </syspropertyset>
266    
267            <classpath>
268              <pathelement location="${junit.jar}"/>
269              <pathelement location="@{workdir}/tck-classes"/>
270            </classpath>
271        </java>
272    
273        </sequential>
274      </macrodef>
275    
276      <!-- Define jtreg test sets for different jdk versions -->
277      <fileset dir="${jtreg9.src.dir}">
278        <patternset id="jdk9.jtreg.tests">
279          <include name="**/*.java"/>
280        </patternset>
281      </fileset>
282    
283      <fileset dir="${jtreg8.src.dir}">
284        <patternset id="jdk8.jtreg.tests">
285          <include name="**/*.java"/>
286          <exclude name="**/SpliteratorCharacteristics.java"/>
287          <!-- https://bugs.openjdk.java.net/browse/JDK-6842353 -->
288          <exclude name="**/GCDuringIteration.java"/>
289        </patternset>
290      </fileset>
291    
292      <fileset dir="${jtreg7.src.dir}">
293        <patternset id="jdk7.jtreg.tests">
294          <include name="**/*.java"/>
295        </patternset>
296      </fileset>
297    
298      <macrodef name="run-jtreg-tests">
299        <!-- ant -Djtreg9.src.dir=src/test/jtreg/util/concurrent/CompletableFuture jtreg -->
300        <attribute name="source" default="7"/>
301        <attribute name="target"/>
302        <attribute name="workdir"/>
303        <attribute name="classes"/>
304        <attribute name="jtregflags" default=""/>
305    
306        <sequential>
307    
308        <local name="modules"/>
309        <condition property="modules">
310          <available file="${jdk@{target}.home}/jmods" type="dir"/>
311        </condition>
312    
313        <delete dir="@{workdir}/JTwork"   quiet="true"/>
314        <delete dir="@{workdir}/JTreport" quiet="true"/>
315        <mkdir dir="@{workdir}/JTwork/scratch"/>
316        <mkdir dir="@{workdir}/JTreport"/>
317        <jtreg dir="${jtreg@{target}.src.dir}"
318               jdk="${jdk@{target}.home}"
319               workDir="@{workdir}/JTwork"
320               reportDir="@{workdir}/JTreport">
321          <patternset refid="jdk@{target}.jtreg.tests"/>
322          <arg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
323          <arg value="-Xoverride:${build.classes.dir}" if:set="modules"/>
324          <arg value="-agentvm"/>
325          <arg value="-v:nopass,fail"/>
326          <arg value="-vmoptions:-esa -ea"/>
327          <arg value="-automatic"/>
328          <arg value="-k:!ignore"/>
329          <arg line="@{jtregflags}"/>
330        </jtreg>
331        </sequential>
332      </macrodef>
333    
334      <!-- ALoops classpath -->
335      <path id="loops.classpath">
336        <pathelement location="${build.loops.dir}"/>
337    </path>    </path>
338    
339    <path id="javac.bootclasspath">    <!-- Support @jls tag, used in jdk8+ javadoc -->
340      <!-- <pathelement location="${src.dir}"/> -->    <property name="javadoc.jls.cite" value="The Java&amp;trade; Language Specification"/>
341      <pathelement location="${collect.jar}"/>    <property name="javadoc.jls.option" value="jls:a:See &lt;cite&gt;${javadoc.jls.cite}&lt;/cite&gt;:"/>
     <pathelement location="${rt.jar}"/>  
   </path>  
342    
343    <!-- Flatten bootclasspath prefix into a platform-appropriate string -->    <!-- Main targets -->
   <property name="javac.bootclasspath.prefix" refid="javac.bootclasspath.prefix"/>  
344    
345    <!-- Turn the flattened bootclasspath prefix into a javac argument -->    <property name="build.main.java.version" value="9"/>
346    <property name="javac.args" value='-J-Xbootclasspath/p:${javac.bootclasspath.prefix}'/>    <property name="build.main.javac" value="${javac9}"/>
347    
348      <target name="dists"
349              depends="dist, 4jdk7dist, jsr166edist, jsr166ydist, extra166ydist, jsr166xdist"
350              description="Builds all public jars and docs"/>
351    
352      <target name="compile"
353              depends="configure-compiler"
354              description="Compiles src/main sources to build dir">
355    
356    <!--      <local name="modules"/>
357     ! Bootclasspath munging for testing, so JUnit can test our local      <condition property="modules">
358     ! modifications to java.*.        <and>
359     -->          <available file="${jdk9.home}/jmods" type="dir"/>
360            <equals arg1="9" arg2="${build.main.java.version}"/>
361          </and>
362        </condition>
363    
364        <local name="destdir"/>
365        <property name="destdir" value="${build.classes.dir}/java.base" if:set="modules"/>
366        <property name="destdir" value="${build.classes.dir}" unless:set="modules"/>
367    
368    <path id="test.classpath">      <mkdir dir="${destdir}"/>
     <pathelement location="${product.jar}"/>  
     <pathelement location="${build.testcases.dir}"/>  
     <pathelement location="${junit.jar}"/>  
   </path>  
369    
370    <!-- Flatten test classpath into a platform-appropriate string -->      <javac srcdir="${src.dir}"
371    <property name="test.classpath" refid="test.classpath"/>             destdir="${destdir}"
372               debug="${build.debug}"
373               debuglevel="${build.debuglevel}"
374               deprecation="${build.deprecation}"
375               classpath=""
376               includeAntRuntime="false"
377               includeJavaRuntime="false"
378               executable="${build.main.javac}"
379               fork="true">
380    
381          <include name="**/*.java"/>
382          <compilerarg value="-Xmodule:java.base" if:set="modules"/>
383          <compilerarg value="-Xprefer:source"/>
384          <compilerarg value="-XDignore.symbol.file=true"/>
385          <compilerarg value="-Xlint:all"/>
386          <compilerarg value="-Werror"/>
387          <compilerarg value="-Xdoclint:all/protected"/>
388          <compilerarg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
389          <compilerarg line="${build.args}"/>
390    
391    <!-- Turn the flattened test classpath into a javac argument -->      </javac>
392    <property name="test.javac.args" value='-Xbootclasspath/p:${test.classpath}'/>    </target>
393    
394    
395      <target name="jar"
396              depends="compile"
397              description="Builds library jar from compiled sources">
398    
399    <!-- Files excluded from emulation and dist-docs -->      <jar destfile="${product.jar}">
400    <patternset id="emulation.excludes">        <fileset dir="${build.classes.dir}"/>
401      <exclude name="java/util/Random.*"/>        <manifest>
402      <exclude name="sun/misc/Unsafe.*"/>          <attribute name="Built-By" value="${user.name}"/>
403    </patternset>          <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
404          </manifest>
405        </jar>
406      </target>
407    
408    
409      <target name="docs"
410              description="Builds javadocs for src/main to dist dir">
411    
412    <!-- Main targets -->      <delete dir="${docs.dir}"/>
413        <mkdir dir="${docs.dir}"/>
414    
415    <target name="compile"      <!-- the packagenames="none" hack below prevents scanning the -->
416            depends="init"      <!-- sourcepath for packages -->
           description="Compiles main sources to build folder">  
417    
418      <mkdir dir="${build.classes.dir}"/>      <javadoc destdir="${docs.dir}"
419                 packagenames="none"
420                 link="${java9.api.url}"
421                 overview="${src.dir}/intro.html"
422                 access="${build.javadoc.access}"
423                 sourcepath="${src.dir}:${jdk9src.dir}"
424                 classpath=""
425                 executable="${javadoc9}">
426          <fileset dir="${src.dir}" defaultexcludes="yes">
427            <include name="**/*.java"/>
428          </fileset>
429          <arg line="-Xdocrootparent ${java9.docroot.url}"/>
430          <arg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
431          <arg value="-XDignore.symbol.file=true"/>
432    <!--  TODO     <arg value="-Xmodule:java.base"/> -->
433          <arg value="-tag"/>
434          <arg value="${javadoc.jls.option}"/>
435          <arg value="-tag"/>
436          <arg value="apiNote:a:&lt;em&gt;API Note:&lt;/em&gt;"/>
437          <arg value="-tag"/>
438          <arg value="implSpec:a:&lt;em&gt;Implementation Requirements:&lt;/em&gt;"/>
439          <arg value="-tag"/>
440          <arg value="implNote:a:&lt;em&gt;Implementation Note:&lt;/em&gt;"/>
441        </javadoc>
442      </target>
443    
     <javac srcdir="${src.dir}"  
           destdir="${build.classes.dir}"  
             debug="${build.debug}"  
        debuglevel="${build.debuglevel}"  
       deprecation="${build.deprecation}"  
            source="${build.sourcelevel}"  
              fork="true">  
444    
445        <bootclasspath refid="javac.bootclasspath"/>    <target name="dist"
446        <compilerarg line="${javac.args} ${build.warnings.option}"/>            depends="dist-clean, dist-jar, dist-docs"
447              description="Puts all distributable products in single hierarchy"/>
448    
     </javac>  
449    
450      <target name="release"
451              depends="dist"
452              description="Puts entire CVS tree, plus distribution productions, in a jar">
453    
454        <property name="release.jar" value="dist/jsr166-${version}-dist.jar"/>
455    
456        <jar basedir="${basedir}" destfile="${release.jar}">
457          <!-- <exclude name="build/**"/> -->
458          <exclude name="${release.jar}"/>
459          <exclude name="user.properties"/>
460          <exclude name="etc/notes/**"/>
461          <exclude name="src/emulation/**"/>
462          <exclude name="**/SyntaxTest.java"/>
463          <exclude name="**/SuperfluousAbstract.java"/>
464          <manifest>
465            <attribute name="Built-By" value="${user.name}"/>
466            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
467          </manifest>
468        </jar>
469    </target>    </target>
470    
471    
472    <target name="jar"    <target name="clean"
473            depends="native-jar, emulation-jar"            description="Removes all build products">
           description="Builds library jar from compiled sources"/>  
474    
475        <delete dir="${build.dir}"/>
476    
477    <target name="test"    </target>
           depends="init, check-junit, report-tests"  
           description="Runs all tests (requires JUnit 3.8+ in ${ant.home}/lib)" />  
478    
479    
480    <target name="checkstyle"    <target name="dist-clean"
481            depends="filter-src"            description="Removes all build and distribution products">
           description="Reports on style errors in Java source (verbose, mostly chaff)">  
482    
483      <taskdef resource="checkstyletask.properties"      <delete dir="${build.dir}"/>
484              classpath="${lib.dir}/checkstyle-all-2.4.jar"/>      <delete dir="${dist.dir}"/>
485    
486      </target>
487    
     <checkstyle>  
       <formatter type="plain"/>  <!-- also available: type="xml" -->  
       <fileset dir="${build.filter.src.dir}" includes="**/*.java"/>  
     </checkstyle>  
488    
489      <target name="dist-jar"
490              depends="clean, jar">
491        <copy file="${product.jar}" todir="${dist.dir}"/>
492    </target>    </target>
493    
494      <target name="dist-docs"
495              depends="clean, docs">
496        <mirror-dir src="${docs.dir}" dst="${dist.docs.dir}"/>
497      </target>
498    
499    <target name="doccheck"    <target name="tck"
500            depends="filter-src"            depends="jar"
501            description="Reports on javadoc style errors (not working yet)">            description="Runs tck tests for main directly">
502    
503      <delete dir="${build.doccheck.dir}"/>      <run-tck-tests
504      <mkdir dir="${build.doccheck.dir}"/>        target="${build.main.java.version}"
505          workdir="${build.dir}"
506          classes="${product.jar}"/>
507      </target>
508    
509      <javadoc doclet="com.sun.tools.doclets.doccheck.DocCheck"    <target name="tck-parallelism-1"
510           docletpath="${lib.dir}/doccheck.jar"            description="Runs tck with given common pool parallelism">
511              destdir="${build.doccheck.dir}">      <antcall target="tck">
512        <packageset dir="${build.filter.src.dir}"/>        <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="1"/>
513      </javadoc>      </antcall>
514      </target>
515    
516      <target name="tck-parallelism-0"
517              description="Runs tck with given common pool parallelism">
518        <antcall target="tck">
519          <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="0"/>
520        </antcall>
521    </target>    </target>
522    
523      <target name="jtreg"
524              depends="jar"
525              description="Runs jtreg tests for main using the jtreg ant task">
526        <run-jtreg-tests
527           target="${build.main.java.version}"
528           workdir="${build.dir}"
529           classes="${product.jar}"/>
530      </target>
531    
532    <target name="docs"    <target name="test"
533            depends="filter-src"            depends="tck, tck-parallelism-1, jtreg"
534            description="Builds javadocs with custom tags to build folder">            description="Runs tck and jtreg tests for main">
535      </target>
536    
537      <delete dir="${build.javadocs.dir}"/>    <target name="jtreg8" description="Runs jtreg tests with jdk8">
     <mkdir dir="${build.javadocs.dir}"/>  
538    
539      <javadoc destdir="${build.javadocs.dir}"      <antcall target="jtreg">
540                  link="http://java.sun.com/j2se/1.4.1/docs/api"        <param name="build.main.java.version" value="8"/>
541              overview="${src.dir}/intro.html"        <param name="build.main.javac" value="${javac8}"/>
542                source="${build.docsourcelevel}">      </antcall>
   
       <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:"/>  
       <packageset dir="${build.filter.src.dir}"/>  
543    
544      </javadoc>    </target>
545    
546      <target name="test89"
547              description="Runs tck and jtreg tests for main for multiple java versions">
548    
549        <antcall target="clean"/>
550        <antcall target="test">
551          <param name="build.main.java.version" value="8"/>
552          <param name="build.main.javac" value="${javac8}"/>
553        </antcall>
554    
555        <antcall target="clean"/>
556        <antcall target="test">
557          <param name="build.main.java.version" value="9"/>
558          <param name="build.main.javac" value="${javac9}"/>
559        </antcall>
560    
561    </target>    </target>
562    
563    
   <!--  
    # javac -s doesn't reliably generate compilable code. It generates  
    # bridge methods (marked as "synthetic") that can have identical  
    # signatures to existing methods except for the return value.  
    -->  
   <target name="strip"  
           depends="init">  
564    
565      <mkdir dir="${build.stripped.dir}"/>    <target name="configure-compiler">
566        <fail message="ant version too old">
567          <condition>
568            <not> <antversion atleast="1.9.1"/> </not>
569          </condition>
570        </fail>
571    
572      <javac srcdir="${src.dir}"      <property name="unchecked.option" value="-Xlint:unchecked"/>
573            destdir="${build.stripped.dir}"  
574        <condition property="warnunchecked.arg" value="${unchecked.option}">
575          <istrue value="${build.warnunchecked}"/>
576        </condition>
577    
578        <property name="warnunchecked.arg" value=""/>
579    
580    
581        <!-- Common options in javac invocations -->
582        <property name="build.args" value="${warnunchecked.arg}"/>
583    
584      </target>
585    
586    
587    
588      <!-- Various demos and test programs -->
589    
590    
591      <target name="loops" depends="configure-compiler"
592              description="Benchmark from Doug Lea's AQS paper">
593    
594        <mkdir dir="${build.loops.dir}"/>
595    
596        <javac srcdir="${loops.src.dir}"
597              destdir="${build.loops.dir}"
598              debug="${build.debug}"              debug="${build.debug}"
599         debuglevel="${build.debuglevel}"         debuglevel="${build.debuglevel}"
600        deprecation="${build.deprecation}"        deprecation="${build.deprecation}"
601             source="${build.sourcelevel}"             source="${build.sourcelevel}"
602               fork="true">               fork="true">
603    
604        <bootclasspath refid="javac.bootclasspath"/>        <compilerarg line="${build.args}"/>
605        <compilerarg line="${javac.args} ${build.warnings.option} -s"/>        <classpath refid="loops.classpath"/>
606          <compilerarg value="-XDignore.symbol.file=true"/>
607    
608      </javac>      </javac>
609    
610        <java classname="ALoops" fork="true">
611          <classpath refid="loops.classpath"/>
612        </java>
613    
614    </target>    </target>
615    
616    
617    <target name="dist"    <target name="compile-test-loops" depends="jar"
618            depends="init, dist-clean, dist-jar, dist-docs"            description="compile all the perf tests in src/test/loops">
           description="Puts all distributable products in single hierarchy"/>  
619    
620        <mkdir dir="${build.dir}/test/loops"/>
621    
622    <target name="clean"      <javac srcdir="${basedir}/src/test/loops"
623            description="Removes all build products">             destdir="${build.dir}/test/loops"
624               debug="${build.debug}"
625               debuglevel="${build.debuglevel}"
626               deprecation="${build.deprecation}"
627               includeAntRuntime="false"
628               includeJavaRuntime="false"
629               executable="${javac9}"
630               fork="true">
631    
632      <delete dir="${build.dir}"/>        <include name="*.java"/>
633      <delete dir="${build.classes.dir}"/>        <compilerarg value="-XDignore.symbol.file=true"/>
634      <delete dir="${build.lib.dir}"/>        <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
635          <compilerarg value="-Xbootclasspath/p:${product.jar}"/>
636          <compilerarg line="${build.args}"/>
637    
638        </javac>
639    
640    </target>    </target>
641    
642    
643    <target name="dist-clean"    <!-- jsr166 4jdk7 -->
           description="Removes all build and distribution products">  
644    
645      <delete dir="${dist.dir}"/>    <target name="4jdk7compile"
646              depends="configure-compiler"
647              description="Compiles src/jdk7 sources, targeting jdk7">
648    
649        <mkdir dir="${build.4jdk7.classes.dir}"/>
650    
651        <javac srcdir="${4jdk7src.dir}"
652               destdir="${build.4jdk7.classes.dir}"
653               debug="${build.debug}"
654               debuglevel="${build.debuglevel}"
655               deprecation="${build.deprecation}"
656               source="6"
657               classpath=""
658               bootclasspath="${bootclasspath6}"
659               includeAntRuntime="false"
660               includeJavaRuntime="false"
661               executable="${javac7}"
662               fork="true">
663    
664          <include name="**/*.java"/>
665          <compilerarg value="-Xprefer:source"/>
666          <compilerarg value="-XDignore.symbol.file=true"/>
667          <compilerarg value="-Xlint:all"/>
668          <compilerarg value="-Werror"/>
669          <compilerarg line="${build.args}"/>
670    
671        </javac>
672    </target>    </target>
673    
674      <target name="4jdk7doclint"
675              depends="configure-compiler"
676              description="Finds doclint warnings">
677    
678        <mkdir dir="${build.4jdk7.classes.dir}"/>
679    
680        <javac srcdir="${4jdk7src.dir}"
681               destdir="${build.4jdk7.classes.dir}"
682               debug="${build.debug}"
683               debuglevel="${build.debuglevel}"
684               deprecation="${build.deprecation}"
685               source="6"
686               classpath=""
687               bootclasspath="${bootclasspath7}"
688               includeAntRuntime="false"
689               includeJavaRuntime="false"
690               executable="${javac8}"
691               fork="true">
692    
693          <include name="**/*.java"/>
694          <compilerarg value="-Xprefer:source"/>
695          <compilerarg value="-XDignore.symbol.file=true"/>
696          <compilerarg value="-Xlint:all"/>
697          <compilerarg value="-Xdoclint:all/protected"/>
698          <compilerarg line="${build.args}"/>
699    
700    <target name="dist-docs"      </javac>
701            depends="filter-src"    </target>
           description="Builds javadocs without custom tags to dist folder">  
702    
     <delete dir="${dist.javadocs.dir}"/>  
     <mkdir dir="${dist.javadocs.dir}"/>  
703    
704      <javadoc destdir="${dist.javadocs.dir}"    <target name="4jdk7jar"
705                  link="http://java.sun.com/j2se/1.4.1/docs/api"            depends="4jdk7compile"
706              overview="${src.dir}/intro.html"            description="Builds library jar from compiled sources">
707                source="${build.docsourcelevel}">  
708        <jar destfile="${4jdk7product.jar}">
709          <fileset dir="${build.4jdk7.classes.dir}"/>
710          <manifest>
711            <attribute name="Built-By" value="${user.name}"/>
712            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
713          </manifest>
714        </jar>
715    
716        <packageset dir="${build.filter.src.dir}"/>    </target>
717    
     </javadoc>  
718    
719      <target name="4jdk7-tck"
720              depends="4jdk7jar"
721              description="Runs tck tests for jsr166-4jdk7 directly">
722    
723        <run-tck-tests
724          target="7"
725          workdir="${build.4jdk7.dir}"
726          classes="${4jdk7product.jar}">
727          <javac-elements>
728            <!-- JDK8+ test classes -->
729            <exclude name="*8Test.java"/>
730            <exclude name="*9Test.java"/>
731            <exclude name="*10Test.java"/>
732            <exclude name="DoubleAccumulatorTest.java"/>
733            <exclude name="DoubleAdderTest.java"/>
734            <exclude name="LongAccumulatorTest.java"/>
735            <exclude name="LongAdderTest.java"/>
736            <exclude name="CompletableFutureTest.java"/>
737            <exclude name="SplittableRandomTest.java"/>
738            <exclude name="StampedLockTest.java"/>
739            <exclude name="SubmissionPublisherTest.java"/>
740          </javac-elements>
741        </run-tck-tests>
742    </target>    </target>
743    
744    
745      <target name="4jdk7-tck-junit"
746              depends="4jdk7compile"
747              description="Runs tck tests for jsr166-4jdk7 via junit task (experimental)">
748    
749    <!-- Internal targets -->      <junit printsummary="true"
750               showoutput="true"
751               errorProperty="junit.failed"
752               failureProperty="junit.failed"
753               includeantruntime="true"
754               jvm="${java7}"
755               fork="true">
756    
757          <jvmarg value="-Xbootclasspath/p:${4jdk7product.jar}"/>
758          <jvmarg value="-server"/>
759    
760          <classpath>
761            <pathelement location="${junit.jar}"/>
762            <pathelement location="${build.4jdk7.tck.classes.dir}"/>
763          </classpath>
764    
765          <formatter type="brief"/>
766    
767    <target name="set-warnings-if" if="build.warnings">        <test name="${jsr166.tckTestClass}" haltonfailure="no">
768          </test>
769    
770      <property name="build.warnings.option" value="-warnunchecked"/>      </junit>
771      </target>
772    
773      <target name="4jdk7-jtreg"
774              depends="4jdk7jar"
775              description="Runs jtreg tests for jsr166-4jdk7 using the jtreg ant task">
776        <run-jtreg-tests
777           target="7"
778           workdir="${build.4jdk7.dir}"
779           classes="${4jdk7product.jar}"/>
780    </target>    </target>
781    
782    
783    <target name="set-warnings-unless" unless="build.warnings">    <target name="4jdk7-test"
784              depends="4jdk7-tck, 4jdk7-jtreg"
785              description="Runs tck and jtreg tests for jsr166-4jdk7">
786      </target>
787    
     <property name="build.warnings.option" value=""/>  
788    
789      <target name="4jdk7docs"
790              description="Builds javadocs for src/jdk7 to dist dir">
791    
792        <delete dir="${4jdk7docs.dir}"/>
793        <mkdir dir="${4jdk7docs.dir}"/>
794    
795        <javadoc destdir="${4jdk7docs.dir}"
796                 packagenames="none"
797                 link="${java7.api.url}"
798                 overview="${4jdk7src.dir}/intro.html"
799                 access="${build.javadoc.access}"
800                 sourcepath="${4jdk7src.dir}:${jdk7src.dir}"
801                 classpath=""
802                 executable="${javadoc7}">
803          <fileset dir="${4jdk7src.dir}" defaultexcludes="yes">
804            <include name="**/*.java"/>
805          </fileset>
806          <arg line="-Xdocrootparent ${java7.docroot.url}"/>
807          <arg value="-XDignore.symbol.file=true"/>
808        </javadoc>
809    </target>    </target>
810    
811    
812    <target name="init"    <target name="4jdk7dist"
813            depends="set-warnings-if, set-warnings-unless">            depends="4jdk7dist-jar, 4jdk7dist-docs"
814              description="Puts all distributable products in single hierarchy"/>
815    
816    
817      <target name="4jdk7clean"
818              description="Removes all 4jdk7 build products">
819    
820      <!-- Version is kept in a separate file -->      <delete dir="${build.4jdk7.dir}"/>
     <loadfile property="version" srcFile="version.properties"/>  
     <echo>Building JSR-166 version ${version}</echo>  
821    
822    </target>    </target>
823    
824    
825    <target name="init-jar">    <target name="4jdk7dist-jar"
826              depends="4jdk7clean, 4jdk7jar">
827        <copy file="${4jdk7product.jar}" todir="${dist.dir}"/>
828      </target>
829    
     <mkdir dir="${build.lib.dir}"/>  
830    
831      <target name="4jdk7dist-docs"
832              depends="4jdk7clean, 4jdk7docs">
833        <mirror-dir src="${4jdk7docs.dir}" dst="${dist.4jdk7docs.dir}"/>
834    </target>    </target>
835    
836    
837    <target name="native-jar"    <!-- jsr166x -->
           depends="compile, init-jar"  
           unless="build.emulation">  
838    
839      <jar destfile="${product.jar}">    <target name="jsr166xcompile"
840        <fileset dir="${build.classes.dir}"/>            depends="configure-compiler"
841              description="Compiles jsr166x sources to build dir">
842    
843        <mkdir dir="${build.jsr166x.classes.dir}"/>
844    
845        <javac srcdir="${topsrc.dir}"
846               destdir="${build.jsr166x.classes.dir}"
847               debug="${build.debug}"
848               debuglevel="${build.debuglevel}"
849               deprecation="${build.deprecation}"
850               classpath=""
851               bootclasspath="${bootclasspath6}"
852               source="5"
853               includeAntRuntime="false"
854               includeJavaRuntime="false"
855               executable="${javac7}"
856               fork="true">
857    
858          <include name="jsr166x/**/*.java"/>
859          <compilerarg value="-XDignore.symbol.file=true"/>
860          <compilerarg value="-Xlint:all,-unchecked,-rawtypes"/>
861          <compilerarg value="-Werror"/>
862          <compilerarg line="${build.args}"/>
863    
864        </javac>
865      </target>
866    
867    
868      <target name="jsr166xjar"
869              depends="jsr166xcompile"
870              description="Builds library jar from compiled sources">
871    
872        <jar destfile="${jsr166x.jar}">
873          <fileset dir="${build.jsr166x.classes.dir}"/>
874          <manifest>
875            <attribute name="Built-By" value="${user.name}"/>
876            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
877          </manifest>
878      </jar>      </jar>
879    
880    </target>    </target>
881    
882    
883    <target name="base-jar"    <target name="jsr166xdocs"
884            depends="compile, init-jar">            description="Builds javadocs to dist dir">
885    
886      <jar destfile="${product.jar}">      <delete dir="${jsr166xdocs.dir}"/>
887        <fileset dir="${build.classes.dir}">      <mkdir dir="${jsr166xdocs.dir}"/>
         <patternset refid="emulation.excludes"/>  
       </fileset>  
     </jar>  
888    
889        <javadoc destdir="${jsr166xdocs.dir}"
890                 packagenames="jsr166x.*"
891                 link="${java.api.url}"
892                 access="${build.javadoc.access}"
893                 sourcepath="${topsrc.dir}:${jdk6src.dir}"
894                 bootclasspath="${bootclasspath6}"
895                 source="5"
896                 executable="${javadoc7}">
897          <arg line="-Xdocrootparent ${java.docroot.url}"/>
898          <arg value="-XDignore.symbol.file=true"/>
899    
900        </javadoc>
901    </target>    </target>
902    
903    
904    <target name="compile-emulation"    <target name="jsr166xdist"
905            depends="init"            depends="jsr166xdist-jar, jsr166xdist-docs"
906            if="build.emulation">            description="Puts all distributable products in single hierarchy"/>
907    
     <mkdir dir="${build.emulation.dir}"/>  
908    
909      <javac srcdir="${emulation.src.dir}"    <target name="jsr166xclean"
910            destdir="${build.emulation.dir}"            description="Removes all jsr166x build products">
             debug="${build.debug}"  
        debuglevel="${build.debuglevel}"  
       deprecation="${build.deprecation}"  
            source="${build.sourcelevel}"  
              fork="true">  
911    
912        <bootclasspath refid="javac.bootclasspath"/>      <delete dir="${build.jsr166x.dir}"/>
       <compilerarg line="${javac.args} ${build.warnings.option}"/>  
913    
914      </javac>    </target>
915    
916    
917      <target name="jsr166xdist-jar"
918              depends="jsr166xclean, jsr166xjar">
919        <copy file="${jsr166x.jar}" todir="${dist.dir}"/>
920      </target>
921    
922      <target name="jsr166xdist-docs"
923              depends="jsr166xclean, jsr166xdocs">
924        <mirror-dir src="${jsr166xdocs.dir}" dst="${dist.jsr166xdocs.dir}"/>
925    </target>    </target>
926    
927      <!-- jsr166y -->
928    
929    
930      <target name="jsr166ycompile"
931              depends="configure-compiler"
932              description="Compiles jsr166y sources">
933    
934        <mkdir dir="${build.jsr166y.classes.dir}"/>
935    
936        <javac srcdir="${topsrc.dir}"
937               destdir="${build.jsr166y.classes.dir}"
938               debug="${build.debug}"
939               debuglevel="${build.debuglevel}"
940               deprecation="${build.deprecation}"
941               source="6"
942               classpath=""
943               bootclasspath="${bootclasspath6}"
944               includeAntRuntime="false"
945               includeJavaRuntime="false"
946               executable="${javac7}"
947               fork="true">
948    
949    <target name="emulation-jar"        <include name="jsr166y/**/*.java"/>
950            depends="base-jar, compile-emulation"        <compilerarg value="-XDignore.symbol.file=true"/>
951            if="build.emulation">        <compilerarg value="-Xlint:all"/>
952          <compilerarg value="-Werror"/>
953          <compilerarg line="${build.args}"/>
954    
955      <jar destfile="${product.jar}" update="true" duplicate="add">      </javac>
956        <fileset dir="${build.emulation.dir}"/>    </target>
957    
958    
959      <target name="jsr166yjar"
960              depends="jsr166ycompile"
961              description="Builds library jar from compiled sources">
962    
963        <jar destfile="${jsr166y.jar}" index="true">
964          <fileset dir="${build.jsr166y.classes.dir}"/>
965          <manifest>
966            <attribute name="Built-By" value="${user.name}"/>
967            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
968          </manifest>
969      </jar>      </jar>
970    
971    </target>    </target>
972    
973    
974    <target name="dist-jar"    <target name="jsr166ydocs"
975            depends="clean, jar">            description="Builds javadocs to dist dir">
976    
977      <copy file="${product.jar}" todir="${dist.dir}"/>      <delete dir="${jsr166ydocs.dir}"/>
978        <mkdir dir="${jsr166ydocs.dir}"/>
979    
980        <javadoc destdir="${jsr166ydocs.dir}"
981                 packagenames="jsr166y.*"
982                 link="${java.api.url}"
983                 access="${build.javadoc.access}"
984                 sourcepath="${topsrc.dir}:${jdk6src.dir}"
985                 bootclasspath="${bootclasspath6}"
986                 source="6"
987                 executable="${javadoc7}">
988          <arg line="-Xdocrootparent ${java.docroot.url}"/>
989          <arg value="-XDignore.symbol.file=true"/>
990    
991        </javadoc>
992    </target>    </target>
993    
994    
995    <target name="compile-ant-filter"    <target name="jsr166ydist"
996            depends="init">            depends="jsr166ydist-jar, jsr166ydist-docs"
997              description="Puts all distributable products in single hierarchy"/>
998    
999    
1000      <mkdir dir="${build.ant.dir}"/>    <target name="jsr166yclean"
1001              description="Removes all jsr166y build products">
1002    
1003      <javac srcdir="${ant.src.dir}"      <delete dir="${build.jsr166y.dir}"/>
           destdir="${build.ant.dir}"  
            source="1.4"  
     />  
1004    
1005    </target>    </target>
1006    
1007    
1008    <target name="filter-src"    <target name="jsr166ydist-jar"
1009            depends="compile-ant-filter">            depends="jsr166yclean, jsr166yjar">
1010        <copy file="${jsr166y.jar}" todir="${dist.dir}"/>
1011      </target>
1012    
1013      <mkdir dir="${build.filter.src.dir}"/>    <target name="jsr166ydist-docs"
1014              depends="jsr166yclean, jsr166ydocs">
1015        <mirror-dir src="${jsr166ydocs.dir}" dst="${dist.jsr166ydocs.dir}"/>
1016      </target>
1017    
     <copy todir="${build.filter.src.dir}">  
       <fileset dir="${src.dir}">  
         <patternset refid="emulation.excludes"/>  
       </fileset>  
       <filterchain>  
         <filterreader classname="jsr166.ant.filters.ReplaceFilter"  
                       classpath="${build.ant.dir}">  
           <!--  
            # These arguments are to get rid of angle-bracketed type  
            # parameters so that javadoc can run on the result. The  
            # following heuristic that 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.)  
            -->  
           <param name="notmatching" value="^\s+\*\s.*$"/>  
           <param name="pattern" value="&lt;[^|>()]+?>+"/>  
           <param name="replacement" value=" "/>  
         </filterreader>  
         <filterreader classname="jsr166.ant.filters.ReplaceFilter"  
                       classpath="${build.ant.dir}">  
           <!--  
            # These arguments are to uncomment lines beginning with  
            # "//@" so that javadoc can see imports that are needed  
            # to resolve links but that shouldn't be in the compiled  
            # code.  
            -->  
           <param name="matching" value="^//@.*$"/>  
           <param name="pattern" value="^//@"/>  
           <param name="replacement" value=""/>  
         </filterreader>  
       </filterchain>  
     </copy>  
1018    
1019    </target>    <!-- extra166y -->
1020    
1021    
1022    <target name="compile-tests"    <target name="extra166ycompile"
1023            depends="jar">            depends="configure-compiler, jsr166yjar"
1024              description="Compiles extra166y sources">
1025    
1026      <mkdir dir="${build.testcases.dir}"/>      <mkdir dir="${build.extra166y.classes.dir}"/>
1027    
1028      <javac srcdir="${test.src.dir}"      <javac srcdir="${topsrc.dir}"
1029            destdir="${build.testcases.dir}"             destdir="${build.extra166y.classes.dir}"
1030              debug="${build.debug}"             debug="${build.debug}"
1031         debuglevel="${build.debuglevel}"             debuglevel="${build.debuglevel}"
1032        deprecation="${build.deprecation}"             deprecation="${build.deprecation}"
1033             source="${build.sourcelevel}"             bootclasspath="@{jsr166y.jar}:${bootclasspath6}"
1034               fork="true">             classpath=""
1035               source="6"
1036               includeAntRuntime="false"
1037               includeJavaRuntime="false"
1038               executable="${javac7}"
1039               fork="true">
1040    
1041        <bootclasspath refid="javac.bootclasspath"/>        <include name="extra166y/**/*.java"/>
1042        <compilerarg line="${javac.args} ${build.warnings.option}"/>        <compilerarg value="-XDignore.symbol.file=true"/>
1043        <classpath refid="test.classpath"/>        <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
1044          <compilerarg value="-Werror"/>
1045          <compilerarg line="${build.args}"/>
1046    
1047      </javac>      </javac>
1048      </target>
1049    
1050    
1051      <target name="extra166yjar"
1052              depends="extra166ycompile"
1053              description="Builds library jar from compiled sources">
1054    
1055        <jar destfile="${extra166y.jar}" index="true">
1056          <fileset dir="${build.extra166y.classes.dir}"/>
1057          <manifest>
1058            <attribute name="Built-By" value="${user.name}"/>
1059            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1060          </manifest>
1061        </jar>
1062    
1063    </target>    </target>
1064    
1065    
1066    <target name="run-tests"    <target name="extra166ydocs"
1067            depends="compile-tests">            description="Builds javadocs to build dir">
1068    
1069      <!-- May be overridden by user.properties -->      <delete dir="${extra166ydocs.dir}"/>
1070      <property name="testcase" value="*"/>      <mkdir dir="${extra166ydocs.dir}"/>
1071    
1072      <mkdir dir="${build.reports.dir}"/>      <javadoc destdir="${extra166ydocs.dir}"
1073                 packagenames="extra166y.*"
1074                 link="${java.api.url}"
1075                 access="${build.javadoc.access}"
1076                 sourcepath="${topsrc.dir}:${jdk6src.dir}"
1077                 bootclasspath="${bootclasspath6}"
1078                 source="6"
1079                 executable="${javadoc7}">
1080          <arg line="-Xdocrootparent ${java.docroot.url}"/>
1081          <arg value="-XDignore.symbol.file=true"/>
1082    
1083      <junit printsummary="true"      </javadoc>
1084               showoutput="true"    </target>
1085            errorProperty="junit.failed"  
1086          failureProperty="junit.failed"  
1087                      dir="${build.reports.dir}"    <target name="extra166ydist"
1088                     fork="true">            depends="extra166ydist-jar, extra166ydist-docs"
1089              description="Puts all distributable products in single hierarchy"/>
1090        <jvmarg value="${test.javac.args}"/>  
1091    
1092        <formatter type="xml"/>    <target name="extra166yclean"
1093              description="Removes all extra166y build products">
1094        <batchtest todir="${build.reports.dir}">  
1095          <fileset dir="${test.src.dir}">      <delete dir="${build.extra166y.dir}"/>
1096            <include name="**/${testcase}Test.java"/>  
1097          </fileset>    </target>
       </batchtest>  
1098    
     </junit>  
1099    
1100      <target name="extra166ydist-jar"
1101              depends="extra166yclean, extra166yjar">
1102        <copy file="${extra166y.jar}" todir="${dist.dir}"/>
1103    </target>    </target>
1104    
1105      <target name="extra166ydist-docs"
1106              depends="extra166yclean, extra166ydocs">
1107        <mirror-dir src="${extra166ydocs.dir}" dst="${dist.extra166ydocs.dir}"/>
1108      </target>
1109    
1110    <target name="report-tests"    <!-- jsr166e -->
           depends="run-tests">  
1111    
1112      <!-- Sets junit.report.format to frames if Xalan is present,    <property name="build.jsr166e.java.version" value="6"/>
1113           otherwise sets it to noframes. -->    <property name="build.jsr166e.javac" value="${javac6}"/>
1114      <available property="junit.report.format"  
1115                    value="frames"    <target name="jsr166ecompile"
1116                classname="org.apache.xalan.lib.Redirect"            depends="configure-compiler"
1117      />            description="Compiles jsr166e sources">
1118      <property name="junit.report.format" value="noframes"/>  
1119        <mkdir dir="${build.jsr166e.classes.dir}"/>
1120      <junitreport todir="${build.reports.dir}">  
1121        <fileset dir="${build.reports.dir}">      <javac srcdir="${topsrc.dir}"
1122          <include name="TEST-*.xml"/>             destdir="${build.jsr166e.classes.dir}"
1123        </fileset>             debug="${build.debug}"
1124        <report styledir="${stylesheet.dir}"             debuglevel="${build.debuglevel}"
1125                  format="${junit.report.format}"             deprecation="${build.deprecation}"
1126                   todir="${build.reports.dir}"             source="${build.jsr166e.java.version}"
1127        />             classpath=""
1128      </junitreport>             includeAntRuntime="false"
1129               includeJavaRuntime="false"
1130               executable="${build.jsr166e.javac}"
1131               fork="true">
1132    
1133      <fail message="Test Cases Failed" if="junit.failed"/>        <include name="jsr166e/**/*.java"/>
1134          <compilerarg value="-XDignore.symbol.file=true"/>
1135          <compilerarg value="-Xlint:all"/>
1136          <compilerarg value="-Werror"/>
1137          <compilerarg line="${build.args}"/>
1138    
1139        </javac>
1140    </target>    </target>
1141    
1142      <!-- jsr166e: find doclint errors -->
1143      <target name="jsr166edoclint">
1144    
1145        <mkdir dir="${build.jsr166e.classes.dir}"/>
1146    
1147    <target name="check-junit">      <javac srcdir="${topsrc.dir}"
1148               destdir="${build.jsr166e.classes.dir}"
1149               debug="${build.debug}"
1150               debuglevel="${build.debuglevel}"
1151               deprecation="${build.deprecation}"
1152               source="${build.jsr166e.java.version}"
1153               classpath=""
1154               bootclasspath="${bootclasspath7}"
1155               includeAntRuntime="false"
1156               includeJavaRuntime="false"
1157               executable="${javac8}"
1158               fork="true">
1159    
1160          <include name="jsr166e/**/*.java"/>
1161          <compilerarg value="-XDignore.symbol.file=true"/>
1162          <compilerarg value="-Xlint:all"/>
1163          <compilerarg value="-Werror"/>
1164          <compilerarg value="-Xdoclint:all/protected"/>
1165    
1166      <!-- junit.framework.Protectable is in JUnit 3.8.1 but not in 3.7 -->      </javac>
1167      <available property="junit.available"    </target>
                classname="junit.framework.Protectable"/>  
1168    
1169      <fail message="Need JUnit 3.8.1 in ${ant.home}${file.separator}lib to run tests"  
1170            unless="junit.available"/>    <target name="jsr166ejar"
1171              depends="jsr166ecompile"
1172              description="Builds library jar from compiled sources">
1173    
1174        <jar destfile="${jsr166e.jar}" index="true">
1175          <fileset dir="${build.jsr166e.classes.dir}"/>
1176          <manifest>
1177            <attribute name="Built-By" value="${user.name}"/>
1178            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1179          </manifest>
1180        </jar>
1181    
1182    </target>    </target>
1183    
1184    
1185      <target name="jsr166edocs"
1186              description="Builds javadocs to build dir">
1187    
1188    <!-- Anthill targets -->      <delete dir="${jsr166edocs.dir}"/>
1189        <mkdir dir="${jsr166edocs.dir}"/>
1190    
1191    <target name="anthill-build"      <javadoc destdir="${jsr166edocs.dir}"
1192            depends="jar, test, docs, dist-docs"/>               packagenames="jsr166e.*"
1193                 link="${java.api.url}"
1194                 access="${build.javadoc.access}"
1195                 sourcepath="${topsrc.dir}:${jdk6src.dir}"
1196                 source="${build.jsr166e.java.version}"
1197                 executable="${javadoc7}">
1198          <arg line="-Xdocrootparent ${java.docroot.url}"/>
1199          <arg value="-XDignore.symbol.file=true"/>
1200    
1201    <target name="anthill-publish">      </javadoc>
1202      </target>
1203    
     <copy todir="${deployDir}/docs/private">  
       <fileset dir="${build.javadocs.dir}"/>  
     </copy>  
1204    
1205      <copy todir="${deployDir}/docs/public">    <target name="jsr166e-tck-one-java-version"
1206        <fileset dir="${dist.javadocs.dir}"/>            depends="jsr166ejar">
     </copy>  
1207    
1208      <copy tofile="${deployDir}/index.html"      <echo message="Testing with jdk${build.jsr166e.java.version} ..."/>
           file="${basedir}/etc/anthill-index.html"/>  
1209    
1210      <copy todir="${deployDir}/notes">      <run-tck-tests
1211        <fileset dir="${basedir}/etc/notes"/>        tck.src.dir="${test.src.dir}/tck-jsr166e"
1212      </copy>        target="${build.jsr166e.java.version}"
1213          workdir="${build.jsr166e.dir}"
1214          classes="${jsr166e.jar}"/>
1215      </target>
1216    
1217      <target name="jsr166e-tck"
1218              description="Runs tck tests for jsr166e for multiple java versions">
1219    
1220    <!--     <antcall target="clean"/> -->
1221    <!--     <antcall target="jsr166e-tck-one-java-version"> -->
1222    <!--       <param name="build.jsr166e.java.version" value="8"/> -->
1223    <!--       <param name="build.jsr166e.javac" value="${javac8}"/> -->
1224    <!--     </antcall> -->
1225    
1226        <antcall target="clean"/>
1227        <antcall target="jsr166e-tck-one-java-version">
1228          <param name="build.jsr166e.java.version" value="7"/>
1229          <param name="build.jsr166e.javac" value="${javac7}"/>
1230        </antcall>
1231    
1232        <antcall target="clean"/>
1233        <antcall target="jsr166e-tck-one-java-version">
1234          <param name="build.jsr166e.java.version" value="6"/>
1235          <param name="build.jsr166e.javac" value="${javac6}"/>
1236        </antcall>
1237      </target>
1238    
1239    
1240      <target name="jsr166e-test"
1241              depends="jsr166e-tck"
1242              description="Runs all tests for jsr166e">
1243      </target>
1244    
1245      <target name="jsr166edist"
1246              depends="jsr166edist-jar, jsr166edist-docs"
1247              description="Puts all distributable products in single hierarchy"/>
1248    
1249    
1250      <target name="jsr166eclean"
1251              description="Removes all jsr166e build products">
1252        <delete dir="${build.jsr166e.dir}"/>
1253      </target>
1254    
1255    
1256      <target name="jsr166edist-jar"
1257              depends="jsr166eclean, jsr166ejar">
1258        <copy file="${jsr166e.jar}" todir="${dist.dir}"/>
1259      </target>
1260    
1261      <target name="jsr166edist-docs"
1262              depends="jsr166eclean, jsr166edocs">
1263        <mirror-dir src="${jsr166edocs.dir}" dst="${dist.jsr166edocs.dir}"/>
1264      </target>
1265    
1266    
1267    <!-- Find buglets that can be detected by static build tools -->
1268    
1269      <target name="lint">
1270        <antcall target="dists">
1271          <param name="build.javadoc.access" value="public"/>
1272        </antcall>
1273      </target>
1274    
1275    <!-- Generates all doclint warnings, even for private methods (rarely useful) -->
1276      <target name="lint-private">
1277        <antcall target="dist">
1278          <param name="build.javadoc.access" value="private"/>
1279        </antcall>
1280    </target>    </target>
1281    
1282    

Legend:
Removed from v.1.28  
changed lines
  Added in v.1.183

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