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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.29  
changed lines
  Added in v.1.281

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