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

Diff of /jsr166/build.xml

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

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

Legend:
Removed from v.1.98  
changed lines
  Added in v.1.251

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