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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.94  
changed lines
  Added in v.1.290

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