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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.68  
changed lines
  Added in v.1.276

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