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

Diff of /jsr166/build.xml

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

revision 1.27 by tim, Wed May 28 00:33:17 2003 UTC revision 1.290 by jsr166, Sun Dec 2 22:46:53 2018 UTC
# Line 1  Line 1 
1  <project name="jsr166" default="usage">  <project name="jsr166" default="usage"
2      xmlns:if="ant:if"
3      xmlns:unless="ant:unless"
4      xmlns:ivy="antlib:org.apache.ivy.ant">
5    
6    <description>    <description>
7      Build file for JSR-166  ------------------------------------------------------------------------------
8      Build file for JSR-166
9    
10      JUnit 3.8 or better must be in ${ant.home}/lib for the test target to work.    Usage: ant [target]
11    </description>  
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.
16      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    <target name="usage" description="Prints this message">    As of 2016-03, the sources in src/main are for jdk9+ only.
41      <echo>  ------------------------------------------------------------------------------
42  ant [target], where target is one of:    </description>
43    
44   usage       (default) Prints this message    <!-- Run 'ant -projecthelp' (default target) -->
45   compile     Compiles all sources to build folder    <target name="usage">
46   jar         Builds library jar from compiled sources      <java classname="org.apache.tools.ant.Main">
47   test        Runs all tests (requires JUnit 1.8 in ${ant.home}/lib)        <arg value="-projecthelp" />
48   docs        Builds javadocs with custom tags to build folder      </java>
  dist-docs   Builds javadocs without custom tags to dist folder  
  dist        Puts all distributable products in single hierarchy  
   
  clean       Removes all build products  
  dist-clean  Removes all build and distribution products  
   
  checkstyle  Reports on style errors in Java source (verbose, mostly chaff)  
  doccheck    Reports on javadoc style errors (not working yet)  
     </echo>  
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    
   <!-- Set build.warnings in user.properties to turn on -warnunchecked -->  
   <!-- <property name="build.warnings" value=""/> -->  
   
56    
57    <!-- Compilation options -->    <!-- Compilation options -->
   <property name="build.sourcelevel"    value="1.5"/>  
   <property name="build.docsourcelevel" value="1.4"/>  
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.emulation.dir"  location="${build.dir}/emulation"/>    <property name="build.testcases.dir"         location="${build.dir}/testcases"/>
67    <property name="build.testcases.dir"  location="${build.dir}/testcases"/>    <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.stripped.dir"   location="${build.dir}/stripped"/>    <property name="build.4jdk7.tck.classes.dir" location="${build.4jdk7.dir}/tck-classes"/>
72    <property name="build.reports.dir"    location="${build.dir}/reports"/>    <property name="build.4jdk7.docs.dir"        location="${build.4jdk7.dir}/docs"/>
73    <property name="build.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.4jdk8.classes.dir"     location="${build.4jdk8.dir}/classes"/>
76      <property name="build.4jdk8.tck.classes.dir" location="${build.4jdk8.dir}/tck-classes"/>
77      <property name="build.4jdk8.docs.dir"        location="${build.4jdk8.dir}/docs"/>
78    
79      <property name="build.jsr166x.dir"           location="${build.dir}/jsr166x"/>
80      <property name="build.jsr166y.dir"           location="${build.dir}/jsr166y"/>
81      <property name="build.jsr166e.dir"           location="${build.dir}/jsr166e"/>
82      <property name="build.extra166y.dir"         location="${build.dir}/extra166y"/>
83    
84      <property name="build.jsr166x.classes.dir"   location="${build.jsr166x.dir}/classes"/>
85      <property name="build.jsr166y.classes.dir"   location="${build.jsr166y.dir}/classes"/>
86      <property name="build.jsr166e.classes.dir"   location="${build.jsr166e.dir}/classes"/>
87      <property name="build.extra166y.classes.dir" location="${build.extra166y.dir}/classes"/>
88    
89      <!-- JDK locations -->
90      <property name="jdks.home"  location="${user.home}/jdk"/>
91    
92      <macrodef name="defjdklocations">
93        <attribute name="v"/>
94        <sequential>
95        <property name="jdk@{v}.home"     location="${jdks.home}/jdk@{v}"/>
96        <property name="java@{v}"         location="${jdk@{v}.home}/bin/java"/>
97        <property name="javac@{v}"        location="${jdk@{v}.home}/bin/javac"/>
98        <property name="javadoc@{v}"      location="${jdk@{v}.home}/bin/javadoc"/>
99        <property name="jdk@{v}.src.home" location="${jdks.home}/src/jdk@{v}"/>
100        <local name="have.java.base"/>
101        <available property="have.java.base"
102          file="${jdk@{v}.src.home}/jdk/src/java.base/share/classes" type="dir"/>
103        <property name="jdk@{v}.src.dir" location="${jdk@{v}.src.home}/jdk/src/java.base/share/classes"
104          if:set="have.java.base"/>
105        <property name="jdk@{v}.src.dir" location="${jdk@{v}.src.home}/jdk/src/share/classes"
106          unless:set="have.java.base"/>
107        <local name="modules"/>
108        <available property="modules" file="${jdk@{v}.home}/lib/modules" type="file"/>
109        <local name="boot.jar.dir"/>
110        <property name="boot.jar.dir"   location="${jdk@{v}.home}/jre/lib" unless:set="modules"/>
111        <path id="bootclasspath@{v}" unless:set="modules">
112          <pathelement path="${boot.jar.dir}/resources.jar"/>
113          <pathelement path="${boot.jar.dir}/rt.jar"/>
114          <pathelement path="${boot.jar.dir}/jsse.jar"/>
115          <pathelement path="${boot.jar.dir}/jce.jar"/>
116          <pathelement path="${boot.jar.dir}/charsets.jar"/>
117        </path>
118        <property name="bootclasspath@{v}" value="${toString:bootclasspath@{v}}" unless:set="modules"/>
119        </sequential>
120      </macrodef>
121    
122      <macrodef name="mirror-dir">
123        <attribute name="src"/>
124        <attribute name="dst"/>
125        <sequential>
126        <delete dir="@{dst}"/>
127        <mkdir dir="@{dst}"/>
128        <copy todir="@{dst}" preservelastmodified="true">
129          <fileset dir="@{src}"/>
130        </copy>
131        </sequential>
132      </macrodef>
133    
134      <defjdklocations v="6"/>
135      <defjdklocations v="7"/>
136      <defjdklocations v="8"/>
137      <defjdklocations v="9"/>
138      <defjdklocations v="10"/>
139      <defjdklocations v="11"/>
140      <defjdklocations v="12"/>
141    
142    <!-- Source locations -->    <!-- Source locations -->
143    <property name="src.dir"              location="${basedir}/src/main"/>    <property name="src.dir"              location="${basedir}/src/main"/>
   <property name="emulation.src.dir"    location="${basedir}/src/emulation"/>  
144    <property name="test.src.dir"         location="${basedir}/src/test"/>    <property name="test.src.dir"         location="${basedir}/src/test"/>
145    <property name="ant.src.dir"          location="${basedir}/etc/ant"/>    <property name="loops.src.dir"        location="${basedir}/src/loops"/>
146    <property name="stylesheet.dir"       location="${basedir}/etc/xsl"/>    <property name="tck.src.dir"          location="${test.src.dir}/tck"/>
147      <property name="jtreg7.src.dir"       location="${test.src.dir}/jtreg-jdk7"/>
148      <property name="jtreg8.src.dir"       location="${test.src.dir}/jtreg-jdk8"/>
149      <property name="jtreg9.src.dir"       location="${test.src.dir}/jtreg"/>
150      <property name="jtreg10.src.dir"      location="${test.src.dir}/jtreg"/>
151      <property name="jtreg11.src.dir"      location="${test.src.dir}/jtreg"/>
152      <property name="jtreg12.src.dir"      location="${test.src.dir}/jtreg"/>
153      <property name="jtreg.src.dir"        location="${jtreg9.src.dir}"/>
154    <property name="lib.dir"              location="${basedir}/lib"/>    <property name="lib.dir"              location="${basedir}/lib"/>
155    <property name="dist.dir"             location="${basedir}/dist"/>    <property name="dist.dir"             location="${basedir}/dist"/>
156      <property name="topsrc.dir"           location="${basedir}/src"/>
157    <!-- Distribution locations -->    <property name="4jdk7src.dir"         location="${topsrc.dir}/jdk7"/>
158    <property name="dist.javadocs.dir"    location="${dist.dir}/docs"/>    <property name="4jdk8src.dir"         location="${topsrc.dir}/jdk8"/>
159      <property name="jsr166xsrc.dir"       location="${topsrc.dir}/jsr166x"/>
160      <property name="jsr166ysrc.dir"       location="${topsrc.dir}/jsr166y"/>
161      <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="javac.jar"            location="${lib.dir}/javac.jar"/>    <property name="4jdk7product.jar" location="${build.4jdk7.dir}/jsr166-4jdk7.jar"/>
184    <property name="collect.jar"          location="${lib.dir}/collect.jar"/>    <property name="4jdk8product.jar" location="${build.4jdk8.dir}/jsr166-4jdk8.jar"/>
185    <property name="junit.jar"            location="${lib.dir}/junit.jar"/>    <property name="jsr166x.jar"      location="${build.jsr166x.dir}/jsr166x.jar"/>
186    <property name="rt.jar"               location="${java.home}/lib/rt.jar"/>    <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"/>
190    
191      <!-- Canonical location of jdk docs root, to use with javadoc -Xdocrootparent flag -->
192      <!-- Switched to https: in 2017-10 - JDK-8190312 -->
193      <property name="java5.docroot.url"  value="https://docs.oracle.com/javase/1.5.0/docs"/>
194      <property name="java6.docroot.url"  value="https://docs.oracle.com/javase/6/docs"/>
195      <property name="java7.docroot.url"  value="https://docs.oracle.com/javase/7/docs"/>
196      <property name="java8.docroot.url"  value="https://docs.oracle.com/javase/8/docs"/>
197      <property name="java9.docroot.url"  value="https://docs.oracle.com/javase/9/docs"/>
198      <property name="java10.docroot.url" value="https://docs.oracle.com/javase/10/docs"/>
199      <property name="java11.docroot.url" value="https://docs.oracle.com/en/java/javase/11/docs"/>
200      <!-- The location of jdk early access docs (RIP) -->
201      <!-- <property name="java9.docroot.url" value="http://download.java.net/java/jdk9/docs"/> -->
202      <!-- <property name="java10.docroot.url" value="http://download.java.net/java/jdk10/docs"/> -->
203      <!-- <property name="java11.docroot.url" value="http://download.java.net/java/jdk11/docs"/> -->
204      <property name="java12.docroot.url" value="https://download.java.net/java/jdk12/docs"/>
205      <!-- Default jdk doc location (latest stable LTS release seems best) -->
206      <property name="java.docroot.url"   value="${java11.docroot.url}"/>
207    
208      <!-- Canonical location of jdk API docs, to use with javadoc link attribute -->
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     ! Bootclasspath munging for source compilation.            failonerror="true"
286     -->            jvm="${java@{target}}"
287              fork="true">
288    <path id="javac.bootclasspath.prepend">          <jvmarg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
289      <!-- <pathelement location="${src.dir}"/> -->          <jvmarg value="--patch-module=java.base=@{classes}" if:set="modules"/>
290      <pathelement location="${javac.jar}"/>          <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" if:set="modules"/>
291    </path>          <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    <path id="javac.bootclasspath">          <jvmarg value="--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED" if:set="modules"/>
294      <!-- <pathelement location="${src.dir}"/> -->          <jvmarg value="--add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED" if:set="modules"/>
295      <pathelement location="${collect.jar}"/>          <jvmarg line="@{jvmflags}"/>
296      <pathelement location="${rt.jar}"/>          <!-- ant -Dvmoptions="-Xmx8m" -Djsr166.tckTestClass=CompletableFutureTest tck -->
297    </path>          <jvmarg line="${vmoptions}" if:set="vmoptions"/>
298    
299    <!-- Flatten bootclasspath prefix into a platform-appropriate string -->          <!-- ant -Djava.util.concurrent.ForkJoinPool.common.parallelism=1 tck -->
300    <property name="javac.bootclasspath.prepend" refid="javac.bootclasspath.prepend"/>          <syspropertyset id="system-properties-used-by-tck">
301              <propertyref prefix="java.util.concurrent.ForkJoinPool"/>
302    <!-- Turn the flattened bootclasspath prefix into a javac argument -->            <propertyref prefix="jsr166."/>
303    <property name="javac.args" value='-J-Xbootclasspath/p:${javac.bootclasspath.prepend}'/>            <propertyref name="test.timeout.factor"/>
304            </syspropertyset>
305    
306            <classpath>
307              <pathelement location="${junit.jar}"/>
308              <pathelement location="@{workdir}/tck-classes"/>
309            </classpath>
310        </java>
311    
312        </sequential>
313      </macrodef>
314    
315      <!-- Define jtreg test sets for different jdk versions -->
316      <!-- ant -Djtreg.test.pattern="**/ConcurrentHashMap/" -->
317      <!-- ant -Djtreg.test.pattern="**/ToArray.java" -->
318      <property name="jtreg.test.pattern" value="**/*.java"/>
319      <macrodef name="defjtregtests">
320        <attribute name="v"/>
321        <sequential>
322          <fileset dir="${jtreg@{v}.src.dir}">
323            <patternset id="jdk@{v}.jtreg.tests">
324              <include name="${jtreg.test.pattern}"/>
325            </patternset>
326          </fileset>
327        </sequential>
328      </macrodef>
329    
330    <!--    <defjtregtests v="12"/>
331     ! Bootclasspath munging for testing, so JUnit can test our local    <defjtregtests v="11"/>
332     ! modifications to java.*.    <defjtregtests v="10"/>
333     -->    <defjtregtests v="9"/>
334      <defjtregtests v="8"/>
335    <path id="test.classpath">    <defjtregtests v="7"/>
336      <pathelement location="${product.jar}"/>  
337      <pathelement location="${build.testcases.dir}"/>    <!-- ant -Djtreg.flags=-timeoutFactor:4 -->
338      <pathelement location="${junit.jar}"/>    <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 -->
381      <path id="loops.classpath">
382        <pathelement location="${build.loops.dir}"/>
383    </path>    </path>
384    
385    <!-- Flatten test classpath into a platform-appropriate string -->    <!-- Support @jls tag, used in jdk8+ javadoc -->
386    <property name="test.classpath" refid="test.classpath"/>    <property name="javadoc.jls.cite" value="The Java&amp;trade; Language Specification"/>
387      <property name="javadoc.jls.option" value="jls:a:See &lt;cite&gt;${javadoc.jls.cite}&lt;/cite&gt;:"/>
   <!-- Turn the flattened test classpath into a javac argument -->  
   <property name="test.javac.args" value='-Xbootclasspath/p:${test.classpath}'/>  
   
   
388    
389    <!-- Main targets -->    <!-- Main targets -->
390    
391    <target name="compile" depends="init"    <!-- Default values: may seem strange ... -->
392            description="Compiles main sources to build folder">    <!-- 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"
412              depends="configure-compiler"
413              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      <javac srcdir="${src.dir}"      <mkdir dir="${destdir}"/>
           destdir="${build.classes.dir}"  
             debug="${build.debug}"  
        debuglevel="${build.debuglevel}"  
       deprecation="${build.deprecation}"  
            source="${build.sourcelevel}"  
              fork="true">  
419    
420        <bootclasspath refid="javac.bootclasspath"/>      <javac srcdir="${src.dir}"
421        <compilerarg line="${javac.args} ${build.warnings.option}"/>             destdir="${destdir}"
422               debug="${build.debug}"
423               debuglevel="${build.debuglevel}"
424               deprecation="${build.deprecation}"
425               classpath=""
426               includeAntRuntime="false"
427               includeJavaRuntime="false"
428               encoding="ASCII"
429               executable="${build.main.javac}"
430               fork="true">
431    
432          <include name="**/*.java"/>
433          <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}"/>
442    
443      </javac>      </javac>
444      </target>
445    
446    
447      <target name="jar"
448              depends="compile"
449              description="Builds library jar for src/main from compiled sources">
450        <local name="subdir"/>
451        <available property="subdir" file="${build.classes.dir}/java.base" type="dir" value="/java.base"/>
452        <jar destfile="${product.jar}">
453          <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>
459    </target>    </target>
460    
461    
462    <target name="jar" depends="native-jar, emulation-jar"/>    <target name="docs"
463              description="Builds javadocs for src/main to dist dir">
464    
465        <delete dir="${docs.dir}"/>
466        <mkdir dir="${docs.dir}"/>
467    
468    <target name="test" depends="init, check-junit, report-tests"      <!-- the packagenames="none" hack below prevents scanning the -->
469            description="Runs all tests (requires JUnit 3.8+ in ${ant.home}/lib)"      <!-- sourcepath for packages -->
   />  
470    
471    <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}" -->
472    <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}:${jdk9.src.home}/jdk/src/java.logging/share/classes" -->
473    <!-- TODO: sourcepath="${src.dir}:${jdk9.home}/src.zip" -->
474    <!-- TODO: <arg line="-sourcepath ${src.dir}:${jdk9.home}/src.zip"/> -->
475    <!-- TODO: <arg line="- -module-source-path ${jdk9.home}/src.zip"/> -->
476        <javadoc destdir="${docs.dir}"
477                 packagenames="none"
478                 link="${java.api.url}"
479                 overview="${src.dir}/intro.html"
480                 access="${build.javadoc.access}"
481                 sourcepath="${src.dir}"
482                 classpath=""
483                 source="${build.main.javadoc.source}"
484                 executable="${build.main.javadoc}">
485          <fileset dir="${src.dir}" defaultexcludes="yes">
486            <include name="**/*.java"/>
487          </fileset>
488          <arg line="-Xdocrootparent ${java.docroot.url}"/>
489          <arg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
490          <arg value="-XDignore.symbol.file=true"/>
491          <arg value="-html5"/>
492          <arg value="--patch-module=java.base=${src.dir}"/>
493    <!-- old school frames via docs/index.html?overview-summary.html -->
494          <arg value="--frames"/>
495          <arg value="--override-methods=summary"/>
496          <arg value="-tag"/> <arg value="${javadoc.jls.option}"/>
497          <arg value="-tag"/> <arg value="implSpec:a:Implementation Requirements:"/>
498          <arg value="-tag"/> <arg value="implNote:a:Implementation Note:"/>
499          <arg value="-tag"/> <arg value="apiNote:a:API Note:"/>
500    <!-- tags added in jdk9: currently unused -->
501    <!--  <arg value="-tag"/> <arg value="revised:X"/> -->
502    <!--  <arg value="-tag"/> <arg value="spec:X"/> -->
503        </javadoc>
504      </target>
505    
   <target name="checkstyle" depends="filter-src"  
           description="Reports on style errors in Java source (verbose, mostly chaff)">  
506    
507      <taskdef resource="checkstyletask.properties"    <target name="dist"
508              classpath="${lib.dir}/checkstyle-all-2.4.jar"/>            depends="dist-clean, dist-jar, dist-docs"
509              description="Puts all distributable products in single hierarchy"/>
510    
     <checkstyle>  
       <formatter type="plain"/>  <!-- also available: type="xml" -->  
       <fileset dir="${build.filter.src.dir}" includes="**/*.java"/>  
     </checkstyle>  
511    
512      <target name="clean"
513              description="Removes all build products">
514        <delete dir="${build.dir}"/>
515    </target>    </target>
516    
517    
518    <target name="doccheck" depends="filter-src"    <target name="dist-clean"
519            description="Reports on javadoc style errors (not working yet)">            description="Removes all build and distribution products">
520        <delete dir="${build.dir}"/>
521        <delete dir="${dist.dir}"/>
522      </target>
523    
     <delete dir="${build.doccheck.dir}"/>  
     <mkdir dir="${build.doccheck.dir}"/>  
524    
525      <javadoc doclet="com.sun.tools.doclets.doccheck.DocCheck"    <target name="dist-jar"
526           docletpath="${lib.dir}/doccheck.jar"            depends="clean, jar">
527              destdir="${build.doccheck.dir}">      <copy file="${product.jar}" todir="${dist.dir}"/>
528        <packageset dir="${build.filter.src.dir}"/>    </target>
     </javadoc>  
529    
530      <target name="dist-docs"
531              depends="clean, docs">
532        <mirror-dir src="${docs.dir}" dst="${dist.docs.dir}"/>
533      </target>
534    
535      <target name="tck"
536              depends="jar"
537              description="Runs tck tests for src/main directly">
538    
539        <run-tck-tests
540          target="${java.runtime.target}"
541          workdir="${build.dir}"
542          classes="${product.jar}">
543          <javac-elements>
544            <compilerarg value="-Werror"/>
545          </javac-elements>
546        </run-tck-tests>
547      </target>
548    
549      <target name="tck-parallelism-1"
550              description="Runs tck with common pool parallelism 1">
551        <antcall target="tck">
552          <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="1"/>
553        </antcall>
554      </target>
555    
556      <target name="tck-parallelism-0"
557              description="Runs tck with common pool parallelism 0">
558        <antcall target="tck">
559          <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="0"/>
560        </antcall>
561      </target>
562    
563      <target name="tck-security-manager"
564              description="Runs tck with a security manager">
565        <antcall target="tck">
566          <param name="jsr166.useSecurityManager" value="true"/>
567        </antcall>
568      </target>
569    
570      <target name="jtreg"
571              depends="jar"
572              description="Runs jtreg tests for src/main using the jtreg ant task">
573        <run-jtreg-tests
574           target="${java.runtime.target}"
575           workdir="${build.dir}"
576           classes="${product.jar}"/>
577      </target>
578    
579      <target name="test"
580              depends="tck, tck-parallelism-1, tck-parallelism-0, jtreg"
581              description="Runs tck and jtreg tests for src/main"/>
582    
583      <target name="test-version-permutations"
584              depends="test9, test10, test11, test12, test9-11, test9-12, clean, test, docs">
585      </target>
586    
587      <target name="test9">
588        <antcall target="clean"/>
589        <antcall>
590          <param name="java.runtime.target" value="9"/>
591          <param name="build.main.javac" value="${javac9}"/>
592          <param name="build.main.javadoc" value="${javadoc12}"/>
593          <param name="build.main.javadoc.source" value="9"/>
594          <target name="test"/>
595          <target name="docs"/>
596        </antcall>
597      </target>
598    
599      <target name="test10">
600        <antcall target="clean"/>
601        <antcall>
602          <param name="java.runtime.target" value="10"/>
603          <param name="build.main.javac" value="${javac10}"/>
604          <param name="build.main.javadoc" value="${javadoc12}"/>
605          <param name="build.main.javadoc.source" value="10"/>
606          <target name="test"/>
607          <target name="docs"/>
608        </antcall>
609      </target>
610    
611      <target name="test11">
612        <antcall target="clean"/>
613        <antcall>
614          <param name="java.runtime.target" value="11"/>
615          <param name="build.main.javac" value="${javac11}"/>
616          <param name="build.main.javadoc" value="${javadoc12}"/>
617          <param name="build.main.javadoc.source" value="11"/>
618          <target name="test"/>
619          <target name="docs"/>
620        </antcall>
621      </target>
622    
623      <target name="test12">
624        <antcall target="clean"/>
625        <antcall>
626          <param name="java.runtime.target" value="12"/>
627          <param name="build.main.javac" value="${javac12}"/>
628          <param name="build.main.javadoc" value="${javadoc12}"/>
629          <param name="build.main.javadoc.source" value="12"/>
630          <target name="test"/>
631          <target name="docs"/>
632        </antcall>
633      </target>
634    
635      <target name="test9-11">
636        <antcall target="clean"/>
637        <antcall>
638          <param name="java.runtime.target" value="11"/>
639          <param name="build.main.javac" value="${javac9}"/>
640          <param name="build.main.javadoc" value="${javadoc12}"/>
641          <param name="build.main.javadoc.source" value="9"/>
642          <target name="test"/>
643          <target name="docs"/>
644        </antcall>
645      </target>
646    
647      <target name="test9-12">
648        <antcall target="clean"/>
649        <antcall>
650          <param name="java.runtime.target" value="12"/>
651          <param name="build.main.javac" value="${javac9}"/>
652          <param name="build.main.javadoc" value="${javadoc12}"/>
653          <param name="build.main.javadoc.source" value="9"/>
654          <target name="test"/>
655          <target name="docs"/>
656        </antcall>
657      </target>
658    
659    
660      <target name="configure-compiler">
661        <fail message="ant version too old">
662          <condition> <not> <antversion atleast="1.9.1"/> </not> </condition>
663        </fail>
664    
665        <property name="unchecked.option" value="-Xlint:unchecked"/>
666    
667        <condition property="warnunchecked.arg" value="${unchecked.option}">
668          <istrue value="${build.warnunchecked}"/>
669        </condition>
670    
671        <property name="warnunchecked.arg" value=""/>
672    
673    
674        <!-- Common options in javac invocations -->
675        <property name="build.args" value="${warnunchecked.arg}"/>
676    
677      </target>
678    
679    
680      <target name="compile-test-loops" depends="jar"
681              description="Compiles all the perf tests in src/test/loops">
682    
683        <mkdir dir="${build.dir}/test/loops"/>
684    
685        <javac srcdir="${basedir}/src/test/loops"
686               destdir="${build.dir}/test/loops"
687               debug="${build.debug}"
688               debuglevel="${build.debuglevel}"
689               deprecation="${build.deprecation}"
690               includeAntRuntime="false"
691               includeJavaRuntime="false"
692               encoding="ASCII"
693               executable="${build.main.javac}"
694               fork="true">
695    
696          <include name="*.java"/>
697          <compilerarg value="-XDignore.symbol.file=true"/>
698          <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
699          <compilerarg value="-Xbootclasspath/p:${product.jar}"/>
700          <compilerarg line="${build.args}"/>
701        </javac>
702    </target>    </target>
703    
704    
705    <target name="docs" depends="filter-src"    <!-- jsr166 4jdk8 -->
706            description="Builds javadocs with custom tags to build folder">  
707      <target name="4jdk8compile"
708              depends="configure-compiler"
709              description="Compiles src/jdk8 sources, targeting jdk8">
710    
711        <mkdir dir="${build.4jdk8.classes.dir}"/>
712    
713        <javac srcdir="${4jdk8src.dir}"
714               destdir="${build.4jdk8.classes.dir}"
715               debug="${build.debug}"
716               debuglevel="${build.debuglevel}"
717               deprecation="${build.deprecation}"
718               source="8"
719               target="8"
720               classpath=""
721               bootclasspath="${bootclasspath8}"
722               includeAntRuntime="false"
723               includeJavaRuntime="false"
724               encoding="ASCII"
725               executable="${javac8}"
726               fork="true">
727          <include name="**/*.java"/>
728          <compilerarg value="-Xprefer:source"/>
729          <compilerarg value="-XDignore.symbol.file=true"/>
730          <compilerarg value="-Xlint:all"/>
731          <compilerarg value="-Werror"/>
732          <compilerarg line="${build.args}"/>
733        </javac>
734      </target>
735    
736      <delete dir="${build.javadocs.dir}"/>    <target name="4jdk8doclint"
737      <mkdir dir="${build.javadocs.dir}"/>            depends="configure-compiler"
738              description="Finds doclint warnings">
739    
740        <mkdir dir="${build.4jdk8.classes.dir}"/>
741    
742        <javac srcdir="${4jdk8src.dir}"
743               destdir="${build.4jdk8.classes.dir}"
744               debug="${build.debug}"
745               debuglevel="${build.debuglevel}"
746               deprecation="${build.deprecation}"
747               source="8"
748               target="8"
749               classpath=""
750               bootclasspath="${bootclasspath8}"
751               includeAntRuntime="false"
752               includeJavaRuntime="false"
753               encoding="ASCII"
754               executable="${javac8}"
755               fork="true">
756          <include name="**/*.java"/>
757          <compilerarg value="-Xprefer:source"/>
758          <compilerarg value="-XDignore.symbol.file=true"/>
759          <compilerarg value="-Xlint:all"/>
760          <compilerarg value="-Xdoclint:all/protected,reference/private"/>
761          <compilerarg line="${build.args}"/>
762        </javac>
763      </target>
764    
     <javadoc destdir="${build.javadocs.dir}"  
                 link="http://java.sun.com/j2se/1.4.1/docs/api"  
             overview="${src.dir}/intro.html"  
               source="${build.docsourcelevel}">  
   
       <tag name="revised" description="Last revised:"/>  
       <tag name="spec" description="Specified by:"/>  
       <tag name="editor" description="Last edited by:"/>  
       <tag name="fixme" description="FIX ME:"/>  
       <packageset dir="${build.filter.src.dir}"/>  
765    
766      </javadoc>    <target name="4jdk8jar"
767              depends="4jdk8compile"
768              description="Builds library jar from compiled sources">
769    
770        <jar destfile="${4jdk8product.jar}">
771          <fileset dir="${build.4jdk8.classes.dir}"/>
772          <manifest>
773            <attribute name="Built-By" value="${user.name}"/>
774            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
775          </manifest>
776        </jar>
777    </target>    </target>
778    
779    
780    <!--    <target name="4jdk8-tck"
781     # javac -s doesn't reliably generate compilable code. It generates            depends="4jdk8jar"
782     # bridge methods (marked as "synthetic") that can have identical            description="Runs tck tests for jsr166-4jdk8 directly">
783     # signatures to existing methods except for the return value.  
784     -->      <run-tck-tests
785    <target name="strip" depends="init">        target="8"
786          workdir="${build.4jdk8.dir}"
787      <mkdir dir="${build.stripped.dir}"/>        classes="${4jdk8product.jar}">
788          <javac-elements>
789            <!-- JDK9+ test classes -->
790            <exclude name="*9Test.java"/>
791            <exclude name="*10Test.java"/>
792            <compilerarg value="-Werror"/>
793          </javac-elements>
794        </run-tck-tests>
795      </target>
796    
     <javac srcdir="${src.dir}"  
           destdir="${build.stripped.dir}"  
             debug="${build.debug}"  
        debuglevel="${build.debuglevel}"  
       deprecation="${build.deprecation}"  
            source="${build.sourcelevel}"  
              fork="true">  
797    
798        <bootclasspath refid="javac.bootclasspath"/>    <target name="4jdk8-jtreg"
799        <compilerarg line="${javac.args} ${build.warnings.option} -s"/>            depends="4jdk8jar"
800              description="Runs jtreg tests for jsr166-4jdk8 using the jtreg ant task">
801        <run-jtreg-tests
802           target="8"
803           workdir="${build.4jdk8.dir}"
804           classes="${4jdk8product.jar}"/>
805      </target>
806    
     </javac>  
807    
808      <target name="4jdk8-test"
809              depends="4jdk8-tck, 4jdk8-jtreg"
810              description="Runs tck and jtreg tests for jsr166-4jdk8"/>
811    
812    
813      <target name="4jdk8docs"
814              description="Builds javadocs for src/jdk8 to dist dir">
815    
816        <delete dir="${4jdk8docs.dir}"/>
817        <mkdir dir="${4jdk8docs.dir}"/>
818    
819        <javadoc destdir="${4jdk8docs.dir}"
820                 packagenames="none"
821                 link="${java8.api.url}"
822                 overview="${4jdk8src.dir}/intro.html"
823                 access="${build.javadoc.access}"
824                 sourcepath="${4jdk8src.dir}:${jdk8.src.dir}"
825                 classpath=""
826                 source="8"
827                 executable="${javadoc8}"
828                 failonerror = "true">
829          <fileset dir="${4jdk8src.dir}" defaultexcludes="yes">
830            <include name="**/*.java"/>
831          </fileset>
832          <arg line="-Xdocrootparent ${java8.docroot.url}"/>
833          <arg value="-XDignore.symbol.file=true"/>
834          <arg value="-tag"/> <arg value="${javadoc.jls.option}"/>
835          <arg value="-tag"/> <arg value="implSpec:a:&lt;em&gt;Implementation Requirements:&lt;/em&gt;"/>
836          <arg value="-tag"/> <arg value="implNote:a:&lt;em&gt;Implementation Note:&lt;/em&gt;"/>
837    <!-- @apiNote tag currently unused -->
838    <!--  <arg value="-tag"/> <arg value="apiNote:a:&lt;em&gt;API Note:&lt;/em&gt;"/> -->
839        </javadoc>
840    </target>    </target>
841    
842    
843    <target name="dist" depends="init, dist-clean, dist-jar, dist-docs"    <target name="4jdk8dist"
844              depends="4jdk8dist-jar, 4jdk8dist-docs"
845            description="Puts all distributable products in single hierarchy"/>            description="Puts all distributable products in single hierarchy"/>
846    
847    
848    <target name="clean"    <target name="4jdk8clean"
849            description="Removes all build products">            description="Removes all 4jdk8 build products">
850        <delete dir="${build.4jdk8.dir}"/>
851      </target>
852    
     <delete dir="${build.dir}"/>  
     <delete dir="${build.classes.dir}"/>  
     <delete dir="${build.lib.dir}"/>  
853    
854      <target name="4jdk8dist-jar"
855              depends="4jdk8clean, 4jdk8jar">
856        <copy file="${4jdk8product.jar}" todir="${dist.dir}"/>
857    </target>    </target>
858    
859    
860    <target name="dist-clean"    <target name="4jdk8dist-docs"
861            description="Removes all build and distribution products">            depends="4jdk8clean, 4jdk8docs">
862        <mirror-dir src="${4jdk8docs.dir}" dst="${dist.4jdk8docs.dir}"/>
863      </target>
864    
     <delete dir="${dist.dir}"/>  
865    
866      <!-- jsr166 4jdk7 (no longer maintained) -->
867    
868      <target name="4jdk7compile" depends="configure-compiler">
869        <mkdir dir="${build.4jdk7.classes.dir}"/>
870    
871        <javac srcdir="${4jdk7src.dir}"
872               destdir="${build.4jdk7.classes.dir}"
873               debug="${build.debug}"
874               debuglevel="${build.debuglevel}"
875               deprecation="${build.deprecation}"
876               source="6"
877               target="6"
878               classpath=""
879               bootclasspath="${bootclasspath6}"
880               includeAntRuntime="false"
881               includeJavaRuntime="false"
882               encoding="ASCII"
883               executable="${javac7}"
884               fork="true">
885    
886          <include name="**/*.java"/>
887          <compilerarg value="-Xprefer:source"/>
888          <compilerarg value="-XDignore.symbol.file=true"/>
889          <compilerarg value="-Xlint:all"/>
890          <compilerarg value="-Werror"/>
891          <compilerarg line="${build.args}"/>
892        </javac>
893    </target>    </target>
894    
895      <target name="4jdk7doclint" depends="configure-compiler">
896        <mkdir dir="${build.4jdk7.classes.dir}"/>
897    
898    <!-- Anthill targets -->      <javac srcdir="${4jdk7src.dir}"
899               destdir="${build.4jdk7.classes.dir}"
900               debug="${build.debug}"
901               debuglevel="${build.debuglevel}"
902               deprecation="${build.deprecation}"
903               source="6"
904               target="6"
905               classpath=""
906               bootclasspath="${bootclasspath6}"
907               includeAntRuntime="false"
908               includeJavaRuntime="false"
909               encoding="ASCII"
910               executable="${javac8}"
911               fork="true">
912    
913          <include name="**/*.java"/>
914          <compilerarg value="-Xprefer:source"/>
915          <compilerarg value="-XDignore.symbol.file=true"/>
916          <compilerarg value="-Xlint:all"/>
917          <compilerarg value="-Xdoclint:all/protected"/>
918          <compilerarg line="${build.args}"/>
919        </javac>
920      </target>
921    
922    <!-- Should really run the tests instead of just the jar target -->    <target name="4jdk7jar" depends="4jdk7compile">
923    <target name="anthill-build" depends="jar, test, docs, dist-docs"/>      <jar destfile="${4jdk7product.jar}">
924          <fileset dir="${build.4jdk7.classes.dir}"/>
925          <manifest>
926            <attribute name="Built-By" value="${user.name}"/>
927            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
928          </manifest>
929        </jar>
930      </target>
931    
932    <target name="anthill-publish">    <target name="4jdk7-tck" depends="4jdk7jar">
933      <copy todir="${deployDir}/docs/private">      <run-tck-tests
934        <fileset dir="${build.javadocs.dir}"/>        target="7"
935      </copy>        workdir="${build.4jdk7.dir}"
936      <copy todir="${deployDir}/docs/public">        classes="${4jdk7product.jar}">
937        <fileset dir="${dist.javadocs.dir}"/>        <javac-elements>
938      </copy>          <!-- JDK8+ test classes -->
939      <copy tofile="${deployDir}/index.html"          <exclude name="*8Test.java"/>
940            file="${basedir}/etc/anthill-index.html"/>          <exclude name="*9Test.java"/>
941      <copy todir="${deployDir}/notes">          <exclude name="*10Test.java"/>
942        <fileset dir="${basedir}/etc/notes"/>          <exclude name="DoubleAccumulatorTest.java"/>
943      </copy>          <exclude name="DoubleAdderTest.java"/>
944            <exclude name="LongAccumulatorTest.java"/>
945            <exclude name="LongAdderTest.java"/>
946            <exclude name="CompletableFutureTest.java"/>
947            <exclude name="SplittableRandomTest.java"/>
948            <exclude name="StampedLockTest.java"/>
949            <exclude name="SubmissionPublisherTest.java"/>
950            <compilerarg value="-Werror"/>
951          </javac-elements>
952        </run-tck-tests>
953    </target>    </target>
954    
955      <!-- Runs tck tests for jsr166-4jdk7 via junit task (dead experiment) -->
956      <target name="4jdk7-tck-junit" depends="4jdk7compile">
957    
958    <!-- Internal targets -->      <junit printsummary="true"
959               showoutput="true"
960               errorProperty="junit.failed"
961               failureProperty="junit.failed"
962               includeantruntime="true"
963               jvm="${java7}"
964               fork="true">
965    
966          <jvmarg value="-Xbootclasspath/p:${4jdk7product.jar}"/>
967          <jvmarg value="-server"/>
968    
969          <classpath>
970            <pathelement location="${junit.jar}"/>
971            <pathelement location="${build.4jdk7.tck.classes.dir}"/>
972          </classpath>
973    
974    <target name="set-warnings-if" if="build.warnings">        <formatter type="brief"/>
975    
976      <property name="build.warnings.option" value="-warnunchecked"/>        <test name="${jsr166.tckTestClass}" haltonfailure="no">
977          </test>
978        </junit>
979      </target>
980    
981      <target name="4jdk7-jtreg" depends="4jdk7jar">
982        <run-jtreg-tests
983           target="7"
984           workdir="${build.4jdk7.dir}"
985           classes="${4jdk7product.jar}"/>
986      </target>
987    
988      <target name="4jdk7-test" depends="4jdk7-tck, 4jdk7-jtreg"/>
989    
990      <target name="4jdk7docs">
991        <delete dir="${4jdk7docs.dir}"/>
992        <mkdir dir="${4jdk7docs.dir}"/>
993    
994        <javadoc destdir="${4jdk7docs.dir}"
995                 packagenames="none"
996                 link="${java7.api.url}"
997                 overview="${4jdk7src.dir}/intro.html"
998                 access="${build.javadoc.access}"
999                 sourcepath="${4jdk7src.dir}:${jdk7.src.dir}"
1000                 classpath=""
1001                 executable="${javadoc7}"
1002                 failonerror = "true">
1003          <fileset dir="${4jdk7src.dir}" defaultexcludes="yes">
1004            <include name="**/*.java"/>
1005          </fileset>
1006          <arg line="-Xdocrootparent ${java7.docroot.url}"/>
1007          <arg value="-XDignore.symbol.file=true"/>
1008        </javadoc>
1009    </target>    </target>
1010    
1011      <target name="4jdk7dist" depends="4jdk7dist-jar, 4jdk7dist-docs"/>
1012    
1013    <target name="set-warnings-unless" unless="build.warnings">    <target name="4jdk7clean">
1014        <delete dir="${build.4jdk7.dir}"/>
1015      </target>
1016    
1017      <property name="build.warnings.option" value=""/>    <target name="4jdk7dist-jar" depends="4jdk7clean, 4jdk7jar">
1018        <copy file="${4jdk7product.jar}" todir="${dist.dir}"/>
1019      </target>
1020    
1021      <target name="4jdk7dist-docs" depends="4jdk7clean, 4jdk7docs">
1022        <mirror-dir src="${4jdk7docs.dir}" dst="${dist.4jdk7docs.dir}"/>
1023    </target>    </target>
1024    
1025    
1026    <target name="init" depends="set-warnings-if, set-warnings-unless">    <!-- jsr166x (no longer maintained) -->
1027    
1028      <!-- Version is kept in a separate file -->    <target name="jsr166xcompile" depends="configure-compiler">
1029      <loadfile property="version" srcFile="version.properties"/>      <mkdir dir="${build.jsr166x.classes.dir}"/>
     <echo>Building JSR-166 version ${version}</echo>  
1030    
1031        <javac srcdir="${topsrc.dir}"
1032               destdir="${build.jsr166x.classes.dir}"
1033               debug="${build.debug}"
1034               debuglevel="${build.debuglevel}"
1035               deprecation="${build.deprecation}"
1036               classpath=""
1037               bootclasspath="${bootclasspath6}"
1038               source="5"
1039               target="5"
1040               includeAntRuntime="false"
1041               includeJavaRuntime="false"
1042               encoding="ASCII"
1043               executable="${javac7}"
1044               fork="true">
1045          <include name="jsr166x/**/*.java"/>
1046          <compilerarg value="-XDignore.symbol.file=true"/>
1047          <compilerarg value="-Xlint:all,-unchecked,-rawtypes"/>
1048          <compilerarg value="-Werror"/>
1049          <compilerarg line="${build.args}"/>
1050        </javac>
1051    </target>    </target>
1052    
1053      <target name="jsr166xjar" depends="jsr166xcompile">
1054        <jar destfile="${jsr166x.jar}">
1055          <fileset dir="${build.jsr166x.classes.dir}"/>
1056          <manifest>
1057            <attribute name="Built-By" value="${user.name}"/>
1058            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1059          </manifest>
1060        </jar>
1061      </target>
1062    
1063    <target name="native-jar" depends="compile"    <target name="jsr166xdocs">
1064            description="Builds library jar from compiled sources">      <delete dir="${jsr166xdocs.dir}"/>
1065        <mkdir dir="${jsr166xdocs.dir}"/>
1066    
1067        <javadoc destdir="${jsr166xdocs.dir}"
1068                 packagenames="jsr166x.*"
1069                 link="${java.api.url}"
1070                 access="${build.javadoc.access}"
1071                 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1072                 bootclasspath="${bootclasspath6}"
1073                 source="5"
1074                 executable="${javadoc7}"
1075                 failonerror = "true">
1076          <arg line="-Xdocrootparent ${java.docroot.url}"/>
1077          <arg value="-XDignore.symbol.file=true"/>
1078        </javadoc>
1079      </target>
1080    
1081      <mkdir dir="${build.lib.dir}"/>    <target name="jsr166xdist" depends="jsr166xdist-jar, jsr166xdist-docs"/>
1082    
1083      <jar destfile="${product.jar}">    <target name="jsr166xclean">
1084        <fileset dir="${build.classes.dir}"/>      <delete dir="${build.jsr166x.dir}"/>
1085      </jar>    </target>
1086    
1087      <target name="jsr166xdist-jar" depends="jsr166xclean, jsr166xjar">
1088        <copy file="${jsr166x.jar}" todir="${dist.dir}"/>
1089    </target>    </target>
1090    
1091      <target name="jsr166xdist-docs" depends="jsr166xclean, jsr166xdocs">
1092        <mirror-dir src="${jsr166xdocs.dir}" dst="${dist.jsr166xdocs.dir}"/>
1093      </target>
1094    
   <target name="compile-emulation" depends="init"  
           if="build.emulation"  
           description="Compiles emulation sources to build folder">  
1095    
1096      <mkdir dir="${build.emulation.dir}"/>    <!-- jsr166y (no longer maintained) -->
1097    
1098      <javac srcdir="${emulation.src.dir}"    <target name="jsr166ycompile" depends="configure-compiler">
1099            destdir="${build.emulation.dir}"      <mkdir dir="${build.jsr166y.classes.dir}"/>
             debug="${build.debug}"  
        debuglevel="${build.debuglevel}"  
       deprecation="${build.deprecation}"  
            source="${build.sourcelevel}"  
              fork="true">  
1100    
1101        <bootclasspath refid="javac.bootclasspath"/>      <javac srcdir="${topsrc.dir}"
1102        <compilerarg line="${javac.args} ${build.warnings.option}"/>             destdir="${build.jsr166y.classes.dir}"
1103               debug="${build.debug}"
1104               debuglevel="${build.debuglevel}"
1105               deprecation="${build.deprecation}"
1106               source="6"
1107               target="6"
1108               classpath=""
1109               bootclasspath="${bootclasspath6}"
1110               includeAntRuntime="false"
1111               includeJavaRuntime="false"
1112               encoding="ASCII"
1113               executable="${javac7}"
1114               fork="true">
1115    
1116          <include name="jsr166y/**/*.java"/>
1117          <compilerarg value="-XDignore.symbol.file=true"/>
1118          <compilerarg value="-Xlint:all"/>
1119          <compilerarg value="-Werror"/>
1120          <compilerarg line="${build.args}"/>
1121      </javac>      </javac>
   
1122    </target>    </target>
1123    
1124      <target name="jsr166yjar" depends="jsr166ycompile">
1125    <target name="emulation-jar" depends="native-jar, compile-emulation"      <jar destfile="${jsr166y.jar}" index="true">
1126            if="build.emulation">        <fileset dir="${build.jsr166y.classes.dir}"/>
1127          <manifest>
1128      <jar destfile="${product.jar}" update="true" duplicate="add">          <attribute name="Built-By" value="${user.name}"/>
1129        <fileset dir="${build.emulation.dir}"/>          <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1130          </manifest>
1131      </jar>      </jar>
1132      </target>
1133    
1134      <target name="jsr166ydocs">
1135        <delete dir="${jsr166ydocs.dir}"/>
1136        <mkdir dir="${jsr166ydocs.dir}"/>
1137    
1138        <javadoc destdir="${jsr166ydocs.dir}"
1139                 packagenames="jsr166y.*"
1140                 link="${java.api.url}"
1141                 access="${build.javadoc.access}"
1142                 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1143                 bootclasspath="${bootclasspath6}"
1144                 source="6"
1145                 executable="${javadoc7}"
1146                 failonerror = "true">
1147          <arg line="-Xdocrootparent ${java.docroot.url}"/>
1148          <arg value="-XDignore.symbol.file=true"/>
1149        </javadoc>
1150    </target>    </target>
1151    
1152      <target name="jsr166ydist" depends="jsr166ydist-jar, jsr166ydist-docs"/>
1153    
1154    <target name="dist-jar" depends="clean, jar">    <target name="jsr166yclean">
1155        <delete dir="${build.jsr166y.dir}"/>
1156      </target>
1157    
1158      <copy file="${product.jar}" todir="${dist.dir}"/>    <target name="jsr166ydist-jar" depends="jsr166yclean, jsr166yjar">
1159        <copy file="${jsr166y.jar}" todir="${dist.dir}"/>
1160      </target>
1161    
1162      <target name="jsr166ydist-docs" depends="jsr166yclean, jsr166ydocs">
1163        <mirror-dir src="${jsr166ydocs.dir}" dst="${dist.jsr166ydocs.dir}"/>
1164    </target>    </target>
1165    
1166    
1167    <target name="dist-docs" depends="filter-src"    <!-- extra166y (no longer maintained) -->
           description="Builds javadocs without custom tags to dist folder">  
1168    
1169      <delete dir="${dist.javadocs.dir}"/>    <target name="extra166ycompile" depends="configure-compiler, jsr166yjar">
1170      <mkdir dir="${dist.javadocs.dir}"/>      <mkdir dir="${build.extra166y.classes.dir}"/>
1171    
1172      <javadoc destdir="${dist.javadocs.dir}"      <javac srcdir="${topsrc.dir}"
1173                  link="http://java.sun.com/j2se/1.4.1/docs/api"             destdir="${build.extra166y.classes.dir}"
1174              overview="${src.dir}/intro.html"             debug="${build.debug}"
1175                source="${build.docsourcelevel}">             debuglevel="${build.debuglevel}"
1176               deprecation="${build.deprecation}"
1177               bootclasspath="@{jsr166y.jar}:${bootclasspath6}"
1178               classpath=""
1179               source="6"
1180               target="6"
1181               includeAntRuntime="false"
1182               includeJavaRuntime="false"
1183               encoding="ASCII"
1184               executable="${javac7}"
1185               fork="true">
1186    
1187        <packageset dir="${build.filter.src.dir}"/>        <include name="extra166y/**/*.java"/>
1188          <compilerarg value="-XDignore.symbol.file=true"/>
1189          <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
1190          <compilerarg value="-Werror"/>
1191          <compilerarg line="${build.args}"/>
1192        </javac>
1193      </target>
1194    
1195      <target name="extra166yjar" depends="extra166ycompile">
1196        <jar destfile="${extra166y.jar}" index="true">
1197          <fileset dir="${build.extra166y.classes.dir}"/>
1198          <manifest>
1199            <attribute name="Built-By" value="${user.name}"/>
1200            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1201          </manifest>
1202        </jar>
1203      </target>
1204    
1205      <target name="extra166ydocs">
1206        <delete dir="${extra166ydocs.dir}"/>
1207        <mkdir dir="${extra166ydocs.dir}"/>
1208    
1209        <javadoc destdir="${extra166ydocs.dir}"
1210                 packagenames="extra166y.*"
1211                 link="${java.api.url}"
1212                 access="${build.javadoc.access}"
1213                 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1214                 bootclasspath="${bootclasspath6}"
1215                 source="6"
1216                 executable="${javadoc7}">
1217          <arg line="-Xdocrootparent ${java.docroot.url}"/>
1218          <arg value="-XDignore.symbol.file=true"/>
1219      </javadoc>      </javadoc>
1220      </target>
1221    
1222      <target name="extra166ydist" depends="extra166ydist-jar, extra166ydist-docs"/>
1223    
1224      <target name="extra166yclean">
1225        <delete dir="${build.extra166y.dir}"/>
1226    </target>    </target>
1227    
1228      <target name="extra166ydist-jar" depends="extra166yclean, extra166yjar">
1229        <copy file="${extra166y.jar}" todir="${dist.dir}"/>
1230      </target>
1231    
1232    <target name="compile-ant-filter" depends="init">    <target name="extra166ydist-docs" depends="extra166yclean, extra166ydocs">
1233        <mirror-dir src="${extra166ydocs.dir}" dst="${dist.extra166ydocs.dir}"/>
1234      </target>
1235    
     <mkdir dir="${build.ant.dir}"/>  
1236    
1237      <javac srcdir="${ant.src.dir}"    <!-- jsr166e (no longer maintained) -->
           destdir="${build.ant.dir}"  
            source="1.4"  
     />  
1238    
1239    </target>    <property name="build.jsr166e.java.version" value="6"/>
1240      <property name="build.jsr166e.javac" value="${javac6}"/>
1241    
1242      <target name="jsr166ecompile" depends="configure-compiler">
1243        <mkdir dir="${build.jsr166e.classes.dir}"/>
1244    
1245    <target name="filter-src" depends="compile-ant-filter">      <javac srcdir="${topsrc.dir}"
1246               destdir="${build.jsr166e.classes.dir}"
1247               debug="${build.debug}"
1248               debuglevel="${build.debuglevel}"
1249               deprecation="${build.deprecation}"
1250               source="${build.jsr166e.java.version}"
1251               target="${build.jsr166e.java.version}"
1252               classpath=""
1253               includeAntRuntime="false"
1254               includeJavaRuntime="false"
1255               executable="${build.jsr166e.javac}"
1256               fork="true">
1257    
1258      <mkdir dir="${build.filter.src.dir}"/>        <include name="jsr166e/**/*.java"/>
1259          <compilerarg value="-XDignore.symbol.file=true"/>
1260          <compilerarg value="-Xlint:all"/>
1261          <compilerarg value="-Werror"/>
1262          <compilerarg line="${build.args}"/>
1263        </javac>
1264      </target>
1265    
1266      <copy todir="${build.filter.src.dir}">    <target name="jsr166edoclint">
1267        <fileset dir="${src.dir}">      <mkdir dir="${build.jsr166e.classes.dir}"/>
         <include name="**/*.java"/>  
         <exclude name="**/Random.java"/>  
         <exclude name="**/Unsafe.java"/>  
       </fileset>  
       <filterchain>  
         <filterreader classname="jsr166.ant.filters.ReplaceFilter"  
                       classpath="${build.ant.dir}">  
           <!--  
            # These arguments are to get rid of angle-bracketed type  
            # parameters so that javadoc can run on the result. The  
            # following heuristic that 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.)  
            -->  
           <param name="notmatching" value="^\s+\*\s.*$"/>  
           <param name="pattern" value="&lt;[^|>()]+?>+"/>  
           <param name="replacement" value=" "/>  
         </filterreader>  
         <filterreader classname="jsr166.ant.filters.ReplaceFilter"  
                       classpath="${build.ant.dir}">  
           <!--  
            # These arguments are to uncomment lines beginning with  
            # "//@" so that javadoc can see imports that are needed  
            # to resolve links but that shouldn't be in the compiled  
            # code.  
            -->  
           <param name="matching" value="^//@.*$"/>  
           <param name="pattern" value="^//@"/>  
           <param name="replacement" value=""/>  
         </filterreader>  
       </filterchain>  
     </copy>  
1268    
1269        <javac srcdir="${topsrc.dir}"
1270               destdir="${build.jsr166e.classes.dir}"
1271               debug="${build.debug}"
1272               debuglevel="${build.debuglevel}"
1273               deprecation="${build.deprecation}"
1274               source="${build.jsr166e.java.version}"
1275               target="${build.jsr166e.java.version}"
1276               classpath=""
1277               bootclasspath="${bootclasspath6}"
1278               includeAntRuntime="false"
1279               includeJavaRuntime="false"
1280               executable="${javac8}"
1281               fork="true">
1282    
1283          <include name="jsr166e/**/*.java"/>
1284          <compilerarg value="-XDignore.symbol.file=true"/>
1285          <compilerarg value="-Xlint:all"/>
1286          <compilerarg value="-Werror"/>
1287          <compilerarg value="-Xdoclint:all/protected"/>
1288        </javac>
1289    </target>    </target>
1290    
1291      <target name="jsr166ejar" depends="jsr166ecompile">
1292        <jar destfile="${jsr166e.jar}" index="true">
1293          <fileset dir="${build.jsr166e.classes.dir}"/>
1294          <manifest>
1295            <attribute name="Built-By" value="${user.name}"/>
1296            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1297          </manifest>
1298        </jar>
1299      </target>
1300    
1301    <target name="compile-tests" depends="jar">    <target name="jsr166edocs">
1302        <delete dir="${jsr166edocs.dir}"/>
1303        <mkdir dir="${jsr166edocs.dir}"/>
1304    
1305        <javadoc destdir="${jsr166edocs.dir}"
1306                 packagenames="jsr166e.*"
1307                 link="${java.api.url}"
1308                 access="${build.javadoc.access}"
1309                 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1310                 source="${build.jsr166e.java.version}"
1311                 executable="${javadoc7}"
1312                 failonerror = "true">
1313          <arg line="-Xdocrootparent ${java.docroot.url}"/>
1314          <arg value="-XDignore.symbol.file=true"/>
1315        </javadoc>
1316      </target>
1317    
1318      <mkdir dir="${build.testcases.dir}"/>    <target name="jsr166e-tck-one-java-version" depends="jsr166ejar">
1319        <echo message="Testing with jdk${build.jsr166e.java.version} ..."/>
1320        <run-tck-tests
1321          tck.src.dir="${test.src.dir}/tck-jsr166e"
1322          target="${build.jsr166e.java.version}"
1323          workdir="${build.jsr166e.dir}"
1324          classes="${jsr166e.jar}"/>
1325      </target>
1326    
1327      <javac srcdir="${test.src.dir}"    <target name="jsr166e-tck">
           destdir="${build.testcases.dir}"  
             debug="${build.debug}"  
        debuglevel="${build.debuglevel}"  
       deprecation="${build.deprecation}"  
            source="${build.sourcelevel}"  
              fork="true">  
1328    
1329        <bootclasspath refid="javac.bootclasspath"/>  <!--     <antcall target="clean"/> -->
1330        <compilerarg line="${javac.args} ${build.warnings.option}"/>  <!--     <antcall target="jsr166e-tck-one-java-version"> -->
1331        <classpath refid="test.classpath"/>  <!--       <param name="build.jsr166e.java.version" value="8"/> -->
1332    <!--       <param name="build.jsr166e.javac" value="${javac8}"/> -->
1333    <!--     </antcall> -->
1334    
1335      </javac>      <antcall target="clean"/>
1336        <antcall target="jsr166e-tck-one-java-version">
1337          <param name="build.jsr166e.java.version" value="7"/>
1338          <param name="build.jsr166e.javac" value="${javac7}"/>
1339        </antcall>
1340    
1341        <antcall target="clean"/>
1342        <antcall target="jsr166e-tck-one-java-version">
1343          <param name="build.jsr166e.java.version" value="6"/>
1344          <param name="build.jsr166e.javac" value="${javac6}"/>
1345        </antcall>
1346    </target>    </target>
1347    
1348      <target name="jsr166e-test" depends="jsr166e-tck"/>
1349    
1350    <target name="run-tests" depends="compile-tests">    <target name="jsr166edist" depends="jsr166edist-jar, jsr166edist-docs"/>
1351    
1352      <!-- May be overridden by user.properties -->    <target name="jsr166eclean">
1353      <property name="testcase" value="*"/>      <delete dir="${build.jsr166e.dir}"/>
1354      </target>
1355    
1356      <mkdir dir="${build.reports.dir}"/>    <target name="jsr166edist-jar"
1357              depends="jsr166eclean, jsr166ejar">
1358        <copy file="${jsr166e.jar}" todir="${dist.dir}"/>
1359      </target>
1360    
1361      <junit printsummary="true"    <target name="jsr166edist-docs" depends="jsr166eclean, jsr166edocs">
1362               showoutput="true"      <mirror-dir src="${jsr166edocs.dir}" dst="${dist.jsr166edocs.dir}"/>
1363            errorProperty="junit.failed"    </target>
         failureProperty="junit.failed"  
                     dir="${build.reports.dir}"  
                    fork="true">  
   
       <jvmarg value="${test.javac.args}"/>  
   
       <formatter type="xml"/>  
   
       <batchtest todir="${build.reports.dir}">  
         <fileset dir="${test.src.dir}">  
           <include name="**/${testcase}Test.java"/>  
         </fileset>  
       </batchtest>  
1364    
     </junit>  
1365    
1366    <!-- Find buglets that can be detected by static build tools -->
1367    
1368    <!--   <target name="lint"> -->
1369    <!--     <antcall target="dists"> -->
1370    <!--       <param name="build.javadoc.access" value="protected"/> -->
1371    <!--     </antcall> -->
1372    <!--   </target> -->
1373    
1374    <!-- Generates all doclint warnings, even for private methods (rarely useful) -->
1375      <target name="doclint-private">
1376        <antcall target="dist">
1377          <param name="build.javadoc.access" value="private"/>
1378        </antcall>
1379    </target>    </target>
1380    
1381    
1382    <target name="report-tests" depends="run-tests">  <!-- ==============================================================
1383      <!-- Sets junit.report.format to frames if Xalan is present,    Experimental errorprone support
1384           otherwise sets it to noframes. -->    https://errorprone.info
1385      <available property="junit.report.format"    https://errorprone.info/docs/installation
1386                    value="frames"    https://github.com/google/error-prone/issues/1143
1387                classname="org.apache.xalan.lib.Redirect"  =================================================================== -->
1388      />    <path id="errorprone.processorpath.path">
1389      <property name="junit.report.format" value="noframes"/>      <pathelement location="${lib.dir}/error_prone_core-2.3.2-with-dependencies.jar"/>
1390        <pathelement location="${lib.dir}/dataflow-2.5.7.jar"/>
1391      <junitreport todir="${build.reports.dir}">      <pathelement location="${lib.dir}/javacutil-2.5.7.jar"/>
1392        <fileset dir="${build.reports.dir}">      <pathelement location="${lib.dir}/jFormatString-3.0.0.jar"/>
1393          <include name="TEST-*.xml"/>    </path>
1394        </fileset>    <property name="errorprone.processorpath" refid="errorprone.processorpath.path" />
1395        <report styledir="${stylesheet.dir}"    <property name="errorprone.jsr166.user.flags" value=""/>
1396                  format="${junit.report.format}"    <property name="errorprone.jsr166.flags"
1397                   todir="${build.reports.dir}"              value="-Xep:HashtableContains:OFF
1398        />                     -Xep:JdkObsolete:OFF
1399      </junitreport>                     -Xep:MissingOverride:OFF
1400                       -Xep:MissingFail:OFF
1401                       -Xep:ThreadPriorityCheck:OFF
1402                       -Xep:MixedArrayDimensions:ERROR
1403                       -Xep:RemoveUnusedImports:ERROR
1404                       -Xep:EmptyIf:ERROR
1405                       -Xep:MultipleTopLevelClasses:ERROR
1406                       -Xep:ClassName:ERROR
1407                       -Xep:LongLiteralLowerCaseSuffix:ERROR
1408                       -Xep:RedundantThrows:ERROR
1409                       -Xep:IdentityBinaryExpression:WARN
1410                       -Xep:ConstructorInvokesOverridable:WARN
1411                       -Xep:MethodCanBeStatic:WARN
1412                       ${errorprone.jsr166.user.flags}"/>
1413      <!-- -Xep:WildcardImport:ERROR -->
1414      <property name="errorprone.jsr166.test.flags"
1415                value="-Xep:StringSplitter:OFF
1416                       -Xep:BoxedPrimitiveConstructor:OFF
1417                       -Xep:ModifyingCollectionWithItself:OFF"/>
1418      <!-- ant -emacs errorprone |& grep -EA1 '(warning|error):|warnings' -->
1419      <target name="errorprone"
1420              depends="clean, configure-compiler"
1421              description="Run errorprone over jsr166 source code (experimental)">
1422    
1423        <local name="destdir"/>
1424        <property name="destdir" value="${build.classes.dir}/java.base"/>
1425        <mkdir dir="${destdir}"/>
1426    
1427      <fail message="Test Cases Failed" if="junit.failed"/>      <javac srcdir="${src.dir}"
1428    </target>             destdir="${destdir}"
1429               debug="${build.debug}"
1430               debuglevel="${build.debuglevel}"
1431               deprecation="${build.deprecation}"
1432               classpath=""
1433               includeAntRuntime="false"
1434               includeJavaRuntime="false"
1435               encoding="ASCII"
1436               executable="${build.main.javac}"
1437               fork="true">
1438    
1439          <include name="**/*.java"/>
1440          <!-- Needed to silence -Xep:FutureReturnValueIgnored -->
1441          <compilerarg value="-J--illegal-access=permit"/>
1442          <compilerarg value="-XDcompilePolicy=simple"/>
1443          <compilerarg value="-processorpath"/>
1444          <compilerarg pathref="errorprone.processorpath.path"/>
1445          <compilerarg value="-Xplugin:ErrorProne
1446                              ${errorprone.jsr166.flags}"/>
1447          <compilerarg value="--patch-module=java.base=${src.dir}"/>
1448          <compilerarg value="-Xprefer:source"/>
1449          <compilerarg value="-XDignore.symbol.file=true"/>
1450          <compilerarg value="-Xlint:all"/>
1451          <compilerarg value="-Xdoclint:all/protected,reference/private"/>
1452          <compilerarg line="-Xmaxerrs 3000 -Xmaxwarns 3000"/>
1453          <compilerarg line="${build.args}"/>
1454        </javac>
1455    
1456        <jar destfile="${product.jar}">
1457          <fileset dir="${destdir}"/>
1458        </jar>
1459    
1460        <run-tck-tests
1461          target="${java.runtime.target}"
1462          workdir="${build.dir}"
1463          classes="${product.jar}">
1464          <javac-elements>
1465            <!-- Needed to silence -Xep:FutureReturnValueIgnored -->
1466            <compilerarg value="-J--illegal-access=permit"/>
1467            <compilerarg value="-XDcompilePolicy=simple"/>
1468            <compilerarg line="-processorpath ${errorprone.processorpath}"/>
1469            <compilerarg value="-Xplugin:ErrorProne
1470                                ${errorprone.jsr166.flags}
1471                                ${errorprone.jsr166.test.flags}"/>
1472            <compilerarg line="-Xmaxerrs 3000 -Xmaxwarns 3000"/>
1473          </javac-elements>
1474        </run-tck-tests>
1475      </target>
1476    
1477      <!-- ant -emacs errorprone-jtreg |& grep -EA1 '(warning|error):' -->
1478      <!-- -XDcompilePolicy=simple or byfile avoids confusing UnusedImports -->
1479      <target name="errorprone-jtreg"
1480              depends="jar"
1481              description="Run errorprone over jtreg tests (experimental)">
1482    
1483        <run-jtreg-tests
1484           target="${java.runtime.target}"
1485           workdir="${build.dir}"
1486           classes="${product.jar}"
1487           verbose="all">
1488          <jtreg-elements>
1489            <arg value="-javacoption:-XDcompilePolicy=simple"/>
1490            <arg value="-javacoption:-processorpath"/>
1491            <arg value="-javacoption:${errorprone.processorpath}"/>
1492            <arg value="-javacoption:-Xplugin:ErrorProne
1493                                ${errorprone.jsr166.flags}
1494                                ${errorprone.jsr166.test.flags}
1495                                -Xep:MultipleTopLevelClasses:WARN
1496                                -Xep:NonAtomicVolatileUpdate:OFF"/>
1497          </jtreg-elements>
1498        </run-jtreg-tests>
1499      </target>
1500    
1501    
1502    <!-- ==============================================================
1503      Running guava tests against jsr166 code
1504    =================================================================== -->
1505    
1506    <!-- <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" -->
1507    <!--   organisation="com.google.guava" module="guava-testlib" revision="21.0"/> -->
1508    <!-- <property name="guava.version" value="21.0"/> -->
1509    
1510    <!-- HOWTO debug print a path id -->
1511    <!-- <pathconvert property="guava.testlib.classpath" refid="guava.testlib.classpath" /> -->
1512    <!-- <echo message="guava.testlib.classpath=${guava.testlib.classpath}"/> -->
1513    
1514    <!-- <ivy:retrieve pathid="guava.tests.classpath" type="jar" inline="true" conf="*" pattern="${lib.dir}/[type]/[artifact].[ext]" -->
1515    <!--   organisation="com.google.guava" module="guava-tests"/> -->
1516    <!-- <get src="http://repo2.maven.org/maven2/com/google/guava/guava-tests/${guava.version}/guava-tests-${guava.version}-tests.jar" -->
1517    <!--   dest="${lib.dir}/jar/guava-tests-tests.jar" usetimestamp="true"/> -->
1518    <!--     <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" type="*" -->
1519    <!--       organisation="com.google.guava" module="guava-testlib" revision="${guava.version}"/> -->
1520    
1521    <!-- <test name="com.google.common.collect.testing.TestsForQueuesInJavaUtil"/> -->
1522    <!-- <test name="com.google.common.collect.testing.TestsForListsInJavaUtil"/> -->
1523    <!-- <test name="com.google.common.collect.testing.TestsForSetsInJavaUtil"/> -->
1524    <!-- <test name="com.google.common.collect.testing.TestsForMapsInJavaUtil"/> -->
1525    
1526    <!-- <ivy:retrieve pathid="guava.testlib.classpath" -->
1527    <!--   type="*" inline="true" conf="*(private),*(public)" -->
1528    <!--   pattern="${guava.dir}/[artifact].[ext]" -->
1529    <!--   organisation="com.google.guava" module="guava-testlib"/> -->
1530    
1531    <!-- Work around bug below by downloading guava-testlib-tests.jar "by hand": -->
1532    <!-- https://issues.apache.org/jira/browse/IVY-1444 -->
1533    <!-- maven tests artifacts cannot be downloaded because they are mapped to private configurations -->
1534    
1535      <target name="init-ivy">
1536        <get src="http://repo2.maven.org/maven2/org/apache/ivy/ivy/2.4.0/ivy-2.4.0.jar"
1537             dest="${build.dir}/ivy.jar" usetimestamp="true" skipexisting="true"/>
1538        <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant"
1539                 classpath="${build.dir}/ivy.jar"/>
1540      </target>
1541    
1542      <target name="guava-tests" depends="jar, init-ivy"
1543              description="Guava tests run against jsr166 collections">
1544        <property name="guava.dir" value="${build.dir}/guava-testlib"/>
1545        <mkdir dir="${guava.dir}"/>
1546        <ivy:retrieve pathid="guava.testlib.classpath"
1547          type="jar,bundle" inline="true" conf="default,master"
1548          pattern="${guava.dir}/[artifact].[ext]"
1549          organisation="com.google.guava" module="guava-testlib"/>
1550        <property name="guava.version" value="21.0"/>
1551        <get src="http://repo2.maven.org/maven2/com/google/guava/guava-testlib/${guava.version}/guava-testlib-${guava.version}-tests.jar"
1552             dest="${guava.dir}/guava-testlib-tests.jar" usetimestamp="true"/>
1553        <junit printsummary="true" showoutput="true" haltonfailure="true"
1554               jvm="${build.main.java}" fork="true">
1555          <jvmarg line="-ea -esa --patch-module=java.base=${product.jar}"/>
1556          <formatter type="brief"/>
1557          <classpath>
1558            <pathelement location="${guava.dir}/guava-testlib-tests.jar"/>
1559            <path refid="guava.testlib.classpath"/>
1560          </classpath>
1561    
1562    <target name="check-junit">        <!-- "6" in "OpenJdk6Tests" misleadingly means "6+" -->
1563      <!-- FIXME: this test isn't specific enough -->        <test name="com.google.common.collect.testing.OpenJdk6Tests"/>
1564      <available property="junit.available"      </junit>
                classname="junit.framework.TestCase"/>  
     <fail message="Need JUnit 3.8 to run tests" unless="junit.available"/>  
1565    </target>    </target>
1566    
   
1567  </project>  </project>

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

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