[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.77, Thu Jul 23 13:06:55 2009 UTC revision 1.248, Sat Jun 17 01:26:31 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"/>
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"/>
62    <property name="build.testcases.dir"  location="${build.dir}/testcases"/>    <property name="build.testcases.dir"  location="${build.dir}/testcases"/>
63    <property name="build.loops.dir"      location="${build.dir}/loops"/>    <property name="build.loops.dir"      location="${build.dir}/loops"/>
   <property name="build.lib.dir"        location="${build.dir}/lib"/>  
   <property name="build.javadocs.dir"   location="${build.dir}/javadocs"/>  
   <property name="build.reports.dir"    location="${build.dir}/reports"/>  
   <property name="build.jsr166x.dir"    location="${build.dir}/jsr166x"/>  
   <property name="build.jsr166xlib.dir"        location="${build.dir}/jsr166xlib"/>  
   <property name="build.jsr166xjavadocs.dir"   location="${build.dir}/jsr166xjavadocs"/>  
64    
65    <property name="build.jsr166y.dir"    location="${build.dir}/jsr166y"/>    <property name="build.4jdk7.dir"             location="${build.dir}/jsr166-4jdk7"/>
66    <property name="build.jsr166ylib.dir"        location="${build.dir}/jsr166ylib"/>    <property name="build.4jdk7.classes.dir"     location="${build.4jdk7.dir}/classes"/>
67    <property name="build.jsr166yjavadocs.dir"   location="${build.dir}/jsr166yjavadocs"/>    <property name="build.4jdk7.tck.classes.dir" location="${build.4jdk7.dir}/tck-classes"/>
68      <property name="build.4jdk7.docs.dir"        location="${build.4jdk7.dir}/docs"/>
69    
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"/>    <property name="build.extra166y.dir"    location="${build.dir}/extra166y"/>
79    <property name="build.extra166ylib.dir"        location="${build.dir}/extra166ylib"/>  
80    <property name="build.extra166yjavadocs.dir"   location="${build.dir}/extra166yjavadocs"/>    <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"/>
138    <property name="test.src.dir"         location="${basedir}/src/test"/>    <property name="test.src.dir"         location="${basedir}/src/test"/>
139    <property name="loops.src.dir"        location="${basedir}/src/loops"/>    <property name="loops.src.dir"        location="${basedir}/src/loops"/>
140    <property name="tck.src.dir"          location="${test.src.dir}/tck"/>    <property name="tck.src.dir"          location="${test.src.dir}/tck"/>
141    <property name="jtreg.src.dir"        location="${test.src.dir}/jtreg"/>    <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"/>    <property name="topsrc.dir"           location="${basedir}/src"/>
149    <property name="jsr166xsrc.dir"       location="${basedir}/src/jsr166x"/>    <property name="4jdk7src.dir"         location="${topsrc.dir}/jdk7"/>
150    <property name="jsr166ysrc.dir"       location="${basedir}/src/jsr166y"/>    <property name="4jdk8src.dir"         location="${topsrc.dir}/jdk8"/>
151    <property name="extra166ysrc.dir"       location="${basedir}/src/extra166y"/>    <property name="jsr166xsrc.dir"       location="${topsrc.dir}/jsr166x"/>
152      <property name="jsr166ysrc.dir"       location="${topsrc.dir}/jsr166y"/>
153    <!-- Distribution locations -->    <property name="jsr166esrc.dir"       location="${topsrc.dir}/jsr166e"/>
154    <property name="dist.javadocs.dir"    location="${dist.dir}/docs"/>    <property name="extra166ysrc.dir"     location="${topsrc.dir}/extra166y"/>
155    <property name="dist.jsr166xjavadocs.dir"    location="${dist.dir}/jsr166xdocs"/>  
156    <property name="dist.jsr166yjavadocs.dir"    location="${dist.dir}/jsr166ydocs"/>    <!-- Javadoc locations -->
157    <property name="dist.extra166yjavadocs.dir"    location="${dist.dir}/extra166ydocs"/>    <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="jsr166xproduct.jar"   location="${build.jsr166xlib.dir}/jsr166x.jar"/>    <property name="4jdk7product.jar" location="${build.4jdk7.dir}/jsr166-4jdk7.jar"/>
176    <property name="jsr166yproduct.jar"   location="${build.jsr166ylib.dir}/jsr166y.jar"/>    <property name="4jdk8product.jar" location="${build.4jdk8.dir}/jsr166-4jdk8.jar"/>
177    <property name="extra166yproduct.jar"   location="${build.extra166ylib.dir}/extra166y.jar"/>    <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"/>
182    
183    <!-- Bootclasspath argument -->    <!-- Canonical location of jdk docs root, to use with javadoc -Xdocrootparent flag -->
184    <property name="bootclasspath.args"   value="-Xbootclasspath/p:${product.jar}"/>    <property name="java5.docroot.url"      value="http://docs.oracle.com/javase/1.5.0/docs"/>
185      <property name="java6.docroot.url"      value="http://docs.oracle.com/javase/6/docs"/>
186      <property name="java7.docroot.url"      value="http://docs.oracle.com/javase/7/docs"/>
187      <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      <!-- 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        <sequential>
229    
230        <local name="modules"/>
231        <condition property="modules">
232          <available file="${jdk@{compile-target}.home}/jmods" type="dir"/>
233        </condition>
234    
235        <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"/>
241    
242        <javac srcdir="@{tck.src.dir}"
243               destdir="@{workdir}/tck-classes"
244               debug="${build.debug}"
245               debuglevel="${build.debuglevel}"
246               deprecation="${build.deprecation}"
247               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">
255    
256          <include name="*.java"/>
257          <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>
266    
267    <!-- Test classpath -->      <java classname="${jsr166.tckTestClass}"
268    <path id="test.classpath">            failonerror="true"
269      <pathelement location="${build.testcases.dir}"/>            jvm="${java@{target}}"
270              fork="true">
271            <jvmarg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
272            <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            <jvmarg value="--add-opens=java.base/java.util.concurrent=ALL-UNNAMED" if:set="modules"/>
276            <jvmarg value="--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED" if:set="modules"/>
277            <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            <classpath>
290      <pathelement location="${junit.jar}"/>      <pathelement location="${junit.jar}"/>
291    </path>            <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="${jtreg10.src.dir}">
300        <patternset id="jdk10.jtreg.tests">
301          <include name="**/*.java"/>
302        </patternset>
303      </fileset>
304    
305      <fileset dir="${jtreg9.src.dir}">
306        <patternset id="jdk9.jtreg.tests">
307          <include name="**/*.java"/>
308        </patternset>
309      </fileset>
310    
311      <fileset dir="${jtreg8.src.dir}">
312        <patternset id="jdk8.jtreg.tests">
313          <include name="**/*.java"/>
314        </patternset>
315      </fileset>
316    
317      <fileset dir="${jtreg7.src.dir}">
318        <patternset id="jdk7.jtreg.tests">
319          <include name="**/*.java"/>
320        </patternset>
321      </fileset>
322    
323      <!-- ant -Djtreg.flags=-timeoutFactor:4 -->
324      <property name="jtreg.flags" value=""/>
325    
326      <macrodef name="run-jtreg-tests">
327        <!-- ant -Djtreg9.src.dir=src/test/jtreg/util/concurrent/CompletableFuture jtreg -->
328        <attribute name="target"/>
329        <attribute name="workdir"/>
330        <attribute name="classes"/>
331        <attribute name="jtregflags" default=""/>
332    
333        <sequential>
334    
335        <!-- ant -Djtreg.verbose=time,fail,error jtreg -->
336        <property name="jtreg.verbose" value="nopass,fail,error"/>
337    
338        <local name="modules"/>
339        <condition property="modules">
340          <available file="${jdk@{target}.home}/jmods" type="dir"/>
341        </condition>
342    
343        <delete dir="@{workdir}/JTwork"   quiet="true"/>
344        <jtreg dir="${jtreg@{target}.src.dir}"
345               jdk="${jdk@{target}.home}"
346               workDir="@{workdir}/JTwork">
347          <patternset refid="jdk@{target}.jtreg.tests"/>
348          <arg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
349          <arg value="-javacoptions:--patch-module java.base=@{classes}" if:set="modules"/>
350          <arg value="-vmoptions:--patch-module java.base=@{classes}" if:set="modules"/>
351          <arg value="-agentvm"/>
352          <arg value="-noreport"/>
353          <arg value="-verbose:${jtreg.verbose}"/>
354          <arg value="-vmoptions:-esa -ea"/>
355          <arg value="-automatic"/>
356          <arg value="-k:!ignore"/>
357          <arg line="@{jtregflags}"/>
358          <arg line="${jtreg.flags}"/>
359        </jtreg>
360        </sequential>
361      </macrodef>
362    
363    <!-- ALoops classpath -->    <!-- ALoops classpath -->
364    <path id="loops.classpath">    <path id="loops.classpath">
365      <pathelement location="${build.loops.dir}"/>      <pathelement location="${build.loops.dir}"/>
366    </path>    </path>
367    
368      <!-- Support @jls tag, used in jdk8+ javadoc -->
369      <property name="javadoc.jls.cite" value="The Java&amp;trade; Language Specification"/>
370      <property name="javadoc.jls.option" value="jls:a:See &lt;cite&gt;${javadoc.jls.cite}&lt;/cite&gt;:"/>
371    
372    <!-- Main targets -->    <!-- Main targets -->
373    
374      <property name="build.main.java.version" value="9"/>
375      <!-- Workaround "no nested properties in ant" -->
376      <macrodef name="define-build-main-properties">
377        <attribute name="v"/>
378        <sequential>
379          <property name="build.main.java"    value="${java@{v}}"/>
380          <property name="build.main.javac"   value="${javac@{v}}"/>
381          <property name="build.main.javadoc" value="${javadoc@{v}}"/>
382        </sequential>
383      </macrodef>
384      <define-build-main-properties v="${build.main.java.version}"/>
385    
386      <target name="dists"
387              depends="dist, 4jdk8dist"
388              description="Builds all public jars and docs"/>
389              <!--
390                  depends="dist, 4jdk8dist, 4jdk7dist, jsr166edist, jsr166ydist, extra166ydist, jsr166xdist"
391              -->
392    
393    <target name="compile"    <target name="compile"
394            depends="init, configure-compiler"            depends="configure-compiler"
395            description="Compiles main sources to build folder">            description="Compiles src/main sources to build dir">
396    
397        <local name="destdir"/>
398        <property name="destdir" value="${build.classes.dir}/java.base"/>
399    
400      <mkdir dir="${build.classes.dir}"/>      <mkdir dir="${destdir}"/>
401    
402      <javac srcdir="${src.dir}"      <javac srcdir="${src.dir}"
403            destdir="${build.classes.dir}"             destdir="${destdir}"
404              debug="${build.debug}"              debug="${build.debug}"
405         debuglevel="${build.debuglevel}"         debuglevel="${build.debuglevel}"
406        deprecation="${build.deprecation}"        deprecation="${build.deprecation}"
407             source="${build.sourcelevel}"             classpath=""
408               includeAntRuntime="false"
409               includeJavaRuntime="false"
410               encoding="ASCII"
411               executable="${build.main.javac}"
412               fork="true">               fork="true">
413    
414        <include name="**/*.java"/>        <include name="**/*.java"/>
415        <compilerarg value="-XDignore.symbol.file"/>        <compilerarg value="--patch-module=java.base=${src.dir}"/>
416          <compilerarg value="-Xprefer:source"/>
417  <!--        <compilerarg value="-XDignore.symbol.file=true"/>
418        <exclude name="java/lang/**"/>        <compilerarg value="-Xlint:all"/>
419          <compilerarg line="--doclint-format html5"/>
420          <compilerarg value="-Xdoclint:all/protected,reference/private"/>
421          <compilerarg value="-Werror"/>
422          <compilerarg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
423        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
       <compilerarg line="-Xlint -Xmaxwarns 1000"/>  
 -->  
424    
425      </javac>      </javac>
   
426    </target>    </target>
427    
428    
   
429    <target name="jar"    <target name="jar"
430            depends="compile"            depends="compile"
431            description="Builds library jar from compiled sources">            description="Builds library jar for src/main from compiled sources">
432        <local name="subdir"/>
433      <mkdir dir="${build.lib.dir}"/>      <available property="subdir" file="${build.classes.dir}/java.base" type="dir" value="/java.base"/>
   
434      <jar destfile="${product.jar}">      <jar destfile="${product.jar}">
435        <fileset dir="${build.classes.dir}"/>        <fileset dir="${build.classes.dir}${subdir}"/>
436          <manifest>
437            <attribute name="Built-By" value="${user.name}"/>
438            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
439          </manifest>
440      </jar>      </jar>
   
441    </target>    </target>
442    
443    
   
   <target name="test"  
           depends="init, configure-tests, report-tests"  
           description="Runs all tests (requires JUnit 3.8.1 in ${ant.home}/lib)" />  
   
   
   
444    <target name="docs"    <target name="docs"
445            description="Builds javadocs with custom tags to build folder">            description="Builds javadocs for src/main to dist dir">
   
     <delete dir="${build.javadocs.dir}"/>  
     <mkdir dir="${build.javadocs.dir}"/>  
446    
447      <javadoc destdir="${build.javadocs.dir}"      <delete dir="${docs.dir}"/>
448                  link="http://java.sun.com/javase/6/docs/api/"      <mkdir dir="${docs.dir}"/>
             overview="${src.dir}/intro.html"  
             sourcepath="${src.dir}:/home/dl/1.6.0/j2se/martin/j2se/src/share/classes"  
     >  
449    
450        <packageset dir="${src.dir}"/>      <!-- the packagenames="none" hack below prevents scanning the -->
451        <!-- sourcepath for packages -->
452    
453    <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}" -->
454    <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}:${jdk9.src.home}/jdk/src/java.logging/share/classes" -->
455    <!-- TODO: sourcepath="${src.dir}:${jdk9.home}/src.zip" -->
456    <!-- TODO: <arg line="-sourcepath ${src.dir}:${jdk9.home}/src.zip"/> -->
457    <!-- TODO: <arg line="- -module-source-path ${jdk9.home}/src.zip"/> -->
458        <javadoc destdir="${docs.dir}"
459                 packagenames="none"
460                 link="${java9.api.url}"
461                 overview="${src.dir}/intro.html"
462                 access="${build.javadoc.access}"
463                 sourcepath="${src.dir}"
464                 classpath=""
465                 source="9"
466                 executable="${build.main.javadoc}">
467          <fileset dir="${src.dir}" defaultexcludes="yes">
468            <include name="**/*.java"/>
469          </fileset>
470          <arg line="-Xdocrootparent ${java9.docroot.url}"/>
471          <arg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
472          <arg value="-XDignore.symbol.file=true"/>
473          <arg value="-html5"/>
474          <arg value="--patch-module=java.base=${src.dir}"/>
475          <arg value="-tag"/>
476          <arg value="${javadoc.jls.option}"/>
477    <!-- @apiNote currently unused -->
478    <!--       <arg value="-tag"/> -->
479    <!--       <arg value="apiNote:a:API Note:"/> -->
480          <arg value="-tag"/>
481          <arg value="implSpec:a:Implementation Requirements:"/>
482          <arg value="-tag"/>
483          <arg value="implNote:a:Implementation Note:"/>
484    <!-- tags added in jdk9: currently unused -->
485    <!--       <arg value="-tag"/> -->
486    <!--       <arg value="revised:X"/> -->
487    <!--       <arg value="-tag"/> -->
488    <!--       <arg value="spec:X"/> -->
489      </javadoc>      </javadoc>
   
490    </target>    </target>
491    
492    
   
493    <target name="dist"    <target name="dist"
494            depends="init, dist-clean, dist-jar, dist-docs"            depends="dist-clean, dist-jar, dist-docs"
495            description="Puts all distributable products in single hierarchy"/>            description="Puts all distributable products in single hierarchy"/>
496    
497    
   
498    <target name="release"    <target name="release"
499            depends="dist"            depends="dist"
500            description="Puts entire CVS tree, plus distribution productions, in a jar">            description="Puts entire CVS tree, plus distribution productions, in a jar">
# Line 179  Line 509 
509        <exclude name="src/emulation/**"/>        <exclude name="src/emulation/**"/>
510        <exclude name="**/SyntaxTest.java"/>        <exclude name="**/SyntaxTest.java"/>
511        <exclude name="**/SuperfluousAbstract.java"/>        <exclude name="**/SuperfluousAbstract.java"/>
512          <manifest>
513            <attribute name="Built-By" value="${user.name}"/>
514            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
515          </manifest>
516      </jar>      </jar>
   
517    </target>    </target>
518    
519    
   
520    <target name="clean"    <target name="clean"
521            description="Removes all build products">            description="Removes all build products">
   
522      <delete dir="${build.dir}"/>      <delete dir="${build.dir}"/>
     <delete dir="${build.classes.dir}"/>  
     <delete dir="${build.lib.dir}"/>  
   
523    </target>    </target>
524    
525    
   
526    <target name="dist-clean"    <target name="dist-clean"
527            description="Removes all build and distribution products">            description="Removes all build and distribution products">
528        <delete dir="${build.dir}"/>
529      <delete dir="${dist.dir}"/>      <delete dir="${dist.dir}"/>
   
530    </target>    </target>
531    
532    
533      <target name="dist-jar"
534              depends="clean, jar">
535        <copy file="${product.jar}" todir="${dist.dir}"/>
536      </target>
537    
538    <target name="dist-docs"    <target name="dist-docs"
539            description="Builds javadocs without custom tags to dist folder">            depends="clean, docs">
540        <mirror-dir src="${docs.dir}" dst="${dist.docs.dir}"/>
541      </target>
542    
543      <delete dir="${dist.javadocs.dir}"/>    <target name="tck"
544      <mkdir dir="${dist.javadocs.dir}"/>            depends="jar"
545              description="Runs tck tests for src/main directly">
546    
547        <run-tck-tests
548          target="${build.main.java.version}"
549          workdir="${build.dir}"
550          classes="${product.jar}">
551          <javac-elements>
552            <compilerarg value="-Werror"/>
553          </javac-elements>
554        </run-tck-tests>
555      </target>
556    
557      <target name="tck-parallelism-1"
558              description="Runs tck with common pool parallelism 1">
559        <antcall target="tck">
560          <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="1"/>
561        </antcall>
562      </target>
563    
564      <target name="tck-parallelism-0"
565              description="Runs tck with common pool parallelism 0">
566        <antcall target="tck">
567          <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="0"/>
568        </antcall>
569      </target>
570    
571      <target name="tck-security-manager"
572              description="Runs tck with a security manager">
573        <antcall target="tck">
574          <param name="jsr166.useSecurityManager" value="true"/>
575        </antcall>
576      </target>
577    
578      <target name="jtreg"
579              depends="jar"
580              description="Runs jtreg tests for src/main using the jtreg ant task">
581        <run-jtreg-tests
582           target="${build.main.java.version}"
583           workdir="${build.dir}"
584           classes="${product.jar}"/>
585      </target>
586    
587      <javadoc destdir="${dist.javadocs.dir}"    <target name="test"
588              link="http://java.sun.com/javase/6/docs/api/"            depends="tck, tck-parallelism-1, tck-parallelism-0, jtreg"
589              overview="${src.dir}/intro.html"            description="Runs tck and jtreg tests for src/main"/>
590    
591              sourcepath="${src.dir}:/home/dl/1.6.0/j2se/martin/j2se/src/share/classes"  <!--   <target name="jtreg8" description="Runs jtreg tests with jdk8"> -->
592       >  
593  <!--  <!--     <antcall target="jtreg"> -->
594        <packageset dir="${src.dir}" defaultexcludes="yes">  <!--       <param name="build.main.java.version" value="8"/> -->
595        <include name="java/util/concurrent"/>  <!--       <param name="build.main.javac" value="${javac8}"/> -->
596        <include name="java/util/concurrent/atomic"/>  <!--     </antcall> -->
597        <include name="java/util/concurrent/locks"/>  
598        </packageset>  <!--   </target> -->
599  -->  
600        <fileset dir="${topsrc.dir}" defaultexcludes="yes">    <target name="test910"
601        <include name="main/java/util/concurrent/*.java"/>            description="Runs tck and jtreg tests for src/main for multiple java versions">
602        <include name="main/java/util/concurrent/atomic/*.java"/>  
603        <include name="main/java/util/concurrent/locks/*.java"/>      <antcall target="clean"/>
604        <include name="main/java/util/*.java"/>      <antcall target="test">
605  <!--        <param name="build.main.java.version" value="9"/>
606        <include name="main/java/util/concurrent/*.html"/>      </antcall>
607        <include name="main/java/util/concurrent/atomic/*.html"/>  
608        <include name="main/java/util/concurrent/locks/*.html"/>      <antcall target="clean"/>
609        <include name="main/java/util/*.html"/>      <antcall target="test">
610  -->        <param name="build.main.java.version" value="10"/>
611  <!--      <include name="jsr166x/*.java"/> -->      </antcall>
       </fileset>  
     </javadoc>  
612    
613    </target>    </target>
614    
615    
616    
617    <!-- Internal targets -->    <target name="configure-compiler">
618        <fail message="ant version too old">
619          <condition> <not> <antversion atleast="1.9.1"/> </not> </condition>
620        </fail>
621    
622        <property name="unchecked.option" value="-Xlint:unchecked"/>
623    
624    <target name="init">      <condition property="warnunchecked.arg" value="${unchecked.option}">
625          <istrue value="${build.warnunchecked}"/>
626        </condition>
627    
628      <!-- Version is kept in a separate file -->      <property name="warnunchecked.arg" value=""/>
     <loadfile property="version" srcFile="version.properties"/>  
     <echo>Building JSR-166 version ${version}</echo>  
     <echo>java.home is ${java.home}</echo>  
629    
   </target>  
630    
631        <!-- Common options in javac invocations -->
632        <property name="build.args" value="${warnunchecked.arg}"/>
633    
634    <target name="dist-jar"    </target>
           depends="clean, jar">  
635    
     <copy file="${product.jar}" todir="${dist.dir}"/>  
636    
637    </target>  
638      <!-- Various demos and test programs -->
639    
640    
641    <target name="compile-tests"    <!-- description="Benchmark from Doug Lea's AQS paper" -->
642            depends="jar">    <target name="loops" depends="configure-compiler">
643    
644      <mkdir dir="${build.testcases.dir}"/>      <mkdir dir="${build.loops.dir}"/>
645    
646      <javac srcdir="${tck.src.dir}"      <javac srcdir="${loops.src.dir}"
647            destdir="${build.testcases.dir}"            destdir="${build.loops.dir}"
648              debug="${build.debug}"              debug="${build.debug}"
649         debuglevel="${build.debuglevel}"         debuglevel="${build.debuglevel}"
650        deprecation="${build.deprecation}"        deprecation="${build.deprecation}"
651             source="${build.sourcelevel}"             source="${build.sourcelevel}"
652               target="${build.sourcelevel}"
653             encoding="ASCII"
654               fork="true">               fork="true">
655    
       <compilerarg value="${bootclasspath.args}"/>  
656        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
657          <classpath refid="loops.classpath"/>
658        <classpath refid="test.classpath"/>        <compilerarg value="-XDignore.symbol.file=true"/>
659    
660      </javac>      </javac>
661    
662      <javac srcdir="${test.src.dir}"      <java classname="ALoops" fork="true">
663            destdir="${build.testcases.dir}"        <classpath refid="loops.classpath"/>
664              debug="${build.debug}"      </java>
665         debuglevel="${build.debuglevel}"    </target>
       deprecation="${build.deprecation}"  
            source="${build.sourcelevel}"  
              fork="true">  
   
       <include name="jsr166/test/**"/>  
666    
       <compilerarg value="${bootclasspath.args}"/>  
       <compilerarg line="${build.args}"/>  
667    
668        <classpath refid="test.classpath"/>    <target name="compile-test-loops" depends="jar"
669              description="Compiles all the perf tests in src/test/loops">
670    
671      </javac>      <mkdir dir="${build.dir}/test/loops"/>
672    
673  <!--      <javac srcdir="${basedir}/src/test/loops"
674      <javac srcdir="${jtreg.src.dir}"             destdir="${build.dir}/test/loops"
           destdir="${build.testcases.dir}"  
675              debug="${build.debug}"              debug="${build.debug}"
676         debuglevel="${build.debuglevel}"         debuglevel="${build.debuglevel}"
677        deprecation="${build.deprecation}"        deprecation="${build.deprecation}"
678             source="${build.sourcelevel}"             includeAntRuntime="false"
679               includeJavaRuntime="false"
680               encoding="ASCII"
681               executable="${build.main.javac}"
682               fork="true">               fork="true">
683    
684        <compilerarg value="${bootclasspath.args}"/>        <include name="*.java"/>
685          <compilerarg value="-XDignore.symbol.file=true"/>
686          <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
687          <compilerarg value="-Xbootclasspath/p:${product.jar}"/>
688        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
   
       <classpath refid="test.classpath"/>  
   
689      </javac>      </javac>
 -->  
   
690    </target>    </target>
691    
692    
693    <target name="run-tests"    <!-- jsr166 4jdk8 -->
           depends="compile-tests">  
694    
695      <!-- May be overridden by user.properties -->    <target name="4jdk8compile"
696      <property name="testcase" value="*"/>            depends="configure-compiler"
697              description="Compiles src/jdk8 sources, targeting jdk8">
698    
699      <mkdir dir="${build.reports.dir}"/>      <mkdir dir="${build.4jdk8.classes.dir}"/>
700    
701      <junit printsummary="true"      <javac srcdir="${4jdk8src.dir}"
702               showoutput="true"             destdir="${build.4jdk8.classes.dir}"
703            errorProperty="junit.failed"             debug="${build.debug}"
704          failureProperty="junit.failed"             debuglevel="${build.debuglevel}"
705                      dir="${build.reports.dir}"             deprecation="${build.deprecation}"
706               source="8"
707               target="8"
708               classpath=""
709               bootclasspath="${bootclasspath8}"
710               includeAntRuntime="false"
711               includeJavaRuntime="false"
712               encoding="ASCII"
713               executable="${javac8}"
714                     fork="true">                     fork="true">
715          <include name="**/*.java"/>
716        <jvmarg value="${bootclasspath.args}"/>        <compilerarg value="-Xprefer:source"/>
717        <jvmarg value="-server"/>        <compilerarg value="-XDignore.symbol.file=true"/>
718        <jvmarg value="-showversion"/>        <compilerarg value="-Xlint:all"/>
719          <compilerarg value="-Werror"/>
720        <classpath refid="test.classpath"/>        <compilerarg line="${build.args}"/>
721        </javac>
       <formatter type="xml"/>  
   
       <batchtest todir="${build.reports.dir}" unless="no.test.tck">  
         <fileset dir="${tck.src.dir}">  
           <include name="**/${testcase}Test.java"/>  
         </fileset>  
       </batchtest>  
   
       <batchtest todir="${build.reports.dir}" if="do.test.old">  
         <fileset dir="${test.src.dir}">  
           <include name="jsr166/test/**/${testcase}Test.java"/>  
         </fileset>  
       </batchtest>  
   
 <!--  
       <batchtest todir="${build.reports.dir}" if="do.test.jtreg">  
         <fileset dir="${jtreg.src.dir}">  
           <include name="**/${testcase}Test.java"/>  
         </fileset>  
       </batchtest>  
 -->  
   
     </junit>  
   
722    </target>    </target>
723    
724      <target name="4jdk8doclint"
725              depends="configure-compiler"
726              description="Finds doclint warnings">
727    
728    <target name="report-tests"      <mkdir dir="${build.4jdk8.classes.dir}"/>
           depends="run-tests">  
   
     <!-- 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 format="${junit.report.format}" todir="${build.reports.dir}"  
       />  
     </junitreport>  
   
     <fail message="Test Cases Failed" if="junit.failed"/>  
729    
730        <javac srcdir="${4jdk8src.dir}"
731               destdir="${build.4jdk8.classes.dir}"
732               debug="${build.debug}"
733               debuglevel="${build.debuglevel}"
734               deprecation="${build.deprecation}"
735               source="8"
736               target="8"
737               classpath=""
738               bootclasspath="${bootclasspath8}"
739               includeAntRuntime="false"
740               includeJavaRuntime="false"
741               encoding="ASCII"
742               executable="${javac8}"
743               fork="true">
744          <include name="**/*.java"/>
745          <compilerarg value="-Xprefer:source"/>
746          <compilerarg value="-XDignore.symbol.file=true"/>
747          <compilerarg value="-Xlint:all"/>
748          <compilerarg value="-Xdoclint:all/protected,reference/private"/>
749          <compilerarg line="${build.args}"/>
750        </javac>
751    </target>    </target>
752    
753    
754    <target name="configure-compiler">    <target name="4jdk8jar"
755              depends="4jdk8compile"
756      <property name="unchecked.option" value="-Xlint:unchecked"/>            description="Builds library jar from compiled sources">
757    
758      <condition property="warnunchecked.arg" value="${unchecked.option}">      <jar destfile="${4jdk8product.jar}">
759        <istrue value="${build.warnunchecked}"/>        <fileset dir="${build.4jdk8.classes.dir}"/>
760      </condition>        <manifest>
761            <attribute name="Built-By" value="${user.name}"/>
762            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
763          </manifest>
764        </jar>
765      </target>
766    
     <property name="warnunchecked.arg" value=""/>  
767    
768      <target name="4jdk8-tck"
769              depends="4jdk8jar"
770              description="Runs tck tests for jsr166-4jdk8 directly">
771    
772        <run-tck-tests
773          target="8"
774          workdir="${build.4jdk8.dir}"
775          classes="${4jdk8product.jar}">
776          <javac-elements>
777            <!-- JDK9+ test classes -->
778            <exclude name="*9Test.java"/>
779            <exclude name="*10Test.java"/>
780            <compilerarg value="-Werror"/>
781          </javac-elements>
782        </run-tck-tests>
783      </target>
784    
     <!-- Common options in javac invocations -->  
     <property name="build.args" value="${warnunchecked.arg}"/>  
785    
786      <target name="4jdk8-jtreg"
787              depends="4jdk8jar"
788              description="Runs jtreg tests for jsr166-4jdk8 using the jtreg ant task">
789        <run-jtreg-tests
790           target="8"
791           workdir="${build.4jdk8.dir}"
792           classes="${4jdk8product.jar}"/>
793    </target>    </target>
794    
795    
796    <target name="configure-tests"    <target name="4jdk8-test"
797         depends="configure-compiler">            depends="4jdk8-tck, 4jdk8-jtreg"
798              description="Runs tck and jtreg tests for jsr166-4jdk8"/>
799    
800    
801      <target name="4jdk8docs"
802              description="Builds javadocs for src/jdk8 to dist dir">
803    
804        <delete dir="${4jdk8docs.dir}"/>
805        <mkdir dir="${4jdk8docs.dir}"/>
806    
807        <javadoc destdir="${4jdk8docs.dir}"
808                 packagenames="none"
809                 link="${java8.api.url}"
810                 overview="${4jdk8src.dir}/intro.html"
811                 access="${build.javadoc.access}"
812                 sourcepath="${4jdk8src.dir}:${jdk8.src.dir}"
813                 classpath=""
814                 source="8"
815                 executable="${javadoc8}"
816                 failonerror = "true">
817          <fileset dir="${4jdk8src.dir}" defaultexcludes="yes">
818            <include name="**/*.java"/>
819          </fileset>
820          <arg line="-Xdocrootparent ${java8.docroot.url}"/>
821          <arg value="-XDignore.symbol.file=true"/>
822          <arg value="-tag"/>
823          <arg value="${javadoc.jls.option}"/>
824    <!-- @apiNote currently unused -->
825    <!--       <arg value="-tag"/> -->
826    <!--       <arg value="apiNote:a:&lt;em&gt;API Note:&lt;/em&gt;"/> -->
827          <arg value="-tag"/>
828          <arg value="implSpec:a:&lt;em&gt;Implementation Requirements:&lt;/em&gt;"/>
829          <arg value="-tag"/>
830          <arg value="implNote:a:&lt;em&gt;Implementation Note:&lt;/em&gt;"/>
831        </javadoc>
832      </target>
833    
     <!-- junit.framework.Protectable is in JUnit 3.8.1 but not in 3.7 -->  
     <available property="junit.available"  
                classname="junit.framework.Protectable"/>  
834    
835      <!-- Xalan -->    <target name="4jdk8dist"
836      <available property="xalan.available"            depends="4jdk8dist-jar, 4jdk8dist-docs"
837                 classname="org.apache.xalan.Version"/>            description="Puts all distributable products in single hierarchy"/>
838    
839    
840      <!-- Ant 1.6beta and later don't need or want this check -->    <target name="4jdk8clean"
841      <!--            description="Removes all 4jdk8 build products">
842      <fail message="Need JUnit 3.8.1 in ${ant.home}${file.separator}lib to run tests"      <delete dir="${build.4jdk8.dir}"/>
843            unless="junit.available"/>    </target>
844    
     <fail message="Need Xalan 2.5.1 jar in ${ant.home}${file.separator}lib to run tests"  
           unless="xalan.available"/>  
     -->  
845    
846      <target name="4jdk8dist-jar"
847              depends="4jdk8clean, 4jdk8jar">
848        <copy file="${4jdk8product.jar}" todir="${dist.dir}"/>
849    </target>    </target>
850    
851    
852    <!-- Various demos and test programs -->    <target name="4jdk8dist-docs"
853              depends="4jdk8clean, 4jdk8docs">
854        <mirror-dir src="${4jdk8docs.dir}" dst="${dist.4jdk8docs.dir}"/>
855      </target>
856    
857    
858    <target name="loops" depends="init, configure-compiler"    <!-- jsr166 4jdk7 (no longer maintained) -->
           description="Benchmark from Doug Lea's AQS paper">  
859    
860      <mkdir dir="${build.loops.dir}"/>    <target name="4jdk7compile" depends="configure-compiler">
861        <mkdir dir="${build.4jdk7.classes.dir}"/>
862    
863      <javac srcdir="${loops.src.dir}"      <javac srcdir="${4jdk7src.dir}"
864            destdir="${build.loops.dir}"             destdir="${build.4jdk7.classes.dir}"
865              debug="${build.debug}"              debug="${build.debug}"
866         debuglevel="${build.debuglevel}"         debuglevel="${build.debuglevel}"
867        deprecation="${build.deprecation}"        deprecation="${build.deprecation}"
868             source="${build.sourcelevel}"             source="6"
869               target="6"
870               classpath=""
871               bootclasspath="${bootclasspath6}"
872               includeAntRuntime="false"
873               includeJavaRuntime="false"
874               encoding="ASCII"
875               executable="${javac7}"
876               fork="true">               fork="true">
877    
878          <include name="**/*.java"/>
879          <compilerarg value="-Xprefer:source"/>
880          <compilerarg value="-XDignore.symbol.file=true"/>
881          <compilerarg value="-Xlint:all"/>
882          <compilerarg value="-Werror"/>
883        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
       <classpath refid="loops.classpath"/>  
   
884      </javac>      </javac>
   
     <java classname="ALoops" fork="true">  
       <classpath refid="loops.classpath"/>  
     </java>  
   
885    </target>    </target>
886    
887      <target name="4jdk7doclint" depends="configure-compiler">
888        <mkdir dir="${build.4jdk7.classes.dir}"/>
889    
890    <!-- jsr166x -->      <javac srcdir="${4jdk7src.dir}"
891               destdir="${build.4jdk7.classes.dir}"
   
   <target name="jsr166xcompile"  
           depends="init, configure-compiler"  
           description="Compiles jsr166x sources">  
   
     <mkdir dir="${build.jsr166x.dir}"/>  
   
     <javac srcdir="${jsr166xsrc.dir}"  
           destdir="${build.jsr166x.dir}"  
892              debug="${build.debug}"              debug="${build.debug}"
893         debuglevel="${build.debuglevel}"         debuglevel="${build.debuglevel}"
894        deprecation="${build.deprecation}"        deprecation="${build.deprecation}"
895             source="${build.sourcelevel}"             source="6"
896               target="6"
897               classpath=""
898               bootclasspath="${bootclasspath6}"
899               includeAntRuntime="false"
900               includeJavaRuntime="false"
901               encoding="ASCII"
902               executable="${javac8}"
903               fork="true">               fork="true">
904    
905        <include name="**/*.java"/>        <include name="**/*.java"/>
906          <compilerarg value="-Xprefer:source"/>
907          <compilerarg value="-XDignore.symbol.file=true"/>
908          <compilerarg value="-Xlint:all"/>
909          <compilerarg value="-Xdoclint:all/protected"/>
910        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
   
911      </javac>      </javac>
   
912    </target>    </target>
913    
914      <target name="4jdk7jar" depends="4jdk7compile">
915        <jar destfile="${4jdk7product.jar}">
916    <target name="jsr166xjar"        <fileset dir="${build.4jdk7.classes.dir}"/>
917            depends="jsr166xcompile"        <manifest>
918            description="Builds library jar from compiled sources">          <attribute name="Built-By" value="${user.name}"/>
919            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
920      <mkdir dir="${build.jsr166xlib.dir}"/>        </manifest>
   
     <jar destfile="${jsr166xproduct.jar}">  
       <fileset dir="${build.jsr166x.dir}"/>  
921      </jar>      </jar>
   
922    </target>    </target>
923    
924      <target name="4jdk7-tck" depends="4jdk7jar">
925        <run-tck-tests
926          target="7"
927          workdir="${build.4jdk7.dir}"
928          classes="${4jdk7product.jar}">
929          <javac-elements>
930            <!-- JDK8+ test classes -->
931            <exclude name="*8Test.java"/>
932            <exclude name="*9Test.java"/>
933            <exclude name="*10Test.java"/>
934            <exclude name="DoubleAccumulatorTest.java"/>
935            <exclude name="DoubleAdderTest.java"/>
936            <exclude name="LongAccumulatorTest.java"/>
937            <exclude name="LongAdderTest.java"/>
938            <exclude name="CompletableFutureTest.java"/>
939            <exclude name="SplittableRandomTest.java"/>
940            <exclude name="StampedLockTest.java"/>
941            <exclude name="SubmissionPublisherTest.java"/>
942            <compilerarg value="-Werror"/>
943          </javac-elements>
944        </run-tck-tests>
945      </target>
946    
947      <!-- Runs tck tests for jsr166-4jdk7 via junit task (dead experiment) -->
948      <target name="4jdk7-tck-junit" depends="4jdk7compile">
949    
950    <target name="jsr166xdocs"      <junit printsummary="true"
951            description="Builds javadocs with custom tags to build folder">             showoutput="true"
952               errorProperty="junit.failed"
953      <delete dir="${build.jsr166xjavadocs.dir}"/>             failureProperty="junit.failed"
954      <mkdir dir="${build.jsr166xjavadocs.dir}"/>             includeantruntime="true"
955               jvm="${java7}"
956               fork="true">
957    
958      <javadoc destdir="${build.jsr166xjavadocs.dir}"        <jvmarg value="-Xbootclasspath/p:${4jdk7product.jar}"/>
959               link="http://java.sun.com/javase/6/docs/api/"        <jvmarg value="-server"/>
960    
961              sourcepath="${jsr166xsrc.dir}:/home/dl/1.5.0/j2se/martin/j2se/src/share/classes"        <classpath>
962            <pathelement location="${junit.jar}"/>
963            <pathelement location="${build.4jdk7.tck.classes.dir}"/>
964          </classpath>
965    
966      >        <formatter type="brief"/>
       <packageset dir="${topsrc.dir}" defaultexcludes="yes">  
       <include name="jsr166x"/>  
       </packageset>  
967    
968          <test name="${jsr166.tckTestClass}" haltonfailure="no">
969          </test>
970        </junit>
971      </target>
972    
973      <target name="4jdk7-jtreg" depends="4jdk7jar">
974        <run-jtreg-tests
975           target="7"
976           workdir="${build.4jdk7.dir}"
977           classes="${4jdk7product.jar}"/>
978      </target>
979    
980      <target name="4jdk7-test" depends="4jdk7-tck, 4jdk7-jtreg"/>
981    
982      <target name="4jdk7docs">
983        <delete dir="${4jdk7docs.dir}"/>
984        <mkdir dir="${4jdk7docs.dir}"/>
985    
986        <javadoc destdir="${4jdk7docs.dir}"
987                 packagenames="none"
988                 link="${java7.api.url}"
989                 overview="${4jdk7src.dir}/intro.html"
990                 access="${build.javadoc.access}"
991                 sourcepath="${4jdk7src.dir}:${jdk7.src.dir}"
992                 classpath=""
993                 executable="${javadoc7}"
994                 failonerror = "true">
995          <fileset dir="${4jdk7src.dir}" defaultexcludes="yes">
996            <include name="**/*.java"/>
997          </fileset>
998          <arg line="-Xdocrootparent ${java7.docroot.url}"/>
999          <arg value="-XDignore.symbol.file=true"/>
1000      </javadoc>      </javadoc>
   
1001    </target>    </target>
1002    
1003      <target name="4jdk7dist" depends="4jdk7dist-jar, 4jdk7dist-docs"/>
1004    
1005    <target name="jsr166xdist"    <target name="4jdk7clean">
1006            depends="jsr166xdist-clean, jsr166xdist-jar, jsr166xdist-docs"      <delete dir="${build.4jdk7.dir}"/>
           description="Puts all distributable products in single hierarchy"/>  
   
   
   
   <target name="jsr166xclean"  
           description="Removes all build products">  
   
     <delete dir="${build.jsr166x.dir}"/>  
     <delete dir="${build.jsr166xlib.dir}"/>  
   
1007    </target>    </target>
1008    
1009      <target name="4jdk7dist-jar" depends="4jdk7clean, 4jdk7jar">
1010        <copy file="${4jdk7product.jar}" todir="${dist.dir}"/>
1011      </target>
1012    
1013      <target name="4jdk7dist-docs" depends="4jdk7clean, 4jdk7docs">
1014    <target name="jsr166xdist-clean"      <mirror-dir src="${4jdk7docs.dir}" dst="${dist.4jdk7docs.dir}"/>
           description="Removes all build and distribution products">  
   
1015    </target>    </target>
1016    
1017    
1018      <!-- jsr166x (no longer maintained) -->
1019    
1020    <target name="jsr166xdist-docs"    <target name="jsr166xcompile" depends="configure-compiler">
1021            description="Builds javadocs without custom tags to dist folder">      <mkdir dir="${build.jsr166x.classes.dir}"/>
1022    
1023      <delete dir="${dist.jsr166xjavadocs.dir}"/>      <javac srcdir="${topsrc.dir}"
1024      <mkdir dir="${dist.jsr166xjavadocs.dir}"/>             destdir="${build.jsr166x.classes.dir}"
1025               debug="${build.debug}"
1026               debuglevel="${build.debuglevel}"
1027               deprecation="${build.deprecation}"
1028               classpath=""
1029               bootclasspath="${bootclasspath6}"
1030               source="5"
1031               target="5"
1032               includeAntRuntime="false"
1033               includeJavaRuntime="false"
1034               encoding="ASCII"
1035               executable="${javac7}"
1036               fork="true">
1037          <include name="jsr166x/**/*.java"/>
1038          <compilerarg value="-XDignore.symbol.file=true"/>
1039          <compilerarg value="-Xlint:all,-unchecked,-rawtypes"/>
1040          <compilerarg value="-Werror"/>
1041          <compilerarg line="${build.args}"/>
1042        </javac>
1043      </target>
1044    
1045      <javadoc destdir="${dist.jsr166xjavadocs.dir}"    <target name="jsr166xjar" depends="jsr166xcompile">
1046                  link="http://java.sun.com/javase/6/docs/api/"      <jar destfile="${jsr166x.jar}">
1047                source="${build.sourcelevel}">        <fileset dir="${build.jsr166x.classes.dir}"/>
1048          <manifest>
1049        <packageset dir="${topsrc.dir}" defaultexcludes="yes">          <attribute name="Built-By" value="${user.name}"/>
1050        <include name="jsr166x"/>          <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1051        </packageset>        </manifest>
1052        </jar>
1053      </target>
1054    
1055      <target name="jsr166xdocs">
1056        <delete dir="${jsr166xdocs.dir}"/>
1057        <mkdir dir="${jsr166xdocs.dir}"/>
1058    
1059        <javadoc destdir="${jsr166xdocs.dir}"
1060                 packagenames="jsr166x.*"
1061                 link="${java.api.url}"
1062                 access="${build.javadoc.access}"
1063                 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1064                 bootclasspath="${bootclasspath6}"
1065                 source="5"
1066                 executable="${javadoc7}"
1067                 failonerror = "true">
1068          <arg line="-Xdocrootparent ${java.docroot.url}"/>
1069          <arg value="-XDignore.symbol.file=true"/>
1070      </javadoc>      </javadoc>
   
1071    </target>    </target>
1072    
1073    <target name="jsr166xdist-jar"    <target name="jsr166xdist" depends="jsr166xdist-jar, jsr166xdist-docs"/>
           depends="jsr166xclean, jsr166xjar">  
1074    
1075      <copy file="${jsr166xproduct.jar}" todir="${dist.dir}"/>    <target name="jsr166xclean">
1076        <delete dir="${build.jsr166x.dir}"/>
1077      </target>
1078    
1079      <target name="jsr166xdist-jar" depends="jsr166xclean, jsr166xjar">
1080        <copy file="${jsr166x.jar}" todir="${dist.dir}"/>
1081    </target>    </target>
1082    
1083    <!-- jsr166y -->    <target name="jsr166xdist-docs" depends="jsr166xclean, jsr166xdocs">
1084        <mirror-dir src="${jsr166xdocs.dir}" dst="${dist.jsr166xdocs.dir}"/>
1085      </target>
1086    
1087    
1088    <target name="jsr166ycompile"    <!-- jsr166y (no longer maintained) -->
           depends="init, configure-compiler"  
           description="Compiles jsr166y sources">  
1089    
1090      <mkdir dir="${build.jsr166y.dir}"/>    <target name="jsr166ycompile" depends="configure-compiler">
1091        <mkdir dir="${build.jsr166y.classes.dir}"/>
1092    
1093      <javac srcdir="${jsr166ysrc.dir}"      <javac srcdir="${topsrc.dir}"
1094            destdir="${build.jsr166y.dir}"             destdir="${build.jsr166y.classes.dir}"
1095              debug="${build.debug}"              debug="${build.debug}"
1096         debuglevel="${build.debuglevel}"         debuglevel="${build.debuglevel}"
1097        deprecation="${build.deprecation}"        deprecation="${build.deprecation}"
1098             source="${build.sourcelevel}"             source="6"
1099               target="6"
1100               classpath=""
1101               bootclasspath="${bootclasspath6}"
1102               includeAntRuntime="false"
1103               includeJavaRuntime="false"
1104               encoding="ASCII"
1105               executable="${javac7}"
1106               fork="true">               fork="true">
1107    
1108        <include name="**/*.java"/>        <include name="jsr166y/**/*.java"/>
1109          <compilerarg value="-XDignore.symbol.file=true"/>
1110          <compilerarg value="-Xlint:all"/>
1111          <compilerarg value="-Werror"/>
1112        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
       <compilerarg value="${bootclasspath.args}"/>  
   
 <!--       <compilerarg line="-Xlint -Xmaxwarns 1000"/> -->  
   
1113      </javac>      </javac>
   
1114    </target>    </target>
1115    
1116      <target name="jsr166yjar" depends="jsr166ycompile">
1117        <jar destfile="${jsr166y.jar}" index="true">
1118    <target name="jsr166yjar"        <fileset dir="${build.jsr166y.classes.dir}"/>
1119            depends="jsr166ycompile"        <manifest>
1120            description="Builds library jar from compiled sources">          <attribute name="Built-By" value="${user.name}"/>
1121            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1122      <mkdir dir="${build.jsr166ylib.dir}"/>        </manifest>
   
     <jar destfile="${jsr166yproduct.jar}" index="true">  
       <fileset dir="${build.jsr166y.dir}"/>  
1123      </jar>      </jar>
   
1124    </target>    </target>
1125    
1126      <target name="jsr166ydocs">
1127        <delete dir="${jsr166ydocs.dir}"/>
1128    <target name="jsr166ydocs"      <mkdir dir="${jsr166ydocs.dir}"/>
1129            description="Builds javadocs with custom tags to build folder">  
1130        <javadoc destdir="${jsr166ydocs.dir}"
1131      <delete dir="${build.jsr166yjavadocs.dir}"/>               packagenames="jsr166y.*"
1132      <mkdir dir="${build.jsr166yjavadocs.dir}"/>               link="${java.api.url}"
1133                 access="${build.javadoc.access}"
1134      <javadoc destdir="${build.jsr166yjavadocs.dir}"               sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1135                  link="http://java.sun.com/javase/6/docs/api/"               bootclasspath="${bootclasspath6}"
1136              sourcepath="${jsr166ysrc.dir}:/home/dl/1.5.0/j2se/martin/j2se/src/share/classes"               source="6"
1137                 executable="${javadoc7}"
1138      >               failonerror = "true">
1139        <packageset dir="${topsrc.dir}" defaultexcludes="no">        <arg line="-Xdocrootparent ${java.docroot.url}"/>
1140        <include name="jsr166y"/>        <arg value="-XDignore.symbol.file=true"/>
       </packageset>  
   
   
1141      </javadoc>      </javadoc>
   
1142    </target>    </target>
1143    
1144      <target name="jsr166ydist" depends="jsr166ydist-jar, jsr166ydist-docs"/>
1145    
1146    <target name="jsr166ydist"    <target name="jsr166yclean">
           depends="jsr166ydist-clean, jsr166ydist-jar, jsr166ydist-docs"  
           description="Puts all distributable products in single hierarchy"/>  
   
   
   
   <target name="jsr166yclean"  
           description="Removes all build products">  
   
1147      <delete dir="${build.jsr166y.dir}"/>      <delete dir="${build.jsr166y.dir}"/>
1148      <delete dir="${build.jsr166ylib.dir}"/>    </target>
1149    
1150      <target name="jsr166ydist-jar" depends="jsr166yclean, jsr166yjar">
1151        <copy file="${jsr166y.jar}" todir="${dist.dir}"/>
1152    </target>    </target>
1153    
1154      <target name="jsr166ydist-docs" depends="jsr166yclean, jsr166ydocs">
1155        <mirror-dir src="${jsr166ydocs.dir}" dst="${dist.jsr166ydocs.dir}"/>
1156      </target>
1157    
1158    
1159    <target name="jsr166ydist-clean"    <!-- extra166y (no longer maintained) -->
           description="Removes all build and distribution products">  
1160    
1161    </target>    <target name="extra166ycompile" depends="configure-compiler, jsr166yjar">
1162        <mkdir dir="${build.extra166y.classes.dir}"/>
1163    
1164    <target name="jsr166ydist-docs"      <javac srcdir="${topsrc.dir}"
1165            description="Builds javadocs without custom tags to dist folder">             destdir="${build.extra166y.classes.dir}"
1166               debug="${build.debug}"
1167               debuglevel="${build.debuglevel}"
1168               deprecation="${build.deprecation}"
1169               bootclasspath="@{jsr166y.jar}:${bootclasspath6}"
1170               classpath=""
1171               source="6"
1172               target="6"
1173               includeAntRuntime="false"
1174               includeJavaRuntime="false"
1175               encoding="ASCII"
1176               executable="${javac7}"
1177               fork="true">
1178    
1179      <delete dir="${dist.jsr166yjavadocs.dir}"/>        <include name="extra166y/**/*.java"/>
1180      <mkdir dir="${dist.jsr166yjavadocs.dir}"/>        <compilerarg value="-XDignore.symbol.file=true"/>
1181          <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
1182          <compilerarg value="-Werror"/>
1183          <compilerarg line="${build.args}"/>
1184        </javac>
1185      </target>
1186    
1187      <javadoc destdir="${dist.jsr166yjavadocs.dir}"    <target name="extra166yjar" depends="extra166ycompile">
1188                  link="http://java.sun.com/javase/6/docs/api/"      <jar destfile="${extra166y.jar}" index="true">
1189                source="${build.sourcelevel}">        <fileset dir="${build.extra166y.classes.dir}"/>
1190        <fileset dir="${topsrc.dir}" defaultexcludes="yes">        <manifest>
1191        <include name="jsr166y/*.java"/>          <attribute name="Built-By" value="${user.name}"/>
1192              </fileset>          <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1193      </javadoc>        </manifest>
1194        </jar>
1195      </target>
1196    
1197      <target name="extra166ydocs">
1198        <delete dir="${extra166ydocs.dir}"/>
1199        <mkdir dir="${extra166ydocs.dir}"/>
1200    
1201        <javadoc destdir="${extra166ydocs.dir}"
1202                 packagenames="extra166y.*"
1203                 link="${java.api.url}"
1204                 access="${build.javadoc.access}"
1205                 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1206                 bootclasspath="${bootclasspath6}"
1207                 source="6"
1208                 executable="${javadoc7}">
1209          <arg line="-Xdocrootparent ${java.docroot.url}"/>
1210          <arg value="-XDignore.symbol.file=true"/>
1211        </javadoc>
1212    </target>    </target>
1213    
1214    <target name="jsr166ydist-jar"    <target name="extra166ydist" depends="extra166ydist-jar, extra166ydist-docs"/>
           depends="jsr166yclean, jsr166yjar">  
1215    
1216      <copy file="${jsr166yproduct.jar}" todir="${dist.dir}"/>    <target name="extra166yclean">
1217        <delete dir="${build.extra166y.dir}"/>
1218      </target>
1219    
1220      <target name="extra166ydist-jar" depends="extra166yclean, extra166yjar">
1221        <copy file="${extra166y.jar}" todir="${dist.dir}"/>
1222    </target>    </target>
1223    
1224    <!-- extra166y -->    <target name="extra166ydist-docs" depends="extra166yclean, extra166ydocs">
1225        <mirror-dir src="${extra166ydocs.dir}" dst="${dist.extra166ydocs.dir}"/>
1226      </target>
1227    
1228    
1229    <target name="extra166ycompile"    <!-- jsr166e (no longer maintained) -->
           depends="init, configure-compiler, jsr166ycompile"  
           description="Compiles extra166y sources">  
1230    
1231      <mkdir dir="${build.extra166y.dir}"/>    <property name="build.jsr166e.java.version" value="6"/>
1232      <property name="build.jsr166e.javac" value="${javac6}"/>
1233    
1234      <javac srcdir="${extra166ysrc.dir}"    <target name="jsr166ecompile" depends="configure-compiler">
1235            destdir="${build.extra166y.dir}"      <mkdir dir="${build.jsr166e.classes.dir}"/>
1236    
1237        <javac srcdir="${topsrc.dir}"
1238               destdir="${build.jsr166e.classes.dir}"
1239              debug="${build.debug}"              debug="${build.debug}"
             classpath="${jsr166yproduct.jar}"  
1240         debuglevel="${build.debuglevel}"         debuglevel="${build.debuglevel}"
1241        deprecation="${build.deprecation}"        deprecation="${build.deprecation}"
1242             source="${build.sourcelevel}"             source="${build.jsr166e.java.version}"
1243               target="${build.jsr166e.java.version}"
1244               classpath=""
1245               includeAntRuntime="false"
1246               includeJavaRuntime="false"
1247               executable="${build.jsr166e.javac}"
1248               fork="true">               fork="true">
1249    
1250        <include name="**/*.java"/>        <include name="jsr166e/**/*.java"/>
1251          <compilerarg value="-XDignore.symbol.file=true"/>
1252          <compilerarg value="-Xlint:all"/>
1253          <compilerarg value="-Werror"/>
1254        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
       <compilerarg value="${bootclasspath.args}"/>  
   
 <!--       <compilerarg line="-Xlint -Xmaxwarns 1000"/> -->  
   
1255      </javac>      </javac>
   
1256    </target>    </target>
1257    
1258      <target name="jsr166edoclint">
1259        <mkdir dir="${build.jsr166e.classes.dir}"/>
1260    
1261        <javac srcdir="${topsrc.dir}"
1262               destdir="${build.jsr166e.classes.dir}"
1263               debug="${build.debug}"
1264               debuglevel="${build.debuglevel}"
1265               deprecation="${build.deprecation}"
1266               source="${build.jsr166e.java.version}"
1267               target="${build.jsr166e.java.version}"
1268               classpath=""
1269               bootclasspath="${bootclasspath6}"
1270               includeAntRuntime="false"
1271               includeJavaRuntime="false"
1272               executable="${javac8}"
1273               fork="true">
1274    
1275    <target name="extra166yjar"        <include name="jsr166e/**/*.java"/>
1276            depends="extra166ycompile"        <compilerarg value="-XDignore.symbol.file=true"/>
1277            description="Builds library jar from compiled sources">        <compilerarg value="-Xlint:all"/>
1278          <compilerarg value="-Werror"/>
1279      <mkdir dir="${build.extra166ylib.dir}"/>        <compilerarg value="-Xdoclint:all/protected"/>
1280        </javac>
1281      </target>
1282    
1283      <jar destfile="${extra166yproduct.jar}" index="true">    <target name="jsr166ejar" depends="jsr166ecompile">
1284        <fileset dir="${build.extra166y.dir}"/>      <jar destfile="${jsr166e.jar}" index="true">
1285          <fileset dir="${build.jsr166e.classes.dir}"/>
1286          <manifest>
1287            <attribute name="Built-By" value="${user.name}"/>
1288            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1289          </manifest>
1290      </jar>      </jar>
   
1291    </target>    </target>
1292    
1293      <target name="jsr166edocs">
1294        <delete dir="${jsr166edocs.dir}"/>
1295        <mkdir dir="${jsr166edocs.dir}"/>
1296    
1297        <javadoc destdir="${jsr166edocs.dir}"
1298                 packagenames="jsr166e.*"
1299                 link="${java.api.url}"
1300                 access="${build.javadoc.access}"
1301                 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1302                 source="${build.jsr166e.java.version}"
1303                 executable="${javadoc7}"
1304                 failonerror = "true">
1305          <arg line="-Xdocrootparent ${java.docroot.url}"/>
1306          <arg value="-XDignore.symbol.file=true"/>
1307        </javadoc>
1308      </target>
1309    
1310      <target name="jsr166e-tck-one-java-version" depends="jsr166ejar">
1311        <echo message="Testing with jdk${build.jsr166e.java.version} ..."/>
1312        <run-tck-tests
1313          tck.src.dir="${test.src.dir}/tck-jsr166e"
1314          target="${build.jsr166e.java.version}"
1315          workdir="${build.jsr166e.dir}"
1316          classes="${jsr166e.jar}"/>
1317      </target>
1318    
1319    <target name="extra166ydocs"    <target name="jsr166e-tck">
           description="Builds javadocs with custom tags to build folder">  
   
     <delete dir="${build.extra166yjavadocs.dir}"/>  
     <mkdir dir="${build.extra166yjavadocs.dir}"/>  
   
     <javadoc destdir="${build.extra166yjavadocs.dir}"  
                 link="http://java.sun.com/javase/6/docs/api/"  
             sourcepath="${extra166ysrc.dir}:/home/dl/1.5.0/j2se/martin/j2se/src/share/classes"  
   
     >  
       <packageset dir="${topsrc.dir}" defaultexcludes="no">  
       <include name="extra166y"/>  
       </packageset>  
1320    
1321    <!--     <antcall target="clean"/> -->
1322    <!--     <antcall target="jsr166e-tck-one-java-version"> -->
1323    <!--       <param name="build.jsr166e.java.version" value="8"/> -->
1324    <!--       <param name="build.jsr166e.javac" value="${javac8}"/> -->
1325    <!--     </antcall> -->
1326    
1327      </javadoc>      <antcall target="clean"/>
1328        <antcall target="jsr166e-tck-one-java-version">
1329          <param name="build.jsr166e.java.version" value="7"/>
1330          <param name="build.jsr166e.javac" value="${javac7}"/>
1331        </antcall>
1332    
1333        <antcall target="clean"/>
1334        <antcall target="jsr166e-tck-one-java-version">
1335          <param name="build.jsr166e.java.version" value="6"/>
1336          <param name="build.jsr166e.javac" value="${javac6}"/>
1337        </antcall>
1338    </target>    </target>
1339    
1340      <target name="jsr166e-test" depends="jsr166e-tck"/>
1341    
1342    <target name="extra166ydist"    <target name="jsr166edist" depends="jsr166edist-jar, jsr166edist-docs"/>
           depends="extra166ydist-clean, extra166ydist-jar, extra166ydist-docs"  
           description="Puts all distributable products in single hierarchy"/>  
   
   
1343    
1344    <target name="extra166yclean"    <target name="jsr166eclean">
1345            description="Removes all build products">      <delete dir="${build.jsr166e.dir}"/>
1346      </target>
1347    
1348      <delete dir="${build.extra166y.dir}"/>    <target name="jsr166edist-jar"
1349      <delete dir="${build.extra166ylib.dir}"/>            depends="jsr166eclean, jsr166ejar">
1350        <copy file="${jsr166e.jar}" todir="${dist.dir}"/>
1351      </target>
1352    
1353      <target name="jsr166edist-docs" depends="jsr166eclean, jsr166edocs">
1354        <mirror-dir src="${jsr166edocs.dir}" dst="${dist.jsr166edocs.dir}"/>
1355    </target>    </target>
1356    
1357    
1358    <!-- Find buglets that can be detected by static build tools -->
1359    
1360    <target name="extra166ydist-clean"    <target name="lint">
1361            description="Removes all build and distribution products">      <antcall target="dists">
1362          <param name="build.javadoc.access" value="public"/>
1363        </antcall>
1364      </target>
1365    
1366    <!-- Generates all doclint warnings, even for private methods (rarely useful) -->
1367      <target name="lint-private">
1368        <antcall target="dist">
1369          <param name="build.javadoc.access" value="private"/>
1370        </antcall>
1371    </target>    </target>
1372    
   <target name="extra166ydist-docs"  
           description="Builds javadocs without custom tags to dist folder">  
1373    
1374      <delete dir="${dist.extra166yjavadocs.dir}"/>  <!-- ==============================================================
1375      <mkdir dir="${dist.extra166yjavadocs.dir}"/>    Experimental errorprone support - http://errorprone.info
1376      You may need to bring your own errorprone jar.
1377    =================================================================== -->
1378      <target name="errorprone"
1379              depends="clean, configure-compiler"
1380              description="Run errorprone over jsr166 source code (experimental)">
1381    
1382      <javadoc destdir="${dist.extra166yjavadocs.dir}"      <local name="destdir"/>
1383                  link="http://java.sun.com/javase/6/docs/api/"      <property name="destdir" value="${build.classes.dir}/java.base"/>
1384                source="${build.sourcelevel}">      <mkdir dir="${destdir}"/>
       <fileset dir="${topsrc.dir}" defaultexcludes="yes">  
       <include name="extra166y/*.java"/>  
             </fileset>  
     </javadoc>  
1385    
1386    </target>      <javac srcdir="${src.dir}"
1387               destdir="${destdir}"
1388               debug="${build.debug}"
1389               debuglevel="${build.debuglevel}"
1390               deprecation="${build.deprecation}"
1391               classpath=""
1392               includeAntRuntime="false"
1393               includeJavaRuntime="false"
1394               encoding="ASCII"
1395               executable="${build.main.javac}"
1396               fork="true">
1397    
1398          <include name="**/*.java"/>
1399          <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED"/>
1400          <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED"/>
1401          <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED"/>
1402          <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED"/>
1403          <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED"/>
1404          <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED"/>
1405          <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED"/>
1406          <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED"/>
1407          <compilerarg value="-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED"/>
1408          <compilerarg line="-processorpath ${lib.dir}/error_prone_ant-2.0.20-SNAPSHOT.jar"/>
1409          <compilerarg value="-Xplugin:ErrorProne
1410                              -Xep:IdentityBinaryExpression:WARN
1411                              -Xep:MissingOverride:OFF
1412                              -Xep:MixedArrayDimensions:WARN
1413                              -Xep:RemoveUnusedImports:ERROR
1414                              -Xep:ClassName:ERROR
1415                              -Xep:MultipleTopLevelClasses:ERROR
1416                              -Xep:EmptyIf:ERROR
1417                              -Xep:LongLiteralLowerCaseSuffix:ERROR
1418                              -Xep:ArgumentParameterSwap:ERROR
1419                              -Xep:RedundantThrows:ERROR
1420                              -Xep:MethodCanBeStatic:WARN"/>
1421          <compilerarg value="--patch-module=java.base=${src.dir}"/>
1422          <compilerarg value="-Xprefer:source"/>
1423          <compilerarg value="-XDignore.symbol.file=true"/>
1424          <compilerarg value="-Xlint:all"/>
1425          <compilerarg value="-Xdoclint:all/protected,reference/private"/>
1426          <compilerarg line="-Xmaxerrs 3000 -Xmaxwarns 3000"/>
1427          <compilerarg line="${build.args}"/>
1428        </javac>
1429    
1430    <target name="extra166ydist-jar"      <jar destfile="${product.jar}">
1431            depends="extra166yclean, extra166yjar">        <fileset dir="${destdir}"/>
1432        </jar>
1433    
1434      <copy file="${extra166yproduct.jar}" todir="${dist.dir}"/>      <run-tck-tests
1435          target="${build.main.java.version}"
1436          workdir="${build.dir}"
1437          classes="${product.jar}">
1438          <javac-elements>
1439            <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED"/>
1440            <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED"/>
1441            <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED"/>
1442            <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED"/>
1443            <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED"/>
1444            <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED"/>
1445            <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED"/>
1446            <compilerarg value="-J--add-exports=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED"/>
1447            <compilerarg value="-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED"/>
1448            <compilerarg line="-processorpath ${lib.dir}/error_prone_ant-2.0.20-SNAPSHOT.jar"/>
1449            <compilerarg value="-Xplugin:ErrorProne
1450                                -Xep:IdentityBinaryExpression:WARN
1451                                -Xep:BoxedPrimitiveConstructor:OFF
1452                                -Xep:HashtableContains:OFF
1453                                -Xep:ModifyingCollectionWithItself:OFF
1454                                -Xep:MissingOverride:OFF
1455                                -Xep:MixedArrayDimensions:WARN
1456                                -Xep:RemoveUnusedImports:ERROR
1457                                -Xep:ClassName:ERROR
1458                                -Xep:MultipleTopLevelClasses:ERROR
1459                                -Xep:EmptyIf:ERROR
1460                                -Xep:LongLiteralLowerCaseSuffix:ERROR
1461                                -Xep:ArgumentParameterSwap:ERROR
1462                                -Xep:RedundantThrows:ERROR
1463                                -Xep:MethodCanBeStatic:WARN"/>
1464            <compilerarg line="-Xmaxerrs 3000 -Xmaxwarns 3000"/>
1465          </javac-elements>
1466        </run-tck-tests>
1467      </target>
1468    
1469    
1470    <!-- ==============================================================
1471      Running guava tests against jsr166 code
1472    =================================================================== -->
1473    
1474    <!-- <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" -->
1475    <!--   organisation="com.google.guava" module="guava-testlib" revision="21.0"/> -->
1476    <!-- <property name="guava.version" value="21.0"/> -->
1477    
1478    <!-- HOWTO debug print a path id -->
1479    <!-- <pathconvert property="guava.testlib.classpath" refid="guava.testlib.classpath" /> -->
1480    <!-- <echo message="guava.testlib.classpath=${guava.testlib.classpath}"/> -->
1481    
1482    <!-- <ivy:retrieve pathid="guava.tests.classpath" type="jar" inline="true" conf="*" pattern="${lib.dir}/[type]/[artifact].[ext]" -->
1483    <!--   organisation="com.google.guava" module="guava-tests"/> -->
1484    <!-- <get src="http://repo2.maven.org/maven2/com/google/guava/guava-tests/${guava.version}/guava-tests-${guava.version}-tests.jar" -->
1485    <!--   dest="${lib.dir}/jar/guava-tests-tests.jar" usetimestamp="true"/> -->
1486    <!--     <ivy:cachepath pathid="lib.path.id" inline="true" conf="*" type="*" -->
1487    <!--       organisation="com.google.guava" module="guava-testlib" revision="${guava.version}"/> -->
1488    
1489    <!-- <test name="com.google.common.collect.testing.TestsForQueuesInJavaUtil"/> -->
1490    <!-- <test name="com.google.common.collect.testing.TestsForListsInJavaUtil"/> -->
1491    <!-- <test name="com.google.common.collect.testing.TestsForSetsInJavaUtil"/> -->
1492    <!-- <test name="com.google.common.collect.testing.TestsForMapsInJavaUtil"/> -->
1493    
1494    <!-- <ivy:retrieve pathid="guava.testlib.classpath" -->
1495    <!--   type="*" inline="true" conf="*(private),*(public)" -->
1496    <!--   pattern="${guava.dir}/[artifact].[ext]" -->
1497    <!--   organisation="com.google.guava" module="guava-testlib"/> -->
1498    
1499    <!-- Work around bug below by downloading guava-testlib-tests.jar "by hand": -->
1500    <!-- https://issues.apache.org/jira/browse/IVY-1444 -->
1501    <!-- maven tests artifacts cannot be downloaded because they are mapped to private configurations -->
1502    
1503      <target name="init-ivy">
1504        <get src="http://repo2.maven.org/maven2/org/apache/ivy/ivy/2.4.0/ivy-2.4.0.jar"
1505             dest="${build.dir}/ivy.jar" usetimestamp="true" skipexisting="true"/>
1506        <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant"
1507                 classpath="${build.dir}/ivy.jar"/>
1508      </target>
1509    
1510      <target name="guava-tests" depends="jar, init-ivy"
1511              description="Guava tests run against jsr166 collections">
1512        <property name="guava.dir" value="${build.dir}/guava-testlib"/>
1513        <mkdir dir="${guava.dir}"/>
1514        <ivy:retrieve pathid="guava.testlib.classpath"
1515          type="jar,bundle" inline="true" conf="default,master"
1516          pattern="${guava.dir}/[artifact].[ext]"
1517          organisation="com.google.guava" module="guava-testlib"/>
1518        <property name="guava.version" value="21.0"/>
1519        <get src="http://repo2.maven.org/maven2/com/google/guava/guava-testlib/${guava.version}/guava-testlib-${guava.version}-tests.jar"
1520             dest="${guava.dir}/guava-testlib-tests.jar" usetimestamp="true"/>
1521        <junit printsummary="true" showoutput="true" haltonfailure="true"
1522               jvm="${build.main.java}" fork="true">
1523          <jvmarg line="-ea -esa --patch-module java.base=${product.jar}"/>
1524          <formatter type="brief"/>
1525          <classpath>
1526            <pathelement location="${guava.dir}/guava-testlib-tests.jar"/>
1527            <path refid="guava.testlib.classpath"/>
1528          </classpath>
1529    
1530          <!-- "6" in "OpenJdk6Tests" misleadingly means "6+" -->
1531          <test name="com.google.common.collect.testing.OpenJdk6Tests"/>
1532        </junit>
1533    </target>    </target>
1534    
1535  </project>  </project>

Legend:
Removed from v.1.77  
changed lines
  Added in v.1.248

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8