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

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

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