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

Diff of /jsr166/build.xml

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

revision 1.14, Thu Dec 12 20:23:16 2002 UTC revision 1.278, Mon Oct 1 00:10:52 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      Build file for JSR-166
9    
10      Note that junit.jar must be in ${ant.home}/lib for the    Usage: ant [target]
11      test target to work. [FIXME: This should be automatically  
12      enforced by this build file by failing with a message if    See http://gee.cs.oswego.edu/dl/concurrency-interest/index.html for
13      junit.jar is not in the right place.]    more details.
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 -->
58    <property name="build.sourcelevel"    value="1.5"/>    <property name="build.sourcelevel"    value="6"/>
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"/>
   <property name="build.warnings"       value="true"/>  
   -->  
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.testcases.dir"  location="${build.dir}/testcases"/>    <property name="build.testcases.dir"  location="${build.dir}/testcases"/>
68    <property name="build.lib.dir"        location="${build.dir}/lib"/>    <property name="build.loops.dir"             location="${build.dir}/loops"/>
69    <property name="build.ant.dir"        location="${build.dir}/ant"/>  
70    <property name="build.javadocs.dir"   location="${build.dir}/javadocs"/>    <property name="build.4jdk7.dir"             location="${build.dir}/jsr166-4jdk7"/>
71    <property name="build.reports.dir"    location="${build.dir}/reports"/>    <property name="build.4jdk7.classes.dir"     location="${build.4jdk7.dir}/classes"/>
72    <property name="build.filter.src.dir" location="${build.dir}/filtersrc"/>    <property name="build.4jdk7.tck.classes.dir" location="${build.4jdk7.dir}/tck-classes"/>
73      <property name="build.4jdk7.docs.dir"        location="${build.4jdk7.dir}/docs"/>
74    
75      <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}"/>    <property name="src.dir"              location="${basedir}/src/main"/>
145    <property name="test.src.dir"         location="${basedir}/etc/testcases"/>    <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="jsr166x.jar"      location="${build.jsr166x.dir}/jsr166x.jar"/>
187      <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"/>    <property name="junit.jar"            location="${lib.dir}/junit.jar"/>
   <property name="rt.jar"               location="${java.home}/lib/rt.jar"/>  
191    
192    <property name="javac.args"           value='-J-Xbootclasspath/p:${javac.jar}'/>    <!-- 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      <property name="java.docroot.url"   value="${java11.docroot.url}"/>
208    
209      <!-- Canonical location of jdk API docs, to use with javadoc link attribute -->
210      <property name="java5.api.url"      value="${java5.docroot.url}/api/"/>
211      <property name="java6.api.url"      value="${java6.docroot.url}/api/"/>
212      <property name="java7.api.url"      value="${java7.docroot.url}/api/"/>
213      <property name="java8.api.url"      value="${java8.docroot.url}/api/"/>
214      <property name="java9.api.url"      value="${java9.docroot.url}/api/"/>
215      <property name="java10.api.url"     value="${java10.docroot.url}/api/"/>
216      <property name="java11.api.url"     value="${java11.docroot.url}/api/"/>
217      <property name="java12.api.url"     value="${java12.docroot.url}/api/"/>
218      <property name="java.api.url"       value="${java.docroot.url}/api/"/>
219    
220      <!-- Define the "jtreg" task -->
221      <!-- See the docs in "jtreg -onlineHelp" -->
222      <taskdef name="jtreg" classname="com.sun.javatest.regtest.Main$$Ant"
223               classpath="${lib.dir}/jtreg.jar" />
224    
225      <!-- Tck options; see JSR166TestCase.java
226       To profile a single tck test class:
227       ant -Djsr166.profileTests=true -Djsr166.profileThreshold=10 -Djsr166.tckTestClass=CompletableFutureTest tck
228       To stress test a single tck test class:
229       ant -Djsr166.tckTestClass=CountedCompleterTest -Djsr166.runsPerTest=100 tck
230       To stress test a single tck test method:
231       ant -Djsr166.tckTestClass=RecursiveTaskTest -Djsr166.runsPerTest=1000 -Djsr166.methodFilter=testAbnormalInvokeAll3 tck
232      -->
233      <property name="jsr166.tckTestClass"     value="JSR166TestCase"/>
234      <macrodef name="run-tck-tests">
235        <attribute name="tck.src.dir" default="${tck.src.dir}"/>
236        <attribute name="target"/>
237        <attribute name="compile-target" default="@{target}"/>
238        <attribute name="workdir"/>
239        <attribute name="classes"/>
240        <!--
241            <attribute name="jvmflags" default="-XX:+UseParallelGC -XX:-UseBiasedLocking -ea -esa -Djsr166.testImplementationDetails=true"/>
242        -->
243            <attribute name="jvmflags" default="-ea -esa -Djsr166.testImplementationDetails=true"/>
244        <element name="javac-elements" optional="true"/>
245    
246    <path id="javac.bootclasspath">      <sequential>
247      <pathelement location="${collect.jar}"/>  
248      <pathelement location="${rt.jar}"/>      <local name="modules"/>
249    </path>      <condition property="modules">
250          <available file="${jdk@{compile-target}.home}/lib/modules" type="file"/>
251        </condition>
252    
253        <local name="use-doclint"/>
254        <condition property="use-doclint">
255          <not> <equals arg1="@{target}" arg2="7"/> </not>
256        </condition>
257    
258        <mkdir dir="@{workdir}/tck-classes"/>
259    
260        <javac srcdir="@{tck.src.dir}"
261               destdir="@{workdir}/tck-classes"
262               debug="${build.debug}"
263               debuglevel="${build.debuglevel}"
264               deprecation="${build.deprecation}"
265               source="@{compile-target}"
266               target="@{compile-target}"
267               classpath="${junit.jar}"
268               includeAntRuntime="false"
269               includeJavaRuntime="false"
270               encoding="ASCII"
271               executable="${javac@{compile-target}}"
272               fork="true">
273    
274          <include name="*.java"/>
275          <compilerarg value="-XDignore.symbol.file=true"/>
276          <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation,-try"/>
277          <compilerarg value="-Xdoclint:reference/private" if:set="use-doclint"/>
278          <compilerarg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
279          <compilerarg value="--patch-module=java.base=@{classes}" if:set="modules"/>
280          <compilerarg line="${build.args}"/>
281          <javac-elements/>
282    
283        </javac>
284    
285        <java classname="${jsr166.tckTestClass}"
286              failonerror="true"
287              jvm="${java@{target}}"
288              fork="true">
289            <jvmarg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
290            <jvmarg value="--patch-module=java.base=@{classes}" if:set="modules"/>
291            <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" if:set="modules"/>
292            <jvmarg value="--add-opens=java.base/java.util=ALL-UNNAMED" if:set="modules"/>
293            <jvmarg value="--add-opens=java.base/java.util.concurrent=ALL-UNNAMED" if:set="modules"/>
294            <jvmarg value="--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED" if:set="modules"/>
295            <jvmarg value="--add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED" if:set="modules"/>
296            <jvmarg line="@{jvmflags}"/>
297            <!-- ant -Dvmoptions="-Xmx8m" -Djsr166.tckTestClass=CompletableFutureTest tck -->
298            <jvmarg line="${vmoptions}" if:set="vmoptions"/>
299    
300            <!-- ant -Djava.util.concurrent.ForkJoinPool.common.parallelism=1 tck -->
301            <syspropertyset id="system-properties-used-by-tck">
302              <propertyref prefix="java.util.concurrent.ForkJoinPool"/>
303              <propertyref prefix="jsr166."/>
304              <propertyref name="test.timeout.factor"/>
305            </syspropertyset>
306    
307            <classpath>
308              <pathelement location="${junit.jar}"/>
309              <pathelement location="@{workdir}/tck-classes"/>
310            </classpath>
311        </java>
312    
313        </sequential>
314      </macrodef>
315    
316      <!-- Define jtreg test sets for different jdk versions -->
317      <!-- ant -Djtreg.test.pattern="**/ConcurrentHashMap/" -->
318      <!-- ant -Djtreg.test.pattern="**/ToArray.java" -->
319      <property name="jtreg.test.pattern" value="**/*.java"/>
320      <macrodef name="defjtregtests">
321        <attribute name="v"/>
322        <sequential>
323          <fileset dir="${jtreg@{v}.src.dir}">
324            <patternset id="jdk@{v}.jtreg.tests">
325              <include name="${jtreg.test.pattern}"/>
326            </patternset>
327          </fileset>
328        </sequential>
329      </macrodef>
330    
331    <path id="test.classpath">    <defjtregtests v="12"/>
332      <pathelement location="${product.jar}"/>    <defjtregtests v="11"/>
333      <defjtregtests v="10"/>
334      <defjtregtests v="9"/>
335      <defjtregtests v="8"/>
336      <defjtregtests v="7"/>
337    
338      <!-- ant -Djtreg.flags=-timeoutFactor:4 -->
339      <property name="jtreg.flags" value=""/>
340    
341      <macrodef name="run-jtreg-tests">
342        <!-- ant -Djtreg9.src.dir=src/test/jtreg/util/concurrent/CompletableFuture jtreg -->
343        <attribute name="target"/>
344        <attribute name="workdir"/>
345        <attribute name="classes"/>
346        <attribute name="verbose" default="${jtreg.verbose}"/>
347        <attribute name="jtregflags" default=""/>
348        <element name="jtreg-elements" optional="true"/>
349    
350        <sequential>
351    
352        <!-- ant -Djtreg.verbose=time,fail,error jtreg -->
353        <property name="jtreg.verbose" value="nopass,fail,error"/>
354    
355        <local name="modules"/>
356        <condition property="modules">
357          <available file="${jdk@{target}.home}/lib/modules" type="file"/>
358        </condition>
359    
360        <delete dir="@{workdir}/JTwork"   quiet="true"/>
361        <jtreg dir="${jtreg@{target}.src.dir}"
362               jdk="${jdk@{target}.home}"
363               workDir="@{workdir}/JTwork">
364          <patternset refid="jdk@{target}.jtreg.tests"/>
365          <arg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
366          <arg value="-javacoptions:--patch-module=java.base=@{classes}" if:set="modules"/>
367          <arg value="-vmoptions:--patch-module=java.base=@{classes}" if:set="modules"/>
368          <arg value="-agentvm"/>
369          <arg value="-noreport"/>
370          <arg value="-verbose:@{verbose}"/>
371          <arg value="-vmoptions:-esa -ea"/>
372          <arg value="-automatic"/>
373          <arg value="-k:!ignore"/>
374          <arg line="@{jtregflags}"/>
375          <arg line="${jtreg.flags}"/>
376          <jtreg-elements/>
377        </jtreg>
378        </sequential>
379      </macrodef>
380    
381      <!-- ALoops classpath -->
382      <path id="loops.classpath">
383        <pathelement location="${build.loops.dir}"/>
384    </path>    </path>
385    
386      <!-- Support @jls tag, used in jdk8+ javadoc -->
387      <property name="javadoc.jls.cite" value="The Java&amp;trade; Language Specification"/>
388      <property name="javadoc.jls.option" value="jls:a:See &lt;cite&gt;${javadoc.jls.cite}&lt;/cite&gt;:"/>
389    
390    <!-- Main targets -->    <!-- Main targets -->
391    
392    <target name="compile" depends="init"    <property name="build.main.java.version" value="11"/>
393            description="Compiles all sources to build folder">    <!-- Workaround "no nested properties in ant" -->
394      <mkdir dir="${build.classes.dir}"/>    <macrodef name="define-build-main-properties">
395        <attribute name="v"/>
396        <sequential>
397          <property name="build.main.java"    value="${java@{v}}"/>
398          <property name="build.main.javac"   value="${javac@{v}}"/>
399          <!-- Force javadoc version to be at least 10,
400               so we can use override-methods=summary -->
401          <condition property="build.main.javadoc"
402                     value="${javadoc11}"
403                     else="${javadoc@{v}}">
404            <equals arg1="@{v}" arg2="9"/>
405          </condition>
406        </sequential>
407      </macrodef>
408      <define-build-main-properties v="${build.main.java.version}"/>
409    
410      <target name="dists"
411              depends="dist, 4jdk8dist"
412              description="Builds all public jars and docs"/>
413              <!--
414                  depends="dist, 4jdk8dist, 4jdk7dist, jsr166edist, jsr166ydist, extra166ydist, jsr166xdist"
415              -->
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}"/>
425    
426      <javac srcdir="${src.dir}"      <javac srcdir="${src.dir}"
427            destdir="${build.classes.dir}"             destdir="${destdir}"
428              debug="${build.debug}"              debug="${build.debug}"
429         debuglevel="${build.debuglevel}"         debuglevel="${build.debuglevel}"
430        deprecation="${build.deprecation}"        deprecation="${build.deprecation}"
431             source="${build.sourcelevel}"             classpath=""
432               includeAntRuntime="false"
433               includeJavaRuntime="false"
434               encoding="ASCII"
435               executable="${build.main.javac}"
436               fork="true">               fork="true">
437    
438        <bootclasspath refid="javac.bootclasspath"/>        <include name="**/*.java"/>
439        <compilerarg line="${javac.args} ${build.warnings.option}"/>        <compilerarg value="--patch-module=java.base=${src.dir}"/>
440          <compilerarg value="-Xprefer:source"/>
441        <!-- need this because srcdir is basedir! -->        <compilerarg value="-XDignore.symbol.file=true"/>
442        <include name="java/**/*.java"/>        <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      </javac>      </javac>
450    </target>    </target>
451    
452    
453    <target name="jar" depends="compile"    <target name="jar"
454            description="Builds library jar from compiled sources">            depends="compile"
455      <mkdir dir="${build.lib.dir}"/>            description="Builds library jar for src/main from compiled sources">
456      <jar basedir="${build.classes.dir}"      <local name="subdir"/>
457          destfile="${product.jar}"      <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>    </target>
466    
467    
468    <target name="test" depends="init, report-tests"    <target name="docs"
469            description="Runs all tests"/>            description="Builds javadocs for src/main to dist dir">
470    
471        <delete dir="${docs.dir}"/>
472        <mkdir dir="${docs.dir}"/>
473    
474    <target name="docs" depends="init, clean-filtered-src, filter-src"      <!-- the packagenames="none" hack below prevents scanning the -->
475            description="Builds javadocs with custom tags to build folder">      <!-- sourcepath for packages -->
     <delete dir="${build.javadocs.dir}"/>  
     <mkdir dir="${build.javadocs.dir}"/>  
     <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>  
476    
477    <!-- 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="${java10.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>      </javadoc>
508    </target>    </target>
509    
510    
511    <target name="dist" depends="init, dist-clean, dist-jar, dist-docs"/>    <target name="dist"
512              depends="dist-clean, dist-jar, dist-docs"
513              description="Puts all distributable products in single hierarchy"/>
514    
515    
516      <target name="release"
517              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    
537    
538    <target name="clean"    <target name="clean"
539            description="Removes all build products">            description="Removes all build products">
540      <delete dir="${build.dir}"/>      <delete dir="${build.dir}"/>
     <delete dir="${build.classes.dir}"/>  
     <delete dir="${build.lib.dir}"/>  
541    </target>    </target>
542    
543    
544    <target name="dist-clean"    <target name="dist-clean"
545            description="Removes all build and distribution products">            description="Removes all build and distribution products">
546        <delete dir="${build.dir}"/>
547      <delete dir="${dist.dir}"/>      <delete dir="${dist.dir}"/>
548    </target>    </target>
549    
550    
551    <!-- Anthill targets -->    <target name="dist-jar"
552              depends="clean, jar">
553        <copy file="${product.jar}" todir="${dist.dir}"/>
554      </target>
555    
556    <!-- Should really run the tests instead of just the jar target -->    <target name="dist-docs"
557    <target name="anthill-build" depends="jar, docs, dist-docs"            depends="clean, docs">
558            description="Build the jar and both the external and internal docs"/>      <mirror-dir src="${docs.dir}" dst="${dist.docs.dir}"/>
   
   <target name="anthill-publish">  
     <copy todir="${deployDir}/docs/private">  
       <fileset dir="${build.javadocs.dir}"/>  
     </copy>  
     <copy todir="${deployDir}/docs/public">  
       <fileset dir="${dist.javadocs.dir}"/>  
     </copy>  
559    </target>    </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    <!-- Internal targets -->    <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="set-warnings-if" if="build.warnings">    <target name="tck-parallelism-0"
583      <property name="build.warnings.option" value="-warnunchecked"/>            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>    </target>
588    
589    <target name="set-warnings-unless" unless="build.warnings">    <target name="tck-security-manager"
590      <property name="build.warnings.option" value=""/>            description="Runs tck with a security manager">
591        <antcall target="tck">
592          <param name="jsr166.useSecurityManager" value="true"/>
593        </antcall>
594    </target>    </target>
595    
596    <target name="init" depends="set-warnings-if, set-warnings-unless">    <target name="jtreg"
597      <!-- Version is kept in a separate file -->            depends="jar"
598      <loadfile property="version" srcFile="version.properties"/>            description="Runs jtreg tests for src/main using the jtreg ant task">
599      <echo>Building JSR-166 version ${version}</echo>      <run-jtreg-tests
600           target="${build.main.java.version}"
601           workdir="${build.dir}"
602           classes="${product.jar}"/>
603    </target>    </target>
604    
605      <target name="test"
606              depends="tck, tck-parallelism-1, tck-parallelism-0, jtreg"
607              description="Runs tck and jtreg tests for src/main"/>
608    
609    <!--   <target name="jtreg8" description="Runs jtreg tests with jdk8"> -->
610    
611    <!--     <antcall target="jtreg"> -->
612    <!--       <param name="build.main.java.version" value="8"/> -->
613    <!--       <param name="build.main.javac" value="${javac8}"/> -->
614    <!--     </antcall> -->
615    
616    <!--   </target> -->
617    
618      <target name="test9101112"
619              description="Runs tck and jtreg tests for src/main for multiple java versions">
620    
621        <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        <antcall target="clean"/>
636        <antcall target="test">
637          <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        <antcall target="clean"/>
643        <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        <!-- Clean up to avoid obscure wrong class file version bugs -->
656        <antcall target="clean"/>
657    
   <target name="clean-filtered-src">  
     <delete dir="${build.filter.src.dir}"/>  
658    </target>    </target>
659    
660    
661    <target name="dist-jar" depends="clean, jar">  
662      <copy file="${product.jar}" todir="${dist.dir}"/>    <target name="configure-compiler">
663        <fail message="ant version too old">
664          <condition> <not> <antversion atleast="1.9.1"/> </not> </condition>
665        </fail>
666    
667        <property name="unchecked.option" value="-Xlint:unchecked"/>
668    
669        <condition property="warnunchecked.arg" value="${unchecked.option}">
670          <istrue value="${build.warnunchecked}"/>
671        </condition>
672    
673        <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    
   <target name="dist-docs" depends="clean-filtered-src, filter-src"  
           description="Builds javadocs without custom tags to dist folder">  
     <delete dir="${dist.javadocs.dir}"/>  
     <mkdir dir="${dist.javadocs.dir}"/>  
     <javadoc destdir="${dist.javadocs.dir}"  
                 link="http://java.sun.com/j2se/1.4.1/docs/api"  
             overview="${src.dir}/intro.html"  
               source="${build.sourcelevel}">  
682    
683        <packageset dir="${build.filter.src.dir}">    <!-- Various demos and test programs -->
         <include name="java/**"/>  
       </packageset>  
684    
685      </javadoc>  
686      <!-- 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}"
694           debuglevel="${build.debuglevel}"
695          deprecation="${build.deprecation}"
696               source="${build.sourcelevel}"
697               target="${build.sourcelevel}"
698             encoding="ASCII"
699                 fork="true">
700    
701          <compilerarg line="${build.args}"/>
702          <classpath refid="loops.classpath"/>
703          <compilerarg value="-XDignore.symbol.file=true"/>
704    
705        </javac>
706    
707        <java classname="ALoops" fork="true">
708          <classpath refid="loops.classpath"/>
709        </java>
710      </target>
711    
712    
713      <target name="compile-test-loops" depends="jar"
714              description="Compiles all the perf tests in src/test/loops">
715    
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    
737    
738      <!-- jsr166 4jdk8 -->
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>
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    
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="compile-ant-filter">    <target name="4jdk8-tck"
814      <mkdir dir="${build.ant.dir}"/>            depends="4jdk8jar"
815      <javac srcdir="${ant.src.dir}"            description="Runs tck tests for jsr166-4jdk8 directly">
816            destdir="${build.ant.dir}"  
817             source="1.4"      <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>    </target>
829    
830    
831    <target name="filter-src" depends="compile-ant-filter">    <target name="4jdk8-jtreg"
832      <mkdir dir="${build.filter.src.dir}"/>            depends="4jdk8jar"
833      <copy todir="${build.filter.src.dir}">            description="Runs jtreg tests for jsr166-4jdk8 using the jtreg ant task">
834        <fileset dir="${src.dir}">      <run-jtreg-tests
835           target="8"
836           workdir="${build.4jdk8.dir}"
837           classes="${4jdk8product.jar}"/>
838      </target>
839    
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"/>          <include name="**/*.java"/>
864        </fileset>        </fileset>
865        <filterchain>        <arg line="-Xdocrootparent ${java8.docroot.url}"/>
866          <filterreader classname="jsr166.ant.filters.ReplaceFilter"        <arg value="-XDignore.symbol.file=true"/>
867                        classpath="${build.ant.dir}">        <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             # 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;"/>
870             # parameters so that javadoc can run on the result. The  <!-- @apiNote tag currently unused -->
871             # following heuristic that seems to work:  <!--  <arg value="-tag"/> <arg value="apiNote:a:&lt;em&gt;API Note:&lt;/em&gt;"/> -->
872             #      </javadoc>
873             # For all lines not starting with space(s)-asterisk-space(s),    </target>
874             #   replace <something> with a space, where there may be more  
875             #   than one right angle bracket at the end, and "something"  
876             #   must not contain parens or pipes. (This may need some    <target name="4jdk8dist"
877             #   tweaking.)            depends="4jdk8dist-jar, 4jdk8dist-docs"
878             -->            description="Puts all distributable products in single hierarchy"/>
879            <param name="notmatching" value="^\s+\*\s.*$"/>  
880            <param name="pattern" value="&lt;[^|>()]+?>+"/>  
881            <param name="replacement" value=" "/>    <target name="4jdk8clean"
882          </filterreader>            description="Removes all 4jdk8 build products">
883          <filterreader classname="jsr166.ant.filters.ReplaceFilter"      <delete dir="${build.4jdk8.dir}"/>
884                        classpath="${build.ant.dir}">    </target>
885            <!--  
886             # These arguments are to uncomment lines beginning with  
887             # "//@" so that javadoc can see imports that are needed    <target name="4jdk8dist-jar"
888             # to resolve links but that shouldn't be in the compiled            depends="4jdk8clean, 4jdk8jar">
889             # code.      <copy file="${4jdk8product.jar}" todir="${dist.dir}"/>
            -->  
           <param name="matching" value="^//@.*$"/>  
           <param name="pattern" value="^//@"/>  
           <param name="replacement" value=""/>  
         </filterreader>  
       </filterchain>  
     </copy>  
890    </target>    </target>
891    
892    
893    <target name="compile-tests" depends="jar">    <target name="4jdk8dist-docs"
894      <mkdir dir="${build.testcases.dir}"/>            depends="4jdk8clean, 4jdk8docs">
895      <javac srcdir="${test.src.dir}"      <mirror-dir src="${4jdk8docs.dir}" dst="${dist.4jdk8docs.dir}"/>
896            destdir="${build.testcases.dir}"    </target>
897    
898    
899      <!-- jsr166 4jdk7 (no longer maintained) -->
900    
901      <target name="4jdk7compile" depends="configure-compiler">
902        <mkdir dir="${build.4jdk7.classes.dir}"/>
903    
904        <javac srcdir="${4jdk7src.dir}"
905               destdir="${build.4jdk7.classes.dir}"
906              debug="${build.debug}"              debug="${build.debug}"
907         debuglevel="${build.debuglevel}"         debuglevel="${build.debuglevel}"
908        deprecation="${build.deprecation}"        deprecation="${build.deprecation}"
909             source="${build.sourcelevel}"             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">               fork="true">
918    
919        <bootclasspath refid="javac.bootclasspath"/>        <include name="**/*.java"/>
920        <compilerarg line="${javac.args} ${build.warnings.option}"/>        <compilerarg value="-Xprefer:source"/>
921        <classpath refid="test.classpath"/>        <compilerarg value="-XDignore.symbol.file=true"/>
922        <include name="**/*Test.java"/>        <compilerarg value="-Xlint:all"/>
923          <compilerarg value="-Werror"/>
924          <compilerarg line="${build.args}"/>
925        </javac>
926      </target>
927    
928      <target name="4jdk7doclint" depends="configure-compiler">
929        <mkdir dir="${build.4jdk7.classes.dir}"/>
930    
931        <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>      </javac>
953    </target>    </target>
954    
955      <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>
987    
988      <!-- Runs tck tests for jsr166-4jdk7 via junit task (dead experiment) -->
989      <target name="4jdk7-tck-junit" depends="4jdk7compile">
990    
   <target name="run-tests" depends="compile-tests">  
     <mkdir dir="${build.reports.dir}"/>  
991      <junit printsummary="true"      <junit printsummary="true"
992               showoutput="true"               showoutput="true"
993            errorProperty="junit.failed"            errorProperty="junit.failed"
994          failureProperty="junit.failed"          failureProperty="junit.failed"
995                      dir="${build.reports.dir}"             includeantruntime="true"
996               jvm="${java7}"
997                     fork="true">                     fork="true">
998    
999        <jvmarg value="-Xbootclasspath/p:${product.jar}"/>        <jvmarg value="-Xbootclasspath/p:${4jdk7product.jar}"/>
1000          <jvmarg value="-server"/>
1001    
1002        <classpath>        <classpath>
1003          <!-- <path refid="test.classpath"/> -->          <pathelement location="${junit.jar}"/>
1004          <pathelement location="${build.testcases.dir}"/>          <pathelement location="${build.4jdk7.tck.classes.dir}"/>
1005        </classpath>        </classpath>
1006    
1007        <formatter type="xml"/>        <formatter type="brief"/>
   
       <batchtest todir="${build.reports.dir}">  
         <fileset dir="${test.src.dir}">  
           <include name="**/*Test.java"/>  
         </fileset>  
       </batchtest>  
1008    
1009          <test name="${jsr166.tckTestClass}" haltonfailure="no">
1010          </test>
1011      </junit>      </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="report-tests" depends="run-tests">    <target name="4jdk7docs">
1024      <!-- Sets junit.report.format to frames if Xalan is present,      <delete dir="${4jdk7docs.dir}"/>
1025           otherwise sets it to noframes. -->      <mkdir dir="${4jdk7docs.dir}"/>
1026      <available property="junit.report.format"  
1027                    value="frames"      <javadoc destdir="${4jdk7docs.dir}"
1028                classname="org.apache.xalan.lib.Redirect"               packagenames="none"
1029      />               link="${java7.api.url}"
1030      <property name="junit.report.format" value="noframes"/>               overview="${4jdk7src.dir}/intro.html"
1031                 access="${build.javadoc.access}"
1032      <junitreport todir="${build.reports.dir}">               sourcepath="${4jdk7src.dir}:${jdk7.src.dir}"
1033        <fileset dir="${build.reports.dir}">               classpath=""
1034          <include name="TEST-*.xml"/>               executable="${javadoc7}"
1035                 failonerror = "true">
1036          <fileset dir="${4jdk7src.dir}" defaultexcludes="yes">
1037            <include name="**/*.java"/>
1038        </fileset>        </fileset>
1039        <report styledir="${stylesheet.dir}"        <arg line="-Xdocrootparent ${java7.docroot.url}"/>
1040                  format="${junit.report.format}"        <arg value="-XDignore.symbol.file=true"/>
1041                   todir="${build.reports.dir}"      </javadoc>
1042        />    </target>
1043      </junitreport>  
1044      <target name="4jdk7dist" depends="4jdk7dist-jar, 4jdk7dist-docs"/>
1045    
1046      <target name="4jdk7clean">
1047        <delete dir="${build.4jdk7.dir}"/>
1048      </target>
1049    
1050      <target name="4jdk7dist-jar" depends="4jdk7clean, 4jdk7jar">
1051        <copy file="${4jdk7product.jar}" todir="${dist.dir}"/>
1052      </target>
1053    
1054      <target name="4jdk7dist-docs" depends="4jdk7clean, 4jdk7docs">
1055        <mirror-dir src="${4jdk7docs.dir}" dst="${dist.4jdk7docs.dir}"/>
1056      </target>
1057    
1058    
1059      <!-- jsr166x (no longer maintained) -->
1060    
1061      <target name="jsr166xcompile" depends="configure-compiler">
1062        <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>
1084      </target>
1085    
1086      <target name="jsr166xjar" depends="jsr166xcompile">
1087        <jar destfile="${jsr166x.jar}">
1088          <fileset dir="${build.jsr166x.classes.dir}"/>
1089          <manifest>
1090            <attribute name="Built-By" value="${user.name}"/>
1091            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1092          </manifest>
1093        </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>
1113    
1114      <target name="jsr166xdist" depends="jsr166xdist-jar, jsr166xdist-docs"/>
1115    
1116      <target name="jsr166xclean">
1117        <delete dir="${build.jsr166x.dir}"/>
1118      </target>
1119    
1120      <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>
1127    
1128    
1129      <!-- jsr166y (no longer maintained) -->
1130    
1131      <target name="jsr166ycompile" depends="configure-compiler">
1132        <mkdir dir="${build.jsr166y.classes.dir}"/>
1133    
1134        <javac srcdir="${topsrc.dir}"
1135               destdir="${build.jsr166y.classes.dir}"
1136               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>
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="jsr166ydocs">
1168        <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      <target name="jsr166ydist" depends="jsr166ydist-jar, jsr166ydist-docs"/>
1186    
1187      <target name="jsr166yclean">
1188        <delete dir="${build.jsr166y.dir}"/>
1189      </target>
1190    
1191      <target name="jsr166ydist-jar" depends="jsr166yclean, jsr166yjar">
1192        <copy file="${jsr166y.jar}" todir="${dist.dir}"/>
1193      </target>
1194    
1195      <target name="jsr166ydist-docs" depends="jsr166yclean, jsr166ydocs">
1196        <mirror-dir src="${jsr166ydocs.dir}" dst="${dist.jsr166ydocs.dir}"/>
1197      </target>
1198    
1199    
1200      <!-- extra166y (no longer maintained) -->
1201    
1202      <target name="extra166ycompile" depends="configure-compiler, jsr166yjar">
1203        <mkdir dir="${build.extra166y.classes.dir}"/>
1204    
1205        <javac srcdir="${topsrc.dir}"
1206               destdir="${build.extra166y.classes.dir}"
1207               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>
1226      </target>
1227    
1228      <fail message="Test Cases Failed" if="junit.failed"/>    <target name="extra166yjar" depends="extra166ycompile">
1229        <jar destfile="${extra166y.jar}" index="true">
1230          <fileset dir="${build.extra166y.classes.dir}"/>
1231          <manifest>
1232            <attribute name="Built-By" value="${user.name}"/>
1233            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
1234          </manifest>
1235        </jar>
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="extra166ydist" depends="extra166ydist-jar, extra166ydist-docs"/>
1256    
1257      <target name="extra166yclean">
1258        <delete dir="${build.extra166y.dir}"/>
1259      </target>
1260    
1261      <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>
1268    
1269    
1270      <!-- jsr166e (no longer maintained) -->
1271    
1272      <property name="build.jsr166e.java.version" value="6"/>
1273      <property name="build.jsr166e.javac" value="${javac6}"/>
1274    
1275      <target name="jsr166ecompile" depends="configure-compiler">
1276        <mkdir dir="${build.jsr166e.classes.dir}"/>
1277    
1278        <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        <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="jsr166ejar" depends="jsr166ecompile">
1325        <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="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      <target name="jsr166e-tck-one-java-version" depends="jsr166ejar">
1352        <echo message="Testing with jdk${build.jsr166e.java.version} ..."/>
1353        <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        <javac srcdir="${src.dir}"
1450               destdir="${destdir}"
1451               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        <jar destfile="${product.jar}">
1478          <fileset dir="${destdir}"/>
1479        </jar>
1480    
1481        <run-tck-tests
1482          target="${build.main.java.version}"
1483          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>
1587    
1588  </project>  </project>

Legend:
Removed from v.1.14  
changed lines
  Added in v.1.278

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8