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

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

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8