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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.81  
changed lines
  Added in v.1.290

dl@cs.oswego.edu
ViewVC Help
Powered by ViewVC 1.1.27