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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.74  
changed lines
  Added in v.1.238

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