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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.65  
changed lines
  Added in v.1.236

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