Parent Directory
|
Revision Log
|
Patch
revision 1.33 by tim, Thu May 29 12:54:10 2003 UTC | revision 1.243 by jsr166, Sat May 13 20:16:55 2017 UTC | |
---|---|---|
# | Line 1 | Line 1 |
1 | <project name="jsr166" default="usage"> | <project name="jsr166" default="usage" |
2 | xmlns:if="ant:if" xmlns:unless="ant:unless" | |
3 | xmlns:ivy="antlib:org.apache.ivy.ant"> | |
4 | ||
5 | <description> | <description> |
6 | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ |
# | Line 6 | Line 8 |
8 | ||
9 | Usage: ant [target] | Usage: ant [target] |
10 | ||
11 | See http://gee.cs.oswego.edu/dl/concurrency-interest/index.html for | |
12 | more details. | |
13 | ||
14 | User-specific settings are read from user.properties. | User-specific settings are read from user.properties. |
15 | See user.properties.sample for an explanation of some useful settings. | See user.properties.sample for an explanation of some useful settings. |
16 | ||
17 | The repository contains all dependencies except for ant and the JDK | |
18 | itself. Because the JDK version matters and because different | |
19 | targets require different JDKs, we assume that users have created a | |
20 | hierarchy containing: | |
21 | $HOME/jdk/jdk8 | |
22 | $HOME/jdk/jdk9 | |
23 | $HOME/jdk/jdk10 | |
24 | where each of the above is a JDK or a symlink to same, and | |
25 | $HOME/jdk/src/jdk8 | |
26 | $HOME/jdk/src/jdk9 | |
27 | $HOME/jdk/src/jdk10 | |
28 | where each of the above is a complete JDK source tree | |
29 | (e.g. mercurial forest) or a symlink to same. | |
30 | ||
31 | Alternatively, define ant variables thus: | |
32 | ant -Djdk$N.home=... -Djdk$N.src.home=... | |
33 | for $N in 8 9 10 ... | |
34 | ||
35 | As of 2016-03, the sources in src/main are for jdk9+ only. | |
36 | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ |
37 | </description> | </description> |
38 | ||
39 | <target name="usage" description="Advises user to run with -projecthelp"> | <!-- Run 'ant -projecthelp' (default target) --> |
40 | <echo>Run "ant -projecthelp" for full usage information.</echo> | <target name="usage"> |
41 | <java classname="org.apache.tools.ant.Main"> | |
42 | <arg value="-projecthelp" /> | |
43 | </java> | |
44 | </target> | </target> |
45 | ||
46 | <!-- HOWTO printf debug: <echo message="prop=${prop}"/> --> | |
47 | ||
48 | <!-- User-specific settings --> | <!-- User-specific settings --> |
49 | <property file="user.properties"/> | <property file="user.properties"/> |
50 | ||
51 | ||
52 | <!-- Compilation options --> | <!-- Compilation options --> |
53 | <property name="build.sourcelevel" value="1.5"/> | <property name="build.sourcelevel" value="6"/> |
<property name="build.docsourcelevel" value="1.4"/> | ||
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.emulation.dir" location="${build.dir}/emulation"/> | <property name="build.testcases.dir" location="${build.dir}/testcases"/> |
63 | <property name="build.testcases.dir" location="${build.dir}/testcases"/> | <property name="build.loops.dir" location="${build.dir}/loops"/> |
64 | <property name="build.lib.dir" location="${build.dir}/lib"/> | |
65 | <property name="build.ant.dir" location="${build.dir}/ant"/> | <property name="build.4jdk7.dir" location="${build.dir}/jsr166-4jdk7"/> |
66 | <property name="build.javadocs.dir" location="${build.dir}/javadocs"/> | <property name="build.4jdk7.classes.dir" location="${build.4jdk7.dir}/classes"/> |
67 | <property name="build.stripped.dir" location="${build.dir}/stripped"/> | <property name="build.4jdk7.tck.classes.dir" location="${build.4jdk7.dir}/tck-classes"/> |
68 | <property name="build.reports.dir" location="${build.dir}/reports"/> | <property name="build.4jdk7.docs.dir" location="${build.4jdk7.dir}/docs"/> |
69 | <property name="build.doccheck.dir" location="${build.dir}/doccheck"/> | |
70 | <property name="build.filter.src.dir" location="${build.dir}/filtersrc"/> | <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"/> | |
77 | <property name="build.jsr166e.dir" location="${build.dir}/jsr166e"/> | |
78 | <property name="build.extra166y.dir" location="${build.dir}/extra166y"/> | |
79 | ||
80 | <property name="build.jsr166x.classes.dir" location="${build.jsr166x.dir}/classes"/> | |
81 | <property name="build.jsr166y.classes.dir" location="${build.jsr166y.dir}/classes"/> | |
82 | <property name="build.jsr166e.classes.dir" location="${build.jsr166e.dir}/classes"/> | |
83 | <property name="build.extra166y.classes.dir" location="${build.extra166y.dir}/classes"/> | |
84 | ||
85 | <!-- JDK locations --> | |
86 | <property name="jdks.home" location="${user.home}/jdk"/> | |
87 | ||
88 | <macrodef name="defjdklocations"> | |
89 | <attribute name="v"/> | |
90 | <sequential> | |
91 | <property name="jdk@{v}.home" location="${jdks.home}/jdk@{v}"/> | |
92 | <property name="java@{v}" location="${jdk@{v}.home}/bin/java"/> | |
93 | <property name="javac@{v}" location="${jdk@{v}.home}/bin/javac"/> | |
94 | <property name="javadoc@{v}" location="${jdk@{v}.home}/bin/javadoc"/> | |
95 | <property name="jdk@{v}.src.home" location="${jdks.home}/src/jdk@{v}"/> | |
96 | <local name="have.java.base"/> | |
97 | <available property="have.java.base" | |
98 | file="${jdk@{v}.src.home}/jdk/src/java.base/share/classes" type="dir"/> | |
99 | <property name="jdk@{v}.src.dir" location="${jdk@{v}.src.home}/jdk/src/java.base/share/classes" | |
100 | if:set="have.java.base"/> | |
101 | <property name="jdk@{v}.src.dir" location="${jdk@{v}.src.home}/jdk/src/share/classes" | |
102 | unless:set="have.java.base"/> | |
103 | <local name="modules"/> | |
104 | <available property="modules" file="${jdk@{v}.home}/jmods" type="dir"/> | |
105 | <local name="boot.jar.dir"/> | |
106 | <property name="boot.jar.dir" location="${jdk@{v}.home}/jre/lib" unless:set="modules"/> | |
107 | <path id="bootclasspath@{v}" unless:set="modules"> | |
108 | <pathelement path="${boot.jar.dir}/resources.jar"/> | |
109 | <pathelement path="${boot.jar.dir}/rt.jar"/> | |
110 | <pathelement path="${boot.jar.dir}/jsse.jar"/> | |
111 | <pathelement path="${boot.jar.dir}/jce.jar"/> | |
112 | <pathelement path="${boot.jar.dir}/charsets.jar"/> | |
113 | </path> | |
114 | <property name="bootclasspath@{v}" value="${toString:bootclasspath@{v}}" unless:set="modules"/> | |
115 | </sequential> | |
116 | </macrodef> | |
117 | ||
118 | <macrodef name="mirror-dir"> | |
119 | <attribute name="src"/> | |
120 | <attribute name="dst"/> | |
121 | <sequential> | |
122 | <delete dir="@{dst}"/> | |
123 | <mkdir dir="@{dst}"/> | |
124 | <copy todir="@{dst}" preservelastmodified="true"> | |
125 | <fileset dir="@{src}"/> | |
126 | </copy> | |
127 | </sequential> | |
128 | </macrodef> | |
129 | ||
130 | <defjdklocations v="6"/> | |
131 | <defjdklocations v="7"/> | |
132 | <defjdklocations v="8"/> | |
133 | <defjdklocations v="9"/> | |
134 | <defjdklocations v="10"/> | |
135 | ||
136 | <!-- Source locations --> | <!-- Source locations --> |
137 | <property name="src.dir" location="${basedir}/src/main"/> | <property name="src.dir" location="${basedir}/src/main"/> |
<property name="emulation.src.dir" location="${basedir}/src/emulation"/> | ||
138 | <property name="test.src.dir" location="${basedir}/src/test"/> | <property name="test.src.dir" location="${basedir}/src/test"/> |
139 | <property name="ant.src.dir" location="${basedir}/etc/ant"/> | <property name="loops.src.dir" location="${basedir}/src/loops"/> |
140 | <property name="stylesheet.dir" location="${basedir}/etc/xsl"/> | <property name="tck.src.dir" location="${test.src.dir}/tck"/> |
141 | <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"/> | |
149 | <!-- Distribution locations --> | <property name="4jdk7src.dir" location="${topsrc.dir}/jdk7"/> |
150 | <property name="dist.javadocs.dir" location="${dist.dir}/docs"/> | <property name="4jdk8src.dir" location="${topsrc.dir}/jdk8"/> |
151 | <property name="jsr166xsrc.dir" location="${topsrc.dir}/jsr166x"/> | |
152 | <property name="jsr166ysrc.dir" location="${topsrc.dir}/jsr166y"/> | |
153 | <property name="jsr166esrc.dir" location="${topsrc.dir}/jsr166e"/> | |
154 | <property name="extra166ysrc.dir" location="${topsrc.dir}/extra166y"/> | |
155 | ||
156 | <!-- Javadoc locations --> | |
157 | <property name="docs.dir" location="${build.dir}/docs"/> | |
158 | <property name="4jdk7docs.dir" location="${build.4jdk7.dir}/docs"/> | |
159 | <property name="4jdk8docs.dir" location="${build.4jdk8.dir}/docs"/> | |
160 | <property name="jsr166xdocs.dir" location="${build.jsr166x.dir}/docs"/> | |
161 | <property name="jsr166ydocs.dir" location="${build.jsr166y.dir}/docs"/> | |
162 | <property name="jsr166edocs.dir" location="${build.jsr166e.dir}/docs"/> | |
163 | <property name="extra166ydocs.dir" location="${build.extra166y.dir}/docs"/> | |
164 | ||
165 | <property name="dist.docs.dir" location="${dist.dir}/docs"/> | |
166 | <property name="dist.4jdk7docs.dir" location="${dist.dir}/jsr166-4jdk7docs"/> | |
167 | <property name="dist.4jdk8docs.dir" location="${dist.dir}/jsr166-4jdk8docs"/> | |
168 | <property name="dist.jsr166xdocs.dir" location="${dist.dir}/jsr166xdocs"/> | |
169 | <property name="dist.jsr166ydocs.dir" location="${dist.dir}/jsr166ydocs"/> | |
170 | <property name="dist.jsr166edocs.dir" location="${dist.dir}/jsr166edocs"/> | |
171 | <property name="dist.extra166ydocs.dir" location="${dist.dir}/extra166ydocs"/> | |
172 | ||
173 | <!-- Jar locations --> | <!-- Jar locations --> |
174 | <property name="product.jar" location="${build.lib.dir}/jsr166.jar"/> | <property name="product.jar" location="${build.dir}/jsr166.jar"/> |
175 | <property name="junit.jar" location="${lib.dir}/junit.jar"/> | <property name="4jdk7product.jar" location="${build.4jdk7.dir}/jsr166-4jdk7.jar"/> |
176 | <property name="rt.jar" location="${java.home}/lib/rt.jar"/> | <property name="4jdk8product.jar" location="${build.4jdk8.dir}/jsr166-4jdk8.jar"/> |
177 | <property name="jsr166x.jar" location="${build.jsr166x.dir}/jsr166x.jar"/> | |
178 | <property name="jsr166y.jar" location="${build.jsr166y.dir}/jsr166y.jar"/> | |
179 | <property name="jsr166e.jar" location="${build.jsr166e.dir}/jsr166e.jar"/> | |
180 | <property name="extra166y.jar" location="${build.extra166y.dir}/extra166y.jar"/> | |
181 | <property name="junit.jar" location="${lib.dir}/junit.jar"/> | |
182 | ||
183 | <!-- Canonical location of jdk docs root, to use with javadoc -Xdocrootparent flag --> | |
184 | <property name="java5.docroot.url" value="http://docs.oracle.com/javase/1.5.0/docs"/> | |
185 | <property name="java6.docroot.url" value="http://docs.oracle.com/javase/6/docs"/> | |
186 | <property name="java7.docroot.url" value="http://docs.oracle.com/javase/7/docs"/> | |
187 | <property name="java8.docroot.url" value="http://docs.oracle.com/javase/8/docs"/> | |
188 | <!-- The expected canonical location does not yet exist as of 2016-04 --> | |
189 | <!-- <property name="java9.docroot.url" value="http://docs.oracle.com/javase/9/docs"/> --> | |
190 | <property name="java9.docroot.url" value="http://download.java.net/java/jdk9/docs"/> | |
191 | <!-- Default jdk doc location (latest stable release seems best) --> | |
192 | <property name="java.docroot.url" value="${java8.docroot.url}"/> | |
193 | ||
194 | <!-- Canonical location of jdk API docs, to use with javadoc link attribute --> | |
195 | <property name="java5.api.url" value="${java5.docroot.url}/api/"/> | |
196 | <property name="java6.api.url" value="${java6.docroot.url}/api/"/> | |
197 | <property name="java7.api.url" value="${java7.docroot.url}/api/"/> | |
198 | <property name="java8.api.url" value="${java8.docroot.url}/api/"/> | |
199 | <property name="java9.api.url" value="${java9.docroot.url}/api/"/> | |
200 | <property name="java.api.url" value="${java.docroot.url}/api/"/> | |
201 | ||
202 | <!-- Define the "jtreg" task --> | |
203 | <!-- See the docs in "jtreg -onlineHelp" --> | |
204 | <taskdef name="jtreg" classname="com.sun.javatest.regtest.Main$$Ant" | |
205 | classpath="${lib.dir}/jtreg.jar" /> | |
206 | ||
207 | <!-- Tck options; see JSR166TestCase.java | |
208 | To profile a single tck test class: | |
209 | ant -Djsr166.profileTests=true -Djsr166.profileThreshold=10 -Djsr166.tckTestClass=CompletableFutureTest tck | |
210 | To stress test a single tck test class: | |
211 | ant -Djsr166.tckTestClass=CountedCompleterTest -Djsr166.runsPerTest=100 tck | |
212 | To stress test a single tck test method: | |
213 | ant -Djsr166.tckTestClass=RecursiveTaskTest -Djsr166.runsPerTest=1000 -Djsr166.methodFilter=testAbnormalInvokeAll3 tck | |
214 | --> | |
215 | <property name="jsr166.tckTestClass" value="JSR166TestCase"/> | |
216 | <macrodef name="run-tck-tests"> | |
217 | <attribute name="tck.src.dir" default="${tck.src.dir}"/> | |
218 | <attribute name="target"/> | |
219 | <attribute name="compile-target" default="@{target}"/> | |
220 | <attribute name="workdir"/> | |
221 | <attribute name="classes"/> | |
222 | <!-- | |
223 | <attribute name="jvmflags" default="-XX:+UseParallelGC -XX:-UseBiasedLocking -ea -esa -Djsr166.testImplementationDetails=true"/> | |
224 | --> | |
225 | <attribute name="jvmflags" default="-ea -esa -Djsr166.testImplementationDetails=true"/> | |
226 | <element name="javac-elements" optional="true"/> | |
227 | ||
228 | <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 | <!-- Files excluded from emulation and dist-docs --> | <javac srcdir="@{tck.src.dir}" |
243 | <patternset id="emulation.excludes"> | destdir="@{workdir}/tck-classes" |
244 | <exclude name="java/util/Random.*"/> | debug="${build.debug}" |
245 | <exclude name="sun/misc/Unsafe.*"/> | debuglevel="${build.debuglevel}" |
246 | </patternset> | deprecation="${build.deprecation}" |
247 | source="@{compile-target}" | |
248 | target="@{compile-target}" | |
249 | classpath="${junit.jar}" | |
250 | includeAntRuntime="false" | |
251 | includeJavaRuntime="false" | |
252 | encoding="ASCII" | |
253 | executable="${javac@{compile-target}}" | |
254 | fork="true"> | |
255 | ||
256 | <include name="*.java"/> | |
257 | <compilerarg value="-XDignore.symbol.file=true"/> | |
258 | <compilerarg value="-Xlint:all,-unchecked,-rawtypes,-serial,-deprecation,-try"/> | |
259 | <compilerarg value="-Xdoclint:reference/private" if:set="use-doclint"/> | |
260 | <compilerarg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/> | |
261 | <compilerarg value="--patch-module=java.base=@{classes}" if:set="modules"/> | |
262 | <compilerarg line="${build.args}"/> | |
263 | <javac-elements/> | |
264 | ||
265 | </javac> | |
266 | ||
267 | <java classname="${jsr166.tckTestClass}" | |
268 | failonerror="true" | |
269 | jvm="${java@{target}}" | |
270 | fork="true"> | |
271 | <jvmarg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/> | |
272 | <jvmarg value="--patch-module=java.base=@{classes}" if:set="modules"/> | |
273 | <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" if:set="modules"/> | |
274 | <jvmarg value="--add-opens=java.base/java.util=ALL-UNNAMED" if:set="modules"/> | |
275 | <jvmarg value="--add-opens=java.base/java.util.concurrent=ALL-UNNAMED" if:set="modules"/> | |
276 | <jvmarg value="--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED" if:set="modules"/> | |
277 | <jvmarg value="--add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED" if:set="modules"/> | |
278 | <jvmarg line="@{jvmflags}"/> | |
279 | <!-- ant -Dvmoptions="-Xmx8m" -Djsr166.tckTestClass=CompletableFutureTest tck --> | |
280 | <jvmarg line="${vmoptions}" if:set="vmoptions"/> | |
281 | ||
282 | <!-- ant -Djava.util.concurrent.ForkJoinPool.common.parallelism=1 tck --> | |
283 | <syspropertyset id="system-properties-used-by-tck"> | |
284 | <propertyref prefix="java.util.concurrent.ForkJoinPool"/> | |
285 | <propertyref prefix="jsr166."/> | |
286 | <propertyref name="test.timeout.factor"/> | |
287 | </syspropertyset> | |
288 | ||
289 | <classpath> | |
290 | <pathelement location="${junit.jar}"/> | |
291 | <pathelement location="@{workdir}/tck-classes"/> | |
292 | </classpath> | |
293 | </java> | |
294 | ||
295 | </sequential> | |
296 | </macrodef> | |
297 | ||
298 | <!-- Define jtreg test sets for different jdk versions --> | |
299 | <fileset dir="${jtreg9.src.dir}"> | |
300 | <patternset id="jdk9.jtreg.tests"> | |
301 | <include name="**/*.java"/> | |
302 | </patternset> | |
303 | </fileset> | |
304 | ||
305 | <fileset dir="${jtreg8.src.dir}"> | |
306 | <patternset id="jdk8.jtreg.tests"> | |
307 | <include name="**/*.java"/> | |
308 | </patternset> | |
309 | </fileset> | |
310 | ||
311 | <fileset dir="${jtreg7.src.dir}"> | |
312 | <patternset id="jdk7.jtreg.tests"> | |
313 | <include name="**/*.java"/> | |
314 | </patternset> | |
315 | </fileset> | |
316 | ||
317 | <!-- ant -Djtreg.flags=-timeoutFactor:4 --> | |
318 | <property name="jtreg.flags" value=""/> | |
319 | ||
320 | <macrodef name="run-jtreg-tests"> | |
321 | <!-- ant -Djtreg9.src.dir=src/test/jtreg/util/concurrent/CompletableFuture jtreg --> | |
322 | <attribute name="source" default="7"/> | |
323 | <attribute name="target"/> | |
324 | <attribute name="workdir"/> | |
325 | <attribute name="classes"/> | |
326 | <attribute name="jtregflags" default=""/> | |
327 | ||
328 | <sequential> | |
329 | ||
330 | <!-- ant -Djtreg.verbose=time,fail,error jtreg --> | |
331 | <property name="jtreg.verbose" value="nopass,fail,error"/> | |
332 | ||
333 | <local name="modules"/> | |
334 | <condition property="modules"> | |
335 | <available file="${jdk@{target}.home}/jmods" type="dir"/> | |
336 | </condition> | |
337 | ||
338 | <delete dir="@{workdir}/JTwork" quiet="true"/> | |
339 | <jtreg dir="${jtreg@{target}.src.dir}" | |
340 | jdk="${jdk@{target}.home}" | |
341 | workDir="@{workdir}/JTwork"> | |
342 | <patternset refid="jdk@{target}.jtreg.tests"/> | |
343 | <arg value="-Xbootclasspath/p:@{classes}" unless:set="modules"/> | |
344 | <arg value="-javacoptions:--patch-module java.base=@{classes}" if:set="modules"/> | |
345 | <arg value="-vmoptions:--patch-module java.base=@{classes}" if:set="modules"/> | |
346 | <arg value="-agentvm"/> | |
347 | <arg value="-noreport"/> | |
348 | <arg value="-verbose:${jtreg.verbose}"/> | |
349 | <arg value="-vmoptions:-esa -ea"/> | |
350 | <arg value="-automatic"/> | |
351 | <arg value="-k:!ignore"/> | |
352 | <arg line="@{jtregflags}"/> | |
353 | <arg line="${jtreg.flags}"/> | |
354 | </jtreg> | |
355 | </sequential> | |
356 | </macrodef> | |
357 | ||
358 | <!-- ALoops classpath --> | |
359 | <path id="loops.classpath"> | |
360 | <pathelement location="${build.loops.dir}"/> | |
361 | </path> | |
362 | ||
363 | <!-- Support @jls tag, used in jdk8+ javadoc --> | |
364 | <property name="javadoc.jls.cite" value="The Java&trade; Language Specification"/> | |
365 | <property name="javadoc.jls.option" value="jls:a:See <cite>${javadoc.jls.cite}</cite>:"/> | |
366 | ||
367 | <!-- Main targets --> | <!-- Main targets --> |
368 | ||
369 | <property name="build.main.java.version" value="9"/> | |
370 | <property name="build.main.javac" value="${javac9}"/> | |
371 | ||
372 | <target name="dists" | |
373 | depends="dist, 4jdk8dist" | |
374 | description="Builds all public jars and docs"/> | |
375 | <!-- | |
376 | depends="dist, 4jdk8dist, 4jdk7dist, jsr166edist, jsr166ydist, extra166ydist, jsr166xdist" | |
377 | --> | |
378 | ||
379 | <target name="compile" | <target name="compile" |
380 | depends="init, configure-compiler, prepare-src" | depends="configure-compiler" |
381 | description="Compiles main sources to build folder"> | description="Compiles src/main sources to build dir"> |
382 | ||
383 | <property name="prepare.src.dir" value="${src.dir}"/> | <local name="modules"/> |
384 | <condition property="modules"> | |
385 | <and> | |
386 | <available file="${jdk9.home}/jmods" type="dir"/> | |
387 | <equals arg1="9" arg2="${build.main.java.version}"/> | |
388 | </and> | |
389 | </condition> | |
390 | ||
391 | <mkdir dir="${build.classes.dir}"/> | <local name="destdir"/> |
392 | <property name="destdir" value="${build.classes.dir}/java.base" if:set="modules"/> | |
393 | <property name="destdir" value="${build.classes.dir}" unless:set="modules"/> | |
394 | ||
395 | <javac srcdir="${prepare.src.dir}" | <mkdir dir="${destdir}"/> |
destdir="${build.classes.dir}" | ||
debug="${build.debug}" | ||
debuglevel="${build.debuglevel}" | ||
deprecation="${build.deprecation}" | ||
source="${build.sourcelevel}" | ||
fork="true"> | ||
396 | ||
397 | <bootclasspath refid="javac.bootclasspath"/> | <javac srcdir="${src.dir}" |
398 | <compilerarg line="${build.javac.args}"/> | destdir="${destdir}" |
399 | debug="${build.debug}" | |
400 | debuglevel="${build.debuglevel}" | |
401 | deprecation="${build.deprecation}" | |
402 | classpath="" | |
403 | includeAntRuntime="false" | |
404 | includeJavaRuntime="false" | |
405 | encoding="ASCII" | |
406 | executable="${build.main.javac}" | |
407 | fork="true"> | |
408 | ||
409 | <include name="**/*.java"/> | |
410 | <compilerarg value="--patch-module=java.base=${src.dir}" if:set="modules"/> | |
411 | <compilerarg value="-Xprefer:source"/> | |
412 | <compilerarg value="-XDignore.symbol.file=true"/> | |
413 | <compilerarg value="-Xlint:all"/> | |
414 | <compilerarg line="--doclint-format html5"/> | |
415 | <compilerarg value="-Xdoclint:all/protected,reference/private"/> | |
416 | <compilerarg value="-Werror"/> | |
417 | <compilerarg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/> | |
418 | <compilerarg line="${build.args}"/> | |
419 | ||
420 | </javac> | </javac> |
421 | </target> | </target> |
422 | ||
423 | ||
424 | <target name="jar" | <target name="jar" |
425 | depends="configure-emulation, init-jar, native-jar, emulation-jar" | depends="compile" |
426 | description="Builds library jar from compiled sources"/> | description="Builds library jar for src/main from compiled sources"> |
427 | <local name="subdir"/> | |
428 | <available property="subdir" file="${build.classes.dir}/java.base" type="dir" value="/java.base"/> | |
429 | <target name="test" | <jar destfile="${product.jar}"> |
430 | depends="init, configure-tests, report-tests" | <fileset dir="${build.classes.dir}${subdir}"/> |
431 | description="Runs all tests (requires JUnit 3.8.1 in ${ant.home}/lib)" /> | <manifest> |
432 | <attribute name="Built-By" value="${user.name}"/> | |
433 | <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/> | |
434 | </manifest> | |
435 | </jar> | |
436 | </target> | |
437 | ||
438 | ||
439 | <target name="checkstyle" | <target name="docs" |
440 | depends="filter-src" | description="Builds javadocs for src/main to dist dir"> |
description="Reports on style errors in Java source (verbose, mostly chaff)"> | ||
441 | ||
442 | <taskdef resource="checkstyletask.properties" | <delete dir="${docs.dir}"/> |
443 | classpath="${lib.dir}/checkstyle-all-2.4.jar"/> | <mkdir dir="${docs.dir}"/> |
444 | ||
445 | <checkstyle> | <!-- the packagenames="none" hack below prevents scanning the --> |
446 | <formatter type="plain"/> <!-- also available: type="xml" --> | <!-- sourcepath for packages --> |
<fileset dir="${build.filter.src.dir}" includes="**/*.java"/> | ||
</checkstyle> | ||
447 | ||
448 | <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}" --> | |
449 | <!-- TODO: sourcepath="${src.dir}:${jdk9.src.dir}:${jdk9.src.home}/jdk/src/java.logging/share/classes" --> | |
450 | <!-- TODO: sourcepath="${src.dir}:${jdk9.home}/src.zip" --> | |
451 | <!-- TODO: <arg line="-sourcepath ${src.dir}:${jdk9.home}/src.zip"/> --> | |
452 | <!-- TODO: <arg line="- -module-source-path ${jdk9.home}/src.zip"/> --> | |
453 | <javadoc destdir="${docs.dir}" | |
454 | packagenames="none" | |
455 | link="${java9.api.url}" | |
456 | overview="${src.dir}/intro.html" | |
457 | access="${build.javadoc.access}" | |
458 | sourcepath="${src.dir}" | |
459 | classpath="" | |
460 | executable="${javadoc9}"> | |
461 | <fileset dir="${src.dir}" defaultexcludes="yes"> | |
462 | <include name="**/*.java"/> | |
463 | </fileset> | |
464 | <arg line="-Xdocrootparent ${java9.docroot.url}"/> | |
465 | <arg line="-Xmaxerrs 1000 -Xmaxwarns 1000"/> | |
466 | <arg value="-XDignore.symbol.file=true"/> | |
467 | <arg value="-html5"/> | |
468 | <arg value="--patch-module=java.base=${src.dir}"/> | |
469 | <arg value="-tag"/> | |
470 | <arg value="${javadoc.jls.option}"/> | |
471 | <!-- @apiNote currently unused --> | |
472 | <!-- <arg value="-tag"/> --> | |
473 | <!-- <arg value="apiNote:a:API Note:"/> --> | |
474 | <arg value="-tag"/> | |
475 | <arg value="implSpec:a:Implementation Requirements:"/> | |
476 | <arg value="-tag"/> | |
477 | <arg value="implNote:a:Implementation Note:"/> | |
478 | <!-- tags added in jdk9: currently unused --> | |
479 | <!-- <arg value="-tag"/> --> | |
480 | <!-- <arg value="revised:X"/> --> | |
481 | <!-- <arg value="-tag"/> --> | |
482 | <!-- <arg value="spec:X"/> --> | |
483 | </javadoc> | |
484 | </target> | </target> |
485 | ||
486 | ||
487 | <target name="doccheck" | <target name="dist" |
488 | depends="filter-src" | depends="dist-clean, dist-jar, dist-docs" |
489 | description="Reports on javadoc style errors (not working yet)"> | description="Puts all distributable products in single hierarchy"/> |
<delete dir="${build.doccheck.dir}"/> | ||
<mkdir dir="${build.doccheck.dir}"/> | ||
490 | ||
<javadoc doclet="com.sun.tools.doclets.doccheck.DocCheck" | ||
docletpath="${lib.dir}/doccheck.jar" | ||
destdir="${build.doccheck.dir}"> | ||
<packageset dir="${build.filter.src.dir}"/> | ||
</javadoc> | ||
491 | ||
492 | <target name="release" | |
493 | depends="dist" | |
494 | description="Puts entire CVS tree, plus distribution productions, in a jar"> | |
495 | ||
496 | <property name="release.jar" value="dist/jsr166-${version}-dist.jar"/> | |
497 | ||
498 | <jar basedir="${basedir}" destfile="${release.jar}"> | |
499 | <!-- <exclude name="build/**"/> --> | |
500 | <exclude name="${release.jar}"/> | |
501 | <exclude name="user.properties"/> | |
502 | <exclude name="etc/notes/**"/> | |
503 | <exclude name="src/emulation/**"/> | |
504 | <exclude name="**/SyntaxTest.java"/> | |
505 | <exclude name="**/SuperfluousAbstract.java"/> | |
506 | <manifest> | |
507 | <attribute name="Built-By" value="${user.name}"/> | |
508 | <attribute name="Implementation-Vendor" value="JCP JSR-166 Expert Group."/> | |
509 | </manifest> | |
510 | </jar> | |
511 | </target> | </target> |
512 | ||
513 | ||
514 | <target name="docs" | <target name="clean" |
515 | depends="filter-src" | description="Removes all build products"> |
516 | description="Builds javadocs with custom tags to build folder"> | <delete dir="${build.dir}"/> |
517 | </target> | |
518 | ||
<delete dir="${build.javadocs.dir}"/> | ||
<mkdir dir="${build.javadocs.dir}"/> | ||
519 | ||
520 | <javadoc destdir="${build.javadocs.dir}" | <target name="dist-clean" |
521 | link="http://java.sun.com/j2se/1.4.1/docs/api" | description="Removes all build and distribution products"> |
522 | overview="${src.dir}/intro.html" | <delete dir="${build.dir}"/> |
523 | source="${build.docsourcelevel}"> | <delete dir="${dist.dir}"/> |
524 | </target> | |
<tag name="revised" description="Last revised:"/> | ||
<tag name="spec" description="Specified by:"/> | ||
<tag name="editor" description="Last edited by:"/> | ||
<tag name="fixme" description="FIX ME:"/> | ||
525 | ||
<packageset dir="${build.filter.src.dir}"/> | ||
526 | ||
527 | </javadoc> | <target name="dist-jar" |
528 | depends="clean, jar"> | |
529 | <copy file="${product.jar}" todir="${dist.dir}"/> | |
530 | </target> | |
531 | ||
532 | <target name="dist-docs" | |
533 | depends="clean, docs"> | |
534 | <mirror-dir src="${docs.dir}" dst="${dist.docs.dir}"/> | |
535 | </target> | </target> |
536 | ||
537 | <target name="tck" | |
538 | depends="jar" | |
539 | description="Runs tck tests for src/main directly"> | |
540 | ||
541 | <run-tck-tests | |
542 | target="${build.main.java.version}" | |
543 | workdir="${build.dir}" | |
544 | classes="${product.jar}"> | |
545 | <javac-elements> | |
546 | <compilerarg value="-Werror"/> | |
547 | </javac-elements> | |
548 | </run-tck-tests> | |
549 | </target> | |
550 | ||
551 | <target name="tck-parallelism-1" | |
552 | description="Runs tck with common pool parallelism 1"> | |
553 | <antcall target="tck"> | |
554 | <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="1"/> | |
555 | </antcall> | |
556 | </target> | |
557 | ||
558 | <target name="tck-parallelism-0" | |
559 | description="Runs tck with common pool parallelism 0"> | |
560 | <antcall target="tck"> | |
561 | <param name="java.util.concurrent.ForkJoinPool.common.parallelism" value="0"/> | |
562 | </antcall> | |
563 | </target> | |
564 | ||
565 | <target name="tck-security-manager" | |
566 | description="Runs tck with a security manager"> | |
567 | <antcall target="tck"> | |
568 | <param name="jsr166.useSecurityManager" value="true"/> | |
569 | </antcall> | |
570 | </target> | |
571 | ||
572 | <target name="jtreg" | |
573 | depends="jar" | |
574 | description="Runs jtreg tests for src/main using the jtreg ant task"> | |
575 | <run-jtreg-tests | |
576 | target="${build.main.java.version}" | |
577 | workdir="${build.dir}" | |
578 | classes="${product.jar}"/> | |
579 | </target> | |
580 | ||
581 | <target name="strip" | <target name="test" |
582 | depends="init, configure-compiler" | depends="tck, tck-parallelism-1, tck-parallelism-0, jtreg" |
583 | description="Strip generics from java source (not working yet)"> | description="Runs tck and jtreg tests for src/main"/> |
584 | ||
585 | <mkdir dir="${build.stripped.dir}"/> | <!-- <target name="jtreg8" description="Runs jtreg tests with jdk8"> --> |
586 | ||
587 | <!-- | <!-- <antcall target="jtreg"> --> |
588 | # javac -s doesn't reliably generate compilable code. It generates | <!-- <param name="build.main.java.version" value="8"/> --> |
589 | # bridge methods (marked as "synthetic") that can have identical | <!-- <param name="build.main.javac" value="${javac8}"/> --> |
590 | # signatures to existing methods except for the return value. | <!-- </antcall> --> |
591 | --> | |
592 | <javac srcdir="${src.dir}" | <!-- </target> --> |
593 | destdir="${build.stripped.dir}" | |
594 | debug="${build.debug}" | <!-- <target name="test89" --> |
595 | debuglevel="${build.debuglevel}" | <!-- description="Runs tck and jtreg tests for src/main for multiple java versions"> --> |
596 | deprecation="${build.deprecation}" | |
597 | source="${build.sourcelevel}" | <!-- <antcall target="clean"/> --> |
598 | fork="true"> | <!-- <antcall target="test"> --> |
599 | <!-- <param name="build.main.java.version" value="8"/> --> | |
600 | <!-- <param name="build.main.javac" value="${javac8}"/> --> | |
601 | <!-- </antcall> --> | |
602 | ||
603 | <!-- <antcall target="clean"/> --> | |
604 | <!-- <antcall target="test"> --> | |
605 | <!-- <param name="build.main.java.version" value="9"/> --> | |
606 | <!-- <param name="build.main.javac" value="${javac9}"/> --> | |
607 | <!-- </antcall> --> | |
608 | ||
609 | <bootclasspath refid="javac.bootclasspath"/> | <!-- </target> --> |
<compilerarg line="${build.javac.args} -s"/> | ||
610 | ||
</javac> | ||
611 | ||
</target> | ||
612 | ||
613 | <target name="configure-compiler"> | |
614 | <fail message="ant version too old"> | |
615 | <condition> <not> <antversion atleast="1.9.1"/> </not> </condition> | |
616 | </fail> | |
617 | ||
618 | <target name="dist" | <property name="unchecked.option" value="-Xlint:unchecked"/> |
depends="init, dist-clean, dist-jar, dist-docs" | ||
description="Puts all distributable products in single hierarchy"/> | ||
619 | ||
620 | <condition property="warnunchecked.arg" value="${unchecked.option}"> | |
621 | <istrue value="${build.warnunchecked}"/> | |
622 | </condition> | |
623 | ||
624 | <target name="clean" | <property name="warnunchecked.arg" value=""/> |
description="Removes all build products"> | ||
625 | ||
<delete dir="${build.dir}"/> | ||
<delete dir="${build.classes.dir}"/> | ||
<delete dir="${build.lib.dir}"/> | ||
626 | ||
627 | </target> | <!-- Common options in javac invocations --> |
628 | <property name="build.args" value="${warnunchecked.arg}"/> | |
629 | ||
630 | </target> | |
631 | ||
<target name="dist-clean" | ||
description="Removes all build and distribution products"> | ||
632 | ||
<delete dir="${dist.dir}"/> | ||
633 | ||
634 | </target> | <!-- Various demos and test programs --> |
635 | ||
636 | ||
637 | <target name="dist-docs" | <!-- description="Benchmark from Doug Lea's AQS paper" --> |
638 | depends="filter-src" | <target name="loops" depends="configure-compiler"> |
description="Builds javadocs without custom tags to dist folder"> | ||
639 | ||
640 | <delete dir="${dist.javadocs.dir}"/> | <mkdir dir="${build.loops.dir}"/> |
<mkdir dir="${dist.javadocs.dir}"/> | ||
641 | ||
642 | <javadoc destdir="${dist.javadocs.dir}" | <javac srcdir="${loops.src.dir}" |
643 | link="http://java.sun.com/j2se/1.4.1/docs/api" | destdir="${build.loops.dir}" |
644 | overview="${src.dir}/intro.html" | debug="${build.debug}" |
645 | source="${build.docsourcelevel}"> | debuglevel="${build.debuglevel}" |
646 | deprecation="${build.deprecation}" | |
647 | source="${build.sourcelevel}" | |
648 | target="${build.sourcelevel}" | |
649 | encoding="ASCII" | |
650 |