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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.69  
changed lines
  Added in v.1.255

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