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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.65  
changed lines
  Added in v.1.241

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