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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.31  
changed lines
  Added in v.1.281

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