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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.41  
changed lines
  Added in v.1.298

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8