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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.64  
changed lines
  Added in v.1.234

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