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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.70  
changed lines
  Added in v.1.244

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