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

Legend:
Removed from v.1.70  
changed lines
  Added in v.1.254

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8