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

Diff of /jsr166/build.xml

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

revision 1.67 by jsr166, Sun Apr 11 22:00:40 2004 UTC revision 1.219 by jsr166, Sat Sep 17 21:02:01 2016 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  ------------------------------------------------------------------------------  ------------------------------------------------------------------------------
# Line 6  Line 7 
7    
8    Usage: ant [target]    Usage: ant [target]
9    
10      See http://gee.cs.oswego.edu/dl/concurrency-interest/index.html for
11      more details.
12    
13    User-specific settings are read from user.properties.    User-specific settings are read from user.properties.
14    See user.properties.sample for an explanation of some useful settings.    See user.properties.sample for an explanation of some useful settings.
15    
16      The repository contains all dependencies except for ant and the JDK
17      itself.  Because the JDK version matters and because different
18      targets require different JDKs, we assume that users have created a
19      hierarchy containing:
20      $HOME/jdk/jdk6
21      $HOME/jdk/jdk7
22      $HOME/jdk/jdk8
23      $HOME/jdk/jdk9
24      where each of the above is a JDK or a symlink to same, and
25      $HOME/jdk/src/jdk6
26      $HOME/jdk/src/jdk7
27      $HOME/jdk/src/jdk8
28      $HOME/jdk/src/jdk9
29      where each of the above is a complete JDK source tree
30      (e.g. mercurial forest) or a symlink to same.
31    
32      Alternatively, define ant variables thus:
33      ant -Djdk$N.home=... -Djdk$N.src.home=...
34      for $N in 6 7 8 9 ...
35    
36      As of 2016-03, the sources in src/main are for jdk9+ only.  The "docs"
37      target is currently broken.
38  ------------------------------------------------------------------------------  ------------------------------------------------------------------------------
39    </description>    </description>
40    
41    <target name="usage" description="Advises user to run with -projecthelp">    <!-- Run 'ant -projecthelp' (default target) -->
42      <echo>Run "ant -projecthelp" for full usage information.</echo>    <target name="usage">
43        <java classname="org.apache.tools.ant.Main">
44          <arg value="-projecthelp" />
45        </java>
46    </target>    </target>
47    
48      <!-- HOWTO printf debug: <echo message="prop=${prop}"/> -->
49    
50    <!-- User-specific settings -->    <!-- User-specific settings -->
51    <property file="user.properties"/>    <property file="user.properties"/>
52    
53    
54    <!-- Compilation options -->    <!-- Compilation options -->
55    <property name="build.sourcelevel"    value="1.5"/>    <property name="build.sourcelevel"    value="6"/>
56    <property name="build.debug"          value="true"/>    <property name="build.debug"          value="true"/>
57    <property name="build.debuglevel"     value="source,lines,vars"/>    <property name="build.debuglevel"     value="source,lines,vars"/>
58    <property name="build.deprecation"    value="false"/>    <property name="build.deprecation"    value="false"/>
59      <property name="build.javadoc.access" value="protected"/>
60    
61    <!-- Build locations -->    <!-- Build locations -->
62    <property name="build.dir"            location="build"/>    <property name="build.dir"                   location="build"/>
63    <property name="build.classes.dir"    location="${build.dir}/classes"/>    <property name="build.classes.dir"           location="${build.dir}/classes"/>
64    <property name="build.testcases.dir"  location="${build.dir}/testcases"/>    <property name="build.testcases.dir"         location="${build.dir}/testcases"/>
65    <property name="build.j1.dir"         location="${build.dir}/j1"/>    <property name="build.loops.dir"             location="${build.dir}/loops"/>
66    <property name="build.loops.dir"      location="${build.dir}/loops"/>    <property name="build.reports.dir"           location="${build.dir}/reports"/>
67    <property name="build.lib.dir"        location="${build.dir}/lib"/>  
68    <property name="build.ant.dir"        location="${build.dir}/ant"/>    <property name="build.4jdk7.dir"             location="${build.dir}/jsr166-4jdk7"/>
69    <property name="build.javadocs.dir"   location="${build.dir}/javadocs"/>    <property name="build.4jdk7.classes.dir"     location="${build.4jdk7.dir}/classes"/>
70    <property name="build.reports.dir"    location="${build.dir}/reports"/>    <property name="build.4jdk7.tck.classes.dir" location="${build.4jdk7.dir}/tck-classes"/>
71    <property name="build.checkstyle.dir" location="${build.dir}/checkstyle"/>    <property name="build.4jdk7.docs.dir"        location="${build.4jdk7.dir}/docs"/>
72    <property name="build.doccheck.dir"   location="${build.dir}/doccheck"/>  
73    <property name="build.filter.src.dir" location="${build.dir}/filtersrc"/>    <property name="build.4jdk8.dir"             location="${build.dir}/jsr166-4jdk8"/>
74    <property name="build.dc-filter.dir"  location="${build.dir}/filterdocchk"/>    <property name="build.4jdk8.classes.dir"     location="${build.4jdk8.dir}/classes"/>
75      <property name="build.4jdk8.tck.classes.dir" location="${build.4jdk8.dir}/tck-classes"/>
76      <property name="build.4jdk8.docs.dir"        location="${build.4jdk8.dir}/docs"/>
77    
78      <property name="build.jsr166x.dir"           location="${build.dir}/jsr166x"/>
79      <property name="build.jsr166y.dir"           location="${build.dir}/jsr166y"/>
80      <property name="build.jsr166e.dir"           location="${build.dir}/jsr166e"/>
81      <property name="build.extra166y.dir"         location="${build.dir}/extra166y"/>
82    
83      <property name="build.jsr166x.classes.dir"   location="${build.jsr166x.dir}/classes"/>
84      <property name="build.jsr166y.classes.dir"   location="${build.jsr166y.dir}/classes"/>
85      <property name="build.jsr166e.classes.dir"   location="${build.jsr166e.dir}/classes"/>
86      <property name="build.extra166y.classes.dir" location="${build.extra166y.dir}/classes"/>
87    
88      <!-- JDK locations -->
89      <property name="jdks.home"  location="${user.home}/jdk"/>
90    
91      <macrodef name="defjdklocations">
92        <attribute name="v"/>
93        <sequential>
94        <property name="jdk@{v}.home"     location="${jdks.home}/jdk@{v}"/>
95        <property name="java@{v}"         location="${jdk@{v}.home}/bin/java"/>
96        <property name="javac@{v}"        location="${jdk@{v}.home}/bin/javac"/>
97        <property name="javadoc@{v}"      location="${jdk@{v}.home}/bin/javadoc"/>
98        <property name="jdk@{v}.src.home" location="${jdks.home}/src/jdk@{v}"/>
99        <local name="have.java.base"/>
100        <available property="have.java.base"
101          file="${jdk@{v}.src.home}/jdk/src/java.base/share/classes" type="dir"/>
102        <property name="jdk@{v}.src.dir" location="${jdk@{v}.src.home}/jdk/src/java.base/share/classes"
103          if:set="have.java.base"/>
104        <property name="jdk@{v}.src.dir" location="${jdk@{v}.src.home}/jdk/src/share/classes"
105          unless:set="have.java.base"/>
106        <local name="modules"/>
107        <available property="modules" file="${jdk@{v}.home}/jmods" type="dir"/>
108        <local name="boot.jar.dir"/>
109        <property name="boot.jar.dir"   location="${jdk@{v}.home}/jre/lib" unless:set="modules"/>
110        <path id="bootclasspath@{v}" unless:set="modules">
111          <pathelement path="${boot.jar.dir}/resources.jar"/>
112          <pathelement path="${boot.jar.dir}/rt.jar"/>
113          <pathelement path="${boot.jar.dir}/jsse.jar"/>
114          <pathelement path="${boot.jar.dir}/jce.jar"/>
115          <pathelement path="${boot.jar.dir}/charsets.jar"/>
116        </path>
117        <property name="bootclasspath@{v}" value="${toString:bootclasspath@{v}}" unless:set="modules"/>
118        </sequential>
119      </macrodef>
120    
121      <macrodef name="mirror-dir">
122        <attribute name="src"/>
123        <attribute name="dst"/>
124        <sequential>
125        <delete dir="@{dst}"/>
126        <mkdir dir="@{dst}"/>
127        <copy todir="@{dst}" preservelastmodified="true">
128          <fileset dir="@{src}"/>
129        </copy>
130        </sequential>
131      </macrodef>
132    
133      <defjdklocations v="6"/>
134      <defjdklocations v="7"/>
135      <defjdklocations v="8"/>
136      <defjdklocations v="9"/>
137    
138    <!-- Source locations -->    <!-- Source locations -->
139    <property name="src.dir"              location="${basedir}/src/main"/>    <property name="src.dir"              location="${basedir}/src/main"/>
140    <property name="test.src.dir"         location="${basedir}/src/test"/>    <property name="test.src.dir"         location="${basedir}/src/test"/>
   <property name="j1.src.dir"           location="${basedir}/src/javaone"/>  
141    <property name="loops.src.dir"        location="${basedir}/src/loops"/>    <property name="loops.src.dir"        location="${basedir}/src/loops"/>
142    <property name="tck.src.dir"          location="${test.src.dir}/tck"/>    <property name="tck.src.dir"          location="${test.src.dir}/tck"/>
143    <property name="jtreg.src.dir"        location="${test.src.dir}/jtreg"/>    <property name="jtreg7.src.dir"       location="${test.src.dir}/jtreg-jdk7"/>
144    <property name="ant.src.dir"          location="${basedir}/etc/ant"/>    <property name="jtreg8.src.dir"       location="${test.src.dir}/jtreg-jdk8"/>
145    <property name="stylesheet.dir"       location="${basedir}/etc/xsl"/>    <property name="jtreg9.src.dir"       location="${test.src.dir}/jtreg"/>
146      <property name="jtreg.src.dir"        location="${jtreg9.src.dir}"/>
147    <property name="lib.dir"              location="${basedir}/lib"/>    <property name="lib.dir"              location="${basedir}/lib"/>
148    <property name="dist.dir"             location="${basedir}/dist"/>    <property name="dist.dir"             location="${basedir}/dist"/>
149      <property name="topsrc.dir"           location="${basedir}/src"/>
150    <!-- Distribution locations -->    <property name="4jdk7src.dir"         location="${topsrc.dir}/jdk7"/>
151    <property name="dist.javadocs.dir"    location="${dist.dir}/docs"/>    <property name="4jdk8src.dir"         location="${topsrc.dir}/jdk8"/>
152      <property name="jsr166xsrc.dir"       location="${topsrc.dir}/jsr166x"/>
153      <property name="jsr166ysrc.dir"       location="${topsrc.dir}/jsr166y"/>
154      <property name="jsr166esrc.dir"       location="${topsrc.dir}/jsr166e"/>
155      <property name="extra166ysrc.dir"     location="${topsrc.dir}/extra166y"/>
156    
157      <!-- Javadoc locations -->
158      <property name="docs.dir"          location="${build.dir}/docs"/>
159      <property name="4jdk7docs.dir"     location="${build.4jdk7.dir}/docs"/>
160      <property name="4jdk8docs.dir"     location="${build.4jdk8.dir}/docs"/>
161      <property name="jsr166xdocs.dir"   location="${build.jsr166x.dir}/docs"/>
162      <property name="jsr166ydocs.dir"   location="${build.jsr166y.dir}/docs"/>
163      <property name="jsr166edocs.dir"   location="${build.jsr166e.dir}/docs"/>
164      <property name="extra166ydocs.dir" location="${build.extra166y.dir}/docs"/>
165    
166      <property name="dist.docs.dir"          location="${dist.dir}/docs"/>
167      <property name="dist.4jdk7docs.dir"     location="${dist.dir}/jsr166-4jdk7docs"/>
168      <property name="dist.4jdk8docs.dir"     location="${dist.dir}/jsr166-4jdk8docs"/>
169      <property name="dist.jsr166xdocs.dir"   location="${dist.dir}/jsr166xdocs"/>
170      <property name="dist.jsr166ydocs.dir"   location="${dist.dir}/jsr166ydocs"/>
171      <property name="dist.jsr166edocs.dir"   location="${dist.dir}/jsr166edocs"/>
172      <property name="dist.extra166ydocs.dir" location="${dist.dir}/extra166ydocs"/>
173    
174    <!-- Jar locations -->    <!-- Jar locations -->
175    <property name="product.jar"          location="${build.lib.dir}/jsr166.jar"/>    <property name="product.jar"      location="${build.dir}/jsr166.jar"/>
176    <property name="junit.jar"            location="${lib.dir}/junit.jar"/>    <property name="4jdk7product.jar" location="${build.4jdk7.dir}/jsr166-4jdk7.jar"/>
177    <property name="concurrent.jar"       location="${lib.dir}/concurrent.jar"/>    <property name="4jdk8product.jar" location="${build.4jdk8.dir}/jsr166-4jdk8.jar"/>
178      <property name="jsr166x.jar"      location="${build.jsr166x.dir}/jsr166x.jar"/>
179    <!-- Bootclasspath argument -->    <property name="jsr166y.jar"      location="${build.jsr166y.dir}/jsr166y.jar"/>
180    <property name="bootclasspath.args"   value="-Xbootclasspath/p:${product.jar}"/>    <property name="jsr166e.jar"      location="${build.jsr166e.dir}/jsr166e.jar"/>
181      <property name="extra166y.jar"    location="${build.extra166y.dir}/extra166y.jar"/>
182    <!-- Test classpath -->    <property name="junit.jar"        location="${lib.dir}/junit.jar"/>
183    <path id="test.classpath">  
184      <pathelement location="${build.testcases.dir}"/>    <!-- Canonical location of jdk docs root, to use with javadoc -Xdocrootparent flag -->
185      <pathelement location="${junit.jar}"/>    <property name="java5.docroot.url"      value="http://docs.oracle.com/javase/1.5.0/docs"/>
186    </path>    <property name="java6.docroot.url"      value="http://docs.oracle.com/javase/6/docs"/>
187      <property name="java7.docroot.url"      value="http://docs.oracle.com/javase/7/docs"/>
188    <!-- ALoops classpath -->    <property name="java8.docroot.url"      value="http://docs.oracle.com/javase/8/docs"/>
189    <path id="loops.classpath">    <!-- The expected canonical location does not yet exist as of 2016-04 -->
190      <pathelement location="${build.loops.dir}"/>    <!-- <property name="java9.docroot.url" value="http://docs.oracle.com/javase/9/docs"/> -->
191    </path>    <property name="java9.docroot.url"      value="http://download.java.net/java/jdk9/docs"/>
192      <!-- Default jdk doc location (latest stable release seems best) -->
193    <!-- J1 classpath -->    <property name="java.docroot.url"       value="${java8.docroot.url}"/>
194    <path id="j1.classpath">  
195      <pathelement location="${build.j1.dir}"/>    <!-- Canonical location of jdk API docs, to use with javadoc link attribute -->
196      <pathelement location="${junit.jar}"/>    <property name="java5.api.url"      value="${java5.docroot.url}/api/"/>
197      <pathelement location="${concurrent.jar}"/>    <property name="java6.api.url"      value="${java6.docroot.url}/api/"/>
198    </path>    <property name="java7.api.url"      value="${java7.docroot.url}/api/"/>
199      <property name="java8.api.url"      value="${java8.docroot.url}/api/"/>
200      <property name="java9.api.url"      value="${java9.docroot.url}/api/"/>
201    <!-- Main targets -->    <property name="java.api.url"       value="${java.docroot.url}/api/"/>
202    
203      <!-- Define the "jtreg" task -->
204      <!-- See the docs in "jtreg -onlineHelp" -->
205      <taskdef name="jtreg" classname="com.sun.javatest.regtest.Main$$Ant"
206               classpath="${lib.dir}/jtreg.jar" />
207    
208      <!-- Tck options; see JSR166TestCase.java
209       To profile a single tck test class:
210       ant -Djsr166.profileTests=true -Djsr166.profileThreshold=10 -Djsr166.tckTestClass=CompletableFutureTest tck
211       To stress test a single tck test class:
212       ant -Djsr166.tckTestClass=CountedCompleterTest -Djsr166.runsPerTest=100 tck
213       To stress test a single tck test method:
214       ant -Djsr166.tckTestClass=RecursiveTaskTest -Djsr166.runsPerTest=1000 -Djsr166.methodFilter=testAbnormalInvokeAll3 tck
215      -->
216      <property name="jsr166.tckTestClass"     value="JSR166TestCase"/>
217      <macrodef name="run-tck-tests">
218        <attribute name="tck.src.dir" default="${tck.src.dir}"/>
219        <attribute name="target"/>
220        <attribute name="compile-target" default="@{target}"/>
221        <attribute name="workdir"/>
222        <attribute name="classes"/>
223        <!--
224            <attribute name="jvmflags" default="-XX:+UseParallelGC -XX:-UseBiasedLocking -ea -esa -Djsr166.testImplementationDetails=true"/>
225        -->
226            <attribute name="jvmflags" default="-ea -esa -Djsr166.testImplementationDetails=true"/>
227        <element name="javac-elements" optional="true"/>
228    
229    <target name="compile"      <sequential>
           depends="init, configure-compiler"  
           description="Compiles main sources to build folder">  
230    
231      <mkdir dir="${build.classes.dir}"/>      <local name="modules"/>
232        <condition property="modules">
233          <available file="${jdk@{compile-target}.home}/jmods" type="dir"/>
234        </condition>
235    
236      <javac srcdir="${src.dir}"      <mkdir dir="@{workdir}/tck-classes"/>
           destdir="${build.classes.dir}"  
             debug="${build.debug}"  
        debuglevel="${build.debuglevel}"  
       deprecation="${build.deprecation}"  
            source="${build.sourcelevel}"  
              fork="true">  
237    
238        <javac srcdir="@{tck.src.dir}"
239               destdir="@{workdir}/tck-classes"
240               debug="${build.debug}"
241               debuglevel="${build.debuglevel}"
242               deprecation="${build.deprecation}"
243               source="@{compile-target}"
244               target="@{compile-target}"
245               classpath="${junit.jar}"
246               includeAntRuntime="false"
247               includeJavaRuntime="false"
248               encoding="ASCII"
249               executable="${javac@{compile-target}}"
250               fork="true">
251    
252          <include name="*.java"/>
253          <compilerarg value="-XDignore.symbol.file=true"/>
254          <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation,-try"/>
255          <compilerarg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
256          <compilerarg line="--patch-module java.base=${build.classes.dir}/java.base" if:set="modules"/>
257        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
258          <javac-elements/>
259    
260      </javac>      </javac>
261    
262    </target>      <java classname="${jsr166.tckTestClass}"
263              failonerror="true"
264              jvm="${java@{target}}"
265              fork="true">
266    <target name="jar"          <jvmarg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
267            depends="compile"          <jvmarg line="--patch-module java.base=${build.classes.dir}/java.base" if:set="modules"/>
268            description="Builds library jar from compiled sources">          <jvmarg line="@{jvmflags}"/>
269            <!-- ant -Dvmoptions="-Xmx8m" -Djsr166.tckTestClass=CompletableFutureTest tck -->
270            <jvmarg line="${vmoptions}" if:set="vmoptions"/>
271    
272            <!-- ant -Djava.util.concurrent.ForkJoinPool.common.parallelism=1 tck -->
273            <syspropertyset id="system-properties-used-by-tck">
274              <propertyref prefix="java.util.concurrent.ForkJoinPool"/>
275              <propertyref prefix="jsr166."/>
276              <propertyref name="test.timeout.factor"/>
277            </syspropertyset>
278    
279            <classpath>
280              <pathelement location="${junit.jar}"/>
281              <pathelement location="@{workdir}/tck-classes"/>
282            </classpath>
283        </java>
284    
285      <mkdir dir="${build.lib.dir}"/>      </sequential>
286      </macrodef>
287    
288      <jar destfile="${product.jar}">    <!-- Define jtreg test sets for different jdk versions -->
289        <fileset dir="${build.classes.dir}"/>    <fileset dir="${jtreg9.src.dir}">
290      </jar>      <patternset id="jdk9.jtreg.tests">
291          <include name="**/*.java"/>
292    </target>      </patternset>
293      </fileset>
294    
295      <fileset dir="${jtreg8.src.dir}">
296        <patternset id="jdk8.jtreg.tests">
297          <include name="**/*.java"/>
298          <exclude name="**/SpliteratorCharacteristics.java"/>
299          <!-- https://bugs.openjdk.java.net/browse/JDK-6842353 -->
300          <exclude name="**/GCDuringIteration.java"/>
301        </patternset>
302      </fileset>
303    
304      <fileset dir="${jtreg7.src.dir}">
305        <patternset id="jdk7.jtreg.tests">
306          <include name="**/*.java"/>
307        </patternset>
308      </fileset>
309    
310    <target name="test"    <!-- ant -Djtreg.flags=-timeoutFactor:4 -->
311            depends="init, configure-tests, report-tests"    <property name="jtreg.flags" value=""/>
           description="Runs all tests (requires JUnit 3.8.1 in ${ant.home}/lib)" />  
312    
313      <macrodef name="run-jtreg-tests">
314        <!-- ant -Djtreg9.src.dir=src/test/jtreg/util/concurrent/CompletableFuture jtreg -->
315        <attribute name="source" default="7"/>
316        <attribute name="target"/>
317        <attribute name="workdir"/>
318        <attribute name="classes"/>
319        <attribute name="jtregflags" default=""/>
320    
321        <sequential>
322    
323        <!-- ant -Djtreg.verbose=time,fail,error jtreg -->
324        <property name="jtreg.verbose" value="nopass,fail,error"/>
325    
326        <local name="modules"/>
327        <condition property="modules">
328          <available file="${jdk@{target}.home}/jmods" type="dir"/>
329        </condition>
330    
331        <delete dir="@{workdir}/JTwork"   quiet="true"/>
332        <delete dir="@{workdir}/JTreport" quiet="true"/>
333        <jtreg dir="${jtreg@{target}.src.dir}"
334               jdk="${jdk@{target}.home}"
335               workDir="@{workdir}/JTwork"
336               reportDir="@{workdir}/JTreport">
337          <patternset refid="jdk@{target}.jtreg.tests"/>
338          <arg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
339          <arg value="-vmoptions:--patch-module java.base=${build.classes.dir}/java.base" if:set="modules"/>
340          <arg value="-agentvm"/>
341          <arg value="-verbose:${jtreg.verbose}"/>
342          <arg value="-vmoptions:-esa -ea"/>
343          <arg value="-automatic"/>
344          <arg value="-k:!ignore"/>
345          <arg line="@{jtregflags}"/>
346          <arg line="${jtreg.flags}"/>
347        </jtreg>
348        </sequential>
349      </macrodef>
350    
351    <target name="docs"    <!-- ALoops classpath -->
352            description="Builds javadocs with custom tags to build folder">    <path id="loops.classpath">
353        <pathelement location="${build.loops.dir}"/>
354      </path>
355    
356      <delete dir="${build.javadocs.dir}"/>    <!-- Support @jls tag, used in jdk8+ javadoc -->
357      <mkdir dir="${build.javadocs.dir}"/>    <property name="javadoc.jls.cite" value="The Java&amp;trade; Language Specification"/>
358      <property name="javadoc.jls.option" value="jls:a:See &lt;cite&gt;${javadoc.jls.cite}&lt;/cite&gt;:"/>
359    
360      <javadoc destdir="${build.javadocs.dir}"    <!-- Main targets -->
                 link="http://java.sun.com/j2se/1.4.1/docs/api"  
             overview="${src.dir}/intro.html"  
               source="${build.sourcelevel}">  
361    
362        <tag name="revised" description="Last revised:"/>    <property name="build.main.java.version" value="9"/>
363        <tag name="spec"    description="Specified by:"/>    <property name="build.main.javac" value="${javac9}"/>
364    
365        <packageset dir="${src.dir}"/>    <target name="dists"
366              depends="dist, 4jdk8dist, 4jdk7dist, jsr166edist, jsr166ydist, extra166ydist, jsr166xdist"
367              description="Builds all public jars and docs"/>
368    
369      </javadoc>    <target name="compile"
370              depends="configure-compiler"
371              description="Compiles src/main sources to build dir">
372    
373    </target>      <local name="modules"/>
374        <condition property="modules">
375          <and>
376            <available file="${jdk9.home}/jmods" type="dir"/>
377            <equals arg1="9" arg2="${build.main.java.version}"/>
378          </and>
379        </condition>
380    
381        <local name="destdir"/>
382        <property name="destdir" value="${build.classes.dir}/java.base" if:set="modules"/>
383        <property name="destdir" value="${build.classes.dir}" unless:set="modules"/>
384    
385        <mkdir dir="${destdir}"/>
386    
387    <target name="doccheck"      <javac srcdir="${src.dir}"
388            depends="filter-doccheck"             destdir="${destdir}"
389            description="Reports on javadoc style errors">             debug="${build.debug}"
390               debuglevel="${build.debuglevel}"
391      <delete dir="${build.doccheck.dir}"/>             deprecation="${build.deprecation}"
392      <mkdir dir="${build.doccheck.dir}"/>             classpath=""
393               includeAntRuntime="false"
394      <javadoc doclet="com.sun.tools.doclets.doccheck.DocCheck"             includeJavaRuntime="false"
395           docletpath="${lib.dir}/doccheck.jar"             encoding="ASCII"
396              destdir="${build.doccheck.dir}">             executable="${build.main.javac}"
397        <packageset dir="${build.dc-filter.dir}"/>             fork="true">
     </javadoc>  
398    
399      <echo>DocCheck output is in ${build.doccheck.dir}</echo>        <include name="**/*.java"/>
400          <compilerarg value="-Xmodule:java.base" if:set="modules"/>
401          <compilerarg value="-Xprefer:source"/>
402          <compilerarg value="-XDignore.symbol.file=true"/>
403          <compilerarg value="-Xlint:all"/>
404          <compilerarg value="-Werror"/>
405          <compilerarg value="-Xdoclint:all/protected"/>
406          <compilerarg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
407          <compilerarg line="${build.args}"/>
408    
409        </javac>
410    </target>    </target>
411    
412    
413      <target name="jar"
414              depends="compile"
415              description="Builds library jar for src/main from compiled sources">
416        <local name="subdir"/>
417        <available property="subdir" file="${build.classes.dir}/java.base" type="dir" value="/java.base"/>
418        <jar destfile="${product.jar}">
419          <fileset dir="${build.classes.dir}${subdir}"/>
420          <manifest>
421            <attribute name="Built-By" value="${user.name}"/>
422            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
423          </manifest>
424        </jar>
425      </target>
426    
   <target name="checkstyle"  
           depends="filter-src"  
           description="Reports on style errors in Java source (verbose, mostly chaff)">  
   
     <taskdef resource="checkstyletask.properties"  
             classpath="${lib.dir}/checkstyle-all-3.1.jar"/>  
427    
428      <mkdir dir="${build.checkstyle.dir}"/>    <target name="docs"
429              description="Builds javadocs for src/main to dist dir">
430    
431      <checkstyle config="etc/checkstyle/sun_checks.xml"      <delete dir="${docs.dir}"/>
432         failOnViolation="false">      <mkdir dir="${docs.dir}"/>
       <formatter type="xml" toFile="${build.checkstyle.dir}/checkstyle-report.xml"/>  
       <fileset dir="${build.filter.src.dir}" includes="**/*.java"/>  
     </checkstyle>  
433    
434      <style in="${build.checkstyle.dir}/checkstyle-report.xml"      <!-- the packagenames="none" hack below prevents scanning the -->
435            out="${build.checkstyle.dir}/checkstyle-report.html"      <!-- sourcepath for packages -->
         style="${stylesheet.dir}/checkstyle-frames.xsl"/>  
436    
437    <!--  TODO: sourcepath="${src.dir}:${jdk9.src.dir}" -->
438    <!--  TODO: sourcepath="${src.dir}:${jdk9.src.dir}:${jdk9.src.home}/jdk/src/java.logging/share/classes" -->
439        <javadoc destdir="${docs.dir}"
440                 packagenames="none"
441                 link="${java9.api.url}"
442                 overview="${src.dir}/intro.html"
443                 access="${build.javadoc.access}"
444                 sourcepath="${src.dir}"
445                 classpath=""
446                 executable="${javadoc9}">
447          <fileset dir="${src.dir}" defaultexcludes="yes">
448            <include name="**/*.java"/>
449          </fileset>
450          <arg line="-Xdocrootparent ${java9.docroot.url}"/>
451          <arg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
452          <arg value="-XDignore.symbol.file=true"/>
453          <arg value="-Xmodule:java.base"/>
454          <arg value="-tag"/>
455          <arg value="${javadoc.jls.option}"/>
456          <arg value="-tag"/>
457          <arg value="apiNote:a:&lt;em&gt;API Note:&lt;/em&gt;"/>
458          <arg value="-tag"/>
459          <arg value="implSpec:a:&lt;em&gt;Implementation Requirements:&lt;/em&gt;"/>
460          <arg value="-tag"/>
461          <arg value="implNote:a:&lt;em&gt;Implementation Note:&lt;/em&gt;"/>
462    <!-- tags added in jdk9 -->
463          <arg value="-tag"/>
464          <arg value="revised:X"/>
465          <arg value="-tag"/>
466          <arg value="spec:X"/>
467        </javadoc>
468    </target>    </target>
469    
470    
   
471    <target name="dist"    <target name="dist"
472            depends="init, dist-clean, dist-jar, dist-docs"            depends="dist-clean, dist-jar, dist-docs"
473            description="Puts all distributable products in single hierarchy"/>            description="Puts all distributable products in single hierarchy"/>
474    
475    
   
476    <target name="release"    <target name="release"
477            depends="dist"            depends="dist"
478            description="Puts entire CVS tree, plus distribution productions, in a jar">            description="Puts entire CVS tree, plus distribution productions, in a jar">
# Line 212  Line 487 
487        <exclude name="src/emulation/**"/>        <exclude name="src/emulation/**"/>
488        <exclude name="**/SyntaxTest.java"/>        <exclude name="**/SyntaxTest.java"/>
489        <exclude name="**/SuperfluousAbstract.java"/>        <exclude name="**/SuperfluousAbstract.java"/>
490          <manifest>
491            <attribute name="Built-By" value="${user.name}"/>
492            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
493          </manifest>
494      </jar>      </jar>
   
495    </target>    </target>
496    
497    
   
498    <target name="clean"    <target name="clean"
499            description="Removes all build products">            description="Removes all build products">
500    
501      <delete dir="${build.dir}"/>      <delete dir="${build.dir}"/>
     <delete dir="${build.classes.dir}"/>  
     <delete dir="${build.lib.dir}"/>  
502    
503    </target>    </target>
504    
505    
   
506    <target name="dist-clean"    <target name="dist-clean"
507            description="Removes all build and distribution products">            description="Removes all build and distribution products">
508    
509        <delete dir="${build.dir}"/>
510      <delete dir="${dist.dir}"/>      <delete dir="${dist.dir}"/>
511    
512    </target>    </target>
513    
514    
515      <target name="dist-jar"
516              depends="clean, jar">
517        <copy file="${product.jar}" todir="${dist.dir}"/>
518      </target>
519    
520    <target name="dist-docs"    <target name="dist-docs"
521            description="Builds javadocs without custom tags to dist folder">            depends="clean, docs">
522        <mirror-dir src="${docs.dir}" dst="${dist.docs.dir}"/>
523      </target>
524    
525      <delete dir="${dist.javadocs.dir}"/>    <target name="tck"
526      <mkdir dir="${dist.javadocs.dir}"/>            depends="jar"
527              description="Runs tck tests for src/main directly">
528    
529      <javadoc destdir="${dist.javadocs.dir}"      <run-tck-tests
530                  link="http://java.sun.com/j2se/1.4.2/docs/api"        target="${build.main.java.version}"
531              overview="${src.dir}/intro.html"        workdir="${build.dir}"
532                source="${build.sourcelevel}">        classes="${product.jar}"/>
533      </target>
534    
535        <packageset dir="${src.dir}"/>    <target name="tck-parallelism-1"
536              description="Runs tck with common pool parallelism 1">
537        <antcall target="tck">
538          <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="1"/>
539        </antcall>
540      </target>
541    
542      </javadoc>    <target name="tck-parallelism-0"
543              description="Runs tck with common pool parallelism 0">
544        <antcall target="tck">
545          <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="0"/>
546        </antcall>
547      </target>
548    
549      <target name="tck-security-manager"
550              description="Runs tck with a security manager">
551        <antcall target="tck">
552          <param name="jsr166.useSecurityManager" value="true"/>
553        </antcall>
554    </target>    </target>
555    
556      <target name="jtreg"
557              depends="jar"
558              description="Runs jtreg tests for src/main using the jtreg ant task">
559        <run-jtreg-tests
560           target="${build.main.java.version}"
561           workdir="${build.dir}"
562           classes="${product.jar}"/>
563      </target>
564    
565      <target name="test"
566              depends="tck, tck-parallelism-1, tck-parallelism-0, jtreg"
567              description="Runs tck and jtreg tests for src/main">
568      </target>
569    
570    <!-- Internal targets -->  <!--   <target name="jtreg8" description="Runs jtreg tests with jdk8"> -->
571    
572    <!--     <antcall target="jtreg"> -->
573    <!--       <param name="build.main.java.version" value="8"/> -->
574    <!--       <param name="build.main.javac" value="${javac8}"/> -->
575    <!--     </antcall> -->
576    
577    <target name="init">  <!--   </target> -->
578    
579      <!-- Version is kept in a separate file -->  <!--   <target name="test89" -->
580      <loadfile property="version" srcFile="version.properties"/>  <!--           description="Runs tck and jtreg tests for src/main for multiple java versions"> -->
     <echo>Building JSR-166 version ${version}</echo>  
     <echo>java.home is ${java.home}</echo>  
581    
582    </target>  <!--     <antcall target="clean"/> -->
583    <!--     <antcall target="test"> -->
584    <!--       <param name="build.main.java.version" value="8"/> -->
585    <!--       <param name="build.main.javac" value="${javac8}"/> -->
586    <!--     </antcall> -->
587    
588    <!--     <antcall target="clean"/> -->
589    <!--     <antcall target="test"> -->
590    <!--       <param name="build.main.java.version" value="9"/> -->
591    <!--       <param name="build.main.javac" value="${javac9}"/> -->
592    <!--     </antcall> -->
593    
594    <target name="dist-jar"  <!--   </target> -->
           depends="clean, jar">  
595    
     <copy file="${product.jar}" todir="${dist.dir}"/>  
596    
   </target>  
597    
598      <target name="configure-compiler">
599        <fail message="ant version too old">
600          <condition>
601            <not> <antversion atleast="1.9.1"/> </not>
602          </condition>
603        </fail>
604    
605    <target name="compile-ant-filter"      <property name="unchecked.option" value="-Xlint:unchecked"/>
           depends="init">  
606    
607      <mkdir dir="${build.ant.dir}"/>      <condition property="warnunchecked.arg" value="${unchecked.option}">
608          <istrue value="${build.warnunchecked}"/>
609        </condition>
610    
611      <javac srcdir="${ant.src.dir}"      <property name="warnunchecked.arg" value=""/>
           destdir="${build.ant.dir}"  
            source="1.4"/>  
612    
   </target>  
613    
614        <!-- Common options in javac invocations -->
615        <property name="build.args" value="${warnunchecked.arg}"/>
616    
617    <target name="filter-src"    </target>
           depends="compile-ant-filter">  
618    
     <mkdir dir="${build.filter.src.dir}"/>  
619    
     <copy todir="${build.filter.src.dir}">  
       <fileset dir="${src.dir}">  
         <include name="**/*.html"/>  
       </fileset>  
     </copy>  
620    
621      <copy todir="${build.filter.src.dir}">    <!-- Various demos and test programs -->
       <fileset dir="${src.dir}">  
         <exclude name="**/*.html"/>  
         <!-- Files excluded from dist-docs -->  
         <exclude name="java/util/Random.*"/>  
         <exclude name="sun/misc/Unsafe.*"/>  
       </fileset>  
       <!--  
       <filterchain>  
       -->  
   
         <!--  
          # This filter gets rid of angle-bracketed type parameters  
          # so that javadoc can run on the result. The following  
          # 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>  
         -->  
   
       <!--  
       </filterchain>  
       -->  
     </copy>  
622    
   </target>  
623    
624      <!-- description="Benchmark from Doug Lea's AQS paper" -->
625      <target name="loops" depends="configure-compiler">
626    
627    <target name="filter-doccheck"      <mkdir dir="${build.loops.dir}"/>
           depends="filter-src">  
628    
629      <mkdir dir="${build.dc-filter.dir}"/>      <javac srcdir="${loops.src.dir}"
630              destdir="${build.loops.dir}"
631                debug="${build.debug}"
632           debuglevel="${build.debuglevel}"
633          deprecation="${build.deprecation}"
634               source="${build.sourcelevel}"
635               target="${build.sourcelevel}"
636             encoding="ASCII"
637                 fork="true">
638    
639      <copy todir="${build.dc-filter.dir}">        <compilerarg line="${build.args}"/>
640        <fileset dir="${build.filter.src.dir}">        <classpath refid="loops.classpath"/>
641          <include name="**/*.html"/>        <compilerarg value="-XDignore.symbol.file=true"/>
       </fileset>  
     </copy>  
642    
643      <property name="generic.declarations"      </javac>
              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 {}"  
     />  
   
     <copy todir="${build.dc-filter.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>  
644    
645        </filterchain>      <java classname="ALoops" fork="true">
646      </copy>        <classpath refid="loops.classpath"/>
647        </java>
648    
649    </target>    </target>
650    
651    
652    <target name="compile-tests"    <target name="compile-test-loops" depends="jar"
653            depends="jar">            description="compile all the perf tests in src/test/loops">
654    
655      <mkdir dir="${build.testcases.dir}"/>      <mkdir dir="${build.dir}/test/loops"/>
656    
657      <javac srcdir="${tck.src.dir}"      <javac srcdir="${basedir}/src/test/loops"
658            destdir="${build.testcases.dir}"             destdir="${build.dir}/test/loops"
659              debug="${build.debug}"             debug="${build.debug}"
660         debuglevel="${build.debuglevel}"             debuglevel="${build.debuglevel}"
661        deprecation="${build.deprecation}"             deprecation="${build.deprecation}"
662             source="${build.sourcelevel}"             includeAntRuntime="false"
663               fork="true">             includeJavaRuntime="false"
664               encoding="ASCII"
665        <compilerarg value="${bootclasspath.args}"/>             executable="${javac9}"
666               fork="true">
667    
668          <include name="*.java"/>
669          <compilerarg value="-XDignore.symbol.file=true"/>
670          <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
671          <compilerarg value="-Xbootclasspath/p:${product.jar}"/>
672        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
673    
       <classpath refid="test.classpath"/>  
   
674      </javac>      </javac>
675    
676      <javac srcdir="${test.src.dir}"    </target>
           destdir="${build.testcases.dir}"  
             debug="${build.debug}"  
        debuglevel="${build.debuglevel}"  
       deprecation="${build.deprecation}"  
            source="${build.sourcelevel}"  
              fork="true">  
677    
       <include name="jsr166/test/**"/>  
678    
679        <compilerarg value="${bootclasspath.args}"/>    <!-- jsr166 4jdk8 -->
       <compilerarg line="${build.args}"/>  
680    
681        <classpath refid="test.classpath"/>    <target name="4jdk8compile"
682              depends="configure-compiler"
683              description="Compiles src/jdk8 sources, targeting jdk8">
684    
685        <mkdir dir="${build.4jdk8.classes.dir}"/>
686    
687        <javac srcdir="${4jdk8src.dir}"
688               destdir="${build.4jdk8.classes.dir}"
689               debug="${build.debug}"
690               debuglevel="${build.debuglevel}"
691               deprecation="${build.deprecation}"
692               source="8"
693               target="8"
694               classpath=""
695               bootclasspath="${bootclasspath8}"
696               includeAntRuntime="false"
697               includeJavaRuntime="false"
698               encoding="ASCII"
699               executable="${javac8}"
700               fork="true">
701    
702          <include name="**/*.java"/>
703          <compilerarg value="-Xprefer:source"/>
704          <compilerarg value="-XDignore.symbol.file=true"/>
705          <compilerarg value="-Xlint:all"/>
706          <compilerarg value="-Werror"/>
707          <compilerarg line="${build.args}"/>
708    
709      </javac>      </javac>
710      </target>
711    
712  <!--    <target name="4jdk8doclint"
713      <javac srcdir="${jtreg.src.dir}"            depends="configure-compiler"
714            destdir="${build.testcases.dir}"            description="Finds doclint warnings">
715              debug="${build.debug}"  
716         debuglevel="${build.debuglevel}"      <mkdir dir="${build.4jdk8.classes.dir}"/>
717        deprecation="${build.deprecation}"  
718             source="${build.sourcelevel}"      <javac srcdir="${4jdk8src.dir}"
719               fork="true">             destdir="${build.4jdk8.classes.dir}"
720               debug="${build.debug}"
721               debuglevel="${build.debuglevel}"
722               deprecation="${build.deprecation}"
723               source="8"
724               target="8"
725               classpath=""
726               bootclasspath="${bootclasspath8}"
727               includeAntRuntime="false"
728               includeJavaRuntime="false"
729               encoding="ASCII"
730               executable="${javac8}"
731               fork="true">
732    
733        <compilerarg value="${bootclasspath.args}"/>        <include name="**/*.java"/>
734          <compilerarg value="-Xprefer:source"/>
735          <compilerarg value="-XDignore.symbol.file=true"/>
736          <compilerarg value="-Xlint:all"/>
737          <compilerarg value="-Xdoclint:all/protected"/>
738        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
739    
       <classpath refid="test.classpath"/>  
   
740      </javac>      </javac>
 -->  
   
741    </target>    </target>
742    
743    
744    <target name="run-tests"    <target name="4jdk8jar"
745            depends="compile-tests">            depends="4jdk8compile"
746              description="Builds library jar from compiled sources">
747    
748        <jar destfile="${4jdk8product.jar}">
749          <fileset dir="${build.4jdk8.classes.dir}"/>
750          <manifest>
751            <attribute name="Built-By" value="${user.name}"/>
752            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
753          </manifest>
754        </jar>
755    
756      <!-- May be overridden by user.properties -->    </target>
     <property name="testcase" value="*"/>  
757    
     <mkdir dir="${build.reports.dir}"/>  
758    
759      <junit printsummary="true"    <target name="4jdk8-tck"
760               showoutput="true"            depends="4jdk8jar"
761            errorProperty="junit.failed"            description="Runs tck tests for jsr166-4jdk8 directly">
762          failureProperty="junit.failed"  
763                      dir="${build.reports.dir}"      <run-tck-tests
764                     fork="true">        target="8"
765          workdir="${build.4jdk8.dir}"
766          classes="${4jdk8product.jar}">
767          <javac-elements>
768            <!-- JDK9+ test classes -->
769            <exclude name="*9Test.java"/>
770            <exclude name="*10Test.java"/>
771          </javac-elements>
772        </run-tck-tests>
773      </target>
774    
       <jvmarg value="${bootclasspath.args}"/>  
       <jvmarg value="-server"/>  
       <jvmarg value="-showversion"/>  
775    
776        <classpath refid="test.classpath"/>    <target name="4jdk8-jtreg"
777              depends="4jdk8jar"
778              description="Runs jtreg tests for jsr166-4jdk8 using the jtreg ant task">
779        <run-jtreg-tests
780           target="8"
781           workdir="${build.4jdk8.dir}"
782           classes="${4jdk8product.jar}"/>
783      </target>
784    
       <formatter type="xml"/>  
785    
786        <batchtest todir="${build.reports.dir}" unless="no.test.tck">    <target name="4jdk8-test"
787          <fileset dir="${tck.src.dir}">            depends="4jdk8-tck, 4jdk8-jtreg"
788            <include name="**/${testcase}Test.java"/>            description="Runs tck and jtreg tests for jsr166-4jdk8">
789          </fileset>    </target>
       </batchtest>  
   
       <batchtest todir="${build.reports.dir}" if="do.test.old">  
         <fileset dir="${test.src.dir}">  
           <include name="jsr166/test/**/${testcase}Test.java"/>  
         </fileset>  
       </batchtest>  
   
 <!--  
       <batchtest todir="${build.reports.dir}" if="do.test.jtreg">  
         <fileset dir="${jtreg.src.dir}">  
           <include name="**/${testcase}Test.java"/>  
         </fileset>  
       </batchtest>  
 -->  
790    
     </junit>  
791    
792      <target name="4jdk8docs"
793              description="Builds javadocs for src/jdk8 to dist dir">
794    
795        <delete dir="${4jdk8docs.dir}"/>
796        <mkdir dir="${4jdk8docs.dir}"/>
797    
798        <javadoc destdir="${4jdk8docs.dir}"
799                 packagenames="none"
800                 link="${java8.api.url}"
801                 overview="${4jdk8src.dir}/intro.html"
802                 access="${build.javadoc.access}"
803                 sourcepath="${4jdk8src.dir}:${jdk8.src.dir}"
804                 classpath=""
805                 executable="${javadoc8}"
806                 failonerror = "true">
807          <fileset dir="${4jdk8src.dir}" defaultexcludes="yes">
808            <include name="**/*.java"/>
809          </fileset>
810          <arg line="-Xdocrootparent ${java8.docroot.url}"/>
811          <arg value="-XDignore.symbol.file=true"/>
812          <arg value="-tag"/>
813          <arg value="${javadoc.jls.option}"/>
814          <arg value="-tag"/>
815          <arg value="apiNote:a:&lt;em&gt;API Note:&lt;/em&gt;"/>
816          <arg value="-tag"/>
817          <arg value="implSpec:a:&lt;em&gt;Implementation Requirements:&lt;/em&gt;"/>
818          <arg value="-tag"/>
819          <arg value="implNote:a:&lt;em&gt;Implementation Note:&lt;/em&gt;"/>
820        </javadoc>
821    </target>    </target>
822    
823    
824    <target name="report-tests"    <target name="4jdk8dist"
825            depends="run-tests">            depends="4jdk8dist-jar, 4jdk8dist-docs"
826              description="Puts all distributable products in single hierarchy"/>
827    
     <!-- Sets junit.report.format to frames if redirection is present,  
          otherwise sets it to noframes. -->  
     <available property="junit.report.format"  
                   value="frames"  
               classname="org.apache.xalan.lib.Redirect"  
     />  
     <property name="junit.report.format" value="noframes"/>  
   
     <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>  
828    
829      <fail message="Test Cases Failed" if="junit.failed"/>    <target name="4jdk8clean"
830              description="Removes all 4jdk8 build products">
831    
832        <delete dir="${build.4jdk8.dir}"/>
833    
834    </target>    </target>
835    
836    
837    <target name="configure-compiler">    <target name="4jdk8dist-jar"
838              depends="4jdk8clean, 4jdk8jar">
839        <copy file="${4jdk8product.jar}" todir="${dist.dir}"/>
840      </target>
841    
     <property name="unchecked.option" value="-Xlint:unchecked"/>  
842    
843      <condition property="warnunchecked.arg" value="${unchecked.option}">    <target name="4jdk8dist-docs"
844        <istrue value="${build.warnunchecked}"/>            depends="4jdk8clean, 4jdk8docs">
845      </condition>      <mirror-dir src="${4jdk8docs.dir}" dst="${dist.4jdk8docs.dir}"/>
846      </target>
847    
     <property name="warnunchecked.arg" value=""/>  
848    
849    
850      <!-- Common options in javac invocations -->    <!-- jsr166 4jdk7 -->
851      <property name="build.args" value="${warnunchecked.arg}"/>  
852      <target name="4jdk7compile"
853              depends="configure-compiler"
854              description="Compiles src/jdk7 sources, targeting jdk7">
855    
856        <mkdir dir="${build.4jdk7.classes.dir}"/>
857    
858        <javac srcdir="${4jdk7src.dir}"
859               destdir="${build.4jdk7.classes.dir}"
860               debug="${build.debug}"
861               debuglevel="${build.debuglevel}"
862               deprecation="${build.deprecation}"
863               source="6"
864               target="6"
865               classpath=""
866               bootclasspath="${bootclasspath6}"
867               includeAntRuntime="false"
868               includeJavaRuntime="false"
869               encoding="ASCII"
870               executable="${javac7}"
871               fork="true">
872    
873          <include name="**/*.java"/>
874          <compilerarg value="-Xprefer:source"/>
875          <compilerarg value="-XDignore.symbol.file=true"/>
876          <compilerarg value="-Xlint:all"/>
877          <compilerarg value="-Werror"/>
878          <compilerarg line="${build.args}"/>
879    
880        </javac>
881    </target>    </target>
882    
883      <target name="4jdk7doclint"
884              depends="configure-compiler"
885              description="Finds doclint warnings">
886    
887        <mkdir dir="${build.4jdk7.classes.dir}"/>
888    
889        <javac srcdir="${4jdk7src.dir}"
890               destdir="${build.4jdk7.classes.dir}"
891               debug="${build.debug}"
892               debuglevel="${build.debuglevel}"
893               deprecation="${build.deprecation}"
894               source="6"
895               target="6"
896               classpath=""
897               bootclasspath="${bootclasspath6}"
898               includeAntRuntime="false"
899               includeJavaRuntime="false"
900               encoding="ASCII"
901               executable="${javac8}"
902               fork="true">
903    
904          <include name="**/*.java"/>
905          <compilerarg value="-Xprefer:source"/>
906          <compilerarg value="-XDignore.symbol.file=true"/>
907          <compilerarg value="-Xlint:all"/>
908          <compilerarg value="-Xdoclint:all/protected"/>
909          <compilerarg line="${build.args}"/>
910    
911    <target name="configure-tests"      </javac>
912         depends="configure-compiler">    </target>
913    
     <!-- junit.framework.Protectable is in JUnit 3.8.1 but not in 3.7 -->  
     <available property="junit.available"  
                classname="junit.framework.Protectable"/>  
914    
915      <!-- Xalan -->    <target name="4jdk7jar"
916      <available property="xalan.available"            depends="4jdk7compile"
917                 classname="org.apache.xalan.Version"/>            description="Builds library jar from compiled sources">
918    
919        <jar destfile="${4jdk7product.jar}">
920          <fileset dir="${build.4jdk7.classes.dir}"/>
921          <manifest>
922            <attribute name="Built-By" value="${user.name}"/>
923            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
924          </manifest>
925        </jar>
926    
927      <!-- Ant 1.6beta and later don't need or want this check -->    </target>
     <!--  
     <fail message="Need JUnit 3.8.1 in ${ant.home}${file.separator}lib to run tests"  
           unless="junit.available"/>  
928    
     <fail message="Need Xalan 2.5.1 jar in ${ant.home}${file.separator}lib to run tests"  
           unless="xalan.available"/>  
     -->  
929    
930      <target name="4jdk7-tck"
931              depends="4jdk7jar"
932              description="Runs tck tests for jsr166-4jdk7 directly">
933    
934        <run-tck-tests
935          target="7"
936          workdir="${build.4jdk7.dir}"
937          classes="${4jdk7product.jar}">
938          <javac-elements>
939            <!-- JDK8+ test classes -->
940            <exclude name="*8Test.java"/>
941            <exclude name="*9Test.java"/>
942            <exclude name="*10Test.java"/>
943            <exclude name="DoubleAccumulatorTest.java"/>
944            <exclude name="DoubleAdderTest.java"/>
945            <exclude name="LongAccumulatorTest.java"/>
946            <exclude name="LongAdderTest.java"/>
947            <exclude name="CompletableFutureTest.java"/>
948            <exclude name="SplittableRandomTest.java"/>
949            <exclude name="StampedLockTest.java"/>
950            <exclude name="SubmissionPublisherTest.java"/>
951          </javac-elements>
952        </run-tck-tests>
953    </target>    </target>
954    
955    
956      <!-- Runs tck tests for jsr166-4jdk7 via junit task (dead experiment) -->
957      <target name="4jdk7-tck-junit"
958              depends="4jdk7compile">
959    
960    <!-- Anthill targets -->      <junit printsummary="true"
961               showoutput="true"
962               errorProperty="junit.failed"
963               failureProperty="junit.failed"
964               includeantruntime="true"
965               jvm="${java7}"
966               fork="true">
967    
968          <jvmarg value="-Xbootclasspath/p:${4jdk7product.jar}"/>
969          <jvmarg value="-server"/>
970    
971    <target name="anthill-build">        <classpath>
972            <pathelement location="${junit.jar}"/>
973            <pathelement location="${build.4jdk7.tck.classes.dir}"/>
974          </classpath>
975    
976      <!-- Override this in user.properties -->        <formatter type="brief"/>
     <property name="tiger.home" location="e:/j2sdk1.5.0"/>  
977    
978      <exec resultproperty="result.property" dir="${basedir}" executable="${tiger.home}/bin/java">        <test name="${jsr166.tckTestClass}" haltonfailure="no">
979        <arg value="-Xmx256000000"/>        </test>
980        <!-- classpath of new JVM -->  
981        <arg value="-classpath"/> <arg path="${java.class.path}"/>      </junit>
       <!-- location of Ant home directory -->  
       <arg value="-Dant.home=${ant.home}"/>  
       <!-- the Ant main class -->  
       <arg value="org.apache.tools.ant.Main"/>  
       <!-- The build file -->  
       <arg value="-buildfile"/>  <arg value="build.xml"/>  
       <!-- the target to build on the new Ant instance -->  
       <arg value="-DJAVA_HOME=${tiger.home}"/>  
       <arg value="do-anthill-build"/>  
     </exec>  
982    </target>    </target>
983    
984    <target name="do-anthill-build"    <target name="4jdk7-jtreg"
985            depends="jar, test, docs, dist-docs"/>            depends="4jdk7jar"
986              description="Runs jtreg tests for jsr166-4jdk7 using the jtreg ant task">
987        <run-jtreg-tests
988           target="7"
989           workdir="${build.4jdk7.dir}"
990           classes="${4jdk7product.jar}"/>
991      </target>
992    
   <target name="anthill-publish">  
993    
994      <copy todir="${deployDir}/docs/private">    <target name="4jdk7-test"
995        <fileset dir="${build.javadocs.dir}"/>            depends="4jdk7-tck, 4jdk7-jtreg"
996      </copy>            description="Runs tck and jtreg tests for jsr166-4jdk7">
997      </target>
998    
     <copy todir="${deployDir}/docs/public">  
       <fileset dir="${dist.javadocs.dir}"/>  
     </copy>  
999    
1000      <copy tofile="${deployDir}/index.html"    <target name="4jdk7docs"
1001            file="${basedir}/etc/anthill-index.html"/>            description="Builds javadocs for src/jdk7 to dist dir">
1002    
1003        <delete dir="${4jdk7docs.dir}"/>
1004        <mkdir dir="${4jdk7docs.dir}"/>
1005    
1006        <javadoc destdir="${4jdk7docs.dir}"
1007                 packagenames="none"
1008                 link="${java7.api.url}"
1009                 overview="${4jdk7src.dir}/intro.html"
1010                 access="${build.javadoc.access}"
1011                 sourcepath="${4jdk7src.dir}:${jdk7.src.dir}"
1012                 classpath=""
1013                 executable="${javadoc7}"
1014                 failonerror = "true">
1015          <fileset dir="${4jdk7src.dir}" defaultexcludes="yes">
1016            <include name="**/*.java"/>
1017          </fileset>
1018          <arg line="-Xdocrootparent ${java7.docroot.url}"/>
1019          <arg value="-XDignore.symbol.file=true"/>
1020        </javadoc>
1021      </target>
1022    
1023      <copy todir="${deployDir}/notes">  
1024        <fileset dir="${basedir}/etc/notes"/>    <target name="4jdk7dist"
1025      </copy>            depends="4jdk7dist-jar, 4jdk7dist-docs"
1026              description="Puts all distributable products in single hierarchy"/>
1027    
1028    
1029      <target name="4jdk7clean"
1030              description="Removes all 4jdk7 build products">
1031    
1032        <delete dir="${build.4jdk7.dir}"/>
1033    
1034    </target>    </target>
1035    
1036    
1037      <target name="4jdk7dist-jar"
1038              depends="4jdk7clean, 4jdk7jar">
1039        <copy file="${4jdk7product.jar}" todir="${dist.dir}"/>
1040      </target>
1041    
   <!-- Various demos and test programs -->  
1042    
1043      <target name="4jdk7dist-docs"
1044              depends="4jdk7clean, 4jdk7docs">
1045        <mirror-dir src="${4jdk7docs.dir}" dst="${dist.4jdk7docs.dir}"/>
1046      </target>
1047    
   <target name="sample" depends="init, configure-compiler"  
           description="Standalone demo program">  
1048    
1049      <mkdir dir="${build.testcases.dir}"/>    <!-- jsr166x -->
1050    
1051      <javac srcdir="${test.src.dir}"    <target name="jsr166xcompile"
1052            destdir="${build.testcases.dir}"            depends="configure-compiler"
1053              debug="${build.debug}"            description="Compiles jsr166x sources to build dir">
1054         debuglevel="${build.debuglevel}"  
1055        deprecation="${build.deprecation}"      <mkdir dir="${build.jsr166x.classes.dir}"/>
            source="${build.sourcelevel}"  
              fork="true">  
1056    
1057        <include name="jsr166/test/Sample.java"/>      <javac srcdir="${topsrc.dir}"
1058               destdir="${build.jsr166x.classes.dir}"
1059               debug="${build.debug}"
1060               debuglevel="${build.debuglevel}"
1061               deprecation="${build.deprecation}"
1062               classpath=""
1063               bootclasspath="${bootclasspath6}"
1064               source="5"
1065               target="5"
1066               includeAntRuntime="false"
1067               includeJavaRuntime="false"
1068               encoding="ASCII"
1069               executable="${javac7}"
1070               fork="true">
1071    
1072          <include name="jsr166x/**/*.java"/>
1073          <compilerarg value="-XDignore.symbol.file=true"/>
1074          <compilerarg value="-Xlint:all,-unchecked,-rawtypes"/>
1075          <compilerarg value="-Werror"/>
1076          <compilerarg line="${build.args}"/>
1077    
1078      </javac>      </javac>
1079      </target>
1080    
     <copy todir="${build.testcases.dir}">  
       <fileset dir="${test.src.dir}">  
         <include name="**/*.properties"/>  
       </fileset>  
     </copy>  
1081    
1082      <target name="jsr166xjar"
1083              depends="jsr166xcompile"
1084              description="Builds library jar from compiled sources">
1085    
1086        <jar destfile="${jsr166x.jar}">
1087          <fileset dir="${build.jsr166x.classes.dir}"/>
1088          <manifest>
1089            <attribute name="Built-By" value="${user.name}"/>
1090            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1091          </manifest>
1092        </jar>
1093    
     <java classname="jsr166.test.Sample" fork="true">  
       <classpath refid="test.classpath"/>  
       <!-- <jvmarg value="-ea"/> -->  
       <!-- <jvmarg value="-server"/> -->  
       <!-- <arg value="1000"/> -->  
     </java>  
1094    </target>    </target>
1095    
1096    
1097    <target name="loops" depends="init, configure-compiler"    <target name="jsr166xdocs"
1098            description="Benchmark from Doug Lea's AQS paper">            description="Builds javadocs to dist dir">
1099    
1100      <mkdir dir="${build.loops.dir}"/>      <delete dir="${jsr166xdocs.dir}"/>
1101        <mkdir dir="${jsr166xdocs.dir}"/>
1102    
1103      <javac srcdir="${loops.src.dir}"      <javadoc destdir="${jsr166xdocs.dir}"
1104            destdir="${build.loops.dir}"               packagenames="jsr166x.*"
1105              debug="${build.debug}"               link="${java.api.url}"
1106         debuglevel="${build.debuglevel}"               access="${build.javadoc.access}"
1107        deprecation="${build.deprecation}"               sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1108             source="${build.sourcelevel}"               bootclasspath="${bootclasspath6}"
1109               fork="true">               source="5"
1110                 executable="${javadoc7}"
1111                 failonerror = "true">
1112          <arg line="-Xdocrootparent ${java.docroot.url}"/>
1113          <arg value="-XDignore.symbol.file=true"/>
1114    
1115        <compilerarg line="${build.args}"/>      </javadoc>
1116        <classpath refid="loops.classpath"/>    </target>
1117    
     </javac>  
1118    
1119      <java classname="ALoops" fork="true">    <target name="jsr166xdist"
1120        <classpath refid="loops.classpath"/>            depends="jsr166xdist-jar, jsr166xdist-docs"
1121      </java>            description="Puts all distributable products in single hierarchy"/>
1122    
1123    
1124      <target name="jsr166xclean"
1125              description="Removes all jsr166x build products">
1126    
1127        <delete dir="${build.jsr166x.dir}"/>
1128    
1129    </target>    </target>
1130    
1131    
1132    <target name="compile-j1" depends="init, configure-compiler">    <target name="jsr166xdist-jar"
1133              depends="jsr166xclean, jsr166xjar">
1134        <copy file="${jsr166x.jar}" todir="${dist.dir}"/>
1135      </target>
1136    
1137      <mkdir dir="${build.j1.dir}"/>    <target name="jsr166xdist-docs"
1138              depends="jsr166xclean, jsr166xdocs">
1139        <mirror-dir src="${jsr166xdocs.dir}" dst="${dist.jsr166xdocs.dir}"/>
1140      </target>
1141    
1142      <javac srcdir="${j1.src.dir}"    <!-- jsr166y -->
           destdir="${build.j1.dir}"  
             debug="${build.debug}"  
        debuglevel="${build.debuglevel}"  
       deprecation="${build.deprecation}"  
            source="${build.sourcelevel}" >  
1143    
       <include name="**/*.java"/>  
       <exclude name="**/dijkstra/**"/>  
1144    
1145      <target name="jsr166ycompile"
1146              depends="configure-compiler"
1147              description="Compiles jsr166y sources">
1148    
1149        <mkdir dir="${build.jsr166y.classes.dir}"/>
1150    
1151        <javac srcdir="${topsrc.dir}"
1152               destdir="${build.jsr166y.classes.dir}"
1153               debug="${build.debug}"
1154               debuglevel="${build.debuglevel}"
1155               deprecation="${build.deprecation}"
1156               source="6"
1157               target="6"
1158               classpath=""
1159               bootclasspath="${bootclasspath6}"
1160               includeAntRuntime="false"
1161               includeJavaRuntime="false"
1162               encoding="ASCII"
1163               executable="${javac7}"
1164               fork="true">
1165    
1166          <include name="jsr166y/**/*.java"/>
1167          <compilerarg value="-XDignore.symbol.file=true"/>
1168          <compilerarg value="-Xlint:all"/>
1169          <compilerarg value="-Werror"/>
1170        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
       <classpath refid="j1.classpath"/>  
1171    
1172      </javac>      </javac>
1173      </target>
1174    
1175    
1176      <target name="jsr166yjar"
1177              depends="jsr166ycompile"
1178              description="Builds library jar from compiled sources">
1179    
1180        <jar destfile="${jsr166y.jar}" index="true">
1181          <fileset dir="${build.jsr166y.classes.dir}"/>
1182          <manifest>
1183            <attribute name="Built-By" value="${user.name}"/>
1184            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1185          </manifest>
1186        </jar>
1187    
1188    </target>    </target>
1189    
1190    
1191    <target name="sw" depends="compile-j1"    <target name="jsr166ydocs"
1192            description="Runs the SwingWorker demo">            description="Builds javadocs to dist dir">
1193    
1194      <!--      <delete dir="${jsr166ydocs.dir}"/>
1195      <java classname="jsr166.swing.SwingWorkerDemo" fork="true">      <mkdir dir="${jsr166ydocs.dir}"/>
1196        <classpath refid="j1.classpath"/>  
1197      </java>      <javadoc destdir="${jsr166ydocs.dir}"
1198      -->               packagenames="jsr166y.*"
1199                 link="${java.api.url}"
1200                 access="${build.javadoc.access}"
1201                 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1202                 bootclasspath="${bootclasspath6}"
1203                 source="6"
1204                 executable="${javadoc7}"
1205                 failonerror = "true">
1206          <arg line="-Xdocrootparent ${java.docroot.url}"/>
1207          <arg value="-XDignore.symbol.file=true"/>
1208    
1209        </javadoc>
1210      </target>
1211    
1212    
1213      <target name="jsr166ydist"
1214              depends="jsr166ydist-jar, jsr166ydist-docs"
1215              description="Puts all distributable products in single hierarchy"/>
1216    
     <copy todir="${build.j1.dir}" file="${j1.src.dir}/jsr166/swing/SwingWorker.html"/>  
1217    
1218      <exec dir="${build.j1.dir}" executable="appletviewer.exe">    <target name="jsr166yclean"
1219        <arg value="${build.j1.dir}/SwingWorker.html"/>            description="Removes all jsr166y build products">
1220      </exec>  
1221        <delete dir="${build.jsr166y.dir}"/>
1222    
1223    </target>    </target>
1224    
   <target name="j1" depends="compile-j1"  
           description="Runs a standalone JavaOne program">  
1225    
1226      <java classname="jsr166.random.TestRandom" fork="true">    <target name="jsr166ydist-jar"
1227        <classpath refid="j1.classpath"/>            depends="jsr166yclean, jsr166yjar">
1228        <jvmarg value="-client"/>      <copy file="${jsr166y.jar}" todir="${dist.dir}"/>
1229      </java>    </target>
1230    
1231      <target name="jsr166ydist-docs"
1232              depends="jsr166yclean, jsr166ydocs">
1233        <mirror-dir src="${jsr166ydocs.dir}" dst="${dist.jsr166ydocs.dir}"/>
1234    </target>    </target>
1235    
1236    
1237    <target name="test-j1" depends="compile-j1"    <!-- extra166y -->
           description="Runs testcases from the JavaOne source directories">  
1238    
     <junit printsummary="true"  
              showoutput="true"  
           errorProperty="junit.failed"  
         failureProperty="junit.failed"  
                     dir="${build.j1.dir}"  
                    fork="true">  
   
       <!-- <jvmarg value="-server"/> -->  
       <classpath refid="j1.classpath"/>  
       <formatter type="xml"/>  
   
       <batchtest todir="${build.j1.dir}">  
         <fileset dir="${j1.src.dir}">  
           <include name="**/*Test.java"/>  
         </fileset>  
       </batchtest>  
1239    
1240      </junit>    <target name="extra166ycompile"
1241              depends="configure-compiler, jsr166yjar"
1242              description="Compiles extra166y sources">
1243    
1244      <available property="junit.report.format"      <mkdir dir="${build.extra166y.classes.dir}"/>
1245                    value="frames"  
1246                classname="org.apache.xalan.lib.Redirect"/>      <javac srcdir="${topsrc.dir}"
1247      <property name="junit.report.format" value="noframes"/>             destdir="${build.extra166y.classes.dir}"
1248               debug="${build.debug}"
1249      <junitreport todir="${build.j1.dir}">             debuglevel="${build.debuglevel}"
1250        <fileset dir="${build.j1.dir}">             deprecation="${build.deprecation}"
1251          <include name="TEST-*.xml"/>             bootclasspath="@{jsr166y.jar}:${bootclasspath6}"
1252        </fileset>             classpath=""
1253        <report styledir="${stylesheet.dir}"             source="6"
1254                  format="${junit.report.format}"             target="6"
1255                   todir="${build.j1.dir}"             includeAntRuntime="false"
1256        />             includeJavaRuntime="false"
1257      </junitreport>             encoding="ASCII"
1258               executable="${javac7}"
1259               fork="true">
1260    
1261      <fail message="Test Cases Failed" if="junit.failed"/>        <include name="extra166y/**/*.java"/>
1262          <compilerarg value="-XDignore.symbol.file=true"/>
1263          <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
1264          <compilerarg value="-Werror"/>
1265          <compilerarg line="${build.args}"/>
1266    
1267        </javac>
1268    </target>    </target>
1269    
1270    
1271      <target name="extra166yjar"
1272              depends="extra166ycompile"
1273              description="Builds library jar from compiled sources">
1274    
1275    <!-- C++ and JNI definitions and demos -->      <jar destfile="${extra166y.jar}" index="true">
1276          <fileset dir="${build.extra166y.classes.dir}"/>
1277          <manifest>
1278            <attribute name="Built-By" value="${user.name}"/>
1279            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1280          </manifest>
1281        </jar>
1282    
1283    <target name="configure-cpp">    </target>
1284    
     <!-- Define tasks and types -->  
1285    
1286      <path id="cpptasks.path">    <target name="extra166ydocs"
1287        <pathelement location="${lib.dir}/cpptasks.jar"/>            description="Builds javadocs to build dir">
     </path>  
     <taskdef resource="cpptasks.tasks" classpathref="cpptasks.path"/>  
     <typedef resource="cpptasks.types" classpathref="cpptasks.path"/>  
1288    
1289      <!-- Set platform property for JNI includes -->      <delete dir="${extra166ydocs.dir}"/>
1290        <mkdir dir="${extra166ydocs.dir}"/>
1291    
1292      <condition property="platform" value="linux">      <javadoc destdir="${extra166ydocs.dir}"
1293        <os name="Linux"/>               packagenames="extra166y.*"
1294      </condition>               link="${java.api.url}"
1295      <condition property="platform" value="win32">               access="${build.javadoc.access}"
1296        <os family="windows"/>               sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1297      </condition>               bootclasspath="${bootclasspath6}"
1298      <condition property="platform" value="solaris">               source="6"
1299        <os name="SunOS"/>               executable="${javadoc7}">
1300      </condition>        <arg line="-Xdocrootparent ${java.docroot.url}"/>
1301          <arg value="-XDignore.symbol.file=true"/>
1302    
1303        </javadoc>
1304    </target>    </target>
1305    
1306    
1307    <target name="cppdemo" depends="configure-cpp">    <target name="extra166ydist"
1308              depends="extra166ydist-jar, extra166ydist-docs"
1309              description="Puts all distributable products in single hierarchy"/>
1310    
     <mkdir dir="${build.dir}"/>  
1311    
1312      <cc multithreaded="true"    <target name="extra166yclean"
1313                   name="g++"            description="Removes all extra166y build products">
                objdir="${build.dir}"  
               outfile="${build.dir}/CppDemo">  
       <fileset dir="${test.src.dir}" includes="CppDemo.cpp"/>  
       <libset libs="stdc++"/>  
     </cc>  
1314    
1315      <exec executable="${build.dir}/CppDemo">      <delete dir="${build.extra166y.dir}"/>
       <arg line="count in word frequency of word in command line count"/>  
     </exec>  
1316    
1317    </target>    </target>
1318    
1319    
1320    <target name="jnidemo" depends="init, configure-compiler, configure-cpp">    <target name="extra166ydist-jar"
1321              depends="extra166yclean, extra166yjar">
1322        <copy file="${extra166y.jar}" todir="${dist.dir}"/>
1323      </target>
1324    
1325      <mkdir dir="${build.testcases.dir}"/>    <target name="extra166ydist-docs"
1326              depends="extra166yclean, extra166ydocs">
1327        <mirror-dir src="${extra166ydocs.dir}" dst="${dist.extra166ydocs.dir}"/>
1328      </target>
1329    
1330      <javac srcdir="${test.src.dir}"    <!-- jsr166e -->
1331            destdir="${build.testcases.dir}"  
1332              debug="${build.debug}"    <property name="build.jsr166e.java.version" value="6"/>
1333         debuglevel="${build.debuglevel}"    <property name="build.jsr166e.javac" value="${javac6}"/>
1334        deprecation="${build.deprecation}"  
1335             source="${build.sourcelevel}"    <target name="jsr166ecompile"
1336               fork="true">            depends="configure-compiler"
1337        <compilerarg value="${bootclasspath.args}"/>            description="Compiles jsr166e sources">
1338    
1339        <mkdir dir="${build.jsr166e.classes.dir}"/>
1340    
1341        <javac srcdir="${topsrc.dir}"
1342               destdir="${build.jsr166e.classes.dir}"
1343               debug="${build.debug}"
1344               debuglevel="${build.debuglevel}"
1345               deprecation="${build.deprecation}"
1346               source="${build.jsr166e.java.version}"
1347               target="${build.jsr166e.java.version}"
1348               classpath=""
1349               includeAntRuntime="false"
1350               includeJavaRuntime="false"
1351               executable="${build.jsr166e.javac}"
1352               fork="true">
1353    
1354          <include name="jsr166e/**/*.java"/>
1355          <compilerarg value="-XDignore.symbol.file=true"/>
1356          <compilerarg value="-Xlint:all"/>
1357          <compilerarg value="-Werror"/>
1358        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
1359        <classpath refid="test.classpath"/>  
       <include name="JniDemo.java"/>  
1360      </javac>      </javac>
1361      </target>
1362    
1363      <javah destdir="${build.testcases.dir}"    <!-- jsr166e: find doclint errors -->
1364        classpathref="test.classpath">    <target name="jsr166edoclint">
       <class name="JniDemo"/>  
     </javah>  
1365    
1366      <cc multithreaded="true"      <mkdir dir="${build.jsr166e.classes.dir}"/>
                  name="g++"  
                objdir="${build.dir}"  
               outfile="${build.dir}/JniDemo"  
               outtype="shared">  
1367    
1368        <compiler>      <javac srcdir="${topsrc.dir}"
1369          <defineset>             destdir="${build.jsr166e.classes.dir}"
1370            <define name="__int64" value="long long"/>             debug="${build.debug}"
1371          </defineset>             debuglevel="${build.debuglevel}"
1372          <includepath location="${java.home}/../include"/>             deprecation="${build.deprecation}"
1373          <includepath location="${java.home}/../include/${platform}"/>             source="${build.jsr166e.java.version}"
1374          <compilerarg value="-mno-cygwin"/>             target="${build.jsr166e.java.version}"
1375        </compiler>             classpath=""
1376               bootclasspath="${bootclasspath6}"
1377               includeAntRuntime="false"
1378               includeJavaRuntime="false"
1379               executable="${javac8}"
1380               fork="true">
1381    
1382          <include name="jsr166e/**/*.java"/>
1383          <compilerarg value="-XDignore.symbol.file=true"/>
1384          <compilerarg value="-Xlint:all"/>
1385          <compilerarg value="-Werror"/>
1386          <compilerarg value="-Xdoclint:all/protected"/>
1387    
1388        <linker>      </javac>
1389          <linkerarg value="--add-stdcall-alias"/>    </target>
       </linker>  
1390    
       <includepath location="${build.testcases.dir}"/>  
1391    
1392        <fileset dir="${test.src.dir}" includes="JniDemo.cpp"/>    <target name="jsr166ejar"
1393              depends="jsr166ecompile"
1394              description="Builds library jar from compiled sources">
1395    
1396        <libset libs="stdc++"/>      <jar destfile="${jsr166e.jar}" index="true">
1397          <fileset dir="${build.jsr166e.classes.dir}"/>
1398          <manifest>
1399            <attribute name="Built-By" value="${user.name}"/>
1400            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1401          </manifest>
1402        </jar>
1403    
1404      </cc>    </target>
1405    
     <!-- Necessary if windows, harmless if not -->  
     <copy file="${build.dir}/libJniDemo.so" tofile="${build.dir}/JniDemo.dll"/>  
1406    
1407      <java classname="JniDemo" fork="true">    <target name="jsr166edocs"
1408        <!-- Watch out: path separator hardwired to semicolon here! -->            description="Builds javadocs to build dir">
1409        <sysproperty key="java.library.path" path="${java.library.path};${build.dir}"/>  
1410        <classpath refid="test.classpath"/>      <delete dir="${jsr166edocs.dir}"/>
1411        <arg line="count in word frequency of word in command line count"/>      <mkdir dir="${jsr166edocs.dir}"/>
     </java>  
1412    
1413        <javadoc destdir="${jsr166edocs.dir}"
1414                 packagenames="jsr166e.*"
1415                 link="${java.api.url}"
1416                 access="${build.javadoc.access}"
1417                 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1418                 source="${build.jsr166e.java.version}"
1419                 executable="${javadoc7}"
1420                 failonerror = "true">
1421          <arg line="-Xdocrootparent ${java.docroot.url}"/>
1422          <arg value="-XDignore.symbol.file=true"/>
1423    
1424        </javadoc>
1425    </target>    </target>
1426    
1427    
1428      <target name="jsr166e-tck-one-java-version"
1429              depends="jsr166ejar">
1430    
1431    <!-- Backward compatibility, work in progress (some files not checked in) -->      <echo message="Testing with jdk${build.jsr166e.java.version} ..."/>
1432    
1433        <run-tck-tests
1434          tck.src.dir="${test.src.dir}/tck-jsr166e"
1435          target="${build.jsr166e.java.version}"
1436          workdir="${build.jsr166e.dir}"
1437          classes="${jsr166e.jar}"/>
1438      </target>
1439    
1440      <target name="jsr166e-tck"
1441              description="Runs tck tests for jsr166e for multiple java versions">
1442    
1443    <property name="pretiger.src.dir"     location="${build.dir}/pretiger/src"/>  <!--     <antcall target="clean"/> -->
1444    <property name="build.pretiger.dir"   location="${build.dir}/pretiger/classes"/>  <!--     <antcall target="jsr166e-tck-one-java-version"> -->
1445    <property name="pretiger.jar"         location="${build.lib.dir}/jsr166-pretiger.jar"/>  <!--       <param name="build.jsr166e.java.version" value="8"/> -->
1446    <property name="pretiger.sourcelevel" value="1.4"/>  <!--       <param name="build.jsr166e.javac" value="${javac8}"/> -->
1447    <!--     </antcall> -->
1448    
1449    <target name="defang"      <antcall target="clean"/>
1450         depends="init"      <antcall target="jsr166e-tck-one-java-version">
1451     description="Generates pre-Tiger compatible source">        <param name="build.jsr166e.java.version" value="7"/>
1452          <param name="build.jsr166e.javac" value="${javac7}"/>
1453        </antcall>
1454    
1455      <delete dir="${pretiger.src.dir}"/>      <antcall target="clean"/>
1456      <mkdir dir="${pretiger.src.dir}"/>      <antcall target="jsr166e-tck-one-java-version">
1457          <param name="build.jsr166e.java.version" value="6"/>
1458          <param name="build.jsr166e.javac" value="${javac6}"/>
1459        </antcall>
1460      </target>
1461    
     <exec executable="perl">  
       <arg file="etc/defang.pl"/>  
       <!-- <arg value="-v"/> -->  
       <arg value="-s"/> <arg file="${src.dir}"/>  
       <arg value="-t"/> <arg file="${pretiger.src.dir}"/>  
     </exec>  
1462    
1463      <target name="jsr166e-test"
1464              depends="jsr166e-tck"
1465              description="Runs all tests for jsr166e">
1466    </target>    </target>
1467    
1468    <target name="compile-pretiger"    <target name="jsr166edist"
1469            depends="init, configure-compiler, defang"            depends="jsr166edist-jar, jsr166edist-docs"
1470            description="Compiles pre-Tiger sources to build folder">            description="Puts all distributable products in single hierarchy"/>
1471    
     <mkdir dir="${build.pretiger.dir}"/>  
1472    
1473      <javac srcdir="${pretiger.src.dir}"    <target name="jsr166eclean"
1474            destdir="${build.pretiger.dir}"            description="Removes all jsr166e build products">
1475              debug="${build.debug}"      <delete dir="${build.jsr166e.dir}"/>
1476         debuglevel="${build.debuglevel}"    </target>
       deprecation="${build.deprecation}"  
            source="${pretiger.sourcelevel}"  
              fork="true">  
1477    
       <compilerarg line="${build.args}"/>  
       <exclude name="**/Thread.java"/>  
1478    
1479      </javac>    <target name="jsr166edist-jar"
1480              depends="jsr166eclean, jsr166ejar">
1481        <copy file="${jsr166e.jar}" todir="${dist.dir}"/>
1482      </target>
1483    
1484      <target name="jsr166edist-docs"
1485              depends="jsr166eclean, jsr166edocs">
1486        <mirror-dir src="${jsr166edocs.dir}" dst="${dist.jsr166edocs.dir}"/>
1487    </target>    </target>
1488    
   <target name="pretiger" depends="compile-pretiger">  
1489    
1490      <mkdir dir="${build.lib.dir}"/>  <!-- Find buglets that can be detected by static build tools -->
1491    
1492      <jar destfile="${pretiger.jar}">    <target name="lint">
1493        <fileset dir="${build.pretiger.dir}">      <antcall target="dists">
1494        </fileset>        <param name="build.javadoc.access" value="public"/>
1495      </jar>      </antcall>
1496      </target>
1497    
1498    <!-- Generates all doclint warnings, even for private methods (rarely useful) -->
1499      <target name="lint-private">
1500        <antcall target="dist">
1501          <param name="build.javadoc.access" value="private"/>
1502        </antcall>
1503    </target>    </target>
1504    
1505    
1506  </project>  </project>

Legend:
Removed from v.1.67  
changed lines
  Added in v.1.219

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