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

Diff of /jsr166/build.xml

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

revision 1.6 by tim, Tue Dec 10 15:02:46 2002 UTC revision 1.23 by tim, Sat May 17 21:20:50 2003 UTC
# Line 1  Line 1 
1  <project name="jsr166" default="jar">  <project name="jsr166" default="usage">
2    
3    <description>    <description>
4      Build file for JSR-166      Build file for JSR-166
5    
6      Note that junit.jar must be in ${ant.home}/lib for the      JUnit 1.8 must be in ${ant.home}/lib for the test target to work.
     test target to work. [FIXME: This should be automatically  
     enforced by this build file by failing with a message if  
     junit.jar is not in the right place.]  
7    </description>    </description>
8    
9    
10      <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    
30      <property file="user.properties"/>
31      <property name="testcase" value="*"/>
32    
33    <!-- Compilation options -->    <!-- Compilation options -->
34      <property name="build.sourcelevel"    value="1.5"/>
35    <property name="build.debug"          value="true"/>    <property name="build.debug"          value="true"/>
36    <property name="build.debuglevel"     value="source,lines,vars"/>    <property name="build.debuglevel"     value="source,lines,vars"/>
37    <property name="build.deprecation"    value="false"/>    <property name="build.deprecation"    value="false"/>
38    <property name="build.sourcelevel"    value="1.5"/>    <!--
39      <property name="build.warnings"       value="true"/>
40      -->
41    
42    <!-- Build locations -->    <!-- Build locations -->
43    <property name="build.dir"            location="build"/>    <property name="build.dir"            location="build"/>
# Line 22  Line 46 
46    <property name="build.lib.dir"        location="${build.dir}/lib"/>    <property name="build.lib.dir"        location="${build.dir}/lib"/>
47    <property name="build.ant.dir"        location="${build.dir}/ant"/>    <property name="build.ant.dir"        location="${build.dir}/ant"/>
48    <property name="build.javadocs.dir"   location="${build.dir}/javadocs"/>    <property name="build.javadocs.dir"   location="${build.dir}/javadocs"/>
49      <property name="build.stripped.dir"   location="${build.dir}/stripped"/>
50    <property name="build.reports.dir"    location="${build.dir}/reports"/>    <property name="build.reports.dir"    location="${build.dir}/reports"/>
51      <property name="build.doccheck.dir"   location="${build.dir}/doccheck"/>
52    <property name="build.filter.src.dir" location="${build.dir}/filtersrc"/>    <property name="build.filter.src.dir" location="${build.dir}/filtersrc"/>
53    
54    <!-- Source locations -->    <!-- Source locations -->
55    <property name="src.dir"              location="${basedir}"/>    <property name="src.dir"              location="${basedir}/src/main"/>
56    <property name="test.src.dir"         location="${basedir}/etc/testcases"/>    <property name="test.src.dir"         location="${basedir}/src/test"/>
57    <property name="ant.src.dir"          location="${basedir}/etc/ant"/>    <property name="ant.src.dir"          location="${basedir}/etc/ant"/>
58    <property name="stylesheet.dir"       location="${basedir}/etc/xsl"/>    <property name="stylesheet.dir"       location="${basedir}/etc/xsl"/>
59    <property name="lib.dir"              location="${basedir}/lib"/>    <property name="lib.dir"              location="${basedir}/lib"/>
60      <property name="dist.dir"             location="${basedir}/dist"/>
61    
62      <!-- Distribution locations -->
63      <property name="dist.javadocs.dir"    location="${dist.dir}/docs"/>
64    
65    <!-- Jar locations -->    <!-- Jar locations -->
66    <property name="product.jar"          location="${build.lib.dir}/jsr166.jar"/>    <property name="product.jar"          location="${build.lib.dir}/jsr166.jar"/>
# Line 39  Line 69 
69    <property name="junit.jar"            location="${lib.dir}/junit.jar"/>    <property name="junit.jar"            location="${lib.dir}/junit.jar"/>
70    <property name="rt.jar"               location="${java.home}/lib/rt.jar"/>    <property name="rt.jar"               location="${java.home}/lib/rt.jar"/>
71    
72    <property name="gj.compiler.args"    <property name="javac.args"           value='-J-Xbootclasspath/p:${javac.jar}'/>
            value='-J-Xbootclasspath/p:${javac.jar} -deprecation -warnunchecked'  
   />  
73    
74    <path id="gj.compiler.bootclasspath">    <path id="javac.bootclasspath">
75      <pathelement location="${collect.jar}"/>      <pathelement location="${collect.jar}"/>
76      <pathelement location="${rt.jar}"/>      <pathelement location="${rt.jar}"/>
77    </path>    </path>
# Line 53  Line 81 
81    </path>    </path>
82    
83    
84    <target name="compile">    <!-- Main targets -->
85    
86      <target name="compile" depends="init"
87              description="Compiles all sources to build folder">
88      <mkdir dir="${build.classes.dir}"/>      <mkdir dir="${build.classes.dir}"/>
89      <javac srcdir="${src.dir}"      <javac srcdir="${src.dir}"
90            destdir="${build.classes.dir}"            destdir="${build.classes.dir}"
# Line 63  Line 94 
94             source="${build.sourcelevel}"             source="${build.sourcelevel}"
95               fork="true">               fork="true">
96    
97        <bootclasspath refid="gj.compiler.bootclasspath"/>        <bootclasspath refid="javac.bootclasspath"/>
98        <compilerarg line="${gj.compiler.args}"/>        <compilerarg line="${javac.args} ${build.warnings.option}"/>
   
       <!-- need this because srcdir is basedir! -->  
       <include name="java/**/*.java"/>  
99    
100      </javac>      </javac>
101    </target>    </target>
102    
103    
104    <target name="jar" depends="compile">    <target name="jar" depends="compile"
105              description="Builds library jar from compiled sources">
106      <mkdir dir="${build.lib.dir}"/>      <mkdir dir="${build.lib.dir}"/>
107      <jar basedir="${build.classes.dir}"      <jar basedir="${build.classes.dir}"
108          destfile="${product.jar}"          destfile="${product.jar}"
# Line 81  Line 110 
110    </target>    </target>
111    
112    
113    <target name="test" depends="report-tests"/>    <target name="test" depends="init, check-junit, report-tests"
114              description="Runs all tests (requires JUnit 1.8 in ${ant.home}/lib)"/>
115    
116    
117    <target name="docs" depends="clean-docs, filter-src">    <target name="checkstyle" depends="filter-src"
118              description="Reports on style errors in Java source (verbose, mostly chaff)">
119        <taskdef resource="checkstyletask.properties"
120                classpath="${lib.dir}/checkstyle-all-2.4.jar"/>
121    
122        <checkstyle>
123          <formatter type="plain"/>  <!-- also available: type="xml" -->
124          <fileset dir="${build.filter.src.dir}" includes="**/*.java"/>
125        </checkstyle>
126      </target>
127    
128    
129      <target name="doccheck" depends="filter-src"
130              description="Reports on javadoc style errors (not working yet)">
131        <delete dir="${build.doccheck.dir}"/>
132        <mkdir dir="${build.doccheck.dir}"/>
133        <javadoc doclet="com.sun.tools.doclets.doccheck.DocCheck"
134             docletpath="${lib.dir}/doccheck.jar"
135                destdir="${build.doccheck.dir}">
136          <packageset dir="${build.filter.src.dir}"/>
137        </javadoc>
138      </target>
139    
140    
141      <target name="docs" depends="filter-src"
142              description="Builds javadocs with custom tags to build folder">
143      <delete dir="${build.javadocs.dir}"/>      <delete dir="${build.javadocs.dir}"/>
144      <mkdir dir="${build.javadocs.dir}"/>      <mkdir dir="${build.javadocs.dir}"/>
145      <javadoc destdir="${build.javadocs.dir}"      <javadoc destdir="${build.javadocs.dir}"
# Line 96  Line 151 
151        <tag name="spec" description="Specified by:"/>        <tag name="spec" description="Specified by:"/>
152        <tag name="editor" description="Last edited by:"/>        <tag name="editor" description="Last edited by:"/>
153        <tag name="fixme" description="FIX ME:"/>        <tag name="fixme" description="FIX ME:"/>
154        <packageset dir="${build.filter.src.dir}">        <packageset dir="${build.filter.src.dir}"/>
         <include name="java/**"/>  
       </packageset>  
155    
156      </javadoc>      </javadoc>
157    </target>    </target>
158    
159    
160    <target name="clean" depends="clean-docs">    <!--
161       # javac -s doesn't reliably generate compilable code. It generates
162       # bridge methods (marked as "synthetic") that can have identical
163       # signatures to existing methods except for the return value.
164       -->
165      <target name="strip" depends="init">
166        <mkdir dir="${build.stripped.dir}"/>
167        <javac srcdir="${src.dir}"
168              destdir="${build.stripped.dir}"
169                debug="${build.debug}"
170           debuglevel="${build.debuglevel}"
171          deprecation="${build.deprecation}"
172               source="${build.sourcelevel}"
173                 fork="true">
174    
175          <bootclasspath refid="javac.bootclasspath"/>
176          <compilerarg line="${javac.args} ${build.warnings.option} -s"/>
177    
178        </javac>
179      </target>
180    
181    
182      <target name="dist" depends="init, dist-clean, dist-jar, dist-docs"
183              description="Puts all distributable products in single hierarchy"/>
184    
185    
186      <target name="clean"
187              description="Removes all build products">
188      <delete dir="${build.dir}"/>      <delete dir="${build.dir}"/>
189      <delete dir="${build.classes.dir}"/>      <delete dir="${build.classes.dir}"/>
190      <delete dir="${build.lib.dir}"/>      <delete dir="${build.lib.dir}"/>
191    </target>    </target>
192    
193    
194    <target name="clean-docs">    <target name="dist-clean"
195      <delete dir="${build.javadocs.dir}"/>            description="Removes all build and distribution products">
196        <delete dir="${dist.dir}"/>
197    </target>    </target>
198    
199    
200    <!-- Internal targets used by docs target -->    <!-- Anthill targets -->
201    
202    <target name="compile-ant">    <!-- Should really run the tests instead of just the jar target -->
203      <target name="anthill-build" depends="jar, docs, dist-docs"/>
204    
205      <target name="anthill-publish">
206        <copy todir="${deployDir}/docs/private">
207          <fileset dir="${build.javadocs.dir}"/>
208        </copy>
209        <copy todir="${deployDir}/docs/public">
210          <fileset dir="${dist.javadocs.dir}"/>
211        </copy>
212        <copy tofile="${deployDir}/index.html"
213              file="${basedir}/etc/anthill-index.html"/>
214        <copy todir="${deployDir}/notes">
215          <fileset dir="${basedir}/etc/notes"/>
216        </copy>
217      </target>
218    
219    
220      <!-- Internal targets -->
221    
222      <target name="set-warnings-if" if="build.warnings">
223        <property name="build.warnings.option" value="-warnunchecked"/>
224      </target>
225    
226    
227      <target name="set-warnings-unless" unless="build.warnings">
228        <property name="build.warnings.option" value=""/>
229      </target>
230    
231    
232      <target name="init" depends="set-warnings-if, set-warnings-unless">
233        <!-- Version is kept in a separate file -->
234        <loadfile property="version" srcFile="version.properties"/>
235        <echo>Building JSR-166 version ${version}</echo>
236      </target>
237    
238    
239      <target name="dist-jar" depends="clean, jar">
240        <copy file="${product.jar}" todir="${dist.dir}"/>
241      </target>
242    
243    
244      <target name="dist-docs" depends="filter-src"
245              description="Builds javadocs without custom tags to dist folder">
246        <delete dir="${dist.javadocs.dir}"/>
247        <mkdir dir="${dist.javadocs.dir}"/>
248        <javadoc destdir="${dist.javadocs.dir}"
249                    link="http://java.sun.com/j2se/1.4.1/docs/api"
250                overview="${src.dir}/intro.html"
251                  source="${build.sourcelevel}">
252    
253          <packageset dir="${build.filter.src.dir}"/>
254    
255        </javadoc>
256      </target>
257    
258    
259      <target name="compile-ant-filter" depends="init">
260      <mkdir dir="${build.ant.dir}"/>      <mkdir dir="${build.ant.dir}"/>
261      <javac srcdir="${ant.src.dir}"      <javac srcdir="${ant.src.dir}"
262            destdir="${build.ant.dir}"            destdir="${build.ant.dir}"
# Line 127  Line 265 
265    </target>    </target>
266    
267    
268    <target name="filter-src" depends="compile-ant">    <target name="filter-src" depends="compile-ant-filter">
269      <mkdir dir="${build.filter.src.dir}"/>      <mkdir dir="${build.filter.src.dir}"/>
270      <copy todir="${build.filter.src.dir}">      <copy todir="${build.filter.src.dir}">
271        <fileset dir="${src.dir}">        <fileset dir="${src.dir}">
# Line 168  Line 306 
306    </target>    </target>
307    
308    
   <!-- Internal targets used by test target -->  
   
309    <target name="compile-tests" depends="jar">    <target name="compile-tests" depends="jar">
310      <mkdir dir="${build.testcases.dir}"/>      <mkdir dir="${build.testcases.dir}"/>
311      <javac srcdir="${test.src.dir}"      <javac srcdir="${test.src.dir}"
# Line 180  Line 316 
316             source="${build.sourcelevel}"             source="${build.sourcelevel}"
317               fork="true">               fork="true">
318    
319        <bootclasspath refid="gj.compiler.bootclasspath"/>        <bootclasspath refid="javac.bootclasspath"/>
320        <compilerarg line="${gj.compiler.args}"/>        <compilerarg line="${javac.args} ${build.warnings.option}"/>
321        <classpath refid="test.classpath"/>        <classpath refid="test.classpath"/>
       <include name="**/*Test.java"/>  
322    
323      </javac>      </javac>
324    </target>    </target>
325    
326    
327    <target name="run-tests" depends="compile-tests">    <target name="run-tests" depends="compile-tests">
328      <mkdir dir="${build.reports.dir}"/>      <mkdir dir="${build.reports.dir}"/>
329      <junit printsummary="true"      <junit printsummary="true"
330               showoutput="true"               showoutput="true"
331            errorProperty="junit.failed"            errorProperty="junit.failed"
332          failureProperty="junit.failed"          failureProperty="junit.failed"
333                      dir="${build.reports.dir}">                      dir="${build.reports.dir}"
334                       fork="true">
335    
336        <classpath>        <!--
337          <path refid="test.classpath"/>         ! This nastiness is so JUnit can test classes we are inserting
338          <pathelement location="${build.testcases.dir}"/>         ! into the java.* packages.
339        </classpath>         -->
340          <jvmarg value="-Xbootclasspath/p:${product.jar};${build.testcases.dir};${junit.jar}"/>
341    
342        <formatter type="xml"/>        <formatter type="xml"/>
343    
344        <batchtest todir="${build.reports.dir}">        <batchtest todir="${build.reports.dir}">
345          <fileset dir="${test.src.dir}">          <fileset dir="${test.src.dir}">
346            <include name="**/*Test.java"/>            <include name="**/${testcase}Test.java"/>
347          </fileset>          </fileset>
348        </batchtest>        </batchtest>
349    
# Line 236  Line 374 
374    </target>    </target>
375    
376    
377      <target name="check-junit">
378        <!-- FIXME: this test isn't specific enough -->
379        <available property="junit.available"
380                   classname="junit.framework.TestCase"/>
381        <fail message="Need JUnit 3.8 to run tests" unless="junit.available"/>
382      </target>
383    
384    
385  </project>  </project>

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.23

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