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

Diff of /jsr166/build.xml

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

revision 1.70, Wed Aug 11 10:57:33 2004 UTC revision 1.291, Thu Dec 6 21:36:08 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"/>
   <property name="build.j1.dir"         location="${build.dir}/j1"/>  
67    <property name="build.loops.dir"      location="${build.dir}/loops"/>    <property name="build.loops.dir"      location="${build.dir}/loops"/>
68    <property name="build.lib.dir"        location="${build.dir}/lib"/>  
69    <property name="build.ant.dir"        location="${build.dir}/ant"/>    <property name="build.4jdk7.dir"             location="${build.dir}/jsr166-4jdk7"/>
70    <property name="build.javadocs.dir"   location="${build.dir}/javadocs"/>    <property name="build.4jdk7.classes.dir"     location="${build.4jdk7.dir}/classes"/>
71    <property name="build.reports.dir"    location="${build.dir}/reports"/>    <property name="build.4jdk7.tck.classes.dir" location="${build.4jdk7.dir}/tck-classes"/>
72    <property name="build.checkstyle.dir" location="${build.dir}/checkstyle"/>    <property name="build.4jdk7.docs.dir"        location="${build.4jdk7.dir}/docs"/>
73    <property name="build.doccheck.dir"   location="${build.dir}/doccheck"/>  
74    <property name="build.filter.src.dir" location="${build.dir}/filtersrc"/>    <property name="build.4jdk8.dir"             location="${build.dir}/jsr166-4jdk8"/>
75    <property name="build.dc-filter.dir"  location="${build.dir}/filterdocchk"/>    <property name="build.4jdk8.classes.dir"     location="${build.4jdk8.dir}/classes"/>
76      <property name="build.4jdk8.tck.classes.dir" location="${build.4jdk8.dir}/tck-classes"/>
77      <property name="build.4jdk8.docs.dir"        location="${build.4jdk8.dir}/docs"/>
78    
79    <property name="build.jsr166x.dir"    location="${build.dir}/jsr166x"/>    <property name="build.jsr166x.dir"    location="${build.dir}/jsr166x"/>
80    <property name="build.jsr166xlib.dir"        location="${build.dir}/jsr166xlib"/>    <property name="build.jsr166y.dir"           location="${build.dir}/jsr166y"/>
81    <property name="build.jsr166xjavadocs.dir"   location="${build.dir}/jsr166xjavadocs"/>    <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="4jdk8product.jar" location="${build.4jdk8.dir}/jsr166-4jdk8.jar"/>
185      <property name="jsr166x.jar"      location="${build.jsr166x.dir}/jsr166x.jar"/>
186      <property name="jsr166y.jar"      location="${build.jsr166y.dir}/jsr166y.jar"/>
187      <property name="jsr166e.jar"      location="${build.jsr166e.dir}/jsr166e.jar"/>
188      <property name="extra166y.jar"    location="${build.extra166y.dir}/extra166y.jar"/>
189    <property name="junit.jar"            location="${lib.dir}/junit.jar"/>    <property name="junit.jar"            location="${lib.dir}/junit.jar"/>
   <property name="concurrent.jar"       location="${lib.dir}/concurrent.jar"/>  
190    
191    <!-- Bootclasspath argument -->    <!-- Canonical location of jdk docs root, to use with javadoc -Xdocrootparent flag -->
192    <property name="bootclasspath.args"   value="-Xbootclasspath/p:${product.jar}"/>    <!-- Switched to https: in 2017-10 - JDK-8190312 -->
193      <property name="java5.docroot.url"  value="https://docs.oracle.com/javase/1.5.0/docs"/>
194      <property name="java6.docroot.url"  value="https://docs.oracle.com/javase/6/docs"/>
195      <property name="java7.docroot.url"  value="https://docs.oracle.com/javase/7/docs"/>
196      <property name="java8.docroot.url"  value="https://docs.oracle.com/javase/8/docs"/>
197      <property name="java9.docroot.url"  value="https://docs.oracle.com/javase/9/docs"/>
198      <property name="java10.docroot.url" value="https://docs.oracle.com/javase/10/docs"/>
199      <property name="java11.docroot.url" value="https://docs.oracle.com/en/java/javase/11/docs"/>
200      <!-- The location of jdk early access docs (RIP) -->
201      <!-- <property name="java9.docroot.url" value="http://download.java.net/java/jdk9/docs"/> -->
202      <!-- <property name="java10.docroot.url" value="http://download.java.net/java/jdk10/docs"/> -->
203      <!-- <property name="java11.docroot.url" value="http://download.java.net/java/jdk11/docs"/> -->
204      <property name="java12.docroot.url" value="https://download.java.net/java/jdk12/docs"/>
205      <!-- Default jdk doc location (latest stable LTS release seems best) -->
206      <property name="java.docroot.url"   value="${java11.docroot.url}"/>
207    
208      <!-- Canonical location of jdk API docs, to use with javadoc link attribute -->
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    <!-- Test classpath -->          <classpath>
   <path id="test.classpath">  
     <pathelement location="${build.testcases.dir}"/>  
307      <pathelement location="${junit.jar}"/>      <pathelement location="${junit.jar}"/>
308    </path>            <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.j1.dir}"/>    <property name="javadoc.jls.option" value="jls:a:See &lt;cite&gt;${javadoc.jls.cite}&lt;/cite&gt;:"/>
     <pathelement location="${junit.jar}"/>  
     <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               includeAntRuntime="false"
427               includeJavaRuntime="false"
428               encoding="ASCII"
429               executable="${build.main.javac}"
430               fork="true">               fork="true">
431    
432        <include name="**/*.java"/>        <include name="**/*.java"/>
433        <exclude name="java/lang/**"/>        <compilerarg value="--patch-module=java.base=${src.dir}"/>
434          <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.4.1/docs/api"  
             overview="${src.dir}/intro.html"  
               source="${build.sourcelevel}">  
   
       <tag name="revised" description="Last revised:"/>  
       <tag name="spec"    description="Specified by:"/>  
   
       <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    <!-- TODO: JDK-8214571 failonerror = "true" -->
486          <fileset dir="${src.dir}" defaultexcludes="yes">
487            <include name="**/*.java"/>
488          </fileset>
489          <arg line="-Xdocrootparent ${java.docroot.url}"/>
490          <arg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
491          <arg value="-XDignore.symbol.file=true"/>
492          <arg value="-html5"/>
493          <arg value="--patch-module=java.base=${src.dir}"/>
494    <!-- old school frames via docs/index.html?overview-summary.html -->
495          <arg value="--frames"/>
496          <arg value="--override-methods=summary"/>
497          <arg value="-tag"/> <arg value="${javadoc.jls.option}"/>
498          <arg value="-tag"/> <arg value="implSpec:a:Implementation Requirements:"/>
499          <arg value="-tag"/> <arg value="implNote:a:Implementation Note:"/>
500          <arg value="-tag"/> <arg value="apiNote:a:API Note:"/>
501    <!-- tags added in jdk9: currently unused -->
502    <!--  <arg value="-tag"/> <arg value="revised:X"/> -->
503    <!--  <arg value="-tag"/> <arg value="spec:X"/> -->
504      </javadoc>      </javadoc>
   
     <echo>DocCheck output is in ${build.doccheck.dir}</echo>  
   
505    </target>    </target>
506    
507    
   
   <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>  
   
   
   
508    <target name="dist"    <target name="dist"
509            depends="init, dist-clean, dist-jar, dist-docs"            depends="dist-clean, dist-jar, dist-docs"
510            description="Puts all distributable products in single hierarchy"/>            description="Puts all distributable products in single hierarchy"/>
511    
512    
   
   <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>  
   
   
   
513    <target name="clean"    <target name="clean"
514            description="Removes all build products">            description="Removes all build products">
   
515      <delete dir="${build.dir}"/>      <delete dir="${build.dir}"/>
     <delete dir="${build.classes.dir}"/>  
     <delete dir="${build.lib.dir}"/>  
   
516    </target>    </target>
517    
518    
   
519    <target name="dist-clean"    <target name="dist-clean"
520            description="Removes all build and distribution products">            description="Removes all build and distribution products">
521        <delete dir="${build.dir}"/>
522      <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.4.2/docs/api"  
             overview="${src.dir}/intro.html"  
               source="${build.sourcelevel}">  
   
       <packageset dir="${src.dir}"/>  
   
     </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>  
   
523    </target>    </target>
524    
525    
526    <target name="dist-jar"    <target name="dist-jar"
527            depends="clean, jar">            depends="clean, jar">
   
528      <copy file="${product.jar}" todir="${dist.dir}"/>      <copy file="${product.jar}" todir="${dist.dir}"/>
   
529    </target>    </target>
530    
531      <target name="dist-docs"
532    <target name="compile-ant-filter"            depends="clean, docs">
533            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"/>  
   
534    </target>    </target>
535    
536      <target name="tck"
537              depends="jar"
538              description="Runs tck tests for src/main directly">
539    
540        <run-tck-tests
541          target="${java.runtime.target}"
542          workdir="${build.dir}"
543          classes="${product.jar}">
544          <javac-elements>
545            <compilerarg value="-Werror"/>
546          </javac-elements>
547        </run-tck-tests>
548      </target>
549    
550      <target name="tck-parallelism-1"
551              description="Runs tck with common pool parallelism 1">
552        <antcall target="tck">
553          <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="1"/>
554        </antcall>
555      </target>
556    
557      <target name="tck-parallelism-0"
558              description="Runs tck with common pool parallelism 0">
559        <antcall target="tck">
560          <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="0"/>
561        </antcall>
562      </target>
563    
564      <target name="tck-security-manager"
565              description="Runs tck with a security manager">
566        <antcall target="tck">
567          <param name="jsr166.useSecurityManager" value="true"/>
568        </antcall>
569      </target>
570    
571      <target name="jtreg"
572              depends="jar"
573              description="Runs jtreg tests for src/main using the jtreg ant task">
574        <run-jtreg-tests
575           target="${java.runtime.target}"
576           workdir="${build.dir}"
577           classes="${product.jar}"/>
578      </target>
579    
580    <target name="filter-src"    <target name="test"
581            depends="compile-ant-filter">            depends="tck, tck-parallelism-1, tck-parallelism-0, jtreg"
582              description="Runs tck and jtreg tests for src/main"/>
     <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>  
         -->  
583    
584        <!--    <target name="test-version-permutations"
585        </filterchain>            depends="test9, test10, test11, test12, test9-11, test9-12, clean, test, docs">
586        -->    </target>
     </copy>  
587    
588      <target name="test9">
589        <antcall target="clean"/>
590        <antcall>
591          <param name="java.runtime.target" value="9"/>
592          <param name="build.main.javac" value="${javac9}"/>
593          <param name="build.main.javadoc" value="${javadoc12}"/>
594          <param name="build.main.javadoc.source" value="9"/>
595          <target name="test"/>
596          <target name="docs"/>
597        </antcall>
598      </target>
599    
600      <target name="test10">
601        <antcall target="clean"/>
602        <antcall>
603          <param name="java.runtime.target" value="10"/>
604          <param name="build.main.javac" value="${javac10}"/>
605          <param name="build.main.javadoc" value="${javadoc12}"/>
606          <param name="build.main.javadoc.source" value="10"/>
607          <target name="test"/>
608          <target name="docs"/>
609        </antcall>
610      </target>
611    
612      <target name="test11">
613        <antcall target="clean"/>
614        <antcall>
615          <param name="java.runtime.target" value="11"/>
616          <param name="build.main.javac" value="${javac11}"/>
617          <param name="build.main.javadoc" value="${javadoc12}"/>
618          <param name="build.main.javadoc.source" value="11"/>
619          <target name="test"/>
620          <target name="docs"/>
621        </antcall>
622      </target>
623    
624      <target name="test12">
625        <antcall target="clean"/>
626        <antcall>
627          <param name="java.runtime.target" value="12"/>
628          <param name="build.main.javac" value="${javac12}"/>
629          <param name="build.main.javadoc" value="${javadoc12}"/>
630          <param name="build.main.javadoc.source" value="12"/>
631          <target name="test"/>
632          <target name="docs"/>
633        </antcall>
634      </target>
635    
636      <target name="test9-11">
637        <antcall target="clean"/>
638        <antcall>
639          <param name="java.runtime.target" value="11"/>
640          <param name="build.main.javac" value="${javac9}"/>
641          <param name="build.main.javadoc" value="${javadoc12}"/>
642          <param name="build.main.javadoc.source" value="9"/>
643          <target name="test"/>
644          <target name="docs"/>
645        </antcall>
646      </target>
647    
648      <target name="test9-12">
649        <antcall target="clean"/>
650        <antcall>
651          <param name="java.runtime.target" value="12"/>
652          <param name="build.main.javac" value="${javac9}"/>
653          <param name="build.main.javadoc" value="${javadoc12}"/>
654          <param name="build.main.javadoc.source" value="9"/>
655          <target name="test"/>
656          <target name="docs"/>
657        </antcall>
658    </target>    </target>
659    
660    
661    <target name="filter-doccheck"    <target name="configure-compiler">
662            depends="filter-src">      <fail message="ant version too old">
663          <condition> <not> <antversion atleast="1.9.1"/> </not> </condition>
664        </fail>
665    
666      <mkdir dir="${build.dc-filter.dir}"/>      <property name="unchecked.option" value="-Xlint:unchecked"/>
667    
668      <copy todir="${build.dc-filter.dir}">      <condition property="warnunchecked.arg" value="${unchecked.option}">
669        <fileset dir="${build.filter.src.dir}">        <istrue value="${build.warnunchecked}"/>
670          <include name="**/*.html"/>      </condition>
       </fileset>  
     </copy>  
671    
672      <property name="generic.declarations"      <property name="warnunchecked.arg" value=""/>
              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.  
          -->  
673    
         <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>  
674    
675        </filterchain>      <!-- Common options in javac invocations -->
676      </copy>      <property name="build.args" value="${warnunchecked.arg}"/>
677    
678    </target>    </target>
679    
680    
681    <target name="compile-tests"    <target name="compile-test-loops" depends="jar"
682            depends="jar">            description="Compiles all the perf tests in src/test/loops">
683    
684      <mkdir dir="${build.testcases.dir}"/>      <mkdir dir="${build.dir}/test/loops"/>
685    
686      <javac srcdir="${tck.src.dir}"      <javac srcdir="${basedir}/src/test/loops"
687            destdir="${build.testcases.dir}"             destdir="${build.dir}/test/loops"
688              debug="${build.debug}"              debug="${build.debug}"
689         debuglevel="${build.debuglevel}"         debuglevel="${build.debuglevel}"
690        deprecation="${build.deprecation}"        deprecation="${build.deprecation}"
691             source="${build.sourcelevel}"             includeAntRuntime="false"
692               includeJavaRuntime="false"
693               encoding="ASCII"
694               executable="${build.main.javac}"
695               fork="true">               fork="true">
696    
697        <compilerarg value="${bootclasspath.args}"/>        <include name="*.java"/>
698          <compilerarg value="-XDignore.symbol.file=true"/>
699          <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
700          <compilerarg value="-Xbootclasspath/p:${product.jar}"/>
701        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
702        </javac>
703      </target>
704    
       <classpath refid="test.classpath"/>  
705    
706      </javac>    <!-- jsr166 4jdk8 -->
707    
708      <javac srcdir="${test.src.dir}"    <target name="4jdk8compile"
709            destdir="${build.testcases.dir}"            depends="configure-compiler"
710              description="Compiles src/jdk8 sources, targeting jdk8">
711    
712        <mkdir dir="${build.4jdk8.classes.dir}"/>
713    
714        <javac srcdir="${4jdk8src.dir}"
715               destdir="${build.4jdk8.classes.dir}"
716              debug="${build.debug}"              debug="${build.debug}"
717         debuglevel="${build.debuglevel}"         debuglevel="${build.debuglevel}"
718        deprecation="${build.deprecation}"        deprecation="${build.deprecation}"
719             source="${build.sourcelevel}"             source="8"
720               target="8"
721               classpath=""
722               bootclasspath="${bootclasspath8}"
723               includeAntRuntime="false"
724               includeJavaRuntime="false"
725               encoding="ASCII"
726               executable="${javac8}"
727               fork="true">               fork="true">
728          <include name="**/*.java"/>
729        <include name="jsr166/test/**"/>        <compilerarg value="-Xprefer:source"/>
730          <compilerarg value="-XDignore.symbol.file=true"/>
731        <compilerarg value="${bootclasspath.args}"/>        <compilerarg value="-Xlint:all"/>
732          <compilerarg value="-Werror"/>
733        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
734        </javac>
735      </target>
736    
737        <classpath refid="test.classpath"/>    <target name="4jdk8doclint"
738              depends="configure-compiler"
739              description="Finds doclint warnings">
740    
741      </javac>      <mkdir dir="${build.4jdk8.classes.dir}"/>
742    
743  <!--      <javac srcdir="${4jdk8src.dir}"
744      <javac srcdir="${jtreg.src.dir}"             destdir="${build.4jdk8.classes.dir}"
           destdir="${build.testcases.dir}"  
745              debug="${build.debug}"              debug="${build.debug}"
746         debuglevel="${build.debuglevel}"         debuglevel="${build.debuglevel}"
747        deprecation="${build.deprecation}"        deprecation="${build.deprecation}"
748             source="${build.sourcelevel}"             source="8"
749               target="8"
750               classpath=""
751               bootclasspath="${bootclasspath8}"
752               includeAntRuntime="false"
753               includeJavaRuntime="false"
754               encoding="ASCII"
755               executable="${javac8}"
756               fork="true">               fork="true">
757          <include name="**/*.java"/>
758        <compilerarg value="${bootclasspath.args}"/>        <compilerarg value="-Xprefer:source"/>
759          <compilerarg value="-XDignore.symbol.file=true"/>
760          <compilerarg value="-Xlint:all"/>
761          <compilerarg value="-Xdoclint:all/protected,reference/private"/>
762        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
   
       <classpath refid="test.classpath"/>  
   
763      </javac>      </javac>
 -->  
   
764    </target>    </target>
765    
766    
767    <target name="run-tests"    <target name="4jdk8jar"
768            depends="compile-tests">            depends="4jdk8compile"
769              description="Builds library jar from compiled sources">
     <!-- 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>  
770    
771        <jar destfile="${4jdk8product.jar}">
772          <fileset dir="${build.4jdk8.classes.dir}"/>
773          <manifest>
774            <attribute name="Built-By" value="${user.name}"/>
775            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
776          </manifest>
777        </jar>
778    </target>    </target>
779    
780    
781    <target name="report-tests"    <target name="4jdk8-tck"
782            depends="run-tests">            depends="4jdk8jar"
783              description="Runs tck tests for jsr166-4jdk8 directly">
784      <!-- Sets junit.report.format to frames if redirection is present,  
785           otherwise sets it to noframes. -->      <run-tck-tests
786      <available property="junit.report.format"        target="8"
787                    value="frames"        workdir="${build.4jdk8.dir}"
788                classname="org.apache.xalan.lib.Redirect"        classes="${4jdk8product.jar}">
789      />        <javac-elements>
790      <property name="junit.report.format" value="noframes"/>          <!-- JDK9+ test classes -->
791            <exclude name="*9Test.java"/>
792      <junitreport todir="${build.reports.dir}">          <exclude name="*10Test.java"/>
793        <fileset dir="${build.reports.dir}">          <compilerarg value="-Werror"/>
794          <include name="TEST-*.xml"/>        </javac-elements>
795        </fileset>      </run-tck-tests>
       <report styledir="${stylesheet.dir}"  
                 format="${junit.report.format}"  
                  todir="${build.reports.dir}"  
       />  
     </junitreport>  
   
     <fail message="Test Cases Failed" if="junit.failed"/>  
   
796    </target>    </target>
797    
798    
799    <target name="configure-compiler">    <target name="4jdk8-jtreg"
800              depends="4jdk8jar"
801      <property name="unchecked.option" value="-Xlint:unchecked"/>            description="Runs jtreg tests for jsr166-4jdk8 using the jtreg ant task">
802        <run-jtreg-tests
803      <condition property="warnunchecked.arg" value="${unchecked.option}">         target="8"
804        <istrue value="${build.warnunchecked}"/>         workdir="${build.4jdk8.dir}"
805      </condition>         classes="${4jdk8product.jar}"/>
   
     <property name="warnunchecked.arg" value=""/>  
   
   
     <!-- Common options in javac invocations -->  
     <property name="build.args" value="${warnunchecked.arg}"/>  
   
806    </target>    </target>
807    
808    
809    <target name="configure-tests"    <target name="4jdk8-test"
810         depends="configure-compiler">            depends="4jdk8-tck, 4jdk8-jtreg"
811              description="Runs tck and jtreg tests for jsr166-4jdk8"/>
812      <!-- junit.framework.Protectable is in JUnit 3.8.1 but not in 3.7 -->  
813      <available property="junit.available"  
814                 classname="junit.framework.Protectable"/>    <target name="4jdk8docs"
815              description="Builds javadocs for src/jdk8 to dist dir">
816      <!-- Xalan -->  
817      <available property="xalan.available"      <delete dir="${4jdk8docs.dir}"/>
818                 classname="org.apache.xalan.Version"/>      <mkdir dir="${4jdk8docs.dir}"/>
819    
820        <javadoc destdir="${4jdk8docs.dir}"
821      <!-- Ant 1.6beta and later don't need or want this check -->               packagenames="none"
822      <!--               link="${java8.api.url}"
823      <fail message="Need JUnit 3.8.1 in ${ant.home}${file.separator}lib to run tests"               overview="${4jdk8src.dir}/intro.html"
824            unless="junit.available"/>               access="${build.javadoc.access}"
825                 sourcepath="${4jdk8src.dir}:${jdk8.src.dir}"
826      <fail message="Need Xalan 2.5.1 jar in ${ant.home}${file.separator}lib to run tests"               classpath=""
827            unless="xalan.available"/>               source="8"
828      -->               executable="${javadoc8}"
829                 failonerror = "true">
830          <fileset dir="${4jdk8src.dir}" defaultexcludes="yes">
831            <include name="**/*.java"/>
832          </fileset>
833          <arg line="-Xdocrootparent ${java8.docroot.url}"/>
834          <arg value="-XDignore.symbol.file=true"/>
835          <arg value="-tag"/> <arg value="${javadoc.jls.option}"/>
836          <arg value="-tag"/> <arg value="implSpec:a:&lt;em&gt;Implementation Requirements:&lt;/em&gt;"/>
837          <arg value="-tag"/> <arg value="implNote:a:&lt;em&gt;Implementation Note:&lt;/em&gt;"/>
838    <!-- @apiNote tag currently unused -->
839    <!--  <arg value="-tag"/> <arg value="apiNote:a:&lt;em&gt;API Note:&lt;/em&gt;"/> -->
840        </javadoc>
841    </target>    </target>
842    
843    
844      <target name="4jdk8dist"
845              depends="4jdk8dist-jar, 4jdk8dist-docs"
846              description="Puts all distributable products in single hierarchy"/>
847    
   <!-- Anthill targets -->  
   
   <target name="anthill-build">  
   
     <!-- Override this in user.properties -->  
     <property name="tiger.home" location="e:/j2sdk1.5.0"/>  
848    
849      <exec resultproperty="result.property" dir="${basedir}" executable="${tiger.home}/bin/java">    <target name="4jdk8clean"
850        <arg value="-Xmx256000000"/>            description="Removes all 4jdk8 build products">
851        <!-- classpath of new JVM -->      <delete dir="${build.4jdk8.dir}"/>
       <arg value="-classpath"/> <arg path="${java.class.path}"/>  
       <!-- location of Ant home directory -->  
       <arg value="-Dant.home=${ant.home}"/>  
       <!-- the Ant main class -->  
       <arg value="org.apache.tools.ant.Main"/>  
       <!-- The build file -->  
       <arg value="-buildfile"/>  <arg value="build.xml"/>  
       <!-- the target to build on the new Ant instance -->  
       <arg value="-DJAVA_HOME=${tiger.home}"/>  
       <arg value="do-anthill-build"/>  
     </exec>  
852    </target>    </target>
853    
   <target name="do-anthill-build"  
           depends="jar, test, docs, dist-docs"/>  
   
   <target name="anthill-publish">  
   
     <copy todir="${deployDir}/docs/private">  
       <fileset dir="${build.javadocs.dir}"/>  
     </copy>  
   
     <copy todir="${deployDir}/docs/public">  
       <fileset dir="${dist.javadocs.dir}"/>  
     </copy>  
   
     <copy tofile="${deployDir}/index.html"  
           file="${basedir}/etc/anthill-index.html"/>  
   
     <copy todir="${deployDir}/notes">  
       <fileset dir="${basedir}/etc/notes"/>  
     </copy>  
854    
855      <target name="4jdk8dist-jar"
856              depends="4jdk8clean, 4jdk8jar">
857        <copy file="${4jdk8product.jar}" todir="${dist.dir}"/>
858    </target>    </target>
859    
860    
861      <target name="4jdk8dist-docs"
862    <!-- Various demos and test programs -->            depends="4jdk8clean, 4jdk8docs">
863        <mirror-dir src="${4jdk8docs.dir}" dst="${dist.4jdk8docs.dir}"/>
   
   <target name="sample" depends="init, configure-compiler"  
           description="Standalone demo program">  
   
     <mkdir dir="${build.testcases.dir}"/>  
   
     <javac srcdir="${test.src.dir}"  
           destdir="${build.testcases.dir}"  
             debug="${build.debug}"  
        debuglevel="${build.debuglevel}"  
       deprecation="${build.deprecation}"  
            source="${build.sourcelevel}"  
              fork="true">  
   
       <include name="jsr166/test/Sample.java"/>  
   
     </javac>  
   
     <copy todir="${build.testcases.dir}">  
       <fileset dir="${test.src.dir}">  
         <include name="**/*.properties"/>  
       </fileset>  
     </copy>  
   
   
     <java classname="jsr166.test.Sample" fork="true">  
       <classpath refid="test.classpath"/>  
       <!-- <jvmarg value="-ea"/> -->  
       <!-- <jvmarg value="-server"/> -->  
       <!-- <arg value="1000"/> -->  
     </java>  
864    </target>    </target>
865    
866    
867    <target name="loops" depends="init, configure-compiler"    <!-- jsr166 4jdk7 (no longer maintained) -->
           description="Benchmark from Doug Lea's AQS paper">  
868    
869      <mkdir dir="${build.loops.dir}"/>    <target name="4jdk7compile" depends="configure-compiler">
870        <mkdir dir="${build.4jdk7.classes.dir}"/>
871    
872      <javac srcdir="${loops.src.dir}"      <javac srcdir="${4jdk7src.dir}"
873            destdir="${build.loops.dir}"             destdir="${build.4jdk7.classes.dir}"
874              debug="${build.debug}"              debug="${build.debug}"
875         debuglevel="${build.debuglevel}"         debuglevel="${build.debuglevel}"
876        deprecation="${build.deprecation}"        deprecation="${build.deprecation}"
877             source="${build.sourcelevel}"             source="6"
878               target="6"
879               classpath=""
880               bootclasspath="${bootclasspath6}"
881               includeAntRuntime="false"
882               includeJavaRuntime="false"
883               encoding="ASCII"
884               executable="${javac7}"
885               fork="true">               fork="true">
886    
887          <include name="**/*.java"/>
888          <compilerarg value="-Xprefer:source"/>
889          <compilerarg value="-XDignore.symbol.file=true"/>
890          <compilerarg value="-Xlint:all"/>
891          <compilerarg value="-Werror"/>
892        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
       <classpath refid="loops.classpath"/>  
   
893      </javac>      </javac>
   
     <java classname="ALoops" fork="true">  
       <classpath refid="loops.classpath"/>  
     </java>  
   
894    </target>    </target>
895    
896      <target name="4jdk7doclint" depends="configure-compiler">
897        <mkdir dir="${build.4jdk7.classes.dir}"/>
898    
899    <target name="compile-j1" depends="init, configure-compiler">      <javac srcdir="${4jdk7src.dir}"
900               destdir="${build.4jdk7.classes.dir}"
     <mkdir dir="${build.j1.dir}"/>  
   
     <javac srcdir="${j1.src.dir}"  
           destdir="${build.j1.dir}"  
901              debug="${build.debug}"              debug="${build.debug}"
902         debuglevel="${build.debuglevel}"         debuglevel="${build.debuglevel}"
903        deprecation="${build.deprecation}"        deprecation="${build.deprecation}"
904             source="${build.sourcelevel}" >             source="6"
905               target="6"
906               classpath=""
907               bootclasspath="${bootclasspath6}"
908               includeAntRuntime="false"
909               includeJavaRuntime="false"
910               encoding="ASCII"
911               executable="${javac8}"
912               fork="true">
913    
914        <include name="**/*.java"/>        <include name="**/*.java"/>
915        <exclude name="**/dijkstra/**"/>        <compilerarg value="-Xprefer:source"/>
916          <compilerarg value="-XDignore.symbol.file=true"/>
917          <compilerarg value="-Xlint:all"/>
918          <compilerarg value="-Xdoclint:all/protected"/>
919        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
       <classpath refid="j1.classpath"/>  
   
920      </javac>      </javac>
   
921    </target>    </target>
922    
923      <target name="4jdk7jar" depends="4jdk7compile">
924    <target name="sw" depends="compile-j1"      <jar destfile="${4jdk7product.jar}">
925            description="Runs the SwingWorker demo">        <fileset dir="${build.4jdk7.classes.dir}"/>
926          <manifest>
927      <!--          <attribute name="Built-By" value="${user.name}"/>
928      <java classname="jsr166.swing.SwingWorkerDemo" fork="true">          <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
929        <classpath refid="j1.classpath"/>        </manifest>
930      </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>  
   
931    </target>    </target>
932    
933    <target name="j1" depends="compile-j1"    <target name="4jdk7-tck" depends="4jdk7jar">
934            description="Runs a standalone JavaOne program">      <run-tck-tests
935          target="7"
936      <java classname="${j1.test}" fork="true">        workdir="${build.4jdk7.dir}"
937        <classpath refid="j1.classpath"/>        classes="${4jdk7product.jar}">
938        <jvmarg value="-client"/>        <javac-elements>
939            <!-- JDK8+ test classes -->
940        <!-- TestPseudoRandom args -->          <exclude name="*8Test.java"/>
941        <arg value="2"/>          <exclude name="*9Test.java"/>
942        <arg value="25"/>          <exclude name="*10Test.java"/>
943        <arg value="100000"/>          <exclude name="DoubleAccumulatorTest.java"/>
944            <exclude name="DoubleAdderTest.java"/>
945        <!-- WebCrawler args -->          <exclude name="LongAccumulatorTest.java"/>
946        <!--          <exclude name="LongAdderTest.java"/>
947        <arg value="jsr166.webcrawler.WebCrawler3"/>          <exclude name="CompletableFutureTest.java"/>
948        <arg value="http://www.priorartisans.com"/>          <exclude name="SplittableRandomTest.java"/>
949        <arg value="25"/>          <exclude name="StampedLockTest.java"/>
950        -->          <exclude name="SubmissionPublisherTest.java"/>
951            <compilerarg value="-Werror"/>
952      </java>        </javac-elements>
953        </run-tck-tests>
954    </target>    </target>
955    
956      <!-- Runs tck tests for jsr166-4jdk7 via junit task (dead experiment) -->
957    <target name="test-j1" depends="compile-j1"    <target name="4jdk7-tck-junit" depends="4jdk7compile">
           description="Runs testcases from the JavaOne source directories">  
958    
959      <junit printsummary="true"      <junit printsummary="true"
960               showoutput="true"               showoutput="true"
961            errorProperty="junit.failed"            errorProperty="junit.failed"
962          failureProperty="junit.failed"          failureProperty="junit.failed"
963                      dir="${build.j1.dir}"             includeantruntime="true"
964               jvm="${java7}"
965                     fork="true">                     fork="true">
966    
967        <!-- <jvmarg value="-server"/> -->        <jvmarg value="-Xbootclasspath/p:${4jdk7product.jar}"/>
968        <classpath refid="j1.classpath"/>        <jvmarg value="-server"/>
       <formatter type="xml"/>  
   
       <batchtest todir="${build.j1.dir}">  
         <fileset dir="${j1.src.dir}">  
           <include name="**/*Test.java"/>  
         </fileset>  
       </batchtest>  
   
     </junit>  
969    
970      <available property="junit.report.format"        <classpath>
971                    value="frames"          <pathelement location="${junit.jar}"/>
972                classname="org.apache.xalan.lib.Redirect"/>          <pathelement location="${build.4jdk7.tck.classes.dir}"/>
973      <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>  
974    
975      <fail message="Test Cases Failed" if="junit.failed"/>        <formatter type="brief"/>
976    
977          <test name="${jsr166.tckTestClass}" haltonfailure="no">
978          </test>
979        </junit>
980    </target>    </target>
981    
982      <target name="4jdk7-jtreg" depends="4jdk7jar">
983        <run-jtreg-tests
984           target="7"
985           workdir="${build.4jdk7.dir}"
986           classes="${4jdk7product.jar}"/>
987      </target>
988    
989      <target name="4jdk7-test" depends="4jdk7-tck, 4jdk7-jtreg"/>
990    
991      <target name="4jdk7docs">
992        <delete dir="${4jdk7docs.dir}"/>
993        <mkdir dir="${4jdk7docs.dir}"/>
994    
995        <javadoc destdir="${4jdk7docs.dir}"
996                 packagenames="none"
997                 link="${java7.api.url}"
998                 overview="${4jdk7src.dir}/intro.html"
999                 access="${build.javadoc.access}"
1000                 sourcepath="${4jdk7src.dir}:${jdk7.src.dir}"
1001                 classpath=""
1002                 executable="${javadoc7}"
1003                 failonerror = "true">
1004          <fileset dir="${4jdk7src.dir}" defaultexcludes="yes">
1005            <include name="**/*.java"/>
1006          </fileset>
1007          <arg line="-Xdocrootparent ${java7.docroot.url}"/>
1008          <arg value="-XDignore.symbol.file=true"/>
1009        </javadoc>
1010      </target>
1011    
1012      <target name="4jdk7dist" depends="4jdk7dist-jar, 4jdk7dist-docs"/>
1013    
1014    <!-- C++ and JNI definitions and demos -->    <target name="4jdk7clean">
1015        <delete dir="${build.4jdk7.dir}"/>
1016      </target>
1017    
1018    <target name="configure-cpp">    <target name="4jdk7dist-jar" depends="4jdk7clean, 4jdk7jar">
1019        <copy file="${4jdk7product.jar}" todir="${dist.dir}"/>
1020      </target>
1021    
1022      <!-- Define tasks and types -->    <target name="4jdk7dist-docs" depends="4jdk7clean, 4jdk7docs">
1023        <mirror-dir src="${4jdk7docs.dir}" dst="${dist.4jdk7docs.dir}"/>
1024      </target>
1025    
     <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"/>  
1026    
1027      <!-- Set platform property for JNI includes -->    <!-- jsr166x (no longer maintained) -->
1028    
1029      <condition property="platform" value="linux">    <target name="jsr166xcompile" depends="configure-compiler">
1030        <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>  
1031    
1032        <javac srcdir="${topsrc.dir}"
1033               destdir="${build.jsr166x.classes.dir}"
1034               debug="${build.debug}"
1035               debuglevel="${build.debuglevel}"
1036               deprecation="${build.deprecation}"
1037               classpath=""
1038               bootclasspath="${bootclasspath6}"
1039               source="5"
1040               target="5"
1041               includeAntRuntime="false"
1042               includeJavaRuntime="false"
1043               encoding="ASCII"
1044               executable="${javac7}"
1045               fork="true">
1046          <include name="jsr166x/**/*.java"/>
1047          <compilerarg value="-XDignore.symbol.file=true"/>
1048          <compilerarg value="-Xlint:all,-unchecked,-rawtypes"/>
1049          <compilerarg value="-Werror"/>
1050          <compilerarg line="${build.args}"/>
1051        </javac>
1052    </target>    </target>
1053    
1054      <target name="jsr166xjar" depends="jsr166xcompile">
1055        <jar destfile="${jsr166x.jar}">
1056          <fileset dir="${build.jsr166x.classes.dir}"/>
1057          <manifest>
1058            <attribute name="Built-By" value="${user.name}"/>
1059            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1060          </manifest>
1061        </jar>
1062      </target>
1063    
1064    <target name="cppdemo" depends="configure-cpp">    <target name="jsr166xdocs">
1065        <delete dir="${jsr166xdocs.dir}"/>
1066        <mkdir dir="${jsr166xdocs.dir}"/>
1067    
1068        <javadoc destdir="${jsr166xdocs.dir}"
1069                 packagenames="jsr166x.*"
1070                 link="${java.api.url}"
1071                 access="${build.javadoc.access}"
1072                 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1073                 bootclasspath="${bootclasspath6}"
1074                 source="5"
1075                 executable="${javadoc7}"
1076                 failonerror = "true">
1077          <arg line="-Xdocrootparent ${java.docroot.url}"/>
1078          <arg value="-XDignore.symbol.file=true"/>
1079        </javadoc>
1080      </target>
1081    
1082      <mkdir dir="${build.dir}"/>    <target name="jsr166xdist" depends="jsr166xdist-jar, jsr166xdist-docs"/>
1083    
1084      <cc multithreaded="true"    <target name="jsr166xclean">
1085                   name="g++"      <delete dir="${build.jsr166x.dir}"/>
1086                 objdir="${build.dir}"    </target>
               outfile="${build.dir}/CppDemo">  
       <fileset dir="${test.src.dir}" includes="CppDemo.cpp"/>  
       <libset libs="stdc++"/>  
     </cc>  
1087    
1088      <exec executable="${build.dir}/CppDemo">    <target name="jsr166xdist-jar" depends="jsr166xclean, jsr166xjar">
1089        <arg line="count in word frequency of word in command line count"/>      <copy file="${jsr166x.jar}" todir="${dist.dir}"/>
1090      </exec>    </target>
1091    
1092      <target name="jsr166xdist-docs" depends="jsr166xclean, jsr166xdocs">
1093        <mirror-dir src="${jsr166xdocs.dir}" dst="${dist.jsr166xdocs.dir}"/>
1094    </target>    </target>
1095    
1096    
1097    <target name="jnidemo" depends="init, configure-compiler, configure-cpp">    <!-- jsr166y (no longer maintained) -->
1098    
1099      <mkdir dir="${build.testcases.dir}"/>    <target name="jsr166ycompile" depends="configure-compiler">
1100        <mkdir dir="${build.jsr166y.classes.dir}"/>
1101    
1102      <javac srcdir="${test.src.dir}"      <javac srcdir="${topsrc.dir}"
1103            destdir="${build.testcases.dir}"             destdir="${build.jsr166y.classes.dir}"
1104              debug="${build.debug}"              debug="${build.debug}"
1105         debuglevel="${build.debuglevel}"         debuglevel="${build.debuglevel}"
1106        deprecation="${build.deprecation}"        deprecation="${build.deprecation}"
1107             source="${build.sourcelevel}"             source="6"
1108               target="6"
1109               classpath=""
1110               bootclasspath="${bootclasspath6}"
1111               includeAntRuntime="false"
1112               includeJavaRuntime="false"
1113               encoding="ASCII"
1114               executable="${javac7}"
1115               fork="true">               fork="true">
1116        <compilerarg value="${bootclasspath.args}"/>  
1117          <include name="jsr166y/**/*.java"/>
1118          <compilerarg value="-XDignore.symbol.file=true"/>
1119          <compilerarg value="-Xlint:all"/>
1120          <compilerarg value="-Werror"/>
1121        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
       <classpath refid="test.classpath"/>  
       <include name="JniDemo.java"/>  
1122      </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>  
   
1123    </target>    </target>
1124    
1125      <target name="jsr166yjar" depends="jsr166ycompile">
1126        <jar destfile="${jsr166y.jar}" index="true">
1127          <fileset dir="${build.jsr166y.classes.dir}"/>
1128          <manifest>
1129            <attribute name="Built-By" value="${user.name}"/>
1130            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1131          </manifest>
1132        </jar>
1133      </target>
1134    
1135      <target name="jsr166ydocs">
1136        <delete dir="${jsr166ydocs.dir}"/>
1137        <mkdir dir="${jsr166ydocs.dir}"/>
1138    
1139        <javadoc destdir="${jsr166ydocs.dir}"
1140                 packagenames="jsr166y.*"
1141                 link="${java.api.url}"
1142                 access="${build.javadoc.access}"
1143                 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1144                 bootclasspath="${bootclasspath6}"
1145                 source="6"
1146                 executable="${javadoc7}"
1147                 failonerror = "true">
1148          <arg line="-Xdocrootparent ${java.docroot.url}"/>
1149          <arg value="-XDignore.symbol.file=true"/>
1150        </javadoc>
1151      </target>
1152    
1153    <!-- 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">  
1154    
1155      <delete dir="${pretiger.src.dir}"/>    <target name="jsr166yclean">
1156      <mkdir dir="${pretiger.src.dir}"/>      <delete dir="${build.jsr166y.dir}"/>
1157      </target>
1158    
1159      <exec executable="perl">    <target name="jsr166ydist-jar" depends="jsr166yclean, jsr166yjar">
1160        <arg file="etc/defang.pl"/>      <copy file="${jsr166y.jar}" todir="${dist.dir}"/>
1161        <!-- <arg value="-v"/> -->    </target>
       <arg value="-s"/> <arg file="${src.dir}"/>  
       <arg value="-t"/> <arg file="${pretiger.src.dir}"/>  
     </exec>  
1162    
1163      <target name="jsr166ydist-docs" depends="jsr166yclean, jsr166ydocs">
1164        <mirror-dir src="${jsr166ydocs.dir}" dst="${dist.jsr166ydocs.dir}"/>
1165    </target>    </target>
1166    
   <target name="compile-pretiger"  
           depends="init, configure-compiler, defang"  
           description="Compiles pre-Tiger sources to build folder">  
1167    
1168      <mkdir dir="${build.pretiger.dir}"/>    <!-- extra166y (no longer maintained) -->
1169    
1170      <target name="extra166ycompile" depends="configure-compiler, jsr166yjar">
1171        <mkdir dir="${build.extra166y.classes.dir}"/>
1172    
1173      <javac srcdir="${pretiger.src.dir}"      <javac srcdir="${topsrc.dir}"
1174            destdir="${build.pretiger.dir}"             destdir="${build.extra166y.classes.dir}"
1175              debug="${build.debug}"              debug="${build.debug}"
1176         debuglevel="${build.debuglevel}"         debuglevel="${build.debuglevel}"
1177        deprecation="${build.deprecation}"        deprecation="${build.deprecation}"
1178             source="${pretiger.sourcelevel}"             bootclasspath="@{jsr166y.jar}:${bootclasspath6}"
1179               classpath=""
1180               source="6"
1181               target="6"
1182               includeAntRuntime="false"
1183               includeJavaRuntime="false"
1184               encoding="ASCII"
1185               executable="${javac7}"
1186               fork="true">               fork="true">
1187    
1188          <include name="extra166y/**/*.java"/>
1189          <compilerarg value="-XDignore.symbol.file=true"/>
1190          <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
1191          <compilerarg value="-Werror"/>
1192        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
       <exclude name="**/Thread.java"/>  
   
1193      </javac>      </javac>
1194      </target>
1195    
1196      <target name="extra166yjar" depends="extra166ycompile">
1197        <jar destfile="${extra166y.jar}" index="true">
1198          <fileset dir="${build.extra166y.classes.dir}"/>
1199          <manifest>
1200            <attribute name="Built-By" value="${user.name}"/>
1201            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1202          </manifest>
1203        </jar>
1204    </target>    </target>
1205    
1206    <target name="pretiger" depends="compile-pretiger">    <target name="extra166ydocs">
1207        <delete dir="${extra166ydocs.dir}"/>
1208        <mkdir dir="${extra166ydocs.dir}"/>
1209    
1210        <javadoc destdir="${extra166ydocs.dir}"
1211                 packagenames="extra166y.*"
1212                 link="${java.api.url}"
1213                 access="${build.javadoc.access}"
1214                 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1215                 bootclasspath="${bootclasspath6}"
1216                 source="6"
1217                 executable="${javadoc7}">
1218          <arg line="-Xdocrootparent ${java.docroot.url}"/>
1219          <arg value="-XDignore.symbol.file=true"/>
1220        </javadoc>
1221      </target>
1222    
1223      <mkdir dir="${build.lib.dir}"/>    <target name="extra166ydist" depends="extra166ydist-jar, extra166ydist-docs"/>
1224    
1225      <jar destfile="${pretiger.jar}">    <target name="extra166yclean">
1226        <fileset dir="${build.pretiger.dir}">      <delete dir="${build.extra166y.dir}"/>
1227        </fileset>    </target>
1228      </jar>  
1229      <target name="extra166ydist-jar" depends="extra166yclean, extra166yjar">
1230        <copy file="${extra166y.jar}" todir="${dist.dir}"/>
1231      </target>
1232    
1233      <target name="extra166ydist-docs" depends="extra166yclean, extra166ydocs">
1234        <mirror-dir src="${extra166ydocs.dir}" dst="${dist.extra166ydocs.dir}"/>
1235    </target>    </target>
1236    
   <!-- jsr166x -->  
1237    
1238      <!-- jsr166e (no longer maintained) -->
1239    
1240    <target name="jsr166xcompile"    <property name="build.jsr166e.java.version" value="6"/>
1241            depends="init, configure-compiler"    <property name="build.jsr166e.javac" value="${javac6}"/>
           description="Compiles jsr166x sources">  
1242    
1243      <mkdir dir="${build.jsr166x.dir}"/>    <target name="jsr166ecompile" depends="configure-compiler">
1244        <mkdir dir="${build.jsr166e.classes.dir}"/>
1245    
1246      <javac srcdir="${jsr166xsrc.dir}"      <javac srcdir="${topsrc.dir}"
1247            destdir="${build.jsr166x.dir}"             destdir="${build.jsr166e.classes.dir}"
1248              debug="${build.debug}"              debug="${build.debug}"
1249         debuglevel="${build.debuglevel}"         debuglevel="${build.debuglevel}"
1250        deprecation="${build.deprecation}"        deprecation="${build.deprecation}"
1251             source="${build.sourcelevel}"             source="${build.jsr166e.java.version}"
1252               target="${build.jsr166e.java.version}"
1253               classpath=""
1254               includeAntRuntime="false"
1255               includeJavaRuntime="false"
1256               executable="${build.jsr166e.javac}"
1257               fork="true">               fork="true">
1258    
1259        <include name="**/*.java"/>        <include name="jsr166e/**/*.java"/>
1260          <compilerarg value="-XDignore.symbol.file=true"/>
1261          <compilerarg value="-Xlint:all"/>
1262          <compilerarg value="-Werror"/>
1263        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
   
1264      </javac>      </javac>
   
1265    </target>    </target>
1266    
1267      <target name="jsr166edoclint">
1268        <mkdir dir="${build.jsr166e.classes.dir}"/>
1269    
1270        <javac srcdir="${topsrc.dir}"
1271               destdir="${build.jsr166e.classes.dir}"
1272               debug="${build.debug}"
1273               debuglevel="${build.debuglevel}"
1274               deprecation="${build.deprecation}"
1275               source="${build.jsr166e.java.version}"
1276               target="${build.jsr166e.java.version}"
1277               classpath=""
1278               bootclasspath="${bootclasspath6}"
1279               includeAntRuntime="false"
1280               includeJavaRuntime="false"
1281               executable="${javac8}"
1282               fork="true">
1283    
1284    <target name="jsr166xjar"        <include name="jsr166e/**/*.java"/>
1285            depends="jsr166xcompile"        <compilerarg value="-XDignore.symbol.file=true"/>
1286            description="Builds library jar from compiled sources">        <compilerarg value="-Xlint:all"/>
1287          <compilerarg value="-Werror"/>
1288      <mkdir dir="${build.jsr166xlib.dir}"/>        <compilerarg value="-Xdoclint:all/protected"/>
1289        </javac>
1290      </target>
1291    
1292      <jar destfile="${jsr166xproduct.jar}">    <target name="jsr166ejar" depends="jsr166ecompile">
1293        <fileset dir="${build.jsr166x.dir}"/>      <jar destfile="${jsr166e.jar}" index="true">
1294          <fileset dir="${build.jsr166e.classes.dir}"/>
1295          <manifest>
1296            <attribute name="Built-By" value="${user.name}"/>
1297            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1298          </manifest>
1299      </jar>      </jar>
   
1300    </target>    </target>
1301    
1302      <target name="jsr166edocs">
1303        <delete dir="${jsr166edocs.dir}"/>
1304    <target name="jsr166xdocs"      <mkdir dir="${jsr166edocs.dir}"/>
1305            description="Builds javadocs with custom tags to build folder">  
1306        <javadoc destdir="${jsr166edocs.dir}"
1307      <delete dir="${build.jsr166xjavadocs.dir}"/>               packagenames="jsr166e.*"
1308      <mkdir dir="${build.jsr166xjavadocs.dir}"/>               link="${java.api.url}"
1309                 access="${build.javadoc.access}"
1310      <javadoc destdir="${build.jsr166xjavadocs.dir}"               sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1311                  link="http://java.sun.com/j2se/1.5.0/docs/api/"               source="${build.jsr166e.java.version}"
1312      >               executable="${javadoc7}"
1313        <packageset dir="${topsrc.dir}" defaultexcludes="yes">               failonerror = "true">
1314        <include name="jsr166x"/>        <arg line="-Xdocrootparent ${java.docroot.url}"/>
1315        </packageset>        <arg value="-XDignore.symbol.file=true"/>
   
   
1316      </javadoc>      </javadoc>
1317      </target>
1318    
1319      <target name="jsr166e-tck-one-java-version" depends="jsr166ejar">
1320        <echo message="Testing with jdk${build.jsr166e.java.version} ..."/>
1321        <run-tck-tests
1322          tck.src.dir="${test.src.dir}/tck-jsr166e"
1323          target="${build.jsr166e.java.version}"
1324          workdir="${build.jsr166e.dir}"
1325          classes="${jsr166e.jar}"/>
1326    </target>    </target>
1327    
1328      <target name="jsr166e-tck">
1329    
1330    <target name="jsr166xdist"  <!--     <antcall target="clean"/> -->
1331            depends="jsr166xdist-clean, jsr166xdist-jar, jsr166xdist-docs"  <!--     <antcall target="jsr166e-tck-one-java-version"> -->
1332            description="Puts all distributable products in single hierarchy"/>  <!--       <param name="build.jsr166e.java.version" value="8"/> -->
1333    <!--       <param name="build.jsr166e.javac" value="${javac8}"/> -->
1334    <!--     </antcall> -->
1335    
1336        <antcall target="clean"/>
1337        <antcall target="jsr166e-tck-one-java-version">
1338          <param name="build.jsr166e.java.version" value="7"/>
1339          <param name="build.jsr166e.javac" value="${javac7}"/>
1340        </antcall>
1341    
1342        <antcall target="clean"/>
1343        <antcall target="jsr166e-tck-one-java-version">
1344          <param name="build.jsr166e.java.version" value="6"/>
1345          <param name="build.jsr166e.javac" value="${javac6}"/>
1346        </antcall>
1347      </target>
1348    
1349    <target name="jsr166xclean"    <target name="jsr166e-test" depends="jsr166e-tck"/>
           description="Removes all build products">  
1350    
1351      <delete dir="${build.jsr166x.dir}"/>    <target name="jsr166edist" depends="jsr166edist-jar, jsr166edist-docs"/>
     <delete dir="${build.jsr166xlib.dir}"/>  
1352    
1353      <target name="jsr166eclean">
1354        <delete dir="${build.jsr166e.dir}"/>
1355    </target>    </target>
1356    
1357      <target name="jsr166edist-jar"
1358              depends="jsr166eclean, jsr166ejar">
1359        <copy file="${jsr166e.jar}" todir="${dist.dir}"/>
1360      </target>
1361    
1362      <target name="jsr166edist-docs" depends="jsr166eclean, jsr166edocs">
1363    <target name="jsr166xdist-clean"      <mirror-dir src="${jsr166edocs.dir}" dst="${dist.jsr166edocs.dir}"/>
           description="Removes all build and distribution products">  
   
1364    </target>    </target>
1365    
1366    
1367    <!-- Find buglets that can be detected by static build tools -->
1368    
1369    <target name="jsr166xdist-docs"  <!--   <target name="lint"> -->
1370            description="Builds javadocs without custom tags to dist folder">  <!--     <antcall target="dists"> -->
1371    <!--       <param name="build.javadoc.access" value="protected"/> -->
1372    <!--     </antcall> -->
1373    <!--   </target> -->
1374    
1375      <delete dir="${dist.jsr166xjavadocs.dir}"/>  <!-- Generates all doclint warnings, even for private methods (rarely useful) -->
1376      <mkdir dir="${dist.jsr166xjavadocs.dir}"/>    <target name="doclint-private">
1377        <antcall target="dist">
1378          <param name="build.javadoc.access" value="private"/>
1379        </antcall>
1380      </target>
1381    
     <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>  
1382    
1383      </javadoc>  <!-- ==============================================================
1384      Experimental errorprone support
1385      https://errorprone.info
1386      https://errorprone.info/docs/installation
1387      https://github.com/google/error-prone/issues/1143
1388    =================================================================== -->
1389      <path id="errorprone.processorpath.path">
1390        <pathelement location="${lib.dir}/error_prone_core-2.3.2-with-dependencies.jar"/>
1391        <pathelement location="${lib.dir}/dataflow-2.5.7.jar"/>
1392        <pathelement location="${lib.dir}/javacutil-2.5.7.jar"/>
1393        <pathelement location="${lib.dir}/jFormatString-3.0.0.jar"/>
1394      </path>
1395      <property name="errorprone.processorpath" refid="errorprone.processorpath.path" />
1396      <property name="errorprone.jsr166.user.flags" value=""/>
1397      <property name="errorprone.jsr166.flags"
1398                value="-Xep:HashtableContains:OFF
1399                       -Xep:JdkObsolete:OFF
1400                       -Xep:MissingOverride:OFF
1401                       -Xep:MissingFail:OFF
1402                       -Xep:ThreadPriorityCheck:OFF
1403                       -Xep:MixedArrayDimensions:ERROR
1404                       -Xep:RemoveUnusedImports:ERROR
1405                       -Xep:EmptyIf:ERROR
1406                       -Xep:MultipleTopLevelClasses:ERROR
1407                       -Xep:ClassName:ERROR
1408                       -Xep:LongLiteralLowerCaseSuffix:ERROR
1409                       -Xep:RedundantThrows:ERROR
1410                       -Xep:IdentityBinaryExpression:WARN
1411                       -Xep:ConstructorInvokesOverridable:WARN
1412                       -Xep:MethodCanBeStatic:WARN
1413                       ${errorprone.jsr166.user.flags}"/>
1414      <!-- -Xep:WildcardImport:ERROR -->
1415      <property name="errorprone.jsr166.test.flags"
1416                value="-Xep:StringSplitter:OFF
1417                       -Xep:BoxedPrimitiveConstructor:OFF
1418                       -Xep:ModifyingCollectionWithItself:OFF"/>
1419      <!-- ant -emacs errorprone |& grep -EA1 '(warning|error):|warnings' -->
1420      <target name="errorprone"
1421              depends="clean, configure-compiler"
1422              description="Run errorprone over jsr166 source code (experimental)">
1423    
1424        <local name="destdir"/>
1425        <property name="destdir" value="${build.classes.dir}/java.base"/>
1426        <mkdir dir="${destdir}"/>
1427    
1428    </target>      <javac srcdir="${src.dir}"
1429               destdir="${destdir}"
1430               debug="${build.debug}"
1431               debuglevel="${build.debuglevel}"
1432               deprecation="${build.deprecation}"
1433               classpath=""
1434               includeAntRuntime="false"
1435               includeJavaRuntime="false"
1436               encoding="ASCII"
1437               executable="${build.main.javac}"
1438               fork="true">
1439    
1440    <target name="jsr166xdist-jar"        <include name="**/*.java"/>
1441            depends="jsr166xclean, jsr166xjar">        <!-- Needed to silence -Xep:FutureReturnValueIgnored -->
1442          <compilerarg value="-J--illegal-access=permit"/>
1443          <compilerarg value="-XDcompilePolicy=simple"/>
1444          <compilerarg value="-processorpath"/>
1445          <compilerarg pathref="errorprone.processorpath.path"/>
1446          <compilerarg value="-Xplugin:ErrorProne
1447                              ${errorprone.jsr166.flags}"/>
1448          <compilerarg value="--patch-module=java.base=${src.dir}"/>
1449          <compilerarg value="-Xprefer:source"/>
1450          <compilerarg value="-XDignore.symbol.file=true"/>
1451          <compilerarg value="-Xlint:all"/>
1452          <compilerarg value="-Xdoclint:all/protected,reference/private"/>
1453          <compilerarg line="-Xmaxerrs 3000 -Xmaxwarns 3000"/>
1454          <compilerarg line="${build.args}"/>
1455        </javac>
1456    
1457      <copy file="${jsr166xproduct.jar}" todir="${dist.dir}"/>      <jar destfile="${product.jar}">
1458          <fileset dir="${destdir}"/>
1459        </jar>
1460    
1461        <run-tck-tests
1462          target="${java.runtime.target}"
1463          workdir="${build.dir}"
1464          classes="${product.jar}">
1465          <javac-elements>
1466            <!-- Needed to silence -Xep:FutureReturnValueIgnored -->
1467            <compilerarg value="-J--illegal-access=permit"/>
1468            <compilerarg value="-XDcompilePolicy=simple"/>
1469            <compilerarg line="-processorpath ${errorprone.processorpath}"/>
1470            <compilerarg value="-Xplugin:ErrorProne
1471                                ${errorprone.jsr166.flags}
1472                                ${errorprone.jsr166.test.flags}"/>
1473            <compilerarg line="-Xmaxerrs 3000 -Xmaxwarns 3000"/>
1474          </javac-elements>
1475        </run-tck-tests>
1476      </target>
1477    
1478      <!-- ant -emacs errorprone-jtreg |& grep -EA1 '(warning|error):' -->
1479      <!-- -XDcompilePolicy=simple or byfile avoids confusing UnusedImports -->
1480      <target name="errorprone-jtreg"
1481              depends="jar"
1482              description="Run errorprone over jtreg tests (experimental)">
1483    
1484        <run-jtreg-tests
1485           target="${java.runtime.target}"
1486           workdir="${build.dir}"
1487           classes="${product.jar}"
1488           verbose="all">
1489          <jtreg-elements>
1490            <arg value="-javacoption:-XDcompilePolicy=simple"/>
1491            <arg value="-javacoption:-processorpath"/>
1492            <arg value="-javacoption:${errorprone.processorpath}"/>
1493            <arg value="-javacoption:-Xplugin:ErrorProne
1494                                ${errorprone.jsr166.flags}
1495                                ${errorprone.jsr166.test.flags}
1496                                -Xep:MultipleTopLevelClasses:WARN
1497                                -Xep:NonAtomicVolatileUpdate:OFF"/>
1498          </jtreg-elements>
1499        </run-jtreg-tests>
1500      </target>
1501    
1502    
1503    <!-- ==============================================================
1504      Running guava tests against jsr166 code
1505    =================================================================== -->
1506    
1507    <!-- <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" -->
1508    <!--   organisation="com.google.guava" module="guava-testlib" revision="21.0"/> -->
1509    <!-- <property name="guava.version" value="21.0"/> -->
1510    
1511    <!-- HOWTO debug print a path id -->
1512    <!-- <pathconvert property="guava.testlib.classpath" refid="guava.testlib.classpath" /> -->
1513    <!-- <echo message="guava.testlib.classpath=${guava.testlib.classpath}"/> -->
1514    
1515    <!-- <ivy:retrieve pathid="guava.tests.classpath" type="jar" inline="true" conf="*" pattern="${lib.dir}/[type]/[artifact].[ext]" -->
1516    <!--   organisation="com.google.guava" module="guava-tests"/> -->
1517    <!-- <get src="http://repo2.maven.org/maven2/com/google/guava/guava-tests/${guava.version}/guava-tests-${guava.version}-tests.jar" -->
1518    <!--   dest="${lib.dir}/jar/guava-tests-tests.jar" usetimestamp="true"/> -->
1519    <!--     <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" type="*" -->
1520    <!--       organisation="com.google.guava" module="guava-testlib" revision="${guava.version}"/> -->
1521    
1522    <!-- <test name="com.google.common.collect.testing.TestsForQueuesInJavaUtil"/> -->
1523    <!-- <test name="com.google.common.collect.testing.TestsForListsInJavaUtil"/> -->
1524    <!-- <test name="com.google.common.collect.testing.TestsForSetsInJavaUtil"/> -->
1525    <!-- <test name="com.google.common.collect.testing.TestsForMapsInJavaUtil"/> -->
1526    
1527    <!-- <ivy:retrieve pathid="guava.testlib.classpath" -->
1528    <!--   type="*" inline="true" conf="*(private),*(public)" -->
1529    <!--   pattern="${guava.dir}/[artifact].[ext]" -->
1530    <!--   organisation="com.google.guava" module="guava-testlib"/> -->
1531    
1532    <!-- Work around bug below by downloading guava-testlib-tests.jar "by hand": -->
1533    <!-- https://issues.apache.org/jira/browse/IVY-1444 -->
1534    <!-- maven tests artifacts cannot be downloaded because they are mapped to private configurations -->
1535    
1536      <target name="init-ivy">
1537        <get src="http://repo2.maven.org/maven2/org/apache/ivy/ivy/2.4.0/ivy-2.4.0.jar"
1538             dest="${build.dir}/ivy.jar" usetimestamp="true" skipexisting="true"/>
1539        <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant"
1540                 classpath="${build.dir}/ivy.jar"/>
1541      </target>
1542    
1543      <target name="guava-tests" depends="jar, init-ivy"
1544              description="Guava tests run against jsr166 collections">
1545        <property name="guava.dir" value="${build.dir}/guava-testlib"/>
1546        <mkdir dir="${guava.dir}"/>
1547        <ivy:retrieve pathid="guava.testlib.classpath"
1548          type="jar,bundle" inline="true" conf="default,master"
1549          pattern="${guava.dir}/[artifact].[ext]"
1550          organisation="com.google.guava" module="guava-testlib"/>
1551        <property name="guava.version" value="21.0"/>
1552        <get src="http://repo2.maven.org/maven2/com/google/guava/guava-testlib/${guava.version}/guava-testlib-${guava.version}-tests.jar"
1553             dest="${guava.dir}/guava-testlib-tests.jar" usetimestamp="true"/>
1554        <junit printsummary="true" showoutput="true" haltonfailure="true"
1555               jvm="${build.main.java}" fork="true">
1556          <jvmarg line="-ea -esa --patch-module=java.base=${product.jar}"/>
1557          <formatter type="brief"/>
1558          <classpath>
1559            <pathelement location="${guava.dir}/guava-testlib-tests.jar"/>
1560            <path refid="guava.testlib.classpath"/>
1561          </classpath>
1562    
1563          <!-- "6" in "OpenJdk6Tests" misleadingly means "6+" -->
1564          <test name="com.google.common.collect.testing.OpenJdk6Tests"/>
1565        </junit>
1566    </target>    </target>
1567    
1568  </project>  </project>

Legend:
Removed from v.1.70  
changed lines
  Added in v.1.291

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8