ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.22
Committed: Wed May 14 21:30:37 2003 UTC (20 years, 11 months ago) by tim
Content type: text/xml
Branch: MAIN
Changes since 1.21: +11 -18 lines
Log Message:
Moved main source rooted at . to ./src/main
Moved test source rooted at ./etc/testcases to ./src/test

File Contents

# User Rev Content
1 tim 1.18 <project name="jsr166" default="usage">
2 tim 1.1
3     <description>
4 tim 1.18 Build file for JSR-166
5    
6     JUnit 1.8 must be in ${ant.home}/lib for the test target to work.
7     </description>
8 tim 1.11
9 tim 1.3
10 tim 1.18 <target name="usage" description="Prints this message">
11     <echo>
12     ant [target], where target is one of:
13    
14     usage (default) Prints this message
15     compile Compiles all sources to build folder
16     jar Builds library jar from compiled sources
17     test Runs all tests (requires JUnit 1.8 in ${ant.home}/lib)
18     docs Builds javadocs with custom tags to build folder
19     dist-docs Builds javadocs without custom tags to dist folder
20     dist Puts all distributable products in single hierarchy
21    
22     clean Removes all build products
23     dist-clean Removes all build and distribution products
24    
25     checkstyle Reports on style errors in Java source (verbose, mostly chaff)
26     doccheck Reports on javadoc style errors (not working yet)
27     </echo>
28     </target>
29 tim 1.11
30 tim 1.1
31     <!-- Compilation options -->
32 tim 1.11 <property name="build.sourcelevel" value="1.5"/>
33 tim 1.1 <property name="build.debug" value="true"/>
34     <property name="build.debuglevel" value="source,lines,vars"/>
35 tim 1.13 <property name="build.deprecation" value="false"/>
36     <!--
37 tim 1.11 <property name="build.warnings" value="true"/>
38 tim 1.13 -->
39 tim 1.1
40     <!-- Build locations -->
41     <property name="build.dir" location="build"/>
42     <property name="build.classes.dir" location="${build.dir}/classes"/>
43     <property name="build.testcases.dir" location="${build.dir}/testcases"/>
44     <property name="build.lib.dir" location="${build.dir}/lib"/>
45     <property name="build.ant.dir" location="${build.dir}/ant"/>
46 tim 1.9 <property name="build.javadocs.dir" location="${build.dir}/javadocs"/>
47 tim 1.16 <property name="build.stripped.dir" location="${build.dir}/stripped"/>
48 tim 1.1 <property name="build.reports.dir" location="${build.dir}/reports"/>
49 tim 1.16 <property name="build.doccheck.dir" location="${build.dir}/doccheck"/>
50 tim 1.1 <property name="build.filter.src.dir" location="${build.dir}/filtersrc"/>
51    
52     <!-- Source locations -->
53 tim 1.22 <property name="src.dir" location="${basedir}/src/main"/>
54     <property name="test.src.dir" location="${basedir}/src/test"/>
55 tim 1.1 <property name="ant.src.dir" location="${basedir}/etc/ant"/>
56     <property name="stylesheet.dir" location="${basedir}/etc/xsl"/>
57     <property name="lib.dir" location="${basedir}/lib"/>
58 tim 1.9 <property name="dist.dir" location="${basedir}/dist"/>
59    
60     <!-- Distribution locations -->
61     <property name="dist.javadocs.dir" location="${dist.dir}/docs"/>
62 tim 1.1
63     <!-- Jar locations -->
64     <property name="product.jar" location="${build.lib.dir}/jsr166.jar"/>
65     <property name="javac.jar" location="${lib.dir}/javac.jar"/>
66     <property name="collect.jar" location="${lib.dir}/collect.jar"/>
67     <property name="junit.jar" location="${lib.dir}/junit.jar"/>
68     <property name="rt.jar" location="${java.home}/lib/rt.jar"/>
69    
70 tim 1.11 <property name="javac.args" value='-J-Xbootclasspath/p:${javac.jar}'/>
71 tim 1.1
72 tim 1.11 <path id="javac.bootclasspath">
73 tim 1.2 <pathelement location="${collect.jar}"/>
74     <pathelement location="${rt.jar}"/>
75     </path>
76    
77     <path id="test.classpath">
78     <pathelement location="${product.jar}"/>
79     </path>
80    
81 tim 1.1
82 tim 1.11 <!-- Main targets -->
83    
84     <target name="compile" depends="init"
85     description="Compiles all sources to build folder">
86 tim 1.1 <mkdir dir="${build.classes.dir}"/>
87     <javac srcdir="${src.dir}"
88     destdir="${build.classes.dir}"
89     debug="${build.debug}"
90     debuglevel="${build.debuglevel}"
91     deprecation="${build.deprecation}"
92     source="${build.sourcelevel}"
93     fork="true">
94    
95 tim 1.11 <bootclasspath refid="javac.bootclasspath"/>
96     <compilerarg line="${javac.args} ${build.warnings.option}"/>
97 tim 1.1
98     </javac>
99     </target>
100    
101    
102 tim 1.11 <target name="jar" depends="compile"
103     description="Builds library jar from compiled sources">
104 tim 1.1 <mkdir dir="${build.lib.dir}"/>
105     <jar basedir="${build.classes.dir}"
106     destfile="${product.jar}"
107     />
108     </target>
109    
110    
111 tim 1.18 <target name="test" depends="init, check-junit, report-tests"
112     description="Runs all tests (requires JUnit 1.8 in ${ant.home}/lib)"/>
113 tim 1.1
114    
115 tim 1.16 <target name="checkstyle" depends="filter-src"
116 tim 1.18 description="Reports on style errors in Java source (verbose, mostly chaff)">
117 tim 1.15 <taskdef resource="checkstyletask.properties"
118     classpath="${lib.dir}/checkstyle-all-2.4.jar"/>
119    
120     <checkstyle>
121 tim 1.16 <formatter type="plain"/> <!-- also available: type="xml" -->
122 tim 1.15 <fileset dir="${build.filter.src.dir}" includes="**/*.java"/>
123     </checkstyle>
124     </target>
125    
126 tim 1.16
127     <target name="doccheck" depends="filter-src"
128 tim 1.18 description="Reports on javadoc style errors (not working yet)">
129 tim 1.16 <delete dir="${build.doccheck.dir}"/>
130     <mkdir dir="${build.doccheck.dir}"/>
131     <javadoc doclet="com.sun.tools.doclets.doccheck.DocCheck"
132     docletpath="${lib.dir}/doccheck.jar"
133     destdir="${build.doccheck.dir}">
134 tim 1.22 <packageset dir="${build.filter.src.dir}"/>
135 tim 1.16 </javadoc>
136     </target>
137    
138    
139     <target name="docs" depends="filter-src"
140 tim 1.9 description="Builds javadocs with custom tags to build folder">
141     <delete dir="${build.javadocs.dir}"/>
142     <mkdir dir="${build.javadocs.dir}"/>
143     <javadoc destdir="${build.javadocs.dir}"
144 tim 1.8 link="http://java.sun.com/j2se/1.4.1/docs/api"
145     overview="${src.dir}/intro.html"
146     source="${build.sourcelevel}">
147    
148 tim 1.9 <tag name="revised" description="Last revised:"/>
149     <tag name="spec" description="Specified by:"/>
150     <tag name="editor" description="Last edited by:"/>
151     <tag name="fixme" description="FIX ME:"/>
152 tim 1.22 <packageset dir="${build.filter.src.dir}"/>
153 tim 1.8
154     </javadoc>
155     </target>
156    
157    
158 tim 1.22 <!--
159     # javac -s doesn't reliably generate compilable code. It generates
160     # bridge methods (marked as "synthetic") that can have identical
161     # signatures to existing methods except for the return value.
162     -->
163 tim 1.16 <target name="strip" depends="init">
164     <mkdir dir="${build.stripped.dir}"/>
165     <javac srcdir="${src.dir}"
166     destdir="${build.stripped.dir}"
167     debug="${build.debug}"
168     debuglevel="${build.debuglevel}"
169     deprecation="${build.deprecation}"
170     source="${build.sourcelevel}"
171     fork="true">
172    
173     <bootclasspath refid="javac.bootclasspath"/>
174     <compilerarg line="${javac.args} ${build.warnings.option} -s"/>
175    
176     </javac>
177     </target>
178    
179    
180     <target name="dist" depends="init, dist-clean, dist-jar, dist-docs"
181     description="Puts all distributable products in single hierarchy"/>
182 tim 1.1
183    
184 tim 1.11 <target name="clean"
185     description="Removes all build products">
186     <delete dir="${build.dir}"/>
187     <delete dir="${build.classes.dir}"/>
188     <delete dir="${build.lib.dir}"/>
189 tim 1.1 </target>
190    
191    
192 tim 1.11 <target name="dist-clean"
193     description="Removes all build and distribution products">
194     <delete dir="${dist.dir}"/>
195 tim 1.9 </target>
196 tim 1.10
197    
198 tim 1.14 <!-- Anthill targets -->
199    
200     <!-- Should really run the tests instead of just the jar target -->
201 tim 1.18 <target name="anthill-build" depends="jar, docs, dist-docs"/>
202 tim 1.14
203     <target name="anthill-publish">
204     <copy todir="${deployDir}/docs/private">
205     <fileset dir="${build.javadocs.dir}"/>
206     </copy>
207     <copy todir="${deployDir}/docs/public">
208     <fileset dir="${dist.javadocs.dir}"/>
209     </copy>
210 tim 1.17 <copy tofile="${deployDir}/index.html"
211     file="${basedir}/etc/anthill-index.html"/>
212 tim 1.19 <copy todir="${deployDir}/notes">
213     <fileset dir="${basedir}/etc/notes"/>
214     </copy>
215 tim 1.14 </target>
216    
217    
218 tim 1.11 <!-- Internal targets -->
219 tim 1.9
220 tim 1.11 <target name="set-warnings-if" if="build.warnings">
221     <property name="build.warnings.option" value="-warnunchecked"/>
222     </target>
223 tim 1.9
224 tim 1.16
225 tim 1.11 <target name="set-warnings-unless" unless="build.warnings">
226     <property name="build.warnings.option" value=""/>
227 tim 1.6 </target>
228    
229 tim 1.16
230 tim 1.11 <target name="init" depends="set-warnings-if, set-warnings-unless">
231     <!-- Version is kept in a separate file -->
232     <loadfile property="version" srcFile="version.properties"/>
233     <echo>Building JSR-166 version ${version}</echo>
234 tim 1.9 </target>
235    
236    
237 tim 1.11 <target name="dist-jar" depends="clean, jar">
238     <copy file="${product.jar}" todir="${dist.dir}"/>
239     </target>
240    
241    
242 tim 1.16 <target name="dist-docs" depends="filter-src"
243 tim 1.11 description="Builds javadocs without custom tags to dist folder">
244     <delete dir="${dist.javadocs.dir}"/>
245     <mkdir dir="${dist.javadocs.dir}"/>
246     <javadoc destdir="${dist.javadocs.dir}"
247     link="http://java.sun.com/j2se/1.4.1/docs/api"
248     overview="${src.dir}/intro.html"
249     source="${build.sourcelevel}">
250    
251 tim 1.22 <packageset dir="${build.filter.src.dir}"/>
252 tim 1.11
253     </javadoc>
254     </target>
255    
256 tim 1.1
257 tim 1.16 <target name="compile-ant-filter" depends="init">
258 tim 1.1 <mkdir dir="${build.ant.dir}"/>
259     <javac srcdir="${ant.src.dir}"
260     destdir="${build.ant.dir}"
261     source="1.4"
262     />
263     </target>
264    
265    
266 tim 1.11 <target name="filter-src" depends="compile-ant-filter">
267 tim 1.1 <mkdir dir="${build.filter.src.dir}"/>
268     <copy todir="${build.filter.src.dir}">
269     <fileset dir="${src.dir}">
270 tim 1.22 <include name="**/*.java"/>
271 tim 1.1 </fileset>
272     <filterchain>
273     <filterreader classname="jsr166.ant.filters.ReplaceFilter"
274     classpath="${build.ant.dir}">
275     <!--
276     # These arguments are to get rid of angle-bracketed type
277     # parameters so that javadoc can run on the result. The
278     # following heuristic that seems to work:
279     #
280     # For all lines not starting with space(s)-asterisk-space(s),
281     # replace <something> with a space, where there may be more
282     # than one right angle bracket at the end, and "something"
283     # must not contain parens or pipes. (This may need some
284     # tweaking.)
285     -->
286     <param name="notmatching" value="^\s+\*\s.*$"/>
287     <param name="pattern" value="&lt;[^|>()]+?>+"/>
288     <param name="replacement" value=" "/>
289     </filterreader>
290     <filterreader classname="jsr166.ant.filters.ReplaceFilter"
291     classpath="${build.ant.dir}">
292     <!--
293     # These arguments are to uncomment lines beginning with
294     # "//@" so that javadoc can see imports that are needed
295     # to resolve links but that shouldn't be in the compiled
296     # code.
297     -->
298     <param name="matching" value="^//@.*$"/>
299     <param name="pattern" value="^//@"/>
300     <param name="replacement" value=""/>
301     </filterreader>
302     </filterchain>
303     </copy>
304     </target>
305    
306    
307     <target name="compile-tests" depends="jar">
308     <mkdir dir="${build.testcases.dir}"/>
309     <javac srcdir="${test.src.dir}"
310     destdir="${build.testcases.dir}"
311     debug="${build.debug}"
312     debuglevel="${build.debuglevel}"
313     deprecation="${build.deprecation}"
314     source="${build.sourcelevel}"
315     fork="true">
316    
317 tim 1.11 <bootclasspath refid="javac.bootclasspath"/>
318     <compilerarg line="${javac.args} ${build.warnings.option}"/>
319 tim 1.2 <classpath refid="test.classpath"/>
320 tim 1.1
321     </javac>
322     </target>
323 tim 1.11
324 tim 1.1
325     <target name="run-tests" depends="compile-tests">
326     <mkdir dir="${build.reports.dir}"/>
327     <junit printsummary="true"
328     showoutput="true"
329     errorProperty="junit.failed"
330     failureProperty="junit.failed"
331 tim 1.12 dir="${build.reports.dir}"
332     fork="true">
333    
334 tim 1.21 <!--
335     ! This nastiness is so JUnit can test classes we are inserting
336     ! into the java.* packages.
337     -->
338     <jvmarg value="-Xbootclasspath/p:${product.jar};${build.testcases.dir};${junit.jar}"/>
339 tim 1.1
340     <formatter type="xml"/>
341    
342     <batchtest todir="${build.reports.dir}">
343     <fileset dir="${test.src.dir}">
344     <include name="**/*Test.java"/>
345     </fileset>
346     </batchtest>
347    
348     </junit>
349     </target>
350    
351    
352     <target name="report-tests" depends="run-tests">
353     <!-- Sets junit.report.format to frames if Xalan is present,
354     otherwise sets it to noframes. -->
355     <available property="junit.report.format"
356     value="frames"
357     classname="org.apache.xalan.lib.Redirect"
358     />
359     <property name="junit.report.format" value="noframes"/>
360    
361     <junitreport todir="${build.reports.dir}">
362     <fileset dir="${build.reports.dir}">
363     <include name="TEST-*.xml"/>
364     </fileset>
365     <report styledir="${stylesheet.dir}"
366     format="${junit.report.format}"
367     todir="${build.reports.dir}"
368     />
369     </junitreport>
370    
371     <fail message="Test Cases Failed" if="junit.failed"/>
372 tim 1.18 </target>
373    
374    
375     <target name="check-junit">
376     <!-- FIXME: this test isn't specific enough -->
377     <available property="junit.available"
378     classname="junit.framework.TestCase"/>
379 tim 1.21 <fail message="Need JUnit 3.8 to run tests" unless="junit.available"/>
380 tim 1.1 </target>
381    
382    
383     </project>