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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.139  
changed lines
  Added in v.1.303

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