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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.37  
changed lines
  Added in v.1.243

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8