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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.54  
changed lines
  Added in v.1.265

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