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

Diff of /jsr166/build.xml

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

revision 1.57 by tim, Mon Sep 15 14:07:36 2003 UTC revision 1.278 by jsr166, Mon Oct 1 00:10:52 2018 UTC
# Line 1  Line 1 
1  <project name="jsr166" default="usage">  <project name="jsr166" default="usage"
2      xmlns:if="ant:if"
3      xmlns:unless="ant:unless"
4      xmlns:ivy="antlib:org.apache.ivy.ant">
5    
6    <description>    <description>
7  ------------------------------------------------------------------------------  ------------------------------------------------------------------------------
# Line 6  Line 9 
9    
10    Usage: ant [target]    Usage: ant [target]
11    
12      See http://gee.cs.oswego.edu/dl/concurrency-interest/index.html for
13      more details.
14    
15    User-specific settings are read from user.properties.    User-specific settings are read from user.properties.
16    See user.properties.sample for an explanation of some useful settings.    See user.properties.sample for an explanation of some useful settings.
17    
18      The repository contains all dependencies except for ant and the JDK
19      itself.  Because the JDK version matters and because different
20      targets require different JDKs, we assume that users have created a
21      hierarchy containing:
22      $HOME/jdk/jdk8
23      $HOME/jdk/jdk9
24      $HOME/jdk/jdk10
25      $HOME/jdk/jdk11
26      $HOME/jdk/jdk12
27      where each of the above is a JDK or a symlink to same, and
28      $HOME/jdk/src/jdk8
29      $HOME/jdk/src/jdk9
30      $HOME/jdk/src/jdk10
31      $HOME/jdk/src/jdk11
32      $HOME/jdk/src/jdk12
33      where each of the above is a complete JDK source tree
34      (e.g. mercurial forest) or a symlink to same.
35    
36      Alternatively, define ant variables thus:
37      ant -Djdk$N.home=... -Djdk$N.src.home=...
38      for $N in 8 9 10 ...
39    
40      As of 2016-03, the sources in src/main are for jdk9+ only.
41  ------------------------------------------------------------------------------  ------------------------------------------------------------------------------
42    </description>    </description>
43    
44    <target name="usage" description="Advises user to run with -projecthelp">    <!-- Run 'ant -projecthelp' (default target) -->
45      <echo>Run "ant -projecthelp" for full usage information.</echo>    <target name="usage">
46        <java classname="org.apache.tools.ant.Main">
47          <arg value="-projecthelp" />
48        </java>
49    </target>    </target>
50    
51      <!-- HOWTO printf debug: <echo message="prop=${prop}"/> -->
52    
53    <!-- User-specific settings -->    <!-- User-specific settings -->
54    <property file="user.properties"/>    <property file="user.properties"/>
55    
56    
57    <!-- Compilation options -->    <!-- Compilation options -->
58    <property name="build.sourcelevel"    value="1.5"/>    <property name="build.sourcelevel"    value="6"/>
   <property name="build.docsourcelevel" value="1.4"/>  
59    <property name="build.debug"          value="true"/>    <property name="build.debug"          value="true"/>
60    <property name="build.debuglevel"     value="source,lines,vars"/>    <property name="build.debuglevel"     value="source,lines,vars"/>
61    <property name="build.deprecation"    value="false"/>    <property name="build.deprecation"    value="false"/>
62      <property name="build.javadoc.access" value="protected"/>
63    
64    <!-- Build locations -->    <!-- Build locations -->
65    <property name="build.dir"            location="build"/>    <property name="build.dir"                   location="build"/>
66    <property name="build.classes.dir"    location="${build.dir}/classes"/>    <property name="build.classes.dir"           location="${build.dir}/classes"/>
67    <property name="build.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.sinjdocs.dir"   location="${build.dir}/sinjdocs"/>    <property name="build.4jdk7.classes.dir"     location="${build.4jdk7.dir}/classes"/>
72    <property name="build.stripped.dir"   location="${build.dir}/stripped"/>    <property name="build.4jdk7.tck.classes.dir" location="${build.4jdk7.dir}/tck-classes"/>
73    <property name="build.reports.dir"    location="${build.dir}/reports"/>    <property name="build.4jdk7.docs.dir"        location="${build.4jdk7.dir}/docs"/>
74    <property name="build.doccheck.dir"   location="${build.dir}/doccheck"/>  
75    <property name="build.filter.src.dir" location="${build.dir}/filtersrc"/>    <property name="build.4jdk8.dir"             location="${build.dir}/jsr166-4jdk8"/>
76    <property name="build.filter.doccheck.dir" location="${build.dir}/filterdocchk"/>    <property name="build.4jdk8.classes.dir"     location="${build.4jdk8.dir}/classes"/>
77      <property name="build.4jdk8.tck.classes.dir" location="${build.4jdk8.dir}/tck-classes"/>
78      <property name="build.4jdk8.docs.dir"        location="${build.4jdk8.dir}/docs"/>
79    
80      <property name="build.jsr166x.dir"           location="${build.dir}/jsr166x"/>
81      <property name="build.jsr166y.dir"           location="${build.dir}/jsr166y"/>
82      <property name="build.jsr166e.dir"           location="${build.dir}/jsr166e"/>
83      <property name="build.extra166y.dir"         location="${build.dir}/extra166y"/>
84    
85      <property name="build.jsr166x.classes.dir"   location="${build.jsr166x.dir}/classes"/>
86      <property name="build.jsr166y.classes.dir"   location="${build.jsr166y.dir}/classes"/>
87      <property name="build.jsr166e.classes.dir"   location="${build.jsr166e.dir}/classes"/>
88      <property name="build.extra166y.classes.dir" location="${build.extra166y.dir}/classes"/>
89    
90      <!-- JDK locations -->
91      <property name="jdks.home"  location="${user.home}/jdk"/>
92    
93      <macrodef name="defjdklocations">
94        <attribute name="v"/>
95        <sequential>
96        <property name="jdk@{v}.home"     location="${jdks.home}/jdk@{v}"/>
97        <property name="java@{v}"         location="${jdk@{v}.home}/bin/java"/>
98        <property name="javac@{v}"        location="${jdk@{v}.home}/bin/javac"/>
99        <property name="javadoc@{v}"      location="${jdk@{v}.home}/bin/javadoc"/>
100        <property name="jdk@{v}.src.home" location="${jdks.home}/src/jdk@{v}"/>
101        <local name="have.java.base"/>
102        <available property="have.java.base"
103          file="${jdk@{v}.src.home}/jdk/src/java.base/share/classes" type="dir"/>
104        <property name="jdk@{v}.src.dir" location="${jdk@{v}.src.home}/jdk/src/java.base/share/classes"
105          if:set="have.java.base"/>
106        <property name="jdk@{v}.src.dir" location="${jdk@{v}.src.home}/jdk/src/share/classes"
107          unless:set="have.java.base"/>
108        <local name="modules"/>
109        <available property="modules" file="${jdk@{v}.home}/lib/modules" type="file"/>
110        <local name="boot.jar.dir"/>
111        <property name="boot.jar.dir"   location="${jdk@{v}.home}/jre/lib" unless:set="modules"/>
112        <path id="bootclasspath@{v}" unless:set="modules">
113          <pathelement path="${boot.jar.dir}/resources.jar"/>
114          <pathelement path="${boot.jar.dir}/rt.jar"/>
115          <pathelement path="${boot.jar.dir}/jsse.jar"/>
116          <pathelement path="${boot.jar.dir}/jce.jar"/>
117          <pathelement path="${boot.jar.dir}/charsets.jar"/>
118        </path>
119        <property name="bootclasspath@{v}" value="${toString:bootclasspath@{v}}" unless:set="modules"/>
120        </sequential>
121      </macrodef>
122    
123      <macrodef name="mirror-dir">
124        <attribute name="src"/>
125        <attribute name="dst"/>
126        <sequential>
127        <delete dir="@{dst}"/>
128        <mkdir dir="@{dst}"/>
129        <copy todir="@{dst}" preservelastmodified="true">
130          <fileset dir="@{src}"/>
131        </copy>
132        </sequential>
133      </macrodef>
134    
135      <defjdklocations v="6"/>
136      <defjdklocations v="7"/>
137      <defjdklocations v="8"/>
138      <defjdklocations v="9"/>
139      <defjdklocations v="10"/>
140      <defjdklocations v="11"/>
141      <defjdklocations v="12"/>
142    
143    <!-- Source locations -->    <!-- Source locations -->
144    <property name="src.dir"              location="${basedir}/src/main"/>    <property name="src.dir"              location="${basedir}/src/main"/>
145    <property name="test.src.dir"         location="${basedir}/src/test"/>    <property name="test.src.dir"         location="${basedir}/src/test"/>
146    <property name="ant.src.dir"          location="${basedir}/etc/ant"/>    <property name="loops.src.dir"        location="${basedir}/src/loops"/>
147    <property name="stylesheet.dir"       location="${basedir}/etc/xsl"/>    <property name="tck.src.dir"          location="${test.src.dir}/tck"/>
148      <property name="jtreg7.src.dir"       location="${test.src.dir}/jtreg-jdk7"/>
149      <property name="jtreg8.src.dir"       location="${test.src.dir}/jtreg-jdk8"/>
150      <property name="jtreg9.src.dir"       location="${test.src.dir}/jtreg"/>
151      <property name="jtreg10.src.dir"      location="${test.src.dir}/jtreg"/>
152      <property name="jtreg11.src.dir"      location="${test.src.dir}/jtreg"/>
153      <property name="jtreg12.src.dir"      location="${test.src.dir}/jtreg"/>
154      <property name="jtreg.src.dir"        location="${jtreg9.src.dir}"/>
155    <property name="lib.dir"              location="${basedir}/lib"/>    <property name="lib.dir"              location="${basedir}/lib"/>
156    <property name="dist.dir"             location="${basedir}/dist"/>    <property name="dist.dir"             location="${basedir}/dist"/>
157      <property name="topsrc.dir"           location="${basedir}/src"/>
158    <!-- Distribution locations -->    <property name="4jdk7src.dir"         location="${topsrc.dir}/jdk7"/>
159    <property name="dist.javadocs.dir"    location="${dist.dir}/docs"/>    <property name="4jdk8src.dir"         location="${topsrc.dir}/jdk8"/>
160      <property name="jsr166xsrc.dir"       location="${topsrc.dir}/jsr166x"/>
161      <property name="jsr166ysrc.dir"       location="${topsrc.dir}/jsr166y"/>
162      <property name="jsr166esrc.dir"       location="${topsrc.dir}/jsr166e"/>
163      <property name="extra166ysrc.dir"     location="${topsrc.dir}/extra166y"/>
164    
165      <!-- Javadoc locations -->
166      <property name="docs.dir"          location="${build.dir}/docs"/>
167      <property name="4jdk7docs.dir"     location="${build.4jdk7.dir}/docs"/>
168      <property name="4jdk8docs.dir"     location="${build.4jdk8.dir}/docs"/>
169      <property name="jsr166xdocs.dir"   location="${build.jsr166x.dir}/docs"/>
170      <property name="jsr166ydocs.dir"   location="${build.jsr166y.dir}/docs"/>
171      <property name="jsr166edocs.dir"   location="${build.jsr166e.dir}/docs"/>
172      <property name="extra166ydocs.dir" location="${build.extra166y.dir}/docs"/>
173    
174      <property name="dist.docs.dir"          location="${dist.dir}/docs"/>
175      <property name="dist.4jdk7docs.dir"     location="${dist.dir}/jsr166-4jdk7docs"/>
176      <property name="dist.4jdk8docs.dir"     location="${dist.dir}/jsr166-4jdk8docs"/>
177      <property name="dist.jsr166xdocs.dir"   location="${dist.dir}/jsr166xdocs"/>
178      <property name="dist.jsr166ydocs.dir"   location="${dist.dir}/jsr166ydocs"/>
179      <property name="dist.jsr166edocs.dir"   location="${dist.dir}/jsr166edocs"/>
180      <property name="dist.extra166ydocs.dir" location="${dist.dir}/extra166ydocs"/>
181    
182    <!-- Jar locations -->    <!-- Jar locations -->
183    <property name="product.jar"          location="${build.lib.dir}/jsr166.jar"/>    <property name="product.jar"      location="${build.dir}/jsr166.jar"/>
184    <property name="junit.jar"            location="${lib.dir}/junit.jar"/>    <property name="4jdk7product.jar" location="${build.4jdk7.dir}/jsr166-4jdk7.jar"/>
185    <property name="rt.jar"               location="${java.home}/lib/rt.jar"/>    <property name="4jdk8product.jar" location="${build.4jdk8.dir}/jsr166-4jdk8.jar"/>
186    <property name="sinjdoc.jar"          location="${lib.dir}/sinjdoc.jar"/>    <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    <!-- Files excluded from dist-docs -->    <property name="extra166y.jar"    location="${build.extra166y.dir}/extra166y.jar"/>
190    <patternset id="docs.exclusion">    <property name="junit.jar"        location="${lib.dir}/junit.jar"/>
191      <exclude name="java/util/Random.*"/>  
192      <exclude name="sun/misc/Unsafe.*"/>    <!-- Canonical location of jdk docs root, to use with javadoc -Xdocrootparent flag -->
193    </patternset>    <!-- 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    <!-- Main targets -->    <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    <target name="compile"    <property name="java10.docroot.url" value="https://docs.oracle.com/javase/10/docs"/>
200            depends="init, configure-compiler, prepare-src"    <property name="java11.docroot.url" value="https://docs.oracle.com/en/java/javase/11/docs"/>
201            description="Compiles main sources to build folder">    <!-- 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="prepare.src.dir" value="${src.dir}"/>    <!-- <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      <mkdir dir="${build.classes.dir}"/>    <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        <sequential>
247    
248        <local name="modules"/>
249        <condition property="modules">
250          <available file="${jdk@{compile-target}.home}/lib/modules" type="file"/>
251        </condition>
252    
253  <!--      <local name="use-doclint"/>
254      <echo>javac ${build.args}</echo>      <condition property="use-doclint">
255  -->        <not> <equals arg1="@{target}" arg2="7"/> </not>
256        </condition>
257    
258      <javac srcdir="${prepare.src.dir}"      <mkdir dir="@{workdir}/tck-classes"/>
           destdir="${build.classes.dir}"  
             debug="${build.debug}"  
        debuglevel="${build.debuglevel}"  
       deprecation="${build.deprecation}"  
            source="${build.sourcelevel}"  
              fork="true">  
259    
260        <compilerarg    line="${build.args}"/>      <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>      </javac>
284    
285    </target>      <java classname="${jsr166.tckTestClass}"
286              failonerror="true"
287              jvm="${java@{target}}"
288    <target name="jar"            fork="true">
289            depends="init-jar, native-jar"          <jvmarg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/>
290            description="Builds library jar from compiled sources"/>          <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    <target name="test"    <!-- Define jtreg test sets for different jdk versions -->
317            depends="init, configure-tests, report-tests"    <!-- ant -Djtreg.test.pattern="**/ConcurrentHashMap/" -->
318            description="Runs all tests (requires JUnit 3.8.1 in ${ant.home}/lib)" />    <!-- 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      <defjtregtests v="12"/>
332      <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    <target name="checkstyle"      <delete dir="@{workdir}/JTwork"   quiet="true"/>
361            depends="filter-src"      <jtreg dir="${jtreg@{target}.src.dir}"
362            description="Reports on style errors in Java source (verbose, mostly chaff)">             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>
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      <taskdef resource="checkstyletask.properties"    <!-- Main targets -->
             classpath="${lib.dir}/checkstyle-all-2.4.jar"/>  
391    
392      <checkstyle>    <property name="build.main.java.version" value="11"/>
393        <formatter type="plain"/>  <!-- also available: type="xml" -->    <!-- Workaround "no nested properties in ant" -->
394        <fileset dir="${build.filter.src.dir}" includes="**/*.java"/>    <macrodef name="define-build-main-properties">
395      </checkstyle>      <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>    <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    <target name="doccheck"      <mkdir dir="${destdir}"/>
           depends="filter-doccheck"  
           description="Reports on javadoc style errors">  
425    
426      <delete dir="${build.doccheck.dir}"/>      <javac srcdir="${src.dir}"
427      <mkdir dir="${build.doccheck.dir}"/>             destdir="${destdir}"
428               debug="${build.debug}"
429               debuglevel="${build.debuglevel}"
430               deprecation="${build.deprecation}"
431               classpath=""
432               includeAntRuntime="false"
433               includeJavaRuntime="false"
434               encoding="ASCII"
435               executable="${build.main.javac}"
436               fork="true">
437    
438          <include name="**/*.java"/>
439          <compilerarg value="--patch-module=java.base=${src.dir}"/>
440          <compilerarg value="-Xprefer:source"/>
441          <compilerarg value="-XDignore.symbol.file=true"/>
442          <compilerarg value="-Xlint:all"/>
443          <compilerarg line="--doclint-format html5"/>
444          <compilerarg value="-Xdoclint:all/protected,reference/private"/>
445          <compilerarg value="-Werror"/>
446          <compilerarg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/>
447          <compilerarg line="${build.args}"/>
448    
449      <javadoc doclet="com.sun.tools.doclets.doccheck.DocCheck"      </javac>
450           docletpath="${lib.dir}/doccheck.jar"    </target>
             destdir="${build.doccheck.dir}">  
       <packageset dir="${build.filter.doccheck.dir}"/>  
     </javadoc>  
451    
     <echo>DocCheck output is in ${build.doccheck.dir}</echo>  
452    
453      <target name="jar"
454              depends="compile"
455              description="Builds library jar for src/main from compiled sources">
456        <local name="subdir"/>
457        <available property="subdir" file="${build.classes.dir}/java.base" type="dir" value="/java.base"/>
458        <jar destfile="${product.jar}">
459          <fileset dir="${build.classes.dir}${subdir}"/>
460          <manifest>
461            <attribute name="Built-By" value="${user.name}"/>
462            <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
463          </manifest>
464        </jar>
465    </target>    </target>
466    
467    
468    <target name="docs"    <target name="docs"
469            depends="filter-src"            description="Builds javadocs for src/main to dist dir">
           description="Builds javadocs with custom tags to build folder">  
   
     <delete dir="${build.javadocs.dir}"/>  
     <mkdir dir="${build.javadocs.dir}"/>  
470    
471      <javadoc destdir="${build.javadocs.dir}"      <delete dir="${docs.dir}"/>
472                  link="http://java.sun.com/j2se/1.4.1/docs/api"      <mkdir dir="${docs.dir}"/>
             overview="${src.dir}/intro.html"  
               source="${build.docsourcelevel}">  
   
       <tag name="revised" description="Last revised:"/>  
       <tag name="spec"    description="Specified by:"/>  
       <tag name="editor"  description="Last edited by:"/>  
       <tag name="fixme"   description="FIX ME:"/>  
473    
474        <packageset dir="${build.filter.src.dir}"/>      <!-- the packagenames="none" hack below prevents scanning the -->
475        <!-- sourcepath for packages -->
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>
   
   </target>  
   
   
   <target name="sinjdocs"  
           depends="configure-tests"  
           description="Builds javadocs with custom tags to build folder">  
   
     <delete dir="${build.sinjdocs.dir}"/>  
     <mkdir dir="${build.sinjdocs.dir}"/>  
   
     <java classname="net.cscott.sinjdoc.Main" fork="true">  
   
       <jvmarg value="-Xbootclasspath/p:${test.bootclasspath}"/>  
   
       <classpath>  
         <pathelement location="${sinjdoc.jar}"/>  
         <pathelement location="${lib.dir}/jutil.jar"/>  
         <pathelement location="${lib.dir}/cup.jar"/>  
         <path refid="test.classpath"/>  
       </classpath>  
   
       <!-- <arg value="-help"/> -->  
       <!-- <arg value="-verbose"/> -->  
       <!-- <arg value="-link"/>  <arg value="http://java.sun.com/j2se/1.4.1/docs/api"/> -->  
         
       <arg value="-d"/>          <arg value="${build.sinjdocs.dir}"/>  
       <arg value="-sourcepath"/> <arg value="${src.dir}"/>  
       <arg value="-overview"/>   <arg value="${src.dir}/intro.html"/>  
       <arg value="-source"/>     <arg value="${build.sourcelevel}"/>  
         
       <arg value="java.lang"/>  
       <arg value="java.util"/>  
       <arg value="java.util.concurrent"/>  
       <arg value="java.util.concurrent.atomic"/>  
       <arg value="java.util.concurrent.locks"/>  
   
   
     </java>  
   
   </target>  
   
   
   <target name="strip"  
           depends="init, configure-compiler"  
           description="Strip generics from java source (not working yet)">  
   
     <mkdir dir="${build.stripped.dir}"/>  
   
     <!--  
      # javac -s doesn't reliably generate compilable code. It generates  
      # bridge methods (marked as "synthetic") that can have identical  
      # signatures to existing methods except for the return value.  
      -->  
     <javac srcdir="${src.dir}"  
           destdir="${build.stripped.dir}"  
             debug="${build.debug}"  
        debuglevel="${build.debuglevel}"  
       deprecation="${build.deprecation}"  
            source="${build.sourcelevel}"  
              fork="true">  
   
       <compilerarg    line="${build.args} -s"/>  
   
     </javac>  
   
508    </target>    </target>
509    
510    
511    <target name="dist"    <target name="dist"
512            depends="init, dist-clean, dist-jar, dist-docs"            depends="dist-clean, dist-jar, dist-docs"
513            description="Puts all distributable products in single hierarchy"/>            description="Puts all distributable products in single hierarchy"/>
514    
515    
516    <target name="release"    <target name="release"
517            depends="dist"            depends="dist"
518            description="Puts entire CVS tree, plus distribution productions, in a jar">            description="Puts entire CVS tree, plus distribution productions, in a jar">
519    
 <!--  
     #keep build dir? - dl  
     <delete dir="${build.dir}"/>  
 -->  
520      <property name="release.jar" value="dist/jsr166-${version}-dist.jar"/>      <property name="release.jar" value="dist/jsr166-${version}-dist.jar"/>
521    
522      <jar basedir="${basedir}" destfile="${release.jar}">      <jar basedir="${basedir}" destfile="${release.jar}">
523          <!-- <exclude name="build/**"/> -->
524        <exclude name="${release.jar}"/>        <exclude name="${release.jar}"/>
525        <exclude name="user.properties"/>        <exclude name="user.properties"/>
526        <exclude name="etc/notes/**"/>        <exclude name="etc/notes/**"/>
527          <exclude name="src/emulation/**"/>
528        <exclude name="**/SyntaxTest.java"/>        <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>      </jar>
   
535    </target>    </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      <target name="dist-jar"
552              depends="clean, jar">
553        <copy file="${product.jar}" todir="${dist.dir}"/>
554      </target>
555    
556    <target name="dist-docs"    <target name="dist-docs"
557            depends="filter-src"            depends="clean, docs">
558            description="Builds javadocs without custom tags to dist folder">      <mirror-dir src="${docs.dir}" dst="${dist.docs.dir}"/>
559      </target>
560    
561      <delete dir="${dist.javadocs.dir}"/>    <target name="tck"
562      <mkdir dir="${dist.javadocs.dir}"/>            depends="jar"
563              description="Runs tck tests for src/main directly">
564    
565        <run-tck-tests
566          target="${build.main.java.version}"
567          workdir="${build.dir}"
568          classes="${product.jar}">
569          <javac-elements>
570            <compilerarg value="-Werror"/>
571          </javac-elements>
572        </run-tck-tests>
573      </target>
574    
575      <target name="tck-parallelism-1"
576              description="Runs tck with common pool parallelism 1">
577        <antcall target="tck">
578          <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="1"/>
579        </antcall>
580      </target>
581    
582      <target name="tck-parallelism-0"
583              description="Runs tck with common pool parallelism 0">
584        <antcall target="tck">
585          <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="0"/>
586        </antcall>
587      </target>
588    
589      <target name="tck-security-manager"
590              description="Runs tck with a security manager">
591        <antcall target="tck">
592          <param name="jsr166.useSecurityManager" value="true"/>
593        </antcall>
594      </target>
595    
596      <target name="jtreg"
597              depends="jar"
598              description="Runs jtreg tests for src/main using the jtreg ant task">
599        <run-jtreg-tests
600           target="${build.main.java.version}"
601           workdir="${build.dir}"
602           classes="${product.jar}"/>
603      </target>
604    
605      <javadoc destdir="${dist.javadocs.dir}"    <target name="test"
606                  link="http://java.sun.com/j2se/1.4.1/docs/api"            depends="tck, tck-parallelism-1, tck-parallelism-0, jtreg"
607              overview="${src.dir}/intro.html"            description="Runs tck and jtreg tests for src/main"/>
               source="${build.docsourcelevel}">  
608    
609        <packageset dir="${build.filter.src.dir}"/>  <!--   <target name="jtreg8" description="Runs jtreg tests with jdk8"> -->
610    
611      </javadoc>  <!--     <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    
658    </target>    </target>
659    
660    
661    
662    <!-- Internal targets -->    <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    
   <target name="init">  
675    
676      <!-- Version is kept in a separate file -->      <!-- Common options in javac invocations -->
677      <loadfile property="version" srcFile="version.properties"/>      <property name="build.args" value="${warnunchecked.arg}"/>
     <echo>Building JSR-166 version ${version}</echo>  
     <echo>java.home is ${java.home}</echo>  
678    
679    </target>    </target>
680    
681    
   <target name="init-jar">  
682    
683      <mkdir dir="${build.lib.dir}"/>    <!-- Various demos and test programs -->
684    
   </target>  
685    
686      <!-- description="Benchmark from Doug Lea's AQS paper" -->
687      <target name="loops" depends="configure-compiler">
688    
689    <target name="native-jar"      <mkdir dir="${build.loops.dir}"/>
           depends="compile">  
690    
691      <jar destfile="${product.jar}">      <javac srcdir="${loops.src.dir}"
692        <fileset dir="${build.classes.dir}"/>            destdir="${build.loops.dir}"
693      </jar>              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>    </target>
711    
712    
713    <target name="dist-jar"    <target name="compile-test-loops" depends="jar"
714            depends="clean, jar">            description="Compiles all the perf tests in src/test/loops">
715    
716      <copy file="${product.jar}" todir="${dist.dir}"/>      <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>    </target>
736    
737    
738    <target name="compile-ant-filter"    <!-- jsr166 4jdk8 -->
           depends="init">  
739    
740      <mkdir dir="${build.ant.dir}"/>    <target name="4jdk8compile"
741              depends="configure-compiler"
742              description="Compiles src/jdk8 sources, targeting jdk8">
743    
744      <javac srcdir="${ant.src.dir}"      <mkdir dir="${build.4jdk8.classes.dir}"/>
           destdir="${build.ant.dir}"  
            source="1.4"  
     />  
745    
746        <javac srcdir="${4jdk8src.dir}"
747               destdir="${build.4jdk8.classes.dir}"
748               debug="${build.debug}"
749               debuglevel="${build.debuglevel}"
750               deprecation="${build.deprecation}"
751               source="8"
752               target="8"
753               classpath=""
754               bootclasspath="${bootclasspath8}"
755               includeAntRuntime="false"
756               includeJavaRuntime="false"
757               encoding="ASCII"
758               executable="${javac8}"
759               fork="true">
760          <include name="**/*.java"/>
761          <compilerarg value="-Xprefer:source"/>
762          <compilerarg value="-XDignore.symbol.file=true"/>
763          <compilerarg value="-Xlint:all"/>
764          <compilerarg value="-Werror"/>
765          <compilerarg line="${build.args}"/>
766        </javac>
767    </target>    </target>
768    
769      <target name="4jdk8doclint"
770              depends="configure-compiler"
771              description="Finds doclint warnings">
772    
773    <target name="filter-src"      <mkdir dir="${build.4jdk8.classes.dir}"/>
           depends="compile-ant-filter">  
   
     <mkdir dir="${build.filter.src.dir}"/>  
774    
775      <copy todir="${build.filter.src.dir}">      <javac srcdir="${4jdk8src.dir}"
776        <fileset dir="${src.dir}">             destdir="${build.4jdk8.classes.dir}"
777          <include name="**/*.html"/>             debug="${build.debug}"
778        </fileset>             debuglevel="${build.debuglevel}"
779      </copy>             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    
     <copy todir="${build.filter.src.dir}">  
       <fileset dir="${src.dir}">  
         <exclude name="**/*.html"/>  
         <patternset refid="docs.exclusion"/>  
       </fileset>  
       <filterchain>  
798    
799          <!--    <target name="4jdk8jar"
800           # This filter gets rid of angle-bracketed type parameters            depends="4jdk8compile"
801           # so that javadoc can run on the result. The following            description="Builds library jar from compiled sources">
802           # heuristic seems to work:  
803           #      <jar destfile="${4jdk8product.jar}">
804           # For all lines not starting with space(s)-asterisk-space(s),        <fileset dir="${build.4jdk8.classes.dir}"/>
805           #   replace <something> with a space, where there may be more        <manifest>
806           #   than one right angle bracket at the end, and "something"          <attribute name="Built-By" value="${user.name}"/>
807           #   must not contain parens or pipes. (This may need some          <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/>
808           #   tweaking.)        </manifest>
809           -->      </jar>
810      </target>
         <filterreader classname="jsr166.ant.filters.ReplaceFilter"  
                       classpath="${build.ant.dir}">  
           <param name="notmatching" value="^\s+\*\s.*$"/>  
           <param name="pattern"     value="&lt;[^|>()]+?>+"/>  
           <param name="replacement" value=" "/>  
         </filterreader>  
811    
       </filterchain>  
     </copy>  
812    
813      <target name="4jdk8-tck"
814              depends="4jdk8jar"
815              description="Runs tck tests for jsr166-4jdk8 directly">
816    
817        <run-tck-tests
818          target="8"
819          workdir="${build.4jdk8.dir}"
820          classes="${4jdk8product.jar}">
821          <javac-elements>
822            <!-- JDK9+ test classes -->
823            <exclude name="*9Test.java"/>
824            <exclude name="*10Test.java"/>
825            <compilerarg value="-Werror"/>
826          </javac-elements>
827        </run-tck-tests>
828    </target>    </target>
829    
830    
831      <target name="4jdk8-jtreg"
832              depends="4jdk8jar"
833              description="Runs jtreg tests for jsr166-4jdk8 using the jtreg ant task">
834        <run-jtreg-tests
835           target="8"
836           workdir="${build.4jdk8.dir}"
837           classes="${4jdk8product.jar}"/>
838      </target>
839    
840    
841    <target name="filter-doccheck"    <target name="4jdk8-test"
842            depends="filter-src">            depends="4jdk8-tck, 4jdk8-jtreg"
843              description="Runs tck and jtreg tests for jsr166-4jdk8"/>
844    
845    
846      <target name="4jdk8docs"
847              description="Builds javadocs for src/jdk8 to dist dir">
848    
849        <delete dir="${4jdk8docs.dir}"/>
850        <mkdir dir="${4jdk8docs.dir}"/>
851    
852        <javadoc destdir="${4jdk8docs.dir}"
853                 packagenames="none"
854                 link="${java8.api.url}"
855                 overview="${4jdk8src.dir}/intro.html"
856                 access="${build.javadoc.access}"
857                 sourcepath="${4jdk8src.dir}:${jdk8.src.dir}"
858                 classpath=""
859                 source="8"
860                 executable="${javadoc8}"
861                 failonerror = "true">
862          <fileset dir="${4jdk8src.dir}" defaultexcludes="yes">
863            <include name="**/*.java"/>
864          </fileset>
865          <arg line="-Xdocrootparent ${java8.docroot.url}"/>
866          <arg value="-XDignore.symbol.file=true"/>
867          <arg value="-tag"/> <arg value="${javadoc.jls.option}"/>
868          <arg value="-tag"/> <arg value="implSpec:a:&lt;em&gt;Implementation Requirements:&lt;/em&gt;"/>
869          <arg value="-tag"/> <arg value="implNote:a:&lt;em&gt;Implementation Note:&lt;/em&gt;"/>
870    <!-- @apiNote tag currently unused -->
871    <!--  <arg value="-tag"/> <arg value="apiNote:a:&lt;em&gt;API Note:&lt;/em&gt;"/> -->
872        </javadoc>
873      </target>
874    
     <mkdir dir="${build.filter.doccheck.dir}"/>  
875    
876      <copy todir="${build.filter.doccheck.dir}">    <target name="4jdk8dist"
877        <fileset dir="${build.filter.src.dir}">            depends="4jdk8dist-jar, 4jdk8dist-docs"
878          <include name="**/*.html"/>            description="Puts all distributable products in single hierarchy"/>
       </fileset>  
     </copy>  
879    
     <property name="generic.declarations"  
              value="/** Fake type parameter. */ public interface E {} /** Fake type parameter. */ public interface T {} /** Fake type parameter. */ public interface K {} /** Fake type parameter. */ public interface V {}"  
     />  
   
     <copy todir="${build.filter.doccheck.dir}">  
       <fileset dir="${build.filter.src.dir}">  
         <exclude name="**/*.html"/>  
       </fileset>  
       <filterchain>  
         <!--  
          # These two filters try to make the source look like  
          # something that doccheck can process. The first removes  
          # -source 1.4 assertions and the second adds in a bunch  
          # of single letter public nested marker interfaces so that  
          # the generic type parameters are recognized.  
          -->  
   
         <filterreader classname="jsr166.ant.filters.ReplaceFilter"  
                       classpath="${build.ant.dir}">  
           <param name="matching"    value="^\s*assert[\s ].*$"/>  
           <param name="pattern"     value="assert"/>  
           <param name="replacement" value="//assert"/>  
         </filterreader>  
   
         <filterreader classname="jsr166.ant.filters.ReplaceFilter"  
                       classpath="${build.ant.dir}">  
           <param name="matching"    value="^([^*]*(class|interface|implements) .*|)\{.*$"/>  
           <param name="pattern"     value="$"/>  
           <param name="replacement" value=" ${generic.declarations}"/>  
         </filterreader>  
880    
881        </filterchain>    <target name="4jdk8clean"
882      </copy>            description="Removes all 4jdk8 build products">
883        <delete dir="${build.4jdk8.dir}"/>
884      </target>
885    
886    
887      <target name="4jdk8dist-jar"
888              depends="4jdk8clean, 4jdk8jar">
889        <copy file="${4jdk8product.jar}" todir="${dist.dir}"/>
890    </target>    </target>
891    
892    
893    <target name="compile-tests"    <target name="4jdk8dist-docs"
894            depends="jar">            depends="4jdk8clean, 4jdk8docs">
895        <mirror-dir src="${4jdk8docs.dir}" dst="${dist.4jdk8docs.dir}"/>
896      </target>
897    
     <mkdir dir="${build.testcases.dir}"/>  
898    
899  <!--    <!-- jsr166 4jdk7 (no longer maintained) -->
     <echo>javac ${build.args}</echo>  
     <echo>classpath="${test.classpath}"</echo>  
 -->  
900    
901      <javac srcdir="${test.src.dir}"    <target name="4jdk7compile" depends="configure-compiler">
902            destdir="${build.testcases.dir}"      <mkdir dir="${build.4jdk7.classes.dir}"/>
903              debug="${build.debug}"  
904         debuglevel="${build.debuglevel}"      <javac srcdir="${4jdk7src.dir}"
905        deprecation="${build.deprecation}"             destdir="${build.4jdk7.classes.dir}"
906             source="${build.sourcelevel}"             debug="${build.debug}"
907               fork="true">             debuglevel="${build.debuglevel}"
908               deprecation="${build.deprecation}"
909               source="6"
910               target="6"
911               classpath=""
912               bootclasspath="${bootclasspath6}"
913               includeAntRuntime="false"
914               includeJavaRuntime="false"
915               encoding="ASCII"
916               executable="${javac7}"
917               fork="true">
918    
919          <include name="**/*.java"/>
920          <compilerarg value="-Xprefer:source"/>
921          <compilerarg value="-XDignore.symbol.file=true"/>
922          <compilerarg value="-Xlint:all"/>
923          <compilerarg value="-Werror"/>
924        <compilerarg line="${build.args}"/>        <compilerarg line="${build.args}"/>
925        <classpath refid="test.classpath"/>      </javac>
926            </target>
       <include name="java/**"/>  
       <include name="jsr166/**"/>  
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>
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>    </target>
987    
988      <!-- Runs tck tests for jsr166-4jdk7 via junit task (dead experiment) -->
989      <target name="4jdk7-tck-junit" depends="4jdk7compile">
990    
991    <target name="run-tests"      <junit printsummary="true"
992            depends="compile-tests">             showoutput="true"
993               errorProperty="junit.failed"
994               failureProperty="junit.failed"
995               includeantruntime="true"
996               jvm="${java7}"
997               fork="true">
998    
999      <!-- May be overridden by user.properties -->        <jvmarg value="-Xbootclasspath/p:${4jdk7product.jar}"/>
1000      <property name="testcase" value="*"/>        <jvmarg value="-server"/>
1001    
1002      <mkdir dir="${build.reports.dir}"/>        <classpath>
1003            <pathelement location="${junit.jar}"/>
1004            <pathelement location="${build.4jdk7.tck.classes.dir}"/>
1005          </classpath>
1006    
1007      <junit printsummary="true"        <formatter type="brief"/>
              showoutput="true"  
           errorProperty="junit.failed"  
         failureProperty="junit.failed"  
                     dir="${build.reports.dir}"  
                    fork="true">  
   
       <jvmarg value="-Xbootclasspath:${test.bootclasspath}"/>  
   
       <formatter type="xml"/>  
   
       <batchtest todir="${build.reports.dir}">  
         <fileset dir="${test.src.dir}">  
           <include name="java/**/${testcase}Test.java"/>  
           <include name="jsr166/**/${testcase}Test.java"/>  
         </fileset>  
       </batchtest>  
1008    
1009          <test name="${jsr166.tckTestClass}" haltonfailure="no">
1010          </test>
1011      </junit>      </junit>
1012      </target>
1013    
1014      <target name="4jdk7-jtreg" depends="4jdk7jar">
1015        <run-jtreg-tests
1016           target="7"
1017           workdir="${build.4jdk7.dir}"
1018           classes="${4jdk7product.jar}"/>
1019      </target>
1020    
1021      <target name="4jdk7-test" depends="4jdk7-tck, 4jdk7-jtreg"/>
1022    
1023      <target name="4jdk7docs">
1024        <delete dir="${4jdk7docs.dir}"/>
1025        <mkdir dir="${4jdk7docs.dir}"/>
1026    
1027        <javadoc destdir="${4jdk7docs.dir}"
1028                 packagenames="none"
1029                 link="${java7.api.url}"
1030                 overview="${4jdk7src.dir}/intro.html"
1031                 access="${build.javadoc.access}"
1032                 sourcepath="${4jdk7src.dir}:${jdk7.src.dir}"
1033                 classpath=""
1034                 executable="${javadoc7}"
1035                 failonerror = "true">
1036          <fileset dir="${4jdk7src.dir}" defaultexcludes="yes">
1037            <include name="**/*.java"/>
1038          </fileset>
1039          <arg line="-Xdocrootparent ${java7.docroot.url}"/>
1040          <arg value="-XDignore.symbol.file=true"/>
1041        </javadoc>
1042    </target>    </target>
1043    
1044      <target name="4jdk7dist" depends="4jdk7dist-jar, 4jdk7dist-docs"/>
1045    
1046    <target name="report-tests"    <target name="4jdk7clean">
1047            depends="run-tests">      <delete dir="${build.4jdk7.dir}"/>
1048      </target>
1049    
1050      <!-- Sets junit.report.format to frames if redirection is present,    <target name="4jdk7dist-jar" depends="4jdk7clean, 4jdk7jar">
1051           otherwise sets it to noframes. -->      <copy file="${4jdk7product.jar}" todir="${dist.dir}"/>
1052      <available property="junit.report.format"    </target>
1053                    value="frames"  
1054                classname="org.apache.xalan.lib.Redirect"    <target name="4jdk7dist-docs" depends="4jdk7clean, 4jdk7docs">
1055      />      <mirror-dir src="${4jdk7docs.dir}" dst="${dist.4jdk7docs.dir}"/>
1056      <property name="junit.report.format" value="noframes"/>    </target>
1057    
1058      <junitreport todir="${build.reports.dir}">  
1059        <fileset dir="${build.reports.dir}">    <!-- jsr166x (no longer maintained) -->
         <include name="TEST-*.xml"/>  
       </fileset>  
       <report styledir="${stylesheet.dir}"  
                 format="${junit.report.format}"  
                  todir="${build.reports.dir}"  
       />  
     </junitreport>  
1060    
1061      <fail message="Test Cases Failed" if="junit.failed"/>    <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>    </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="configure-compiler">    <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      <property name="unchecked.option" value="-Xlint:unchecked"/>    <target name="jsr166xdist" depends="jsr166xdist-jar, jsr166xdist-docs"/>
1115    
1116      <condition property="warnunchecked.arg" value="${unchecked.option}">    <target name="jsr166xclean">
1117        <istrue value="${build.warnunchecked}"/>      <delete dir="${build.jsr166x.dir}"/>
1118      </condition>    </target>
1119    
1120      <property name="warnunchecked.arg" value=""/>    <target name="jsr166xdist-jar" depends="jsr166xclean, jsr166xjar">
1121            <copy file="${jsr166x.jar}" todir="${dist.dir}"/>
1122      <condition property="prepare.src.dir" value="${build.dir}/prepare-src">    </target>
       <istrue value="${build.nothreads}"/>  
     </condition>  
1123    
1124      <target name="jsr166xdist-docs" depends="jsr166xclean, jsr166xdocs">
1125        <mirror-dir src="${jsr166xdocs.dir}" dst="${dist.jsr166xdocs.dir}"/>
1126      </target>
1127    
     <!-- Common options in javac invocations -->  
     <property name="build.args" value="${warnunchecked.arg}"/>  
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>    </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="prepare-src"    <target name="jsr166ydocs">
1168            depends="configure-compiler"      <delete dir="${jsr166ydocs.dir}"/>
1169            if="prepare.src.dir">      <mkdir dir="${jsr166ydocs.dir}"/>
1170    
1171        <javadoc destdir="${jsr166ydocs.dir}"
1172                 packagenames="jsr166y.*"
1173                 link="${java.api.url}"
1174                 access="${build.javadoc.access}"
1175                 sourcepath="${topsrc.dir}:${jdk6.src.dir}"
1176                 bootclasspath="${bootclasspath6}"
1177                 source="6"
1178                 executable="${javadoc7}"
1179                 failonerror = "true">
1180          <arg line="-Xdocrootparent ${java.docroot.url}"/>
1181          <arg value="-XDignore.symbol.file=true"/>
1182        </javadoc>
1183      </target>
1184    
1185      <mkdir dir="${prepare.src.dir}"/>    <target name="jsr166ydist" depends="jsr166ydist-jar, jsr166ydist-docs"/>
     <copy todir="${prepare.src.dir}">  
       <fileset dir="${src.dir}">  
         <exclude name="java/lang/**"/>  
       </fileset>  
     </copy>  
1186    
1187      <target name="jsr166yclean">
1188        <delete dir="${build.jsr166y.dir}"/>
1189    </target>    </target>
1190    
1191      <target name="jsr166ydist-jar" depends="jsr166yclean, jsr166yjar">
1192        <copy file="${jsr166y.jar}" todir="${dist.dir}"/>
1193      </target>
1194    
1195    <target name="configure-tests"    <target name="jsr166ydist-docs" depends="jsr166yclean, jsr166ydocs">
1196         depends="configure-compiler">      <mirror-dir src="${jsr166ydocs.dir}" dst="${dist.jsr166ydocs.dir}"/>
1197      </target>
1198    
     <!-- junit.framework.Protectable is in JUnit 3.8.1 but not in 3.7 -->  
     <available property="junit.available"  
                classname="junit.framework.Protectable"/>  
   
     <fail message="Need JUnit 3.8.1 in ${ant.home}${file.separator}lib to run tests"  
           unless="junit.available"/>  
   
     <!-- Xalan -->  
     <available property="xalan.available"  
                classname="org.apache.xalan.Version"/>  
1199    
1200      <fail message="Need Xalan 2.5.1 jar in ${ant.home}${file.separator}lib to run tests"    <!-- extra166y (no longer maintained) -->
           unless="xalan.available"/>  
1201    
1202      <target name="extra166ycompile" depends="configure-compiler, jsr166yjar">
1203        <mkdir dir="${build.extra166y.classes.dir}"/>
1204    
1205      <!--      <javac srcdir="${topsrc.dir}"
1206       ! Bootclasspath munging for testing, so JUnit can test our local             destdir="${build.extra166y.classes.dir}"
1207       ! modifications to java.*.             debug="${build.debug}"
1208       -->             debuglevel="${build.debuglevel}"
1209               deprecation="${build.deprecation}"
1210      <path id="test.classpath">             bootclasspath="@{jsr166y.jar}:${bootclasspath6}"
1211        <pathelement location="${product.jar}"/>             classpath=""
1212        <pathelement location="${rt.jar}"/>             source="6"
1213        <pathelement location="${junit.jar}"/>             target="6"
1214        <pathelement location="${build.testcases.dir}"/>             includeAntRuntime="false"
1215      </path>             includeJavaRuntime="false"
1216               encoding="ASCII"
1217               executable="${javac7}"
1218               fork="true">
1219    
1220      <path id="test.bootclasspath">        <include name="extra166y/**/*.java"/>
1221        <path refid="test.classpath"/>        <compilerarg value="-XDignore.symbol.file=true"/>
1222      </path>        <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial"/>
1223          <compilerarg value="-Werror"/>
1224          <compilerarg line="${build.args}"/>
1225        </javac>
1226      </target>
1227    
1228      <!-- Flatten test classpaths into platform-appropriate strings -->    <target name="extra166yjar" depends="extra166ycompile">
1229      <property name="test.classpath"         refid="test.classpath"/>      <jar destfile="${extra166y.jar}" index="true">
1230      <property name="test.bootclasspath"     refid="test.bootclasspath"/>        <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>
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>    </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    <!-- Anthill targets -->    <target name="extra166ydist-jar" depends="extra166yclean, extra166yjar">
1262        <copy file="${extra166y.jar}" todir="${dist.dir}"/>
1263    <target name="anthill-build">    </target>
     
     <!-- Override this in user.properties -->  
     <property name="tiger.home" location="e:/j2sdk1.5.0"/>  
       
     <exec resultproperty="result.property" dir="${basedir}" executable="${tiger.home}/bin/java">  
       <arg value="-Xmx256000000"/>  
       <!-- classpath of new JVM -->  
       <arg value="-classpath"/> <arg path="${java.class.path}"/>  
       <!-- location of Ant home directory -->  
       <arg value="-Dant.home=${ant.home}"/>  
       <!-- the Ant main class -->  
       <arg value="org.apache.tools.ant.Main"/>  
       <!-- The build file -->  
       <arg value="-buildfile"/>  <arg value="build.xml"/>  
       <!-- the target to build on the new Ant instance -->  
       <arg value="-DJAVA_HOME=${tiger.home}"/>  
       <arg value="do-anthill-build"/>  
     </exec>  
   </target>  
     
   <target name="do-anthill-build"  
           depends="jar, test, docs, dist-docs"/>  
1264    
1265    <target name="anthill-publish">    <target name="extra166ydist-docs" depends="extra166yclean, extra166ydocs">
1266        <mirror-dir src="${extra166ydocs.dir}" dst="${dist.extra166ydocs.dir}"/>
1267      </target>
1268    
     <copy todir="${deployDir}/docs/private">  
       <fileset dir="${build.javadocs.dir}"/>  
     </copy>  
1269    
1270      <copy todir="${deployDir}/docs/public">    <!-- jsr166e (no longer maintained) -->
       <fileset dir="${dist.javadocs.dir}"/>  
     </copy>  
1271    
1272      <copy tofile="${deployDir}/index.html"    <property name="build.jsr166e.java.version" value="6"/>
1273            file="${basedir}/etc/anthill-index.html"/>    <property name="build.jsr166e.javac" value="${javac6}"/>
1274    
1275      <copy todir="${deployDir}/notes">    <target name="jsr166ecompile" depends="configure-compiler">
1276        <fileset dir="${basedir}/etc/notes"/>      <mkdir dir="${build.jsr166e.classes.dir}"/>
1277      </copy>  
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>    </target>
1298    
1299      <target name="jsr166edoclint">
1300        <mkdir dir="${build.jsr166e.classes.dir}"/>
1301    
1302    <target name="ng" depends="test">      <javac srcdir="${topsrc.dir}"
1303      <java classname="SuperfluousAbstract" fork="true">             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        <jvmarg value="-Xbootclasspath/p:${test.bootclasspath}"/>    <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      </java>    <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>    </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.57  
changed lines
  Added in v.1.278

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