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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.74  
changed lines
  Added in v.1.228

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