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

Legend:
Removed from v.1.122  
changed lines
  Added in v.1.236

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8