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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.71  
changed lines
  Added in v.1.224

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8