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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.64  
changed lines
  Added in v.1.293

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8