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

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

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