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

Diff of /jsr166/build.xml

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

revision 1.12 by tim, Wed Dec 11 21:40:56 2002 UTC revision 1.290 by jsr166, Sun Dec 2 22:46:53 2018 UTC
# Line 1  Line 1 
1  <project name="jsr166" default="jar">  <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    ------------------------------------------------------------------------------
8      Build file for JSR-166
9    
10      Build file for JSR-166    Usage: ant [target]
11    
12      Note that junit.jar must be in ${ant.home}/lib for the    See http://gee.cs.oswego.edu/dl/concurrency-interest/index.html for
13      test target to work. [FIXME: This should be automatically    more details.
     enforced by this build file by failing with a message if  
     junit.jar is not in the right place.]  
14    
15      User-specific settings are read from user.properties.
16      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      <!-- Run 'ant -projecthelp' (default target) -->
45      <target name="usage">
46        <java classname="org.apache.tools.ant.Main">
47          <arg value="-projecthelp" />
48        </java>
49      </target>
50    
51      <!-- HOWTO printf debug: <echo message="prop=${prop}"/> -->
52    
53      <!-- User-specific settings -->
54      <property file="user.properties"/>
55    
56    
57    <!-- Compilation options -->    <!-- Compilation options -->
   <property name="build.sourcelevel"    value="1.5"/>  
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="true"/>    <property name="build.deprecation"    value="false"/>
61    <property name="build.warnings"       value="true"/>    <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.lib.dir"        location="${build.dir}/lib"/>    <property name="build.loops.dir"             location="${build.dir}/loops"/>
68    <property name="build.ant.dir"        location="${build.dir}/ant"/>  
69    <property name="build.javadocs.dir"   location="${build.dir}/javadocs"/>    <property name="build.4jdk7.dir"             location="${build.dir}/jsr166-4jdk7"/>
70    <property name="build.reports.dir"    location="${build.dir}/reports"/>    <property name="build.4jdk7.classes.dir"     location="${build.4jdk7.dir}/classes"/>
71    <property name="build.filter.src.dir" location="${build.dir}/filtersrc"/>    <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"/>
83    
84      <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}"/>    <property name="src.dir"              location="${basedir}/src/main"/>
144    <property name="test.src.dir"         location="${basedir}/etc/testcases"/>    <property name="test.src.dir"         location="${basedir}/src/test"/>
145    <property name="ant.src.dir"          location="${basedir}/etc/ant"/>    <property name="loops.src.dir"        location="${basedir}/src/loops"/>
146    <property name="stylesheet.dir"       location="${basedir}/etc/xsl"/>    <property name="tck.src.dir"          location="${test.src.dir}/tck"/>
147      <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"/>
157    <!-- Distribution locations -->    <property name="4jdk7src.dir"         location="${topsrc.dir}/jdk7"/>
158    <property name="dist.javadocs.dir"    location="${dist.dir}/docs"/>    <property name="4jdk8src.dir"         location="${topsrc.dir}/jdk8"/>
159      <property name="jsr166xsrc.dir"       location="${topsrc.dir}/jsr166x"/>
160      <property name="jsr166ysrc.dir"       location="${topsrc.dir}/jsr166y"/>
161      <property name="jsr166esrc.dir"       location="${topsrc.dir}/jsr166e"/>
162      <property name="extra166ysrc.dir"     location="${topsrc.dir}/extra166y"/>
163    
164      <!-- Javadoc locations -->
165      <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="javac.jar"            location="${lib.dir}/javac.jar"/>    <property name="4jdk7product.jar" location="${build.4jdk7.dir}/jsr166-4jdk7.jar"/>
184    <property name="collect.jar"          location="${lib.dir}/collect.jar"/>    <property name="4jdk8product.jar" location="${build.4jdk8.dir}/jsr166-4jdk8.jar"/>
185    <property name="junit.jar"            location="${lib.dir}/junit.jar"/>    <property name="jsr166x.jar"      location="${build.jsr166x.dir}/jsr166x.jar"/>
186    <property name="rt.jar"               location="${java.home}/lib/rt.jar"/>    <property name="jsr166y.jar"      location="${build.jsr166y.dir}/jsr166y.jar"/>
187      <property name="jsr166e.jar"      location="${build.jsr166e.dir}/jsr166e.jar"/>
188    <property name="javac.args"           value='-J-Xbootclasspath/p:${javac.jar}'/>    <property name="extra166y.jar"    location="${build.extra166y.dir}/extra166y.jar"/>
189      <property name="junit.jar"        location="${lib.dir}/junit.jar"/>
190    <path id="javac.bootclasspath">  
191      <pathelement location="${collect.jar}"/>    <!-- Canonical location of jdk docs root, to use with javadoc -Xdocrootparent flag -->
192      <pathelement location="${rt.jar}"/>    <!-- Switched to https: in 2017-10 - JDK-8190312 -->
193    </path>    <property name="java5.docroot.url"  value="https://docs.oracle.com/javase/1.5.0/docs"/>
194      <property name="java6.docroot.url"  value="https://docs.oracle.com/javase/6/docs"/>
195      <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    <path id="test.classpath">    <defjtregtests v="12"/>
331      <pathelement location="${product.jar}"/>    <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 -->
381      <path id="loops.classpath">
382        <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    <target name="compile" depends="init"    <!-- Default values: may seem strange ... -->
392            description="Compiles all sources to build folder">    <!-- At runtime, target latest LTS, i.e. jdk11 -->
393      <mkdir dir="${build.classes.dir}"/>    <!-- But at build time, target jdk9, for maximal binary portability -->
394      <javac srcdir="${src.dir}"    <!-- Use javadoc12 (but -link to jdk11 api docs!), to get:
395            destdir="${build.classes.dir}"      o override-methods=summary
396              debug="${build.debug}"      o {@systemProperty ...}
397         debuglevel="${build.debuglevel}"      o 8211194: issues linking to external documentation (was: missing package-list for JDK10 / JDK11 documentation)
398        deprecation="${build.deprecation}"      o 8202628: javadoc generates bad links in TestModules.java
399             source="${build.sourcelevel}"      -->
400               fork="true">    <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"
407              depends="dist, 4jdk8dist"
408              description="Builds all public jars and docs"/>
409              <!-- no longer supported: 4jdk7dist, jsr166edist, jsr166ydist, extra166ydist, jsr166xdist -->
410    
411      <target name="compile"
412              depends="configure-compiler"
413              description="Compiles src/main sources to build dir">
414    
415        <bootclasspath refid="javac.bootclasspath"/>      <local name="destdir"/>
416        <compilerarg line="${javac.args} ${build.warnings.option}"/>      <property name="destdir" value="${build.classes.dir}/java.base"/>
417    
418        <!-- need this because srcdir is basedir! -->      <mkdir dir="${destdir}"/>
419        <include name="java/**/*.java"/>  
420        <javac srcdir="${src.dir}"
421               destdir="${destdir}"
422               debug="${build.debug}"
423               debuglevel="${build.debuglevel}"
424               deprecation="${build.deprecation}"
425               classpath=""
426               includeAntRuntime="false"
427               includeJavaRuntime="false"
428               encoding="ASCII"
429               executable="${build.main.javac}"
430               fork="true">
431    
432          <include name="**/*.java"/>
433          <compilerarg value="--patch-module=java.base=${src.dir}"/>
434          <compilerarg value="-Xprefer:source"/>
435          <compilerarg value="-XDignore.symbol.file=true"/>
436          <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}"/>
442    
443      </javac>      </javac>
444    </target>    </target>
445    
446    
447    <target name="jar" depends="compile"    <target name="jar"
448            description="Builds library jar from compiled sources">            depends="compile"
449      <mkdir dir="${build.lib.dir}"/>            description="Builds library jar for src/main from compiled sources">
450      <jar basedir="${build.classes.dir}"      <local name="subdir"/>
451          destfile="${product.jar}"      <available property="subdir" file="${build.classes.dir}/java.base" type="dir" value="/java.base"/>
452      />      <jar destfile="${product.jar}">
453          <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>
459    </target>    </target>
460    
461    
462    <target name="test" depends="init, report-tests"    <target name="docs"
463            description="Runs all tests"/>            description="Builds javadocs for src/main to dist dir">
464    
465        <delete dir="${docs.dir}"/>
466    <target name="docs" depends="init, clean-filtered-src, filter-src"      <mkdir dir="${docs.dir}"/>
467            description="Builds javadocs with custom tags to build folder">  
468      <delete dir="${build.javadocs.dir}"/>      <!-- the packagenames="none" hack below prevents scanning the -->
469      <mkdir dir="${build.javadocs.dir}"/>      <!-- sourcepath for packages -->
     <javadoc destdir="${build.javadocs.dir}"  
                 link="http://java.sun.com/j2se/1.4.1/docs/api"  
             overview="${src.dir}/intro.html"  
               source="${build.sourcelevel}">  
   
       <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:"/>  
       <packageset dir="${build.filter.src.dir}">  
         <include name="java/**"/>  
       </packageset>  
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" depends="init, dist-clean, dist-jar, dist-docs"/>    <target name="dist"
508              depends="dist-clean, dist-jar, dist-docs"
509              description="Puts all distributable products in single hierarchy"/>
510    
511    
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    <!-- Internal targets -->    <target name="dist-jar"
526              depends="clean, jar">
527        <copy file="${product.jar}" todir="${dist.dir}"/>
528      </target>
529    
530      <target name="dist-docs"
531              depends="clean, docs">
532        <mirror-dir src="${docs.dir}" dst="${dist.docs.dir}"/>
533      </target>
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="set-warnings-if" if="build.warnings">    <target name="tck-parallelism-1"
550      <property name="build.warnings.option" value="-warnunchecked"/>            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>    </target>
555    
556    <target name="set-warnings-unless" unless="build.warnings">    <target name="tck-parallelism-0"
557      <property name="build.warnings.option" value=""/>            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>    </target>
562    
563    <target name="init" depends="set-warnings-if, set-warnings-unless">    <target name="tck-security-manager"
564      <!-- Version is kept in a separate file -->            description="Runs tck with a security manager">
565      <loadfile property="version" srcFile="version.properties"/>      <antcall target="tck">
566      <echo>Building JSR-166 version ${version}</echo>        <param name="jsr166.useSecurityManager" value="true"/>
567        </antcall>
568    </target>    </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>
578    
579    <target name="clean-filtered-src">    <target name="test"
580      <delete dir="${build.filter.src.dir}"/>            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>    </target>
586    
587      <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="dist-jar" depends="clean, jar">    <target name="test10">
600      <copy file="${product.jar}" todir="${dist.dir}"/>      <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>    </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="dist-docs" depends="clean-filtered-src, filter-src"    <target name="test12">
624            description="Builds javadocs without custom tags to dist folder">      <antcall target="clean"/>
625      <delete dir="${dist.javadocs.dir}"/>      <antcall>
626      <mkdir dir="${dist.javadocs.dir}"/>        <param name="java.runtime.target" value="12"/>
627      <javadoc destdir="${dist.javadocs.dir}"        <param name="build.main.javac" value="${javac12}"/>
628                  link="http://java.sun.com/j2se/1.4.1/docs/api"        <param name="build.main.javadoc" value="${javadoc12}"/>
629              overview="${src.dir}/intro.html"        <param name="build.main.javadoc.source" value="12"/>
630                source="${build.sourcelevel}">        <target name="test"/>
631          <target name="docs"/>
632        <packageset dir="${build.filter.src.dir}">      </antcall>
633          <include name="java/**"/>    </target>
634        </packageset>  
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="configure-compiler">
661        <fail message="ant version too old">
662          <condition> <not> <antversion atleast="1.9.1"/> </not> </condition>
663        </fail>
664    
665        <property name="unchecked.option" value="-Xlint:unchecked"/>
666    
667        <condition property="warnunchecked.arg" value="${unchecked.option}">
668          <istrue value="${build.warnunchecked}"/>
669        </condition>
670    
671        <property name="warnunchecked.arg" value=""/>
672    
673    
674        <!-- Common options in javac invocations -->
675        <property name="build.args" value="${warnunchecked.arg}"/>
676    
     </javadoc>  
677    </target>    </target>
678    
679    
680    <target name="compile-ant-filter">    <target name="compile-test-loops" depends="jar"
681      <mkdir dir="${build.ant.dir}"/>            description="Compiles all the perf tests in src/test/loops">
682      <javac srcdir="${ant.src.dir}"  
683            destdir="${build.ant.dir}"      <mkdir dir="${build.dir}/test/loops"/>
684             source="1.4"  
685      />      <javac srcdir="${basedir}/src/test/loops"
686               destdir="${build.dir}/test/loops"
687               debug="${build.debug}"
688               debuglevel="${build.debuglevel}"
689               deprecation="${build.deprecation}"
690               includeAntRuntime="false"
691               includeJavaRuntime="false"
692               encoding="ASCII"
693               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}"/>
701        </javac>
702    </target>    </target>
703    
704    
705    <target name="filter-src" depends="compile-ant-filter">    <!-- jsr166 4jdk8 -->
706      <mkdir dir="${build.filter.src.dir}"/>  
707      <copy todir="${build.filter.src.dir}">    <target name="4jdk8compile"
708        <fileset dir="${src.dir}">            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}"/>
733        </javac>
734      </target>
735    
736      <target name="4jdk8doclint"
737              depends="configure-compiler"
738              description="Finds doclint warnings">
739    
740        <mkdir dir="${build.4jdk8.classes.dir}"/>
741    
742        <javac srcdir="${4jdk8src.dir}"
743               destdir="${build.4jdk8.classes.dir}"
744               debug="${build.debug}"
745               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}"/>
762        </javac>
763      </target>
764    
765    
766      <target name="4jdk8jar"
767              depends="4jdk8compile"
768              description="Builds library jar from compiled sources">
769    
770        <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    
779    
780      <target name="4jdk8-tck"
781              depends="4jdk8jar"
782              description="Runs tck tests for jsr166-4jdk8 directly">
783    
784        <run-tck-tests
785          target="8"
786          workdir="${build.4jdk8.dir}"
787          classes="${4jdk8product.jar}">
788          <javac-elements>
789            <!-- JDK9+ test classes -->
790            <exclude name="*9Test.java"/>
791            <exclude name="*10Test.java"/>
792            <compilerarg value="-Werror"/>
793          </javac-elements>
794        </run-tck-tests>
795      </target>
796    
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>
806    
807    
808      <target name="4jdk8-test"
809              depends="4jdk8-tck, 4jdk8-jtreg"
810              description="Runs tck and jtreg tests for jsr166-4jdk8"/>
811    
812    
813      <target name="4jdk8docs"
814              description="Builds javadocs for src/jdk8 to dist dir">
815    
816        <delete dir="${4jdk8docs.dir}"/>
817        <mkdir dir="${4jdk8docs.dir}"/>
818    
819        <javadoc destdir="${4jdk8docs.dir}"
820                 packagenames="none"
821                 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"/>          <include name="**/*.java"/>
831        </fileset>        </fileset>
832        <filterchain>        <arg line="-Xdocrootparent ${java8.docroot.url}"/>
833          <filterreader classname="jsr166.ant.filters.ReplaceFilter"        <arg value="-XDignore.symbol.file=true"/>
834                        classpath="${build.ant.dir}">        <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             # These arguments are to get rid of angle-bracketed type        <arg value="-tag"/> <arg value="implNote:a:&lt;em&gt;Implementation Note:&lt;/em&gt;"/>
837             # parameters so that javadoc can run on the result. The  <!-- @apiNote tag currently unused -->
838             # following heuristic that seems to work:  <!--  <arg value="-tag"/> <arg value="apiNote:a:&lt;em&gt;API Note:&lt;/em&gt;"/> -->
839             #      </javadoc>
            # 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>  
840    </target>    </target>
841    
842    
843    <target name="compile-tests" depends="jar">    <target name="4jdk8dist"
844      <mkdir dir="${build.testcases.dir}"/>            depends="4jdk8dist-jar, 4jdk8dist-docs"
845      <javac srcdir="${test.src.dir}"            description="Puts all distributable products in single hierarchy"/>
           destdir="${build.testcases.dir}"  
             debug="${build.debug}"  
        debuglevel="${build.debuglevel}"  
       deprecation="${build.deprecation}"  
            source="${build.sourcelevel}"  
              fork="true">  
846    
       <bootclasspath refid="javac.bootclasspath"/>  
       <compilerarg line="${javac.args} ${build.warnings.option}"/>  
       <classpath refid="test.classpath"/>  
       <include name="**/*Test.java"/>  
847    
848      <target name="4jdk8clean"
849              description="Removes all 4jdk8 build products">
850        <delete dir="${build.4jdk8.dir}"/>
851      </target>
852    
853    
854      <target name="4jdk8dist-jar"
855              depends="4jdk8clean, 4jdk8jar">
856        <copy file="${4jdk8product.jar}" todir="${dist.dir}"/>
857      </target>
858    
859    
860      <target name="4jdk8dist-docs"
861              depends="4jdk8clean, 4jdk8docs">
862        <mirror-dir src="${4jdk8docs.dir}" dst="${dist.4jdk8docs.dir}"/>
863      </target>
864    
865    
866      <!-- jsr166 4jdk7 (no longer maintained) -->
867    
868      <target name="4jdk7compile" depends="configure-compiler">
869        <mkdir dir="${build.4jdk7.classes.dir}"/>
870    
871        <javac srcdir="${4jdk7src.dir}"
872               destdir="${build.4jdk7.classes.dir}"
873               debug="${build.debug}"
874               debuglevel="${build.debuglevel}"
875               deprecation="${build.deprecation}"
876               source="6"
877               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}"/>
892      </javac>      </javac>
893    </target>    </target>
894    
895      <target name="4jdk7doclint" depends="configure-compiler">
896        <mkdir dir="${build.4jdk7.classes.dir}"/>
897    
898        <javac srcdir="${4jdk7src.dir}"
899               destdir="${build.4jdk7.classes.dir}"
900               debug="${build.debug}"
901               debuglevel="${build.debuglevel}"
902               deprecation="${build.deprecation}"
903               source="6"
904               target="6"
905               classpath=""
906               bootclasspath="${bootclasspath6}"
907               includeAntRuntime="false"
908               includeJavaRuntime="false"
909               encoding="ASCII"
910               executable="${javac8}"
911               fork="true">
912    
913          <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}"/>
919        </javac>
920      </target>
921    
922      <target name="4jdk7jar" depends="4jdk7compile">
923        <jar destfile="${4jdk7product.jar}">
924          <fileset dir="${build.4jdk7.classes.dir}"/>
925          <manifest>
926            <attribute name="Built-By" value="${user.name}"/>
927            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
928          </manifest>
929        </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>
954    
955      <!-- Runs tck tests for jsr166-4jdk7 via junit task (dead experiment) -->
956      <target name="4jdk7-tck-junit" depends="4jdk7compile">
957    
   <target name="run-tests" depends="compile-tests">  
     <mkdir dir="${build.reports.dir}"/>  
958      <junit printsummary="true"      <junit printsummary="true"
959               showoutput="true"             showoutput="true"
960            errorProperty="junit.failed"             errorProperty="junit.failed"
961          failureProperty="junit.failed"             failureProperty="junit.failed"
962                      dir="${build.reports.dir}"             includeantruntime="true"
963                     fork="true">             jvm="${java7}"
964               fork="true">
965    
966        <jvmarg value="-Xbootclasspath/p:${product.jar}"/>        <jvmarg value="-Xbootclasspath/p:${4jdk7product.jar}"/>
967          <jvmarg value="-server"/>
968    
969        <classpath>        <classpath>
970          <!-- <path refid="test.classpath"/> -->          <pathelement location="${junit.jar}"/>
971          <pathelement location="${build.testcases.dir}"/>          <pathelement location="${build.4jdk7.tck.classes.dir}"/>
972        </classpath>        </classpath>
973    
974        <formatter type="xml"/>        <formatter type="brief"/>
   
       <batchtest todir="${build.reports.dir}">  
         <fileset dir="${test.src.dir}">  
           <include name="**/*Test.java"/>  
         </fileset>  
       </batchtest>  
975    
976          <test name="${jsr166.tckTestClass}" haltonfailure="no">
977          </test>
978      </junit>      </junit>
979    </target>    </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="report-tests" depends="run-tests">    <target name="4jdk7docs">
991      <!-- Sets junit.report.format to frames if Xalan is present,      <delete dir="${4jdk7docs.dir}"/>
992           otherwise sets it to noframes. -->      <mkdir dir="${4jdk7docs.dir}"/>
993      <available property="junit.report.format"  
994                    value="frames"      <javadoc destdir="${4jdk7docs.dir}"
995                classname="org.apache.xalan.lib.Redirect"               packagenames="none"
996      />               link="${java7.api.url}"
997      <property name="junit.report.format" value="noframes"/>               overview="${4jdk7src.dir}/intro.html"
998                 access="${build.javadoc.access}"
999      <junitreport todir="${build.reports.dir}">               sourcepath="${4jdk7src.dir}:${jdk7.src.dir}"
1000        <fileset dir="${build.reports.dir}">               classpath=""
1001          <include name="TEST-*.xml"/>               executable="${javadoc7}"
1002                 failonerror = "true">
1003          <fileset dir="${4jdk7src.dir}" defaultexcludes="yes">
1004            <include name="**/*.java"/>
1005        </fileset>        </fileset>
1006        <report styledir="${stylesheet.dir}"        <arg line="-Xdocrootparent ${java7.docroot.url}"/>
1007                  format="${junit.report.format}"        <arg value="-XDignore.symbol.file=true"/>
1008                   todir="${build.reports.dir}"      </javadoc>
1009        />    </target>
1010      </junitreport>  
1011      <target name="4jdk7dist" depends="4jdk7dist-jar, 4jdk7dist-docs"/>
1012    
1013      <target name="4jdk7clean">
1014        <delete dir="${build.4jdk7.dir}"/>
1015      </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        <mirror-dir src="${4jdk7docs.dir}" dst="${dist.4jdk7docs.dir}"/>
1023      </target>
1024    
1025      <fail message="Test Cases Failed" if="junit.failed"/>  
1026      <!-- jsr166x (no longer maintained) -->
1027    
1028      <target name="jsr166xcompile" depends="configure-compiler">
1029        <mkdir dir="${build.jsr166x.classes.dir}"/>
1030    
1031        <javac srcdir="${topsrc.dir}"
1032               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      <target name="jsr166xjar" depends="jsr166xcompile">
1054        <jar destfile="${jsr166x.jar}">
1055          <fileset dir="${build.jsr166x.classes.dir}"/>
1056          <manifest>
1057            <attribute name="Built-By" value="${user.name}"/>
1058            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1059          </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>
1079      </target>
1080    
1081      <target name="jsr166xdist" depends="jsr166xdist-jar, jsr166xdist-docs"/>
1082    
1083      <target name="jsr166xclean">
1084        <delete dir="${build.jsr166x.dir}"/>
1085      </target>
1086    
1087      <target name="jsr166xdist-jar" depends="jsr166xclean, jsr166xjar">
1088        <copy file="${jsr166x.jar}" todir="${dist.dir}"/>
1089      </target>
1090    
1091      <target name="jsr166xdist-docs" depends="jsr166xclean, jsr166xdocs">
1092        <mirror-dir src="${jsr166xdocs.dir}" dst="${dist.jsr166xdocs.dir}"/>
1093      </target>
1094    
1095    
1096      <!-- 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}"/>
1121        </javac>
1122      </target>
1123    
1124      <target name="jsr166yjar" depends="jsr166ycompile">
1125        <jar destfile="${jsr166y.jar}" index="true">
1126          <fileset dir="${build.jsr166y.classes.dir}"/>
1127          <manifest>
1128            <attribute name="Built-By" value="${user.name}"/>
1129            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1130          </manifest>
1131        </jar>
1132      </target>
1133    
1134      <target name="jsr166ydocs">
1135        <delete dir="${jsr166ydocs.dir}"/>
1136        <mkdir dir="${jsr166ydocs.dir}"/>
1137    
1138        <javadoc destdir="${jsr166ydocs.dir}"
1139                 packagenames="jsr166y.*"
1140                 link="${java.api.url}"
1141                 access="${build.javadoc.access}"
1142                 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1143                 bootclasspath="${bootclasspath6}"
1144                 source="6"
1145                 executable="${javadoc7}"
1146                 failonerror = "true">
1147          <arg line="-Xdocrootparent ${java.docroot.url}"/>
1148          <arg value="-XDignore.symbol.file=true"/>
1149        </javadoc>
1150      </target>
1151    
1152      <target name="jsr166ydist" depends="jsr166ydist-jar, jsr166ydist-docs"/>
1153    
1154      <target name="jsr166yclean">
1155        <delete dir="${build.jsr166y.dir}"/>
1156      </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    
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>
1194    
1195      <target name="extra166yjar" depends="extra166ycompile">
1196        <jar destfile="${extra166y.jar}" index="true">
1197          <fileset dir="${build.extra166y.classes.dir}"/>
1198          <manifest>
1199            <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      <target name="extra166ydocs">
1206        <delete dir="${extra166ydocs.dir}"/>
1207        <mkdir dir="${extra166ydocs.dir}"/>
1208    
1209        <javadoc destdir="${extra166ydocs.dir}"
1210                 packagenames="extra166y.*"
1211                 link="${java.api.url}"
1212                 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>
1220      </target>
1221    
1222      <target name="extra166ydist" depends="extra166ydist-jar, extra166ydist-docs"/>
1223    
1224      <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>
1231    
1232      <target name="extra166ydist-docs" depends="extra166yclean, extra166ydocs">
1233        <mirror-dir src="${extra166ydocs.dir}" dst="${dist.extra166ydocs.dir}"/>
1234    </target>    </target>
1235    
1236    
1237      <!-- jsr166e (no longer maintained) -->
1238    
1239      <property name="build.jsr166e.java.version" value="6"/>
1240      <property name="build.jsr166e.javac" value="${javac6}"/>
1241    
1242      <target name="jsr166ecompile" depends="configure-compiler">
1243        <mkdir dir="${build.jsr166e.classes.dir}"/>
1244    
1245        <javac srcdir="${topsrc.dir}"
1246               destdir="${build.jsr166e.classes.dir}"
1247               debug="${build.debug}"
1248               debuglevel="${build.debuglevel}"
1249               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>
1264      </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="jsr166ejar" depends="jsr166ecompile">
1292        <jar destfile="${jsr166e.jar}" index="true">
1293          <fileset dir="${build.jsr166e.classes.dir}"/>
1294          <manifest>
1295            <attribute name="Built-By" value="${user.name}"/>
1296            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1297          </manifest>
1298        </jar>
1299      </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="jsr166e-tck">
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        <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>
1347    
1348      <target name="jsr166e-test" depends="jsr166e-tck"/>
1349    
1350      <target name="jsr166edist" depends="jsr166edist-jar, jsr166edist-docs"/>
1351    
1352      <target name="jsr166eclean">
1353        <delete dir="${build.jsr166e.dir}"/>
1354      </target>
1355    
1356      <target name="jsr166edist-jar"
1357              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>
1364    
1365    
1366    <!-- Find buglets that can be detected by static build tools -->
1367    
1368    <!--   <target name="lint"> -->
1369    <!--     <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>
1380    
1381    
1382    <!-- ==============================================================
1383      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        <javac srcdir="${src.dir}"
1428               destdir="${destdir}"
1429               debug="${build.debug}"
1430               debuglevel="${build.debuglevel}"
1431               deprecation="${build.deprecation}"
1432               classpath=""
1433               includeAntRuntime="false"
1434               includeJavaRuntime="false"
1435               encoding="ASCII"
1436               executable="${build.main.javac}"
1437               fork="true">
1438    
1439          <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        <jar destfile="${product.jar}">
1457          <fileset dir="${destdir}"/>
1458        </jar>
1459    
1460        <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>
1566    
1567  </project>  </project>

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

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