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

Diff of /jsr166/build.xml

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

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

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

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