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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.135  
changed lines
  Added in v.1.273

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