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

Diff of /jsr166/build.xml

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

revision 1.157 by jsr166, Tue Jul 8 00:01:39 2014 UTC revision 1.321 by jsr166, Sat Dec 12 18:58:10 2020 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:
22    $HOME/jdk/jdk6    $HOME/jdk/jdk11
23    $HOME/jdk/jdk7    $HOME/jdk/jdk12
24    $HOME/jdk/jdk8    $HOME/jdk/jdk13
25    $HOME/jdk/jdk9    $HOME/jdk/jdk14
26      $HOME/jdk/jdk15
27      $HOME/jdk/jdk16
28      $HOME/jdk/jdk17
29    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
30    $HOME/jdk/src/jdk6    $HOME/jdk/src/jdk11
31    $HOME/jdk/src/jdk7    $HOME/jdk/src/jdk12
32    $HOME/jdk/src/jdk8    $HOME/jdk/src/jdk13
33    $HOME/jdk/src/jdk9    $HOME/jdk/src/jdk14
34    where each of the above is a complete JDK source tree    $HOME/jdk/src/jdk15
35    (e.g. mercurial forest) or a symlink to same.    $HOME/jdk/src/jdk16
36      $HOME/jdk/src/jdk17
37      where each of the above is a JDK source tree or a symlink to same.
38    
39      Alternatively, define ant variables thus:
40      ant -Djdk$N.home=... -Djdk$N.src.home=...
41      for $N in 11 .. 17 ...
42    
43      As of 2016-03, the sources in src/main are for jdk9+ only.
44      As of 2019-08, the sources in src/main are for jdk11+ only.
45      As of 2019-10, compatibility support for jdk8 is dropped entirely.
46  ------------------------------------------------------------------------------  ------------------------------------------------------------------------------
47    </description>    </description>
48    
49    <!-- Display main targets by running 'ant -projecthelp' -->    <!-- Run 'ant -projecthelp' (default target) -->
50    <target name="usage">    <target name="usage">
51      <java classname="org.apache.tools.ant.Main">      <java classname="org.apache.tools.ant.Main">
52        <arg value="-projecthelp" />        <arg value="-projecthelp" />
53      </java>      </java>
54    </target>    </target>
55    
56      <!-- HOWTO printf debug: <echo message="prop=${prop}"/> -->
57    
58    <!-- User-specific settings -->    <!-- User-specific settings -->
59    <property file="user.properties"/>    <property file="user.properties"/>
60    
61    
62    <!-- Compilation options -->    <!-- Compilation options -->
   <property name="build.sourcelevel"    value="6"/>  
63    <property name="build.debug"          value="true"/>    <property name="build.debug"          value="true"/>
64    <property name="build.debuglevel"     value="source,lines,vars"/>    <property name="build.debuglevel"     value="source,lines,vars"/>
65    <property name="build.deprecation"    value="false"/>    <property name="build.deprecation"    value="false"/>
66    <property name="build.javadoc.access" value="protected"/>    <property name="build.javadoc.access" value="protected"/>
67    
   <!-- Tck options; see JSR166TestCase.java  
    Profiling a tck test class:  
    ant -Djsr166.profileTests=true -Djsr166.profileThreshold=100 -Djsr166.tckTestClass=CompletableFutureTest test-tck  
    Stress test a tck test class:  
    ant -Djsr166.tckTestClass=CountedCompleterTest -Djsr166.runsPerTest=100 test-tck  
   -->  
   <property name="jsr166.profileTests"     value="false"/>  
   <property name="jsr166.profileThreshold" value="100"/>  
   <property name="jsr166.runsPerTest"      value="1"/>  
   <!-- Stress test an individual tck test class:  
   ant -Djsr166.tckTestClass=CountedCompleterTest -Djsr166.runsPerTest=100 test-tck  
   -->  
   <property name="jsr166.tckTestClass"     value="JSR166TestCase"/>  
   
68    <!-- Build locations -->    <!-- Build locations -->
69    <property name="build.dir"                   location="build"/>    <property name="build.dir"                   location="build"/>
70    <property name="build.classes.dir"           location="${build.dir}/classes"/>    <property name="build.classes.dir"           location="${build.dir}/classes"/>
71    <property name="build.testcases.dir"         location="${build.dir}/testcases"/>    <property name="build.testcases.dir"         location="${build.dir}/testcases"/>
72    <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"/>  
   
   <property name="build.4jdk7.dir"             location="${build.dir}/jsr166-4jdk7"/>  
   <property name="build.4jdk7.classes.dir"     location="${build.4jdk7.dir}/classes"/>  
   <property name="build.4jdk7.tck.classes.dir" location="${build.4jdk7.dir}/tck-classes"/>  
   <property name="build.4jdk7.docs.dir"        location="${build.4jdk7.dir}/docs"/>  
   
   <property name="build.jsr166x.dir"           location="${build.dir}/jsr166x"/>  
   <property name="build.jsr166y.dir"           location="${build.dir}/jsr166y"/>  
   <property name="build.jsr166e.dir"           location="${build.dir}/jsr166e"/>  
   <property name="build.extra166y.dir"         location="${build.dir}/extra166y"/>  
   
   <property name="build.jsr166x.classes.dir"   location="${build.jsr166x.dir}/classes"/>  
   <property name="build.jsr166y.classes.dir"   location="${build.jsr166y.dir}/classes"/>  
   <property name="build.jsr166e.classes.dir"   location="${build.jsr166e.dir}/classes"/>  
   <property name="build.extra166y.classes.dir" location="${build.extra166y.dir}/classes"/>  
73    
74    <!-- JDK locations -->    <!-- JDK locations -->
75    <property name="jdks.home"  location="${user.home}/jdk"/>    <property name="jdks.home"  location="${user.home}/jdk"/>
# Line 88  Line 77 
77    <macrodef name="defjdklocations">    <macrodef name="defjdklocations">
78      <attribute name="v"/>      <attribute name="v"/>
79      <sequential>      <sequential>
80      <property name="jdk@{v}.home"   location="${jdks.home}/jdk@{v}"/>      <property name="jdk@{v}.home"     location="${jdks.home}/jdk@{v}"/>
81      <property name="java@{v}"       location="${jdk@{v}.home}/bin/java"/>      <property name="java@{v}"         location="${jdk@{v}.home}/bin/java"/>
82      <property name="javac@{v}"      location="${jdk@{v}.home}/bin/javac"/>      <property name="javac@{v}"        location="${jdk@{v}.home}/bin/javac"/>
83      <property name="javadoc@{v}"    location="${jdk@{v}.home}/bin/javadoc"/>      <property name="javadoc@{v}"      location="${jdk@{v}.home}/bin/javadoc"/>
84      <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}"/>
85      <local name="boot.jar.dir"/>      <property name="jdk@{v}.src.dir"  location="${jdk@{v}.src.home}/jdk/src/java.base/share/classes"/>
     <property name="boot.jar.dir"   location="${jdk@{v}.home}/jre/lib"/>  
     <path id="bootclasspath@{v}">  
       <pathelement path="${boot.jar.dir}/resources.jar"/>  
       <pathelement path="${boot.jar.dir}/rt.jar"/>  
       <pathelement path="${boot.jar.dir}/jsse.jar"/>  
       <pathelement path="${boot.jar.dir}/jce.jar"/>  
       <pathelement path="${boot.jar.dir}/charsets.jar"/>  
     </path>  
     <property name="bootclasspath@{v}" value="${toString:bootclasspath@{v}}"/>  
86      </sequential>      </sequential>
87    </macrodef>    </macrodef>
88    
# Line 118  Line 98 
98      </sequential>      </sequential>
99    </macrodef>    </macrodef>
100    
101    <defjdklocations v="6"/>    <defjdklocations v="11"/>
102    <defjdklocations v="7"/>    <defjdklocations v="12"/>
103    <defjdklocations v="8"/>    <defjdklocations v="13"/>
104    <defjdklocations v="9"/>    <defjdklocations v="14"/>
105      <defjdklocations v="15"/>
106      <defjdklocations v="16"/>
107      <defjdklocations v="17"/>
108    
109    <!-- Source locations -->    <!-- Source locations -->
110    <property name="src.dir"              location="${basedir}/src/main"/>    <property name="src.dir"              location="${basedir}/src/main"/>
111    <property name="test.src.dir"         location="${basedir}/src/test"/>    <property name="test.src.dir"         location="${basedir}/src/test"/>
112    <property name="loops.src.dir"        location="${basedir}/src/loops"/>    <property name="loops.src.dir"        location="${basedir}/src/loops"/>
113    <property name="tck.src.dir"          location="${test.src.dir}/tck"/>    <property name="tck.src.dir"          location="${test.src.dir}/tck"/>
114    <property name="jtreg.src.dir"        location="${test.src.dir}/jtreg"/>    <property name="jtreg11.src.dir"      location="${test.src.dir}/jtreg"/>
115      <property name="jtreg12.src.dir"      location="${test.src.dir}/jtreg"/>
116      <property name="jtreg13.src.dir"      location="${test.src.dir}/jtreg"/>
117      <property name="jtreg14.src.dir"      location="${test.src.dir}/jtreg"/>
118      <property name="jtreg15.src.dir"      location="${test.src.dir}/jtreg"/>
119      <property name="jtreg16.src.dir"      location="${test.src.dir}/jtreg"/>
120      <property name="jtreg17.src.dir"      location="${test.src.dir}/jtreg"/>
121      <property name="jtreg.src.dir"        location="${jtreg11.src.dir}"/>
122    <property name="lib.dir"              location="${basedir}/lib"/>    <property name="lib.dir"              location="${basedir}/lib"/>
123    <property name="dist.dir"             location="${basedir}/dist"/>    <property name="dist.dir"             location="${basedir}/dist"/>
124    <property name="topsrc.dir"           location="${basedir}/src"/>    <property name="topsrc.dir"           location="${basedir}/src"/>
   <property name="4jdk7src.dir"         location="${topsrc.dir}/jdk7"/>  
   <property name="jsr166xsrc.dir"       location="${topsrc.dir}/jsr166x"/>  
   <property name="jsr166ysrc.dir"       location="${topsrc.dir}/jsr166y"/>  
   <property name="jsr166esrc.dir"       location="${topsrc.dir}/jsr166e"/>  
   <property name="extra166ysrc.dir"     location="${topsrc.dir}/extra166y"/>  
125    
126    <!-- Javadoc locations -->    <!-- Javadoc locations -->
127    <property name="docs.dir"          location="${build.dir}/docs"/>    <property name="docs.dir"          location="${build.dir}/docs"/>
128    <property name="4jdk7docs.dir"     location="${build.4jdk7.dir}/docs"/>    <property name="dist.docs.dir"     location="${dist.dir}/docs"/>
   <property name="jsr166xdocs.dir"   location="${build.jsr166x.dir}/docs"/>  
   <property name="jsr166ydocs.dir"   location="${build.jsr166y.dir}/docs"/>  
   <property name="jsr166edocs.dir"   location="${build.jsr166e.dir}/docs"/>  
   <property name="extra166ydocs.dir" location="${build.extra166y.dir}/docs"/>  
   
   <property name="dist.docs.dir"          location="${dist.dir}/docs"/>  
   <property name="dist.4jdk7docs.dir"     location="${dist.dir}/jsr166-4jdk7docs"/>  
   <property name="dist.jsr166xdocs.dir"   location="${dist.dir}/jsr166xdocs"/>  
   <property name="dist.jsr166ydocs.dir"   location="${dist.dir}/jsr166ydocs"/>  
   <property name="dist.jsr166edocs.dir"   location="${dist.dir}/jsr166edocs"/>  
   <property name="dist.extra166ydocs.dir" location="${dist.dir}/extra166ydocs"/>  
129    
130    <!-- Jar locations -->    <!-- Jar locations -->
131    <property name="product.jar"      location="${build.dir}/jsr166.jar"/>    <property name="product.jar"      location="${build.dir}/jsr166.jar"/>
   <property name="4jdk7product.jar" location="${build.4jdk7.dir}/jsr166-4jdk7.jar"/>  
   <property name="jsr166x.jar"      location="${build.jsr166x.dir}/jsr166x.jar"/>  
   <property name="jsr166y.jar"      location="${build.jsr166y.dir}/jsr166y.jar"/>  
   <property name="jsr166e.jar"      location="${build.jsr166e.dir}/jsr166e.jar"/>  
   <property name="extra166y.jar"    location="${build.extra166y.dir}/extra166y.jar"/>  
132    <property name="junit.jar"        location="${lib.dir}/junit.jar"/>    <property name="junit.jar"        location="${lib.dir}/junit.jar"/>
133    
134    <!-- Canonical location of jdk docs root, to use with javadoc -Xdocrootparent flag -->    <!-- Canonical location of jdk docs root, to use with javadoc -Xdocrootparent flag -->
135    <property name="java5.docroot.url"      value="http://docs.oracle.com/javase/1.5.0/docs"/>    <!-- Switched to https: in 2017-10 - JDK-8190312 -->
136    <property name="java6.docroot.url"      value="http://docs.oracle.com/javase/6/docs"/>    <!-- <property name="java5.docroot.url"  value="https://docs.oracle.com/javase/1.5.0/docs"/> -->
137    <property name="java7.docroot.url"      value="http://docs.oracle.com/javase/7/docs"/>    <!-- <property name="java6.docroot.url"  value="https://docs.oracle.com/javase/6/docs"/> -->
138    <property name="java8.docroot.url"      value="http://docs.oracle.com/javase/8/docs"/>    <!-- <property name="java7.docroot.url"  value="https://docs.oracle.com/javase/7/docs"/> -->
139    <!-- The expected canonical location does not yet exist as of 2014-07 -->    <!-- <property name="java8.docroot.url"  value="https://docs.oracle.com/javase/8/docs"/> -->
140    <!-- <property name="java9.docroot.url" value="http://docs.oracle.com/javase/9/docs"/> -->    <!-- The location of jdk early access docs (RIP) -->
141    <property name="java9.docroot.url"      value="http://download.java.net/jdk9/docs"/>    <!-- <property name="java11.docroot.url" value="http://download.java.net/java/jdk11/docs"/> -->
142    <!-- Default jdk doc location (latest stable release seems best) -->    <!-- <property name="java12.docroot.url" value="https://download.java.net/java/jdk12/docs"/> -->
143    <property name="java.docroot.url"       value="${java8.docroot.url}"/>    <!-- <property name="java13.docroot.url" value="https://download.java.net/java/early_access/jdk13/docs"/> -->
144      <property name="java11.docroot.url" value="https://docs.oracle.com/en/java/javase/11/docs"/>
145      <property name="java12.docroot.url" value="https://docs.oracle.com/en/java/javase/12/docs"/>
146      <property name="java13.docroot.url" value="https://docs.oracle.com/en/java/javase/13/docs"/>
147      <property name="java14.docroot.url" value="https://docs.oracle.com/en/java/javase/14/docs"/>
148      <property name="java15.docroot.url" value="https://docs.oracle.com/en/java/javase/15/docs"/>
149      <property name="java16.docroot.url" value="https://download.java.net/java/early_access/jdk16/docs"/>
150      <property name="java17.docroot.url" value="https://download.java.net/java/early_access/jdk17/docs"/>
151      <!-- Default jdk doc location (latest stable LTS release seems best) -->
152      <property name="java.docroot.url"   value="${java11.docroot.url}"/>
153    
154    <!-- Canonical location of jdk API docs, to use with javadoc link attribute -->    <!-- Canonical location of jdk API docs, to use with javadoc link attribute -->
155    <property name="java5.api.url"      value="${java5.docroot.url}/api/"/>    <property name="java11.api.url"     value="${java11.docroot.url}/api/"/>
156    <property name="java6.api.url"      value="${java6.docroot.url}/api/"/>    <property name="java12.api.url"     value="${java12.docroot.url}/api/"/>
157    <property name="java7.api.url"      value="${java7.docroot.url}/api/"/>    <property name="java13.api.url"     value="${java13.docroot.url}/api/"/>
158    <property name="java8.api.url"      value="${java8.docroot.url}/api/"/>    <property name="java14.api.url"     value="${java14.docroot.url}/api/"/>
159    <property name="java9.api.url"      value="${java9.docroot.url}/api/"/>    <property name="java15.api.url"     value="${java15.docroot.url}/api/"/>
160      <property name="java16.api.url"     value="${java16.docroot.url}/api/"/>
161      <property name="java17.api.url"     value="${java17.docroot.url}/api/"/>
162    <property name="java.api.url"       value="${java.docroot.url}/api/"/>    <property name="java.api.url"       value="${java.docroot.url}/api/"/>
163    
164    <!-- Define the "jtreg" task -->    <!-- Define the "jtreg" task -->
# Line 186  Line 166 
166    <taskdef name="jtreg" classname="com.sun.javatest.regtest.Main$$Ant"    <taskdef name="jtreg" classname="com.sun.javatest.regtest.Main$$Ant"
167             classpath="${lib.dir}/jtreg.jar" />             classpath="${lib.dir}/jtreg.jar" />
168    
169    <!-- Test classpath -->    <!-- Tck configuration options; see JSR166TestCase.java
170    <path id="test.classpath">     To profile a single tck test class:
171      <pathelement location="${build.testcases.dir}"/>     ant -Djsr166.profileTests=true -Djsr166.profileThreshold=10 -Djsr166.tckTestClass=CompletableFutureTest tck
172      <pathelement location="${junit.jar}"/>     To stress test a single tck test class:
173    </path>     ant -Djsr166.tckTestClass=CountedCompleterTest -Djsr166.runsPerTest=100 tck
174       To stress test a single tck test method:
175       ant -Djsr166.tckTestClass=RecursiveTaskTest -Djsr166.runsPerTest=1000 -Djsr166.methodFilter=testAbnormalInvokeAll3 tck
176      -->
177      <property name="jsr166.tckTestClass"     value="JSR166TestCase"/>
178    <macrodef name="run-tck-tests">    <macrodef name="run-tck-tests">
179      <attribute name="tck.src.dir" default="${tck.src.dir}"/>      <attribute name="tck.src.dir" default="${tck.src.dir}"/>
180      <attribute name="target"/>      <attribute name="target"/>
181      <attribute name="compile-target" default="@{target}"/>      <attribute name="compile-target" default="@{target}"/>
182      <attribute name="workdir"/>      <attribute name="workdir"/>
183      <attribute name="classes"/>      <attribute name="classes"/>
184      <attribute name="jvmflags" default="-ea -esa -Djsr166.testImplementationDetails=true"/>      <!--
185            <attribute name="jvmflags" default="-XX:+UseParallelGC -XX:-UseBiasedLocking -ea -esa -Djsr166.testImplementationDetails=true"/>
186        -->
187            <attribute name="jvmflags" default="-ea -esa -Djsr166.testImplementationDetails=true"/>
188      <element name="javac-elements" optional="true"/>      <element name="javac-elements" optional="true"/>
189    
190      <sequential>      <sequential>
191    
192      <mkdir dir="@{workdir}/tck-classes"/>      <mkdir dir="@{workdir}/tck-classes"/>
# Line 212  Line 199 
199             source="@{compile-target}"             source="@{compile-target}"
200             target="@{compile-target}"             target="@{compile-target}"
201             classpath="${junit.jar}"             classpath="${junit.jar}"
            bootclasspath="@{classes}:${bootclasspath@{compile-target}}"  
202             includeAntRuntime="false"             includeAntRuntime="false"
203             includeJavaRuntime="false"             includeJavaRuntime="false"
204               encoding="ASCII"
205             executable="${javac@{compile-target}}"             executable="${javac@{compile-target}}"
206             fork="true">             fork="true">
207    
208        <include name="*.java"/>        <include name="*.java"/>
209        <compilerarg value="-XDignore.symbol.file=true"/>        <compilerarg value="-XDignore.symbol.file=true"/>
210        <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation"/>        <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation,-try"/>
211          <compilerarg value="-Xdoclint:reference/private"/>
212          <compilerarg value="--patch-module=java.base=@{classes}"/>
213        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
214        <javac-elements/>        <javac-elements/>
215    
# Line 230  Line 219 
219            failonerror="true"            failonerror="true"
220            jvm="${java@{target}}"            jvm="${java@{target}}"
221            fork="true">            fork="true">
222          <jvmarg value="-Xbootclasspath/p:@{classes}"/>          <jvmarg value="--patch-module=java.base=@{classes}"/>
223          <jvmarg line="@{jvmflags}"/>          <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED"/>
224          <sysproperty key="jsr166.profileTests"     value="${jsr166.profileTests}"/>          <jvmarg value="--add-opens=java.base/java.util=ALL-UNNAMED"/>
225          <sysproperty key="jsr166.profileThreshold" value="${jsr166.profileThreshold}"/>          <jvmarg value="--add-opens=java.base/java.util.concurrent=ALL-UNNAMED"/>
226          <sysproperty key="jsr166.runsPerTest"      value="${jsr166.runsPerTest}"/>          <jvmarg value="--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED"/>
227          <classpath>          <jvmarg value="--add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED"/>
228            <pathelement location="${junit.jar}"/>          <jvmarg line="@{jvmflags}"/>
229            <pathelement location="@{workdir}/tck-classes"/>          <!-- ant -Dvmoptions="-Xmx8m" -Djsr166.tckTestClass=CompletableFutureTest tck -->
230          </classpath>          <jvmarg line="${vmoptions}" if:set="vmoptions"/>
231    
232            <!-- ant -Djava.util.concurrent.ForkJoinPool.common.parallelism=1 tck -->
233            <syspropertyset id="system-properties-used-by-tck">
234              <propertyref prefix="java.util.concurrent.ForkJoinPool"/>
235              <propertyref prefix="jsr166."/>
236              <propertyref name="test.timeout.factor"/>
237            </syspropertyset>
238    
239            <classpath>
240              <pathelement location="${junit.jar}"/>
241              <pathelement location="@{workdir}/tck-classes"/>
242            </classpath>
243      </java>      </java>
244    
245      </sequential>      </sequential>
246    </macrodef>    </macrodef>
247    
248      <!-- Define jtreg test sets for different jdk versions -->
249      <!-- ant -Djtreg.test.pattern="**/ConcurrentHashMap/" -->
250      <!-- ant -Djtreg.test.pattern="**/ToArray.java" -->
251      <property name="jtreg.test.pattern" value="**/*.java"/>
252      <macrodef name="defjtregtests">
253        <attribute name="v"/>
254        <sequential>
255          <fileset dir="${jtreg@{v}.src.dir}">
256            <patternset id="jdk@{v}.jtreg.tests">
257              <include name="${jtreg.test.pattern}"/>
258            </patternset>
259          </fileset>
260        </sequential>
261      </macrodef>
262    
263      <defjtregtests v="17"/>
264      <defjtregtests v="16"/>
265      <defjtregtests v="15"/>
266      <defjtregtests v="14"/>
267      <defjtregtests v="13"/>
268      <defjtregtests v="12"/>
269      <defjtregtests v="11"/>
270    
271      <!-- ant -Djtreg.flags=-timeoutFactor:4 -->
272      <property name="jtreg.flags" value=""/>
273    
274    <macrodef name="run-jtreg-tests">    <macrodef name="run-jtreg-tests">
275      <!-- ant -Djtreg.src.dir=src/test/jtreg/util/concurrent/CompletableFuture test-jtreg -->      <!-- ant -Djtreg11.src.dir=src/test/jtreg/util/concurrent/CompletableFuture jtreg -->
     <attribute name="jtreg.src.dir" default="${jtreg.src.dir}"/>  
     <attribute name="source" default="7"/>  
276      <attribute name="target"/>      <attribute name="target"/>
277      <attribute name="workdir"/>      <attribute name="workdir"/>
278      <attribute name="classes"/>      <attribute name="classes"/>
279        <attribute name="verbose" default="${jtreg.verbose}"/>
280      <attribute name="jtregflags" default=""/>      <attribute name="jtregflags" default=""/>
281        <element name="jtreg-elements" optional="true"/>
282    
283      <sequential>      <sequential>
284    
285        <!-- ant -Djtreg.verbose=time,fail,error jtreg -->
286        <property name="jtreg.verbose" value="nopass,fail,error"/>
287    
288      <delete dir="@{workdir}/JTwork"   quiet="true"/>      <delete dir="@{workdir}/JTwork"   quiet="true"/>
289      <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}"  
290             jdk="${jdk@{target}.home}"             jdk="${jdk@{target}.home}"
291             workDir="@{workdir}/JTwork"             workDir="@{workdir}/JTwork">
292             reportDir="@{workdir}/JTreport">        <patternset refid="jdk@{target}.jtreg.tests"/>
293          <arg value="-javacoptions:--patch-module=java.base=@{classes}"/>
294        <arg value="-Xbootclasspath/p:@{classes}"/>        <arg value="-vmoptions:--patch-module=java.base=@{classes}"/>
295          <arg value="-vmoptions:${vmoptions}" if:set="vmoptions"/>
296        <arg value="-agentvm"/>        <arg value="-agentvm"/>
297        <arg value="-v:nopass,fail"/>        <arg value="-noreport"/>
298          <arg value="-verbose:@{verbose}"/>
299        <arg value="-vmoptions:-esa -ea"/>        <arg value="-vmoptions:-esa -ea"/>
300        <arg value="-automatic"/>        <arg value="-automatic"/>
301        <arg value="-k:!ignore"/>        <arg value="-k:!ignore"/>
302        <arg line="@{jtregflags}"/>        <arg line="@{jtregflags}"/>
303          <arg line="${jtreg.flags}"/>
304          <jtreg-elements/>
305      </jtreg>      </jtreg>
306      </sequential>      </sequential>
307    </macrodef>    </macrodef>
# Line 279  Line 312 
312    </path>    </path>
313    
314    <!-- Support @jls tag, used in jdk8+ javadoc -->    <!-- Support @jls tag, used in jdk8+ javadoc -->
315      <!-- TODO: switch to @jls taglet, as supported by jdk14+ javadoc -->
316    <property name="javadoc.jls.cite" value="The Java&amp;trade; Language Specification"/>    <property name="javadoc.jls.cite" value="The Java&amp;trade; Language Specification"/>
317    <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;:"/>
318    
319    <!-- Main targets -->    <!-- Main targets -->
320    
321    <property name="build.main.java.version" value="9"/>    <!-- Default values: may seem strange ... -->
322    <property name="build.main.javac" value="${javac9}"/>    <!-- At runtime, target latest LTS, i.e. jdk11 -->
323      <!-- But at build time, target jdk9, for maximal binary portability -->
324      <!-- ButButBut as of 2019-08, target jdk11 at build time -->
325      <!-- Use javadoc12 (but -link to jdk11 api docs!), to get:
326        o override-methods=summary
327        o {@systemProperty ...}
328        o 8211194: issues linking to external documentation (was: missing package-list for JDK10 / JDK11 documentation)
329        o 8202628: javadoc generates bad links in TestModules.java
330        -->
331      <property name="java.runtime.target" value="11"/>
332      <property name="build.main.java" value="${java11}"/>
333      <property name="build.main.javac" value="${javac11}"/>
334      <property name="build.main.javadoc" value="${javadoc12}"/>
335      <property name="build.main.javadoc.source" value="${java.runtime.target}"/>
336    
337    <target name="dists"    <target name="dists"
338            depends="dist, 4jdk7dist, jsr166edist, jsr166ydist, extra166ydist, jsr166xdist"            depends="dist"
339            description="Builds all public jars and docs"/>            description="Builds all public jars and docs"/>
340    
341    <target name="compile"    <target name="compile"
342            depends="configure-compiler"            depends="configure-compiler"
343            description="Compiles src/main sources to build dir">            description="Compiles src/main sources to build dir">
344    
345      <mkdir dir="${build.classes.dir}"/>      <local name="destdir"/>
346        <property name="destdir" value="${build.classes.dir}/java.base"/>
347    
348        <mkdir dir="${destdir}"/>
349    
350      <javac srcdir="${src.dir}"      <javac srcdir="${src.dir}"
351             destdir="${build.classes.dir}"             destdir="${destdir}"
352             debug="${build.debug}"             debug="${build.debug}"
353             debuglevel="${build.debuglevel}"             debuglevel="${build.debuglevel}"
354             deprecation="${build.deprecation}"             deprecation="${build.deprecation}"
355             classpath=""             classpath=""
356             includeAntRuntime="false"             includeAntRuntime="false"
357             includeJavaRuntime="false"             includeJavaRuntime="false"
358               encoding="ASCII"
359             executable="${build.main.javac}"             executable="${build.main.javac}"
360             fork="true">             fork="true">
361    
362        <include name="**/*.java"/>        <include name="**/*.java"/>
363          <compilerarg value="--patch-module=java.base=${src.dir}"/>
364        <compilerarg value="-Xprefer:source"/>        <compilerarg value="-Xprefer:source"/>
365        <compilerarg value="-XDignore.symbol.file=true"/>        <compilerarg value="-XDignore.symbol.file=true"/>
366        <compilerarg value="-Xlint:all"/>  <!--   Xlint:-removal for jdk12 Unsafe Object -> Reference renaming -->
367          <compilerarg value="-Xlint:all,-removal"/>
368          <compilerarg line="--doclint-format html5"/>
369    <!--  Temporarily disable doclint for private elements, due to -->
370    <!--  https://bugs.openjdk.java.net/browse/JDK-8214571 -->
371    <!--  which is expected to be fixed in openjdk 11.0.8 -->
372    <!--  <compilerarg value="-Xdoclint:all/protected,reference/private"/> -->
373        <compilerarg value="-Xdoclint:all/protected"/>        <compilerarg value="-Xdoclint:all/protected"/>
374          <compilerarg value="-Xdoclint/package:java.util.*"/>
375          <compilerarg value="-Werror"/>
376        <compilerarg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>        <compilerarg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
377        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
378    
# Line 322  Line 382 
382    
383    <target name="jar"    <target name="jar"
384            depends="compile"            depends="compile"
385            description="Builds library jar from compiled sources">            description="Builds library jar for src/main from compiled sources">
386        <local name="subdir"/>
387        <available property="subdir" file="${build.classes.dir}/java.base" type="dir" value="/java.base"/>
388      <jar destfile="${product.jar}">      <jar destfile="${product.jar}">
389        <fileset dir="${build.classes.dir}"/>        <fileset dir="${build.classes.dir}${subdir}"/>
390          <manifest>
391            <attribute name="Built-By" value="${user.name}"/>
392            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
393          </manifest>
394      </jar>      </jar>
395    </target>    </target>
396    
# Line 333  Line 398 
398    <target name="docs"    <target name="docs"
399            description="Builds javadocs for src/main to dist dir">            description="Builds javadocs for src/main to dist dir">
400    
401      <delete dir="${docs.dir}"/>      <delete dir="${docs.dir}" quiet="true"/>
402      <mkdir dir="${docs.dir}"/>      <mkdir dir="${docs.dir}"/>
403    
404        <!-- old school frames via docs/index.html?overview-summary.html -->
405        <!-- dash-dash-frames no longer a supported option in jdk13+ -->
406        <local name="use-frames"/>
407        <condition property="use-frames">
408          <equals arg1="${build.main.javadoc}" arg2="${javadoc12}"/>
409        </condition>
410    
411      <!-- the packagenames="none" hack below prevents scanning the -->      <!-- the packagenames="none" hack below prevents scanning the -->
412      <!-- sourcepath for packages -->      <!-- sourcepath for packages -->
413    
414    <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}" -->
415    <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}:${jdk9.src.home}/jdk/src/java.logging/share/classes" -->
416    <!-- TODO: sourcepath="${src.dir}:${jdk9.home}/src.zip" -->
417    <!-- TODO: <arg line="-sourcepath ${src.dir}:${jdk9.home}/src.zip"/> -->
418    <!-- TODO: <arg line="- -module-source-path ${jdk9.home}/src.zip"/> -->
419      <javadoc destdir="${docs.dir}"      <javadoc destdir="${docs.dir}"
420               packagenames="none"               packagenames="none"
421               link="${java9.api.url}"               link="${java.api.url}"
422               overview="${src.dir}/intro.html"               overview="${src.dir}/intro.html"
423               access="${build.javadoc.access}"               access="${build.javadoc.access}"
424               sourcepath="${src.dir}:${jdk9src.dir}"               sourcepath="${src.dir}"
425               classpath=""               classpath=""
426               executable="${javadoc9}">               source="${build.main.javadoc.source}"
427                 executable="${build.main.javadoc}">
428    <!-- TODO: JDK-8214571 failonerror = "true" -->
429        <fileset dir="${src.dir}" defaultexcludes="yes">        <fileset dir="${src.dir}" defaultexcludes="yes">
430          <include name="**/*.java"/>          <include name="java/**/*.java"/>
431        </fileset>        </fileset>
432        <arg line="-Xdocrootparent ${java9.docroot.url}"/>        <arg line="-Xdocrootparent ${java.docroot.url}"/>
433        <arg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>        <arg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
434          <arg value="-quiet"/>
435        <arg value="-XDignore.symbol.file=true"/>        <arg value="-XDignore.symbol.file=true"/>
436        <arg value="-tag"/>        <arg value="-html5"/>
437        <arg value="${javadoc.jls.option}"/>        <arg value="-Xdoclint:all,-missing"/>
438        <arg value="-tag"/>        <arg value="--patch-module=java.base=${src.dir}"/>
439        <arg value="apiNote:a:&lt;em&gt;API Note:&lt;/em&gt;"/>        <arg value="--frames" if:set="use-frames"/>
440        <arg value="-tag"/>        <arg value="--override-methods=summary"/>
441        <arg value="implSpec:a:&lt;em&gt;Implementation Requirements:&lt;/em&gt;"/>        <arg value="-tag"/> <arg value="${javadoc.jls.option}"/>
442        <arg value="-tag"/>        <arg value="-tag"/> <arg value="implSpec:a:Implementation Requirements:"/>
443        <arg value="implNote:a:&lt;em&gt;Implementation Note:&lt;/em&gt;"/>        <arg value="-tag"/> <arg value="implNote:a:Implementation Note:"/>
444          <arg value="-tag"/> <arg value="apiNote:a:API Note:"/>
445    <!-- tags added in jdk9: currently unused -->
446    <!--  <arg value="-tag"/> <arg value="revised:X"/> -->
447    <!--  <arg value="-tag"/> <arg value="spec:X"/> -->
448      </javadoc>      </javadoc>
449    </target>    </target>
450    
# Line 370  Line 454 
454            description="Puts all distributable products in single hierarchy"/>            description="Puts all distributable products in single hierarchy"/>
455    
456    
   <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>  
   
   
457    <target name="clean"    <target name="clean"
458            description="Removes all build products">            description="Removes all build products">
   
459      <delete dir="${build.dir}"/>      <delete dir="${build.dir}"/>
   
460    </target>    </target>
461    
462    
463    <target name="dist-clean"    <target name="dist-clean"
464            description="Removes all build and distribution products">            description="Removes all build and distribution products">
   
465      <delete dir="${build.dir}"/>      <delete dir="${build.dir}"/>
466      <delete dir="${dist.dir}"/>      <delete dir="${dist.dir}"/>
   
467    </target>    </target>
468    
469    
# Line 415  Line 477 
477      <mirror-dir src="${docs.dir}" dst="${dist.docs.dir}"/>      <mirror-dir src="${docs.dir}" dst="${dist.docs.dir}"/>
478    </target>    </target>
479    
480      <target name="tck"
481    <target name="test-tck"            depends="jar"
482            depends="jar"            description="Runs tck tests for src/main directly">
           description="Runs tck tests for main directly">  
483    
484      <run-tck-tests      <run-tck-tests
485        target="${build.main.java.version}"        target="${java.runtime.target}"
486        workdir="${build.dir}"        workdir="${build.dir}"
487        classes="${product.jar}"/>        classes="${product.jar}">
   </target>  
   
   <target name="test-jtreg"  
           depends="jar"  
           description="Runs jtreg tests for main using the jtreg ant task">  
     <run-jtreg-tests  
        target="${build.main.java.version}"  
        workdir="${build.dir}"  
        classes="${product.jar}"/>  
   </target>  
   
   <target name="test"  
           depends="test-tck, test-jtreg"  
           description="Runs tck and jtreg tests for main">  
   </target>  
   
   <target name="test89"  
           description="Runs tck and jtreg tests for main for multiple java versions">  
   
     <antcall target="clean"/>  
     <antcall target="test">  
       <param name="build.main.java.version" value="8"/>  
       <param name="build.main.javac" value="${javac8}"/>  
     </antcall>  
   
     <antcall target="clean"/>  
     <antcall target="test">  
       <param name="build.main.java.version" value="9"/>  
       <param name="build.main.javac" value="${javac9}"/>  
     </antcall>  
   
   </target>  
   
   
   
   <target name="configure-compiler">  
   
     <property name="unchecked.option" value="-Xlint:unchecked"/>  
   
     <condition property="warnunchecked.arg" value="${unchecked.option}">  
       <istrue value="${build.warnunchecked}"/>  
     </condition>  
   
     <property name="warnunchecked.arg" value=""/>  
   
   
     <!-- Common options in javac invocations -->  
     <property name="build.args" value="${warnunchecked.arg}"/>  
   
   </target>  
   
   
   
   <!-- Various demos and test programs -->  
   
   
   <target name="loops" depends="configure-compiler"  
           description="Benchmark from Doug Lea's AQS paper">  
   
     <mkdir dir="${build.loops.dir}"/>  
   
     <javac srcdir="${loops.src.dir}"  
           destdir="${build.loops.dir}"  
             debug="${build.debug}"  
        debuglevel="${build.debuglevel}"  
       deprecation="${build.deprecation}"  
            source="${build.sourcelevel}"  
              fork="true">  
   
       <compilerarg line="${build.args}"/>  
       <classpath refid="loops.classpath"/>  
       <compilerarg value="-XDignore.symbol.file=true"/>  
   
     </javac>  
   
     <java classname="ALoops" fork="true">  
       <classpath refid="loops.classpath"/>  
     </java>  
   
   </target>  
   
   
   <!-- jsr166 4jdk7 -->  
   
   <target name="4jdk7compile"  
           depends="configure-compiler"  
           description="Compiles src/jdk7 sources, targeting jdk7">  
   
     <mkdir dir="${build.4jdk7.classes.dir}"/>  
   
     <javac srcdir="${4jdk7src.dir}"  
            destdir="${build.4jdk7.classes.dir}"  
            debug="${build.debug}"  
            debuglevel="${build.debuglevel}"  
            deprecation="${build.deprecation}"  
            source="6"  
            classpath=""  
            bootclasspath="${bootclasspath6}"  
            includeAntRuntime="false"  
            includeJavaRuntime="false"  
            executable="${javac7}"  
            fork="true">  
   
       <include name="**/*.java"/>  
       <compilerarg value="-Xprefer:source"/>  
       <compilerarg value="-XDignore.symbol.file=true"/>  
       <compilerarg value="-Xlint:all"/>  
       <compilerarg line="${build.args}"/>  
   
     </javac>  
   </target>  
   
   <target name="4jdk7doclint"  
           depends="configure-compiler"  
           description="Finds doclint warnings">  
   
     <mkdir dir="${build.4jdk7.classes.dir}"/>  
   
     <javac srcdir="${4jdk7src.dir}"  
            destdir="${build.4jdk7.classes.dir}"  
            debug="${build.debug}"  
            debuglevel="${build.debuglevel}"  
            deprecation="${build.deprecation}"  
            source="6"  
            classpath=""  
            bootclasspath="${bootclasspath7}"  
            includeAntRuntime="false"  
            includeJavaRuntime="false"  
            executable="${javac8}"  
            fork="true">  
   
       <include name="**/*.java"/>  
       <compilerarg value="-Xprefer:source"/>  
       <compilerarg value="-XDignore.symbol.file=true"/>  
       <compilerarg value="-Xlint:all"/>  
       <compilerarg value="-Xdoclint:all/protected"/>  
       <compilerarg line="${build.args}"/>  
   
     </javac>  
   </target>  
   
   
   <target name="4jdk7jar"  
           depends="4jdk7compile"  
           description="Builds library jar from compiled sources">  
   
     <jar destfile="${4jdk7product.jar}">  
       <fileset dir="${build.4jdk7.classes.dir}"/>  
     </jar>  
   
   </target>  
   
   
   <target name="4jdk7-test-tck"  
           depends="4jdk7jar"  
           description="Runs tck tests for jsr166-4jdk7 directly">  
   
     <run-tck-tests  
       target="7"  
       workdir="${build.4jdk7.dir}"  
       classes="${4jdk7product.jar}">  
488        <javac-elements>        <javac-elements>
489          <!-- JDK8+ test classes -->          <compilerarg value="-Werror"/>
         <exclude name="*8Test.java"/>  
         <exclude name="*9Test.java"/>  
         <exclude name="DoubleAccumulatorTest.java"/>  
         <exclude name="DoubleAdderTest.java"/>  
         <exclude name="LongAccumulatorTest.java"/>  
         <exclude name="LongAdderTest.java"/>  
         <exclude name="CompletableFutureTest.java"/>  
         <exclude name="SplittableRandomTest.java"/>  
         <exclude name="StampedLockTest.java"/>  
490        </javac-elements>        </javac-elements>
491      </run-tck-tests>      </run-tck-tests>
492    </target>    </target>
493    
494      <target name="tck-parallelism-1"
495    <target name="4jdk7-test-tck-junit"            description="Runs tck with common pool parallelism 1">
496            depends="4jdk7compile"      <antcall target="tck">
497            description="Runs tck tests for jsr166-4jdk7 via junit task (experimental)">        <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="1"/>
498        </antcall>
     <junit printsummary="true"  
            showoutput="true"  
            errorProperty="junit.failed"  
            failureProperty="junit.failed"  
            includeantruntime="true"  
            jvm="${java7}"  
            fork="true">  
   
       <jvmarg value="-Xbootclasspath/p:${4jdk7product.jar}"/>  
       <jvmarg value="-server"/>  
   
       <classpath>  
         <pathelement location="${junit.jar}"/>  
         <pathelement location="${build.4jdk7.tck.classes.dir}"/>  
       </classpath>  
   
       <formatter type="brief"/>  
   
       <test name="${jsr166.tckTestClass}" haltonfailure="no">  
       </test>  
   
     </junit>  
499    </target>    </target>
500    
501    <target name="4jdk7-test-jtreg"    <target name="tck-parallelism-0"
502            depends="4jdk7jar"            description="Runs tck with common pool parallelism 0">
503            description="Runs jtreg tests for jsr166-4jdk7 using the jtreg ant task">      <antcall target="tck">
504      <run-jtreg-tests        <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="0"/>
505         target="7"      </antcall>
        workdir="${build.4jdk7.dir}"  
        classes="${4jdk7product.jar}"  
        jtregflags="-exclude:${jtreg.src.dir}/jdk8tests"/>  
506    </target>    </target>
507    
508      <target name="tck-security-manager"
509    <target name="4jdk7-test"            description="Runs tck with a security manager">
510            depends="4jdk7-test-tck, 4jdk7-test-jtreg"      <antcall target="tck">
511            description="Runs tck and jtreg tests for jsr166-4jdk7">        <param name="jsr166.useSecurityManager" value="true"/>
512        </antcall>
513    </target>    </target>
514    
515      <target name="jtreg"
516    <target name="4jdk7docs"            depends="jar"
517            description="Builds javadocs for src/jdk7 to dist dir">            description="Runs jtreg tests for src/main using the jtreg ant task">
518        <run-jtreg-tests
519      <delete dir="${4jdk7docs.dir}"/>         target="${java.runtime.target}"
520      <mkdir dir="${4jdk7docs.dir}"/>         workdir="${build.dir}"
521           classes="${product.jar}"/>
     <javadoc destdir="${4jdk7docs.dir}"  
              packagenames="none"  
              link="${java7.api.url}"  
              overview="${4jdk7src.dir}/intro.html"  
              access="${build.javadoc.access}"  
              sourcepath="${4jdk7src.dir}:${jdk7src.dir}"  
              classpath=""  
              executable="${javadoc7}">  
       <fileset dir="${4jdk7src.dir}" defaultexcludes="yes">  
         <include name="**/*.java"/>  
       </fileset>  
       <arg line="-Xdocrootparent ${java7.docroot.url}"/>  
       <arg value="-XDignore.symbol.file=true"/>  
     </javadoc>  
522    </target>    </target>
523    
524      <target name="test"
525              depends="tck, tck-parallelism-1, tck-parallelism-0, jtreg"
526              description="Runs tck and jtreg tests for src/main"/>
527    
528    <target name="4jdk7dist"    <target name="test-version-permutations"
529            depends="4jdk7dist-jar, 4jdk7dist-docs"            depends="test11, test12, test13, test14, test15, test16,
530            description="Puts all distributable products in single hierarchy"/>            test11-12, test11-13, test11-14, test11-15, test11-16,
531              clean, test, docs"
532              description="Runs tck and jtreg tests for various build-time and runtime java versions"/>
533    <target name="4jdk7clean"  
534            description="Removes all 4jdk7 build products">    <target name="test11">
535        <antcall>
536      <delete dir="${build.4jdk7.dir}"/>        <param name="java.runtime.target" value="11"/>
537          <param name="build.main.javac" value="${javac11}"/>
538          <param name="build.main.javadoc" value="${javadoc12}"/>
539          <param name="build.main.javadoc.source" value="11"/>
540          <target name="clean"/>
541          <target name="test"/>
542          <target name="docs"/>
543        </antcall>
544    </target>    </target>
545    
546      <target name="test12">
547    <target name="4jdk7dist-jar"      <antcall>
548            depends="4jdk7clean, 4jdk7jar">        <param name="java.runtime.target" value="12"/>
549      <copy file="${4jdk7product.jar}" todir="${dist.dir}"/>        <param name="build.main.javac" value="${javac12}"/>
550          <param name="build.main.javadoc" value="${javadoc12}"/>
551          <param name="build.main.javadoc.source" value="12"/>
552          <target name="clean"/>
553          <target name="test"/>
554          <target name="docs"/>
555        </antcall>
556    </target>    </target>
557    
558      <target name="test13">
559    <target name="4jdk7dist-docs"      <antcall>
560            depends="4jdk7clean, 4jdk7docs">        <param name="java.runtime.target" value="13"/>
561      <mirror-dir src="${4jdk7docs.dir}" dst="${dist.4jdk7docs.dir}"/>        <param name="build.main.javac" value="${javac13}"/>
562          <param name="build.main.javadoc" value="${javadoc13}"/>
563          <param name="build.main.javadoc.source" value="13"/>
564          <target name="clean"/>
565          <target name="test"/>
566          <target name="docs"/>
567        </antcall>
568    </target>    </target>
569    
570      <target name="test14">
571    <!-- jsr166x -->      <antcall>
572          <param name="java.runtime.target" value="14"/>
573    <target name="jsr166xcompile"        <param name="build.main.javac" value="${javac14}"/>
574            depends="configure-compiler"        <param name="build.main.javadoc" value="${javadoc14}"/>
575            description="Compiles jsr166x sources to build dir">        <param name="build.main.javadoc.source" value="14"/>
576          <target name="clean"/>
577      <mkdir dir="${build.jsr166x.classes.dir}"/>        <target name="test"/>
578          <target name="docs"/>
579      <javac srcdir="${topsrc.dir}"      </antcall>
            destdir="${build.jsr166x.classes.dir}"  
            debug="${build.debug}"  
            debuglevel="${build.debuglevel}"  
            deprecation="${build.deprecation}"  
            classpath=""  
            bootclasspath="${bootclasspath6}"  
            source="5"  
            includeAntRuntime="false"  
            includeJavaRuntime="false"  
            executable="${javac7}"  
            fork="true">  
   
       <include name="jsr166x/**/*.java"/>  
       <compilerarg value="-XDignore.symbol.file=true"/>  
       <compilerarg value="-Xlint:all,-unchecked,-rawtypes"/>  
       <compilerarg line="${build.args}"/>  
   
     </javac>  
580    </target>    </target>
581    
582      <target name="test15">
583    <target name="jsr166xjar"      <antcall>
584            depends="jsr166xcompile"        <param name="java.runtime.target" value="15"/>
585            description="Builds library jar from compiled sources">        <param name="build.main.javac" value="${javac15}"/>
586          <param name="build.main.javadoc" value="${javadoc15}"/>
587      <jar destfile="${jsr166x.jar}">        <param name="build.main.javadoc.source" value="15"/>
588        <fileset dir="${build.jsr166x.classes.dir}"/>        <target name="clean"/>
589      </jar>        <target name="test"/>
590          <target name="docs"/>
591        </antcall>
592    </target>    </target>
593    
594      <target name="test16">
595    <target name="jsr166xdocs"      <antcall>
596            description="Builds javadocs to dist dir">        <param name="java.runtime.target" value="16"/>
597          <param name="build.main.javac" value="${javac16}"/>
598      <delete dir="${jsr166xdocs.dir}"/>        <param name="build.main.javadoc" value="${javadoc16}"/>
599      <mkdir dir="${jsr166xdocs.dir}"/>        <param name="build.main.javadoc.source" value="16"/>
600          <target name="clean"/>
601      <javadoc destdir="${jsr166xdocs.dir}"        <target name="test"/>
602               packagenames="jsr166x.*"        <target name="docs"/>
603               link="${java.api.url}"      </antcall>
              access="${build.javadoc.access}"  
              sourcepath="${topsrc.dir}:${jdk6src.dir}"  
              bootclasspath="${bootclasspath6}"  
              source="5"  
              executable="${javadoc7}">  
       <arg line="-Xdocrootparent ${java.docroot.url}"/>  
       <arg value="-XDignore.symbol.file=true"/>  
   
     </javadoc>  
604    </target>    </target>
605    
606      <target name="test11-12">
607    <target name="jsr166xdist"      <antcall>
608            depends="jsr166xdist-jar, jsr166xdist-docs"        <param name="java.runtime.target" value="12"/>
609            description="Puts all distributable products in single hierarchy"/>        <param name="build.main.javac" value="${javac11}"/>
610          <param name="build.main.javadoc" value="${javadoc12}"/>
611          <param name="build.main.javadoc.source" value="11"/>
612    <target name="jsr166xclean"        <target name="clean"/>
613            description="Removes all jsr166x build products">        <target name="test"/>
614          <target name="docs"/>
615      <delete dir="${build.jsr166x.dir}"/>      </antcall>
   
616    </target>    </target>
617    
618      <target name="test11-13">
619    <target name="jsr166xdist-jar"      <antcall>
620            depends="jsr166xclean, jsr166xjar">        <param name="java.runtime.target" value="13"/>
621      <copy file="${jsr166x.jar}" todir="${dist.dir}"/>        <param name="build.main.javac" value="${javac11}"/>
622          <param name="build.main.javadoc" value="${javadoc13}"/>
623          <param name="build.main.javadoc.source" value="11"/>
624          <target name="clean"/>
625          <target name="test"/>
626          <target name="docs"/>
627        </antcall>
628    </target>    </target>
629    
630    <target name="jsr166xdist-docs"    <target name="test11-14">
631            depends="jsr166xclean, jsr166xdocs">      <antcall>
632      <mirror-dir src="${jsr166xdocs.dir}" dst="${dist.jsr166xdocs.dir}"/>        <param name="java.runtime.target" value="14"/>
633          <param name="build.main.javac" value="${javac11}"/>
634          <param name="build.main.javadoc" value="${javadoc14}"/>
635          <param name="build.main.javadoc.source" value="11"/>
636          <target name="clean"/>
637          <target name="test"/>
638          <target name="docs"/>
639        </antcall>
640    </target>    </target>
641    
642    <!-- jsr166y -->    <target name="test11-15">
643        <antcall>
644          <param name="java.runtime.target" value="15"/>
645    <target name="jsr166ycompile"        <param name="build.main.javac" value="${javac11}"/>
646            depends="configure-compiler"        <param name="build.main.javadoc" value="${javadoc15}"/>
647            description="Compiles jsr166y sources">        <param name="build.main.javadoc.source" value="11"/>
648          <target name="clean"/>
649      <mkdir dir="${build.jsr166y.classes.dir}"/>        <target name="test"/>
650          <target name="docs"/>
651      <javac srcdir="${topsrc.dir}"      </antcall>
            destdir="${build.jsr166y.classes.dir}"  
            debug="${build.debug}"  
            debuglevel="${build.debuglevel}"  
            deprecation="${build.deprecation}"  
            source="6"  
            classpath=""  
            bootclasspath="${bootclasspath6}"  
            includeAntRuntime="false"  
            includeJavaRuntime="false"  
            executable="${javac7}"  
            fork="true">  
   
       <include name="jsr166y/**/*.java"/>  
       <compilerarg value="-XDignore.symbol.file=true"/>  
       <compilerarg value="-Xlint:all"/>  
       <compilerarg line="${build.args}"/>  
   
     </javac>  
652    </target>    </target>
653    
654      <target name="test11-16">
655    <target name="jsr166yjar"      <antcall>
656            depends="jsr166ycompile"        <param name="java.runtime.target" value="16"/>
657            description="Builds library jar from compiled sources">        <param name="build.main.javac" value="${javac11}"/>
658          <param name="build.main.javadoc" value="${javadoc16}"/>
659      <jar destfile="${jsr166y.jar}" index="true">        <param name="build.main.javadoc.source" value="11"/>
660        <fileset dir="${build.jsr166y.classes.dir}"/>        <target name="clean"/>
661      </jar>        <target name="test"/>
662          <target name="docs"/>
663        </antcall>
664    </target>    </target>
665    
666      <target name="docs16">
667    <target name="jsr166ydocs"      <antcall>
668            description="Builds javadocs to dist dir">        <param name="java.runtime.target" value="16"/>
669          <param name="build.main.javac" value="${javac16}"/>
670      <delete dir="${jsr166ydocs.dir}"/>        <param name="build.main.javadoc" value="${javadoc16}"/>
671      <mkdir dir="${jsr166ydocs.dir}"/>        <param name="build.main.javadoc.source" value="16"/>
672          <target name="clean"/>
673      <javadoc destdir="${jsr166ydocs.dir}"        <target name="docs"/>
674               packagenames="jsr166y.*"      </antcall>
              link="${java.api.url}"  
              access="${build.javadoc.access}"  
              sourcepath="${topsrc.dir}:${jdk6src.dir}"  
              bootclasspath="${bootclasspath6}"  
              source="6"  
              executable="${javadoc7}">  
       <arg line="-Xdocrootparent ${java.docroot.url}"/>  
       <arg value="-XDignore.symbol.file=true"/>  
   
     </javadoc>  
675    </target>    </target>
676    
677    
678    <target name="jsr166ydist"    <target name="configure-compiler">
679            depends="jsr166ydist-jar, jsr166ydist-docs"      <fail message="ant version too old">
680            description="Puts all distributable products in single hierarchy"/>        <condition> <not> <antversion atleast="1.9.1"/> </not> </condition>
681        </fail>
682    
683    <target name="jsr166yclean"      <property name="unchecked.option" value="-Xlint:unchecked"/>
           description="Removes all jsr166y build products">  
684    
685      <delete dir="${build.jsr166y.dir}"/>      <condition property="warnunchecked.arg" value="${unchecked.option}">
686          <istrue value="${build.warnunchecked}"/>
687        </condition>
688    
689    </target>      <property name="warnunchecked.arg" value=""/>
690    
691    
692    <target name="jsr166ydist-jar"      <!-- Common options in javac invocations -->
693            depends="jsr166yclean, jsr166yjar">      <property name="build.args" value="${warnunchecked.arg}"/>
     <copy file="${jsr166y.jar}" todir="${dist.dir}"/>  
   </target>  
694    
   <target name="jsr166ydist-docs"  
           depends="jsr166yclean, jsr166ydocs">  
     <mirror-dir src="${jsr166ydocs.dir}" dst="${dist.jsr166ydocs.dir}"/>  
695    </target>    </target>
696    
697    
698    <!-- extra166y -->    <target name="compile-test-loops" depends="jar"
699              description="Compiles all the perf tests in src/test/loops">
700    
701        <mkdir dir="${build.dir}/test/loops"/>
702    
703    <target name="extra166ycompile"      <javac srcdir="${basedir}/src/test/loops"
704            depends="configure-compiler, jsr166yjar"             destdir="${build.dir}/test/loops"
           description="Compiles extra166y sources">  
   
     <mkdir dir="${build.extra166y.classes.dir}"/>  
   
     <javac srcdir="${topsrc.dir}"  
            destdir="${build.extra166y.classes.dir}"  
705             debug="${build.debug}"             debug="${build.debug}"
706             debuglevel="${build.debuglevel}"             debuglevel="${build.debuglevel}"
707             deprecation="${build.deprecation}"             deprecation="${build.deprecation}"
            bootclasspath="@{jsr166y.jar}:${bootclasspath6}"  
            classpath=""  
            source="6"  
708             includeAntRuntime="false"             includeAntRuntime="false"
709             includeJavaRuntime="false"             includeJavaRuntime="false"
710             executable="${javac7}"             encoding="ASCII"
711               executable="${build.main.javac}"
712             fork="true">             fork="true">
713    
714        <include name="extra166y/**/*.java"/>        <include name="*.java"/>
715        <compilerarg value="-XDignore.symbol.file=true"/>        <compilerarg value="-XDignore.symbol.file=true"/>
716        <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>        <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation"/>
717          <compilerarg value="--patch-module=java.base=${src.dir}"/>
718        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
   
719      </javac>      </javac>
720    </target>    </target>
721    
722    
723    <target name="extra166yjar"    <!-- old branches no longer maintained.  build support deleted -->
724            depends="extra166ycompile"    <!-- jsr166 4jdk8; (no longer maintained as of 2019-10) -->
725            description="Builds library jar from compiled sources">    <!-- jsr166 4jdk7 (no longer maintained) -->
726      <!-- jsr166x (no longer maintained) -->
727      <jar destfile="${extra166y.jar}" index="true">    <!-- jsr166y (no longer maintained) -->
728        <fileset dir="${build.extra166y.classes.dir}"/>    <!-- extra166y (no longer maintained) -->
729      </jar>    <!-- jsr166e (no longer maintained) -->
   
   </target>  
   
   
   <target name="extra166ydocs"  
           description="Builds javadocs to build dir">  
   
     <delete dir="${extra166ydocs.dir}"/>  
     <mkdir dir="${extra166ydocs.dir}"/>  
   
     <javadoc destdir="${extra166ydocs.dir}"  
              packagenames="extra166y.*"  
              link="${java.api.url}"  
              access="${build.javadoc.access}"  
              sourcepath="${topsrc.dir}:${jdk6src.dir}"  
              bootclasspath="${bootclasspath6}"  
              source="6"  
              executable="${javadoc7}">  
       <arg line="-Xdocrootparent ${java.docroot.url}"/>  
       <arg value="-XDignore.symbol.file=true"/>  
   
     </javadoc>  
   </target>  
   
   
   <target name="extra166ydist"  
           depends="extra166ydist-jar, extra166ydist-docs"  
           description="Puts all distributable products in single hierarchy"/>  
   
   
   <target name="extra166yclean"  
           description="Removes all extra166y build products">  
   
     <delete dir="${build.extra166y.dir}"/>  
   
   </target>  
730    
731    <!-- Find buglets that can be detected by static build tools -->
732    
733    <target name="extra166ydist-jar"  <!--   <target name="lint"> -->
734            depends="extra166yclean, extra166yjar">  <!--     <antcall target="dists"> -->
735      <copy file="${extra166y.jar}" todir="${dist.dir}"/>  <!--       <param name="build.javadoc.access" value="protected"/> -->
736    </target>  <!--     </antcall> -->
737    <!--   </target> -->
738    
739    <target name="extra166ydist-docs"  <!-- Generates all doclint warnings, even for private methods (rarely useful) -->
740            depends="extra166yclean, extra166ydocs">    <target name="doclint-private">
741      <mirror-dir src="${extra166ydocs.dir}" dst="${dist.extra166ydocs.dir}"/>      <antcall target="dist">
742          <param name="build.javadoc.access" value="private"/>
743        </antcall>
744    </target>    </target>
745    
   <!-- jsr166e -->  
   
   <property name="build.jsr166e.java.version" value="6"/>  
   <property name="build.jsr166e.javac" value="${javac6}"/>  
   
   <target name="jsr166ecompile"  
           depends="configure-compiler"  
           description="Compiles jsr166e sources">  
746    
747      <mkdir dir="${build.jsr166e.classes.dir}"/>  <!-- ==============================================================
748      Experimental errorprone support
749      https://errorprone.info
750      https://errorprone.info/docs/installation
751      https://github.com/google/error-prone/issues/1143
752    =================================================================== -->
753      <path id="errorprone.processorpath.path">
754        <pathelement location="${lib.dir}/error_prone_core-2.3.4-with-dependencies.jar"/>
755        <pathelement location="${lib.dir}/dataflow-2.5.7.jar"/>
756        <pathelement location="${lib.dir}/javacutil-2.5.7.jar"/>
757        <pathelement location="${lib.dir}/jFormatString-3.0.0.jar"/>
758        <pathelement location="${lib.dir}/caffeine-2.8.0.jar"/>
759      </path>
760      <property name="errorprone.processorpath" refid="errorprone.processorpath.path" />
761      <property name="errorprone.jsr166.user.flags" value=""/>
762      <property name="errorprone.jsr166.flags"
763                value="-Xep:HashtableContains:OFF
764                       -Xep:PreferJavaTimeOverload:OFF
765                       -Xep:JdkObsolete:OFF
766                       -Xep:MissingOverride:OFF
767                       -Xep:MissingFail:OFF
768                       -Xep:ThreadPriorityCheck:OFF
769                       -Xep:MixedArrayDimensions:ERROR
770                       -Xep:RemoveUnusedImports:ERROR
771                       -Xep:EmptyIf:ERROR
772                       -Xep:MultipleTopLevelClasses:ERROR
773                       -Xep:ClassName:ERROR
774                       -Xep:LongLiteralLowerCaseSuffix:ERROR
775                       -Xep:RedundantThrows:ERROR
776                       -Xep:IdentityBinaryExpression:WARN
777                       -Xep:ConstructorInvokesOverridable:WARN
778                       -Xep:MethodCanBeStatic:WARN
779                       ${errorprone.jsr166.user.flags}"/>
780      <!-- -Xep:WildcardImport:ERROR -->
781      <property name="errorprone.jsr166.test.flags"
782                value="-Xep:StringSplitter:OFF
783                       -Xep:BoxedPrimitiveConstructor:OFF
784                       -Xep:UnnecessaryParentheses:OFF
785                       -Xep:ModifyingCollectionWithItself:OFF"/>
786      <!-- ant -emacs errorprone |& grep -EA1 '(warning|error):|warnings' -->
787      <target name="errorprone"
788              depends="clean, configure-compiler"
789              description="Run errorprone over jsr166 source code (experimental)">
790    
791        <local name="destdir"/>
792        <property name="destdir" value="${build.classes.dir}/java.base"/>
793        <mkdir dir="${destdir}"/>
794    
795      <javac srcdir="${topsrc.dir}"      <javac srcdir="${src.dir}"
796             destdir="${build.jsr166e.classes.dir}"             destdir="${destdir}"
797             debug="${build.debug}"             debug="${build.debug}"
798             debuglevel="${build.debuglevel}"             debuglevel="${build.debuglevel}"
799             deprecation="${build.deprecation}"             deprecation="${build.deprecation}"
            source="${build.jsr166e.java.version}"  
800             classpath=""             classpath=""
801             includeAntRuntime="false"             includeAntRuntime="false"
802             includeJavaRuntime="false"             includeJavaRuntime="false"
803             executable="${build.jsr166e.javac}"             encoding="ASCII"
804               executable="${build.main.javac}"
805             fork="true">             fork="true">
806    
807        <include name="jsr166e/**/*.java"/>        <include name="**/*.java"/>
808          <!-- Needed to silence -Xep:FutureReturnValueIgnored -->
809          <compilerarg value="-J--illegal-access=permit"/>
810          <compilerarg value="-XDcompilePolicy=simple"/>
811          <compilerarg value="-processorpath"/>
812          <compilerarg pathref="errorprone.processorpath.path"/>
813          <compilerarg value="-Xplugin:ErrorProne
814                              ${errorprone.jsr166.flags}"/>
815          <compilerarg value="--patch-module=java.base=${src.dir}"/>
816          <compilerarg value="-Xprefer:source"/>
817        <compilerarg value="-XDignore.symbol.file=true"/>        <compilerarg value="-XDignore.symbol.file=true"/>
818        <compilerarg value="-Xlint:all"/>        <compilerarg value="-Xlint:all"/>
819          <compilerarg value="-Xdoclint:all/protected,reference/private"/>
820          <compilerarg line="-Xmaxerrs 3000 -Xmaxwarns 3000"/>
821        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
   
     </javac>  
   </target>  
   
   <!-- jsr166e: find doclint errors -->  
   <target name="jsr166edoclint">  
   
     <mkdir dir="${build.jsr166e.classes.dir}"/>  
   
     <javac srcdir="${topsrc.dir}"  
            destdir="${build.jsr166e.classes.dir}"  
            debug="${build.debug}"  
            debuglevel="${build.debuglevel}"  
            deprecation="${build.deprecation}"  
            source="${build.jsr166e.java.version}"  
            classpath=""  
            bootclasspath="${bootclasspath7}"  
            includeAntRuntime="false"  
            includeJavaRuntime="false"  
            executable="${javac8}"  
            fork="true">  
   
       <include name="jsr166e/**/*.java"/>  
       <compilerarg value="-XDignore.symbol.file=true"/>  
       <compilerarg value="-Xlint:all"/>  
       <compilerarg value="-Xdoclint:all/protected"/>  
   
822      </javac>      </javac>
   </target>  
   
   
   <target name="jsr166ejar"  
           depends="jsr166ecompile"  
           description="Builds library jar from compiled sources">  
823    
824      <jar destfile="${jsr166e.jar}" index="true">      <jar destfile="${product.jar}">
825        <fileset dir="${build.jsr166e.classes.dir}"/>        <fileset dir="${destdir}"/>
826      </jar>      </jar>
827    
   </target>  
   
   
   <target name="jsr166edocs"  
           description="Builds javadocs to build dir">  
   
     <delete dir="${jsr166edocs.dir}"/>  
     <mkdir dir="${jsr166edocs.dir}"/>  
   
     <javadoc destdir="${jsr166edocs.dir}"  
              packagenames="jsr166e.*"  
              link="${java.api.url}"  
              access="${build.javadoc.access}"  
              sourcepath="${topsrc.dir}:${jdk6src.dir}"  
              source="${build.jsr166e.java.version}"  
              executable="${javadoc7}">  
       <arg line="-Xdocrootparent ${java.docroot.url}"/>  
       <arg value="-XDignore.symbol.file=true"/>  
   
     </javadoc>  
   </target>  
   
   
   <target name="jsr166e-test-tck-one-java-version"  
           depends="jsr166ejar">  
   
     <echo message="Testing with jdk${build.jsr166e.java.version} ..."/>  
   
828      <run-tck-tests      <run-tck-tests
829        tck.src.dir="${test.src.dir}/tck-jsr166e"        target="${java.runtime.target}"
830        target="${build.jsr166e.java.version}"        workdir="${build.dir}"
831        workdir="${build.jsr166e.dir}"        classes="${product.jar}">
832        classes="${jsr166e.jar}"/>        <javac-elements>
833    </target>          <!-- Needed to silence -Xep:FutureReturnValueIgnored -->
834            <compilerarg value="-J--illegal-access=permit"/>
835    <target name="jsr166e-test-tck"          <compilerarg value="-XDcompilePolicy=simple"/>
836            description="Runs tck tests for jsr166e for multiple java versions">          <compilerarg line="-processorpath ${errorprone.processorpath}"/>
837            <compilerarg value="-Xplugin:ErrorProne
838  <!--     <antcall target="clean"/> -->                              ${errorprone.jsr166.flags}
839  <!--     <antcall target="jsr166e-test-tck-one-java-version"> -->                              ${errorprone.jsr166.test.flags}"/>
840  <!--       <param name="build.jsr166e.java.version" value="8"/> -->          <compilerarg line="-Xmaxerrs 3000 -Xmaxwarns 3000"/>
841  <!--       <param name="build.jsr166e.javac" value="${javac8}"/> -->        </javac-elements>
842  <!--     </antcall> -->      </run-tck-tests>
   
     <antcall target="clean"/>  
     <antcall target="jsr166e-test-tck-one-java-version">  
       <param name="build.jsr166e.java.version" value="7"/>  
       <param name="build.jsr166e.javac" value="${javac7}"/>  
     </antcall>  
   
     <antcall target="clean"/>  
     <antcall target="jsr166e-test-tck-one-java-version">  
       <param name="build.jsr166e.java.version" value="6"/>  
       <param name="build.jsr166e.javac" value="${javac6}"/>  
     </antcall>  
   </target>  
   
   
   <target name="jsr166e-test"  
           depends="jsr166e-test-tck"  
           description="Runs all tests for jsr166e">  
   </target>  
   
   <target name="jsr166edist"  
           depends="jsr166edist-jar, jsr166edist-docs"  
           description="Puts all distributable products in single hierarchy"/>  
   
   
   <target name="jsr166eclean"  
           description="Removes all jsr166e build products">  
     <delete dir="${build.jsr166e.dir}"/>  
   </target>  
   
   
   <target name="jsr166edist-jar"  
           depends="jsr166eclean, jsr166ejar">  
     <copy file="${jsr166e.jar}" todir="${dist.dir}"/>  
   </target>  
   
   <target name="jsr166edist-docs"  
           depends="jsr166eclean, jsr166edocs">  
     <mirror-dir src="${jsr166edocs.dir}" dst="${dist.jsr166edocs.dir}"/>  
843    </target>    </target>
844    
845      <!-- ant -emacs errorprone-jtreg |& grep -EA1 '(warning|error):' -->
846      <!-- -XDcompilePolicy=simple or byfile avoids confusing UnusedImports -->
847      <target name="errorprone-jtreg"
848              depends="jar"
849              description="Run errorprone over jtreg tests (experimental)">
850    
851  <!-- Find buglets that can be detected by static build tools -->      <run-jtreg-tests
852           target="${java.runtime.target}"
853           workdir="${build.dir}"
854           classes="${product.jar}"
855           verbose="all">
856          <jtreg-elements>
857            <arg value="-javacoption:-XDcompilePolicy=simple"/>
858            <arg value="-javacoption:-processorpath"/>
859            <arg value="-javacoption:${errorprone.processorpath}"/>
860            <arg value="-javacoption:-Xplugin:ErrorProne
861                                ${errorprone.jsr166.flags}
862                                ${errorprone.jsr166.test.flags}
863                                -Xep:MultipleTopLevelClasses:WARN
864                                -Xep:NonAtomicVolatileUpdate:OFF"/>
865          </jtreg-elements>
866        </run-jtreg-tests>
867      </target>
868    
869    
870    <!-- ==============================================================
871      Running guava tests against jsr166 code
872    =================================================================== -->
873    
874    <!-- <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" -->
875    <!--   organisation="com.google.guava" module="guava-testlib" revision="21.0"/> -->
876    <!-- <property name="guava.version" value="21.0"/> -->
877    
878    <!-- HOWTO debug print a path id -->
879    <!-- <pathconvert property="guava.testlib.classpath" refid="guava.testlib.classpath" /> -->
880    <!-- <echo message="guava.testlib.classpath=${guava.testlib.classpath}"/> -->
881    
882    <!-- <ivy:retrieve pathid="guava.tests.classpath" type="jar" inline="true" conf="*" pattern="${lib.dir}/[type]/[artifact].[ext]" -->
883    <!--   organisation="com.google.guava" module="guava-tests"/> -->
884    <!-- <get src="http://repo2.maven.org/maven2/com/google/guava/guava-tests/${guava.version}/guava-tests-${guava.version}-tests.jar" -->
885    <!--   dest="${lib.dir}/jar/guava-tests-tests.jar" usetimestamp="true"/> -->
886    <!--     <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" type="*" -->
887    <!--       organisation="com.google.guava" module="guava-testlib" revision="${guava.version}"/> -->
888    
889    <!-- <test name="com.google.common.collect.testing.TestsForQueuesInJavaUtil"/> -->
890    <!-- <test name="com.google.common.collect.testing.TestsForListsInJavaUtil"/> -->
891    <!-- <test name="com.google.common.collect.testing.TestsForSetsInJavaUtil"/> -->
892    <!-- <test name="com.google.common.collect.testing.TestsForMapsInJavaUtil"/> -->
893    
894    <!-- <ivy:retrieve pathid="guava.testlib.classpath" -->
895    <!--   type="*" inline="true" conf="*(private),*(public)" -->
896    <!--   pattern="${guava.dir}/[artifact].[ext]" -->
897    <!--   organisation="com.google.guava" module="guava-testlib"/> -->
898    
899    <!-- Work around bug below by downloading guava-testlib-tests.jar "by hand": -->
900    <!-- https://issues.apache.org/jira/browse/IVY-1444 -->
901    <!-- maven tests artifacts cannot be downloaded because they are mapped to private configurations -->
902    
903      <target name="init-ivy">
904        <get src="http://repo2.maven.org/maven2/org/apache/ivy/ivy/2.4.0/ivy-2.4.0.jar"
905             dest="${build.dir}/ivy.jar" usetimestamp="true" skipexisting="true"/>
906        <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant"
907                 classpath="${build.dir}/ivy.jar"/>
908      </target>
909    
910      <target name="guava-tests" depends="jar, init-ivy"
911              description="Guava tests run against jsr166 collections">
912        <property name="guava.dir" value="${build.dir}/guava-testlib"/>
913        <mkdir dir="${guava.dir}"/>
914        <ivy:retrieve pathid="guava.testlib.classpath"
915          type="jar,bundle" inline="true" conf="default,master"
916          pattern="${guava.dir}/[artifact].[ext]"
917          organisation="com.google.guava" module="guava-testlib"/>
918        <property name="guava.version" value="21.0"/>
919        <get src="http://repo2.maven.org/maven2/com/google/guava/guava-testlib/${guava.version}/guava-testlib-${guava.version}-tests.jar"
920             dest="${guava.dir}/guava-testlib-tests.jar" usetimestamp="true"/>
921        <junit printsummary="true" showoutput="true" haltonfailure="true"
922               jvm="${build.main.java}" fork="true">
923          <jvmarg line="-ea -esa --patch-module=java.base=${product.jar}"/>
924          <formatter type="brief"/>
925          <classpath>
926            <pathelement location="${guava.dir}/guava-testlib-tests.jar"/>
927            <path refid="guava.testlib.classpath"/>
928          </classpath>
929    
930    <target name="lint">        <!-- "6" in "OpenJdk6Tests" misleadingly means "6+" -->
931      <antcall target="dists">        <test name="com.google.common.collect.testing.OpenJdk6Tests"/>
932        <param name="build.javadoc.access" value="private"/>      </junit>
     </antcall>  
933    </target>    </target>
934    
   
935  </project>  </project>

Legend:
Removed from v.1.157  
changed lines
  Added in v.1.321

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