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

Diff of /jsr166/build.xml

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

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

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

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