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

Diff of /jsr166/build.xml

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

revision 1.9 by tim, Wed Dec 11 05:04:04 2002 UTC revision 1.22 by tim, Wed May 14 21:30:37 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    
31    <!-- Compilation options -->    <!-- Compilation options -->
32      <property name="build.sourcelevel"    value="1.5"/>
33    <property name="build.debug"          value="true"/>    <property name="build.debug"          value="true"/>
34    <property name="build.debuglevel"     value="source,lines,vars"/>    <property name="build.debuglevel"     value="source,lines,vars"/>
35    <property name="build.deprecation"    value="false"/>    <property name="build.deprecation"    value="false"/>
36    <property name="build.sourcelevel"    value="1.5"/>    <!--
37      <property name="build.warnings"       value="true"/>
38      -->
39    
40    <!-- Build locations -->    <!-- Build locations -->
41    <property name="build.dir"            location="build"/>    <property name="build.dir"            location="build"/>
# Line 22  Line 44 
44    <property name="build.lib.dir"        location="${build.dir}/lib"/>    <property name="build.lib.dir"        location="${build.dir}/lib"/>
45    <property name="build.ant.dir"        location="${build.dir}/ant"/>    <property name="build.ant.dir"        location="${build.dir}/ant"/>
46    <property name="build.javadocs.dir"   location="${build.dir}/javadocs"/>    <property name="build.javadocs.dir"   location="${build.dir}/javadocs"/>
47      <property name="build.stripped.dir"   location="${build.dir}/stripped"/>
48    <property name="build.reports.dir"    location="${build.dir}/reports"/>    <property name="build.reports.dir"    location="${build.dir}/reports"/>
49      <property name="build.doccheck.dir"   location="${build.dir}/doccheck"/>
50    <property name="build.filter.src.dir" location="${build.dir}/filtersrc"/>    <property name="build.filter.src.dir" location="${build.dir}/filtersrc"/>
51    
52    <!-- Source locations -->    <!-- Source locations -->
53    <property name="src.dir"              location="${basedir}"/>    <property name="src.dir"              location="${basedir}/src/main"/>
54    <property name="test.src.dir"         location="${basedir}/etc/testcases"/>    <property name="test.src.dir"         location="${basedir}/src/test"/>
55    <property name="ant.src.dir"          location="${basedir}/etc/ant"/>    <property name="ant.src.dir"          location="${basedir}/etc/ant"/>
56    <property name="stylesheet.dir"       location="${basedir}/etc/xsl"/>    <property name="stylesheet.dir"       location="${basedir}/etc/xsl"/>
57    <property name="lib.dir"              location="${basedir}/lib"/>    <property name="lib.dir"              location="${basedir}/lib"/>
# Line 43  Line 67 
67    <property name="junit.jar"            location="${lib.dir}/junit.jar"/>    <property name="junit.jar"            location="${lib.dir}/junit.jar"/>
68    <property name="rt.jar"               location="${java.home}/lib/rt.jar"/>    <property name="rt.jar"               location="${java.home}/lib/rt.jar"/>
69    
70    <property name="gj.compiler.args"    <property name="javac.args"           value='-J-Xbootclasspath/p:${javac.jar}'/>
            value='-J-Xbootclasspath/p:${javac.jar} -deprecation -warnunchecked'  
   />  
71    
72    <path id="gj.compiler.bootclasspath">    <path id="javac.bootclasspath">
73      <pathelement location="${collect.jar}"/>      <pathelement location="${collect.jar}"/>
74      <pathelement location="${rt.jar}"/>      <pathelement location="${rt.jar}"/>
75    </path>    </path>
# Line 57  Line 79 
79    </path>    </path>
80    
81    
82    <target name="compile">    <!-- Main targets -->
83    
84      <target name="compile" depends="init"
85              description="Compiles all sources to build folder">
86      <mkdir dir="${build.classes.dir}"/>      <mkdir dir="${build.classes.dir}"/>
87      <javac srcdir="${src.dir}"      <javac srcdir="${src.dir}"
88            destdir="${build.classes.dir}"            destdir="${build.classes.dir}"
# Line 67  Line 92 
92             source="${build.sourcelevel}"             source="${build.sourcelevel}"
93               fork="true">               fork="true">
94    
95        <bootclasspath refid="gj.compiler.bootclasspath"/>        <bootclasspath refid="javac.bootclasspath"/>
96        <compilerarg line="${gj.compiler.args}"/>        <compilerarg line="${javac.args} ${build.warnings.option}"/>
   
       <!-- need this because srcdir is basedir! -->  
       <include name="java/**/*.java"/>  
97    
98      </javac>      </javac>
99    </target>    </target>
100    
101    
102    <target name="jar" depends="compile">    <target name="jar" depends="compile"
103              description="Builds library jar from compiled sources">
104      <mkdir dir="${build.lib.dir}"/>      <mkdir dir="${build.lib.dir}"/>
105      <jar basedir="${build.classes.dir}"      <jar basedir="${build.classes.dir}"
106          destfile="${product.jar}"          destfile="${product.jar}"
# Line 85  Line 108 
108    </target>    </target>
109    
110    
111    <target name="test" depends="report-tests"/>    <target name="test" depends="init, check-junit, report-tests"
112              description="Runs all tests (requires JUnit 1.8 in ${ant.home}/lib)"/>
113    
114    
115    <target name="docs" depends="clean-filtered-src, filter-src"    <target name="checkstyle" depends="filter-src"
116              description="Reports on style errors in Java source (verbose, mostly chaff)">
117        <taskdef resource="checkstyletask.properties"
118                classpath="${lib.dir}/checkstyle-all-2.4.jar"/>
119    
120        <checkstyle>
121          <formatter type="plain"/>  <!-- also available: type="xml" -->
122          <fileset dir="${build.filter.src.dir}" includes="**/*.java"/>
123        </checkstyle>
124      </target>
125    
126    
127      <target name="doccheck" depends="filter-src"
128              description="Reports on javadoc style errors (not working yet)">
129        <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          <packageset dir="${build.filter.src.dir}"/>
135        </javadoc>
136      </target>
137    
138    
139      <target name="docs" depends="filter-src"
140            description="Builds javadocs with custom tags to build folder">            description="Builds javadocs with custom tags to build folder">
141      <delete dir="${build.javadocs.dir}"/>      <delete dir="${build.javadocs.dir}"/>
142      <mkdir dir="${build.javadocs.dir}"/>      <mkdir dir="${build.javadocs.dir}"/>
# Line 101  Line 149 
149        <tag name="spec" description="Specified by:"/>        <tag name="spec" description="Specified by:"/>
150        <tag name="editor" description="Last edited by:"/>        <tag name="editor" description="Last edited by:"/>
151        <tag name="fixme" description="FIX ME:"/>        <tag name="fixme" description="FIX ME:"/>
152        <packageset dir="${build.filter.src.dir}">        <packageset dir="${build.filter.src.dir}"/>
         <include name="java/**"/>  
       </packageset>  
153    
154      </javadoc>      </javadoc>
155    </target>    </target>
156    
157    
158    <target name="dist-docs" depends="clean-filtered-src, filter-src"    <!--
159            description="Builds javadocs without custom tags to dist folder">     # javac -s doesn't reliably generate compilable code. It generates
160      <delete dir="${dist.javadocs.dir}"/>     # bridge methods (marked as "synthetic") that can have identical
161      <mkdir dir="${dist.javadocs.dir}"/>     # signatures to existing methods except for the return value.
162      <javadoc destdir="${dist.javadocs.dir}"     -->
163                  link="http://java.sun.com/j2se/1.4.1/docs/api"    <target name="strip" depends="init">
164              overview="${src.dir}/intro.html"      <mkdir dir="${build.stripped.dir}"/>
165                source="${build.sourcelevel}">      <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        <packageset dir="${build.filter.src.dir}">        <bootclasspath refid="javac.bootclasspath"/>
174          <include name="java/**"/>        <compilerarg line="${javac.args} ${build.warnings.option} -s"/>
       </packageset>  
175    
176      </javadoc>      </javac>
177    </target>    </target>
178    
179    
180    <target name="dist" depends="clean, jar, dist-docs">    <target name="dist" depends="init, dist-clean, dist-jar, dist-docs"
181      <!-- nothing to do here yet -->            description="Puts all distributable products in single hierarchy"/>
   </target>  
182    
183    
184    <target name="clean">    <target name="clean"
185              description="Removes all build products">
186      <delete dir="${build.dir}"/>      <delete dir="${build.dir}"/>
187      <delete dir="${build.classes.dir}"/>      <delete dir="${build.classes.dir}"/>
188      <delete dir="${build.lib.dir}"/>      <delete dir="${build.lib.dir}"/>
189    </target>    </target>
190    
191    
192    <target name="dist-clean" depends="clean">    <target name="dist-clean"
193              description="Removes all build and distribution products">
194      <delete dir="${dist.dir}"/>      <delete dir="${dist.dir}"/>
195    </target>    </target>
196    
197    
198    <target name="clean-filtered-src">    <!-- Anthill targets -->
199      <delete dir="${build.filter.src.dir}"/>  
200      <!-- Should really run the tests instead of just the jar target -->
201      <target name="anthill-build" depends="jar, docs, dist-docs"/>
202    
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        <copy tofile="${deployDir}/index.html"
211              file="${basedir}/etc/anthill-index.html"/>
212        <copy todir="${deployDir}/notes">
213          <fileset dir="${basedir}/etc/notes"/>
214        </copy>
215      </target>
216    
217    
218      <!-- Internal targets -->
219    
220      <target name="set-warnings-if" if="build.warnings">
221        <property name="build.warnings.option" value="-warnunchecked"/>
222    </target>    </target>
223    
224    
225    <!-- Internal targets used by docs target -->    <target name="set-warnings-unless" unless="build.warnings">
226        <property name="build.warnings.option" value=""/>
227      </target>
228    
229    
230    <target name="compile-ant">    <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      </target>
235    
236    
237      <target name="dist-jar" depends="clean, jar">
238        <copy file="${product.jar}" todir="${dist.dir}"/>
239      </target>
240    
241    
242      <target name="dist-docs" depends="filter-src"
243              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          <packageset dir="${build.filter.src.dir}"/>
252    
253        </javadoc>
254      </target>
255    
256    
257      <target name="compile-ant-filter" depends="init">
258      <mkdir dir="${build.ant.dir}"/>      <mkdir dir="${build.ant.dir}"/>
259      <javac srcdir="${ant.src.dir}"      <javac srcdir="${ant.src.dir}"
260            destdir="${build.ant.dir}"            destdir="${build.ant.dir}"
# Line 159  Line 263 
263    </target>    </target>
264    
265    
266    <target name="filter-src" depends="compile-ant">    <target name="filter-src" depends="compile-ant-filter">
267      <mkdir dir="${build.filter.src.dir}"/>      <mkdir dir="${build.filter.src.dir}"/>
268      <copy todir="${build.filter.src.dir}">      <copy todir="${build.filter.src.dir}">
269        <fileset dir="${src.dir}">        <fileset dir="${src.dir}">
# Line 200  Line 304 
304    </target>    </target>
305    
306    
   <!-- Internal targets used by test target -->  
   
307    <target name="compile-tests" depends="jar">    <target name="compile-tests" depends="jar">
308      <mkdir dir="${build.testcases.dir}"/>      <mkdir dir="${build.testcases.dir}"/>
309      <javac srcdir="${test.src.dir}"      <javac srcdir="${test.src.dir}"
# Line 212  Line 314 
314             source="${build.sourcelevel}"             source="${build.sourcelevel}"
315               fork="true">               fork="true">
316    
317        <bootclasspath refid="gj.compiler.bootclasspath"/>        <bootclasspath refid="javac.bootclasspath"/>
318        <compilerarg line="${gj.compiler.args}"/>        <compilerarg line="${javac.args} ${build.warnings.option}"/>
319        <classpath refid="test.classpath"/>        <classpath refid="test.classpath"/>
       <include name="**/*Test.java"/>  
320    
321      </javac>      </javac>
322    </target>    </target>
323    
324    
325    <target name="run-tests" depends="compile-tests">    <target name="run-tests" depends="compile-tests">
326      <mkdir dir="${build.reports.dir}"/>      <mkdir dir="${build.reports.dir}"/>
327      <junit printsummary="true"      <junit printsummary="true"
328               showoutput="true"               showoutput="true"
329            errorProperty="junit.failed"            errorProperty="junit.failed"
330          failureProperty="junit.failed"          failureProperty="junit.failed"
331                      dir="${build.reports.dir}">                      dir="${build.reports.dir}"
332                       fork="true">
333    
334        <classpath>        <!--
335          <path refid="test.classpath"/>         ! This nastiness is so JUnit can test classes we are inserting
336          <pathelement location="${build.testcases.dir}"/>         ! into the java.* packages.
337        </classpath>         -->
338          <jvmarg value="-Xbootclasspath/p:${product.jar};${build.testcases.dir};${junit.jar}"/>
339    
340        <formatter type="xml"/>        <formatter type="xml"/>
341    
# Line 268  Line 372 
372    </target>    </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        <fail message="Need JUnit 3.8 to run tests" unless="junit.available"/>
380      </target>
381    
382    
383  </project>  </project>

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.22

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