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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.126  
changed lines
  Added in v.1.267

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