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

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

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