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

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

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8