Fix code that outputs the usage information following a command
[jnode-mirror.git] / all / build.xml
blobce435ecfa93da5f9ec05d3d48ec2e81dd7164a39
1 <project name="JNode" default="help" basedir=".">
3     <property name="root.dir" value="${basedir}/.."/>
4         
5         <!-- if task is used from this -->
6     <taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
7         <!-- before including jnode.xml, we must set this property -->
8     <condition property="memoryMaximumSize" value="1512m" else="768m">
9       <os arch="amd64"/>      
10     </condition>
11     <echo message="Setting memoryMaximumSize to ${memoryMaximumSize}"/>
12         
13     <!-- Include antlib -->
14     <typedef file="${root.dir}/all/lib/jnode.xml"/>
16     <!-- JNode version -->
17     <property name="jnode-ver" value="0.2.9-dev"/>
19     <!-- Java target and source version -->
20     <property name="java.target" value="1.6"/>
21     <property name="java.source" value="1.6"/>
22     <property name="java.encoding" value="US-ASCII"/>
24     <property name="build.dir" value="${basedir}/build"/>
25     <property name="reports.dir" value="${build.dir}/reports"/>
26     <property name="cdroms.dir" value="${build.dir}/cdroms"/>
27     <property name="descriptors.dir" value="${build.dir}/descriptors"/>
28     <property name="plugins.dir" value="${build.dir}/plugins"/>
29     <property name="initjars.dir" value="${build.dir}/initjars"/>
30     <property name="save.dir" value="${basedir}/save"/>
31     <property name="backup.dir" value="${build.dir}/backup"/>
33     <property name="jnode-builder.jar" value="${build.dir}/descriptors/jnode-builder.jar"/>
34     <property name="jnode-configure.jar" value="${build.dir}/descriptors/jnode-configure.jar"/>
35     <property name="jnode-core.jar" value="${root.dir}/core/build/classes"/>
36     <property name="jnode-distr.jar" value="${root.dir}/distr/build/classes"/>
37     <property name="jnode-fs.jar" value="${root.dir}/fs/build/classes"/>
38     <property name="jnode-gui.jar" value="${root.dir}/gui/build/classes"/>
39     <property name="thinlet.jar" value="${root.dir}/gui/build/classes"/>
40     <property name="jnode-textui.jar" value="${root.dir}/textui/build/classes"/>
41     <property name="jnode-net.jar" value="${root.dir}/net/build/classes"/>
42     <property name="jnode-shell.jar" value="${root.dir}/shell/build/classes"/>
43         <property name="jnode-cli.jar" value="${root.dir}/cli/build/classes"/>
44     <property name="jnode-fonts.jar" value="${build.dir}/descriptors/jnode-fonts.jar"/>
45         <property name="jnode-images.jar" value="${build.dir}/descriptors/jnode-images.jar"/>
47     <property name="jnode-mmtk-genrc.jar" value="${root.dir}/core/build/classes-plan/org.jnode.vm.memmgr.mmtk.genrc"/>
48         <property name="jnode-mmtk-ms.jar" value="${root.dir}/core/build/classes-plan/org.jnode.vm.memmgr.mmtk.ms"/>
49         <property name="jnode-mmtk-nogc.jar" value="${root.dir}/core/build/classes-plan/org.jnode.vm.memmgr.mmtk.nogc"/>
51     <property name="classlib.jar" value="${root.dir}/all/lib/classlib.jar"/>
52     <property name="classlib-src.jar" value="${root.dir}/all/lib/classlib-src.jar"/>
53     <property name="ant.jar" value="${root.dir}/core/lib/ant.jar"/>
54     <property name="ant-launcher.jar" value="${root.dir}/core/lib/ant-launcher.jar"/>
55     <property name="commons-net.jar" value="${root.dir}/core/lib/commons-net-1.1.0.jar"/>
56     <property name="dnsjava.jar" value="${root.dir}/net/lib/dnsjava-1.6.6.jar"/>
57     <property name="jsch.jar" value="${root.dir}/net/lib/jsch-0.1.24.jar"/>
58     <property name="junit.jar" value="${root.dir}/core/lib/junit-4.5.jar"/>
59     <property name="mmtk.jar" value="${root.dir}/core/lib/mmtk/mmtk.jar"/>
60         <property name="mauve.jar" value="${root.dir}/core/lib/mauve.jar"/>
61     <property name="edtftpj.jar" value="${root.dir}/fs/lib/edtftpj-1.5.2.jar"/>
62     <property name="jcifs.jar" value="${root.dir}/fs/lib/jcifs-1.2.6.jar"/>
63     <property name="ejc.jar" value="${root.dir}/core/lib/ejc-3.1.1.jar"/>
64         <property name="oncrpc.jar" value="${root.dir}/net/lib/oncrpc.jar"/>
65         <property name="telnetd.jar" value="${root.dir}/distr/lib/telnetd.jar" />
66         <property name="commons-logging.jar" value="${root.dir}/distr/lib/commons-logging.jar" />
67         <property name="jawk.jar" value="${root.dir}/distr/lib/jawk-1.02.jar"/>
68         <property name="jetty.jar" value="${root.dir}/distr/lib/jetty-6.1.5.jar" />
69         <property name="jetty-util.jar" value="${root.dir}/distr/lib/jetty-util-6.1.5.jar" />
70     <property name="jsp.jar" value="${root.dir}/distr/lib/jsp-2.1.jar" />
71     <property name="jsp-api.jar" value="${root.dir}/distr/lib/jsp-api-2.1.jar" />
72     <property name="servlet.jar" value="${root.dir}/distr/lib/servlet-api-2.5-6.1.5.jar" />
73     <property name="derby.jar" value="${root.dir}/distr/lib/derby.jar" />
74     <property name="derbynet.jar" value="${root.dir}/distr/lib/derbynet.jar" />
75     <property name="derbytools.jar" value="${root.dir}/distr/lib/derbytools.jar" />
76     <property name="nanoxml-java.jar" value="${root.dir}/shell/lib/nanoxml-2.2.3.jar" />
78     <property name="iso9660.jar" value="${root.dir}/builder/lib/iso9660.jar" />
79     <property name="sabre.jar" value="${root.dir}/builder/lib/sabre.jar" />
81     <!-- libraries needed to run tests -->
82     <property name="jmock-cglib.jar" value="${root.dir}/core/lib/jmock-cglib-1.0.1.jar"/>
83     <property name="jmock.jar" value="${root.dir}/core/lib/jmock-1.0.1.jar"/>
84     <property name="cglib.jar" value="${root.dir}/core/lib/cglib-2.1.jar"/>
85     <property name="asm.jar" value="${root.dir}/core/lib/asm-1.5.3.jar"/>
86         <property name="asm-attrs.jar" value="${root.dir}/core/lib/asm-attrs-1.5.3.jar"/>
87         <property name="asm-util.jar" value="${root.dir}/core/lib/asm-util-1.5.3.jar"/>
88         
89     <property name="log4j.jar" value="${root.dir}/core/lib/log4j-1.2.8.jar"/>
90     <property name="beanshell.jar" value="${root.dir}/shell/lib/bsh-2.0b5.jar"/>
91     <property name="js.jar" value="${root.dir}/shell/lib/rhino1.6r5-jsr223.jar"/>
93     <!-- libraries needed to check plugin dependencies -->
94     <property name="bcel-5.1.jar" value="${root.dir}/builder/lib/bcel-5.1.jar" />       
96     <!-- libraries needed to check rules in source code -->
97     <property name="pmd.jar" value="${root.dir}/builder/lib/pmd/pmd-3.0.jar"/>
98     <property name="jaxen.jar" value="${root.dir}/builder/lib/pmd/jaxen-core-1.0-fcs.jar"/>
99     <property name="saxpath.jar" value="${root.dir}/builder/lib/pmd/saxpath-1.0-fcs.jar"/>
100     <property name="xerces.jar" value="${root.dir}/builder/lib/pmd/xercesImpl-2.6.2.jar"/>
101     <property name="xmlParserAPIs.jar" value="${root.dir}/builder/pmd/lib/xmlParserAPIs-2.6.2.jar"/>
103     <!-- lists of plugins to use while booting -->
104     <property name="default-plugin-list" value="${root.dir}/all/conf/default-plugin-list.xml"/>
105     <property name="full-plugin-list" value="${root.dir}/all/conf/full-plugin-list.xml"/>
106     <property name="install-plugin-list" value="${root.dir}/all/conf/install-plugin-list.xml"/>
107     <property name="system-plugin-list" value="${root.dir}/all/conf/system-plugin-list.xml"/>
108     <property name="sources.dist.tar.gz" value="${build.dir}/jnodesources-${jnode-ver}.tar.gz"/>
109     <property name="jnode-x86.iso" value="${cdroms.dir}/jnode-x86.iso"/>
110     <property name="jnode-x86-lite.iso" value="${cdroms.dir}/jnode-x86-lite.iso"/>
111     <property name="jnode-x86_64-lite.iso" value="${cdroms.dir}/jnode-x86_64-lite.iso"/>
113     <path id="cp">
114         <pathelement location="${classlib.jar}"/>
115         <pathelement location="${mmtk.jar}"/>
116         <pathelement location="${ant.jar}"/>
117         <pathelement location="${junit.jar}"/>
118         <pathelement location="${jmock.jar}"/>
119         <pathelement location="${jmock-cglib.jar}"/>
120         <pathelement location="${asm.jar}"/>
121         <pathelement location="${asm-attrs.jar}"/>
122         <pathelement location="${asm-util.jar}"/>
123         <pathelement location="${cglib.jar}"/>
124         <pathelement location="${log4j.jar}"/>
125         <pathelement location="${root.dir}/all/conf"/>
126         <pathelement location="${beanshell.jar}"/>
127         <pathelement location="${js.jar}"/>
128         <pathelement location="${oncrpc.jar}"/>
129         <pathelement location="${edtftpj.jar}"/>
130         <pathelement location="${jcifs.jar}"/>
131         <pathelement location="${commons-net.jar}"/>
132         <pathelement location="${dnsjava.jar}"/>
133         <pathelement location="${mauve.jar}"/>
134         <pathelement location="${derby.jar}"/>
135         <pathelement location="${derbynet.jar}"/>
136         <pathelement location="${derbytools.jar}"/>
137         <pathelement location="${iso9660.jar}"/>
138         <pathelement location="${sabre.jar}"/>
139     </path>
141     <path id="cp-jnode">
142         <pathelement location="${jnode-builder.jar}"/>
143         <pathelement location="${jnode-core.jar}"/>
144         <pathelement location="${jnode-distr.jar}"/>
145         <pathelement location="${jnode-fs.jar}"/>
146         <pathelement location="${jnode-shell.jar}"/>
147         <pathelement location="${jnode-net.jar}"/>
148         <pathelement location="${jnode-gui.jar}"/>
149         <pathelement location="${jnode-cli.jar}"/>
150         <pathelement location="${thinlet.jar}"/>
151         <pathelement location="${jnode-textui.jar}"/>
152             <pathelement location="${bcel-5.1.jar}"/>
153         <path refid="cp"/>
154     </path>
155         
156         <path id="cp-test">
157         <pathelement location="${root.dir}/core/build/classes"/>
158         <pathelement location="${root.dir}/distr/build/classes"/>
159         <pathelement location="${root.dir}/fs/build/classes"/>
160         <pathelement location="${root.dir}/shell/build/classes"/>
161         <pathelement location="${root.dir}/net/build/classes"/>
162         <pathelement location="${root.dir}/gui/build/classes"/>
163         <pathelement location="${root.dir}/cli/build/classes"/>
164         <pathelement location="${root.dir}/textui/build/classes"/>
165         <pathelement location="${root.dir}/shell/lib/nanoxml-2.2.3.jar"/>
166         <path refid="cp"/>
167     </path>
170     <filterset id="descriptors-filter">
171         <filter token="PROVIDER" value="JNode.org"/>
172         <filter token="VERSION" value="${jnode-ver}"/>
173     </filterset>
175     <patternset id="exts">
176         <include name="**/*.dat"/>
177         <include name="**/*.ids"/>
178         <include name="**/*.properties"/>
179         <include name="**/*.xml"/>
180     </patternset>
182     <target name="prepare">
183         <fail message="Java Runtime version 1.6 needed. Your version is: ${java.runtime.version}">
184             <condition>
185                 <not>
186                     <contains string="${java.runtime.version}" substring="1.6" casesensitive="false"/>
187                 </not>
188             </condition>
189         </fail>
191         <!-- Initialize all project directories -->
192         <property file="${root.dir}/jnode.properties"/>
193         <!-- Set overwritable properties -->
194         <property name="jnode.memmgr.plugin.id" value="org.jnode.vm.memmgr.def"/>
195         <property name="compilerarg" value="-nowarn"/>
197         <!-- Derive properties -->
198         <property name="jnode-mmtk.jar" value="${root.dir}/core/build/classes-plan/${jnode.memmgr.plugin.id}"/>
200         <!-- Initialize timestamp -->
201         <tstamp/>
202         
203         <property name="hotswap.class.tstamp.pattern" value="MM/dd/yyyy kk:mm:ss.SSS"/>
204         <tstamp>
205             <format property="hotswap.class.tstamp" pattern="${hotswap.class.tstamp.pattern}" />
206         </tstamp>
209         <!-- Update default excludes -->
210         <defaultexcludes add="**/_svn"/>
211         <defaultexcludes add="**/_svn/**"/>
212         
213         <!-- Create basic build directories -->
214         <mkdir dir="${build.dir}"/>
215         <mkdir dir="${reports.dir}"/>
216         <mkdir dir="${save.dir}"/>
217         <mkdir dir="${cdroms.dir}"/>
218         <mkdir dir="${descriptors.dir}"/>
219         <mkdir dir="${plugins.dir}"/>
220         <mkdir dir="${initjars.dir}"/>
221         <property file="${root.dir}/all/lib/ftp.properties"/>
222         <!-- check for classlib update -->
223         <if>
224             <or>
225                 <not>
226                     <uptodate srcfile="${root.dir}/all/lib/ftp.properties" targetfile="${root.dir}/all/lib/classlib.pack.gz"/>
227                 </not>
228                 <not>
229                     <uptodate srcfile="${root.dir}/all/lib/ftp.properties" targetfile="${root.dir}/all/lib/classlib-src.jar.bz2"/>
230                 </not>
231             </or>
232             <then>
233                 <!-- check if classlib update should be done locally or from the FTP server -->
234                 <if>
235                     <isset property="jnode.local.classlib"/>
236                     <then>
237                         <fail message="classlib is out of date, run copy or quickdeploy in classlib project">
238                             <condition>
239                                 <or>
240                                     <not>
241                                         <uptodate srcfile="${root.dir}/all/lib/ftp.properties"
242                                             targetfile="${root.dir}/all/lib/classlib.jar"/>
243                                     </not>
244                                     <not>
245                                         <uptodate srcfile="${root.dir}/all/lib/ftp.properties"
246                                             targetfile="${root.dir}/all/lib/classlib-src.jar"/>
247                                     </not>
248                                 </or>
249                             </condition>
250                         </fail>
251                     </then>
252                     <else>
253                         <!-- classlib update from the FTP server -->
254                         <delete file="${root.dir}/all/lib/classlib.pack.gz"/>
255                         <delete file="${root.dir}/all/lib/classlib-src.jar.bz2"/>
256                         <get src="${classlib.url}/classlib.pack.gz" dest="${root.dir}/all/lib/classlib.pack.gz"/>
257                         <get src="${classlib.url}/classlib-src.jar.bz2" dest="${root.dir}/all/lib/classlib-src.jar.bz2"/>
258                         <!-- verify checksum for downloaded files -->
259                         <if>
260                             <not>
261                                 <checksum algorithm="MD5" file="${root.dir}/all/lib/classlib.pack.gz" property="${classlib.md5}"/>
262                             </not>
263                             <then>
264                                 <delete file="${root.dir}/all/lib/classlib.pack.gz"/>
265                                 <fail message="checksum failed for classlib.pack.gz"/>
266                             </then>
267                         </if>
268                         <if>
269                             <not>
270                                 <checksum algorithm="MD5" file="${root.dir}/all/lib/classlib-src.jar.bz2" property="${classlib-src.md5}"/>
271                             </not>
272                             <then>
273                                 <delete file="${root.dir}/all/lib/classlib-src.jar.bz2"/>
274                                 <fail message="checksum failed for classlib-src.jar.bz2"/>
275                             </then>
276                         </if>
277                     </else>
278                 </if>
279           </then>
280         </if>
281         <if>
282           <or>
283               <not>
284                 <available file="${classlib.jar}" />
285               </not>
286               <uptodate srcfile="${classlib.jar}" targetfile="${root.dir}/all/lib/classlib.pack.gz"/>
287           </or>
288           <then>
289             <delete file="${classlib.jar}"/>
290             <echo message="Creating ${classlib.jar}"/>
291             <exec executable="unpack200">
292               <arg file="${root.dir}/all/lib/classlib.pack.gz"/>
293               <arg file="${classlib.jar}"/>
294             </exec>
295           </then>
296         </if>
297         <if>
298           <or>
299               <not>
300                 <available file="${classlib-src.jar}" />
301               </not>
302               <uptodate srcfile="${classlib-src.jar}" targetfile="${root.dir}/all/lib/classlib-src.jar.bz2"/>
303           </or>
304           <then>
305             <delete file="${classlib-src.jar}"/>
306             <echo message="Creating ${classlib-src.jar}"/>
307             <bunzip2 src="${root.dir}/all/lib/classlib-src.jar.bz2" dest="${classlib-src.jar}"/>
308           </then>
309         </if>
310         <property name="classlib.stamp" value="${root.dir}/all/build/classlib.stamp" />
311     </target>
313     <!-- Call the assemble target of all subprojects -->
314     <target name="assemble-projects" depends="prepare">
315         <!-- pre compile tasks needed for compilation -->
316         <ant target="pre-compile" dir="${root.dir}/builder" inheritall="on" inheritrefs="on" />
317         <jnode.antall target="assemble"/>
318     </target>
320     <!-- Assemble all plugins -->
321     <target name="assemble-plugins" depends="assemble-projects,openjdk-annotate">
322         <!-- Now assemble all plugins -->
323         <taskdef name="plugin" classname="org.jnode.build.PluginTask" classpathref="cp-jnode"/>
324         <if>
325             <or>
326               <not>
327                 <available file="${classlib.stamp}" />
328               </not>
329               <uptodate srcfile="${classlib.stamp}" targetfile="${classlib.jar}"/>
330             </or>
331             <then>
332               <!-- Now assemble all plugins -->
333                 <plugin todir="${plugins.dir}" tmpdir="${build.dir}/tmp/plugins" pluginDir="${descriptors.dir}">
334                     <packager userApplicationsDir="${user.applications.dir}" pathRefId="cp"/>
336                     <libalias name="jnode-core.jar" alias="${jnode-core.jar}"/>
337                     <libalias name="jnode-distr.jar" alias="${jnode-distr.jar}"/>
338                     <libalias name="jnode-fs.jar" alias="${jnode-fs.jar}"/>
339                     <libalias name="jnode-gui.jar" alias="${jnode-gui.jar}"/>
340                     <libalias name="jnode-textui.jar" alias="${jnode-textui.jar}"/>
341                     <libalias name="jnode-net.jar" alias="${jnode-net.jar}"/>
342                     <libalias name="jnode-shell.jar" alias="${jnode-shell.jar}"/>
344                     <libalias name="jnode-mmtk-genrc.jar" alias="${jnode-mmtk-genrc.jar}"/>
345                     <libalias name="jnode-mmtk-ms.jar" alias="${jnode-mmtk-ms.jar}"/>
346                     <libalias name="jnode-mmtk-nogc.jar" alias="${jnode-mmtk-nogc.jar}"/>
348                     <libalias name="mmtk.jar" alias="${mmtk.jar}"/>
350                     <libalias name="commons-net-1.1.0.jar" alias="${commons-net.jar}"/>
351                     <libalias name="dnsjava-1.6.6.jar" alias="${dnsjava.jar}"/>
352                     <libalias name="jsch-0.1.24.jar" alias="${jsch.jar}"/>
353                     <libalias name="log4j.jar" alias="${log4j.jar}"/>
354                     <libalias name="beanshell.jar" alias="${beanshell.jar}"/>
355                     <libalias name="nanoxml-java.jar" alias="${nanoxml-java.jar}"/>
356                     <libalias name="js.jar" alias="${js.jar}"/>
357                     <libalias name="thinlet.jar" alias="${thinlet.jar}"/>
359                     <libalias name="junit.jar" alias="${junit.jar}"/>
360                     <libalias name="jmock-1.0.1.jar" alias="${jmock.jar}"/>
361                     <libalias name="jmock-cglib-1.0.1.jar" alias="${jmock-cglib.jar}"/>
362                     <libalias name="asm.jar" alias="${asm.jar}"/>
363                     <libalias name="asm-attrs.jar" alias="${asm-attrs.jar}"/>
364                     <libalias name="asm-util.jar" alias="${asm-util.jar}"/>
365                     <libalias name="cglib.jar" alias="${cglib.jar}"/>
366                     <libalias name="mauve.jar" alias="${mauve.jar}"/>
368                     <libalias name="ant.jar" alias="${ant.jar}"/>
369                     <libalias name="ant-launcher.jar" alias="${ant-launcher.jar}"/>
370                     <libalias name="edtftpj.jar" alias="${edtftpj.jar}"/>
371                     <libalias name="jcifs.jar" alias="${jcifs.jar}"/>
372                     <libalias name="ejc.jar" alias="${ejc.jar}"/>
373                     <libalias name="oncrpc.jar" alias="${oncrpc.jar}"/>
374                     <libalias name="telnetd.jar" alias="${telnetd.jar}"/>
375                     <libalias name="commons-logging.jar" alias="${commons-logging.jar}"/>
376                     <libalias name="jawk.jar" alias="${jawk.jar}"/>
377                     <libalias name="jetty.jar" alias="${jetty.jar}"/>
378                     <libalias name="jetty-util.jar" alias="${jetty-util.jar}"/>
379                     <libalias name="jsp.jar" alias="${jsp.jar}"/>
380                     <libalias name="jsp-api.jar" alias="${jsp-api.jar}"/>
381                     <libalias name="servlet.jar" alias="${servlet.jar}"/>
382                     <libalias name="derby.jar" alias="${derby.jar}"/>
383                     <libalias name="derbynet.jar" alias="${derbynet.jar}"/>
384                     <libalias name="derbytools.jar" alias="${derbytools.jar}"/>
385                     <libalias name="classlib.jar" alias="${classlib.jar}"/>
387                     <descriptors dir="${descriptors.dir}/">
388                         <include name="org.classpath.core.xml"/>
389                         <include name="org.classpath.ext.awt.xml"/>
390                         <include name="org.classpath.ext.corba.xml"/>
391                         <include name="org.classpath.ext.core.xml"/>
392                         <include name="org.classpath.ext.imageio.xml"/>
393                         <include name="org.classpath.ext.jdwp.xml"/>
394                         <include name="org.classpath.ext.management.xml"/>
395                         <include name="org.classpath.ext.print.xml"/>
396                         <include name="org.classpath.ext.security.xml"/>
397                         <include name="org.classpath.ext.sql.xml"/>
398                         <include name="org.classpath.ext.xml"/>
399                         <include name="org.classpath.ext.xml.ws.tools.xml"/>
400                         <include name="org.classpath.ext.xml.ws.xml"/>
401                         <include name="org.classpath.ext.xml.xml"/>
402                         <include name="org.classpath.tools.xml"/>
403                         <include name="com.sun.tools.javac.xml"/>
404                         <include name="com.sun.tools.jdi.xml"/>
405                         <include name="javax.ext.tools.xml"/>
406                         <include name="sun.tools.xml"/>
407                     </descriptors>
408                 </plugin>
410                 <touch file="${classlib.stamp}"/>
411             </then>
412         </if>
414         <plugin todir="${plugins.dir}" tmpdir="${build.dir}/tmp/plugins" pluginDir="${descriptors.dir}">
415                 <packager userApplicationsDir="${user.applications.dir}" pathRefId="cp"/>
416                 
417             <libalias name="jnode-core.jar" alias="${jnode-core.jar}"/>
418             <libalias name="jnode-distr.jar" alias="${jnode-distr.jar}"/>
419             <libalias name="jnode-fs.jar" alias="${jnode-fs.jar}"/>
420             <libalias name="jnode-gui.jar" alias="${jnode-gui.jar}"/>
421             <libalias name="jnode-textui.jar" alias="${jnode-textui.jar}"/>
422             <libalias name="jnode-net.jar" alias="${jnode-net.jar}"/>
423             <libalias name="jnode-shell.jar" alias="${jnode-shell.jar}"/>
424             <libalias name="jnode-cli.jar" alias="${jnode-cli.jar}"/>
426                 <libalias name="jnode-mmtk-genrc.jar" alias="${jnode-mmtk-genrc.jar}"/>
427                 <libalias name="jnode-mmtk-ms.jar" alias="${jnode-mmtk-ms.jar}"/>
428                 <libalias name="jnode-mmtk-nogc.jar" alias="${jnode-mmtk-nogc.jar}"/>
430                 <libalias name="mmtk.jar" alias="${mmtk.jar}"/>
432             <libalias name="commons-net-1.1.0.jar" alias="${commons-net.jar}"/>
433             <libalias name="dnsjava-1.6.6.jar" alias="${dnsjava.jar}"/>
434             <libalias name="jsch-0.1.24.jar" alias="${jsch.jar}"/>
435             <libalias name="log4j.jar" alias="${log4j.jar}"/>
436             <libalias name="beanshell.jar" alias="${beanshell.jar}"/>
437             <libalias name="nanoxml-java.jar" alias="${nanoxml-java.jar}"/>
438             <libalias name="js.jar" alias="${js.jar}"/>
439             <libalias name="thinlet.jar" alias="${thinlet.jar}"/>
441             <libalias name="junit.jar" alias="${junit.jar}"/>
442             <libalias name="jmock-1.0.1.jar" alias="${jmock.jar}"/>
443             <libalias name="jmock-cglib-1.0.1.jar" alias="${jmock-cglib.jar}"/>
444             <libalias name="asm.jar" alias="${asm.jar}"/>
445                 <libalias name="asm-attrs.jar" alias="${asm-attrs.jar}"/>
446                 <libalias name="asm-util.jar" alias="${asm-util.jar}"/>
447             <libalias name="cglib.jar" alias="${cglib.jar}"/>
448                 <libalias name="mauve.jar" alias="${mauve.jar}"/>
450             <libalias name="ant.jar" alias="${ant.jar}"/>
451             <libalias name="ant-launcher.jar" alias="${ant-launcher.jar}"/>
452             <libalias name="edtftpj.jar" alias="${edtftpj.jar}"/>
453             <libalias name="jcifs.jar" alias="${jcifs.jar}"/>
454             <libalias name="ejc.jar" alias="${ejc.jar}"/>
455                 <libalias name="oncrpc.jar" alias="${oncrpc.jar}"/>
456                 <libalias name="telnetd.jar" alias="${telnetd.jar}"/>
457             <libalias name="commons-logging.jar" alias="${commons-logging.jar}"/>
458             <libalias name="jawk.jar" alias="${jawk.jar}"/>
459             <libalias name="jetty.jar" alias="${jetty.jar}"/>
460             <libalias name="jetty-util.jar" alias="${jetty-util.jar}"/>
461             <libalias name="jsp.jar" alias="${jsp.jar}"/>
462             <libalias name="jsp-api.jar" alias="${jsp-api.jar}"/>
463             <libalias name="servlet.jar" alias="${servlet.jar}"/>
464             <libalias name="derby.jar" alias="${derby.jar}"/>
465             <libalias name="derbynet.jar" alias="${derbynet.jar}"/>
466             <libalias name="derbytools.jar" alias="${derbytools.jar}"/>
468             <descriptors dir="${descriptors.dir}/">
469                 <include name="*.xml"/>
470                 <exclude name="*plugin-list.xml"/>
471                 <exclude name="com.sun.tools.javac.xml"/>
472                 <exclude name="com.sun.tools.jdi.xml"/>
473                 <exclude name="javax.ext.tools.xml"/>
474                 <exclude name="sun.tools.xml"/>
475                 <exclude name="org.classpath.core.xml"/>
476                 <exclude name="org.classpath.core.xml"/>
477                 <exclude name="org.classpath.ext.awt.xml"/>
478                 <exclude name="org.classpath.ext.corba.xml"/>
479                 <exclude name="org.classpath.ext.core.xml"/>
480                 <exclude name="org.classpath.ext.imageio.xml"/>
481                 <exclude name="org.classpath.ext.jdwp.xml"/>
482                 <exclude name="org.classpath.ext.management.xml"/>
483                 <exclude name="org.classpath.ext.print.xml"/>
484                 <exclude name="org.classpath.ext.security.xml"/>
485                 <exclude name="org.classpath.ext.sql.xml"/>
486                 <exclude name="org.classpath.ext.xml"/>
487                 <exclude name="org.classpath.ext.xml.ws.tools.xml"/>
488                 <exclude name="org.classpath.ext.xml.ws.xml"/>
489                 <exclude name="org.classpath.ext.xml.xml"/>
490                 <exclude name="org.classpath.tools.xml"/>
491             </descriptors>
492         </plugin>
493     </target>
495     <!-- Assemble all default initjars -->
496     <target name="assemble-default-initjars" depends="assemble-plugins" unless="no.default.initjars">
497         <!-- Build all default initjar's -->
498         <taskdef name="initjars" classname="org.jnode.build.InitJarsBuilder" classpathref="cp-jnode"/>
499         <initjars destdir="${initjars.dir}"
500             pluginDir="${plugins.dir}"
501             systemPluginList="${root.dir}/all/conf/system-plugin-list.xml">
502             <insert userApplicationsDir="${user.applications.dir}"/>
503                         
504             <fileset dir="${root.dir}/all/conf">
505                 <exclude name="system-plugin-list.xml"/>
506                 <include name="*plugin-list.xml"/>
507             </fileset>
508         </initjars>
509     </target>
511     <!-- Assemble all custom initjars -->
512     <target name="assemble-custom-initjars" depends="assemble-plugins" if="custom.plugin-list.dir">
513         <!-- Build all custom initjar's -->
514         <taskdef name="initjars" classname="org.jnode.build.InitJarsBuilder" classpathref="cp-jnode"/>
515         <initjars destdir="${initjars.dir}"
516             pluginDir="${plugins.dir}"
517             systemPluginList="${root.dir}/all/conf/system-plugin-list.xml">
518             <fileset dir="${custom.plugin-list.dir}">
519                 <include name="*plugin-list.xml"/>
520             </fileset>
521         </initjars>
522     </target>
524     <!-- Assemble all subprojects, plugins and initjars -->
525     <target name="assemble" depends="assemble-default-initjars, assemble-custom-initjars">
526     </target>
528     <!-- Give help on possible targets -->
529     <target name="help" description="help on the important targets">
530         <echo>
531 Welcome to the JNode build system.
532                         
533 You can use this build system to perform various tasks, 
534 by specifying one or more targets on the command line. 
535 See the list below for an explanation of all targets.
536                         
537 x86               Build the JNode bootable image for the X86 32-bit
538                   architecture.
539 x86_64            Build the JNode bootable image for the X86 64-bit
540                   architecture (AMD64).
541                         
542 cd-x86            Build the JNode bootable CD-ROM for the X86
543                   architecture 32 and 64-bit. The CD-ROM also
544                   contains the JNode sources.
545 cd-x86-lite       Build the JNode bootable CD-ROM for the X86
546                   32-bit architecture.
547 cd-x86_64-lite    Build the JNode bootable CD-ROM for the X86
548                   64-bit architecture.
549 <!--
550 create-patch      Create a patch file containing the differences
551                   between the local sources and the cvs HEAD
552                   branch.
553 -->             
554 boot-files-winNT  Build the JNode boot files for windows NT/2K/XP
555                   used together with NTLDR
557 encoding-test     Verify the file encoding of all java source
558                   files.
559 encoding-fix      Correct the file encoding of all java source
560                   files.
561                         
562 javadoc           Generate documentation of all java source files.
563 javadoc-small     Generate documentation of the basic JNode api's.
565 check-plugins     Run tests to check plugin dependencies.
567 clean             Remove all intermediate build results.
568         </echo>
569     </target>
571     <!-- Macro used to call the x86 build script -->
572     <macrodef name="x86-build">
573         <attribute name="bits"/>
574         <attribute name="target" default="all"/>
575         <sequential>
576             <ant antfile="build-x86.xml" inheritall="on" inheritrefs="on" target="@{target}">
577                 <property name="jnode.bits" value="@{bits}"/>
578             </ant>
579         </sequential>
580     </macrodef>
582     <!-- Create the X86 32-bit boot image -->
583     <target name="x86" depends="assemble">
584         <x86-build bits="32"/>
585     </target>
587     <!-- Create the X86 64-bit boot image-->
588     <target name="x86_64" depends="assemble">
589         <x86-build bits="64"/>
590     </target>
592     <!-- Create the JOP boot image -->
593     <target name="jop" depends="assemble">
594         <ant antfile="build-jop.xml" inheritall="on" inheritrefs="on"/>
595     </target>
597     <!-- Build the boot files for windows NT/2K/XP (with NTLDR) -->
598     <target name="boot-files-winNT" depends="assemble">
599         <x86-build bits="32" target="boot-files-winNT"/>
600     </target>
602     <!-- Create a bootable CDROM image containing all x86 bootable images and the sources -->
603     <target name="cd-x86" depends="assemble" description="create a bootable JNode CD image with sources included">
604         <tar destfile="${sources.dist.tar.gz}" compression="gzip" basedir="${root.dir}" excludes="*/build/**"/>
605         <x86-build bits="32" target="java-image"/>
606         <!-- TODO enable this when 64 bit support is working -->
607         <!--x86-build bits="64" target="java-image"/-->
608         <property name="jnode.bits" value="32" />
609         <ant antfile="build-x86.xml" inheritall="true" inheritrefs="true" target="cdrom"/>
610     </target>
612     <!-- Create a bootable CDROM image for x86 32-bits -->
613     <target name="cd-x86-lite" depends="assemble" description="create a bootable JNode CD image">
614         <x86-build bits="32" target="java-image"/>
615         <property name="jnode.bits" value="32" />
616         <ant antfile="build-x86.xml" inheritall="true" inheritrefs="true" target="cdrom-lite"/>
617     </target>
619     <!-- Create a bootable CDROM image for x86 64-bits -->
620     <target name="cd-x86_64-lite" depends="assemble">
621         <x86-build bits="64" target="java-image"/>
622         <property name="jnode.bits" value="64" />
623         <ant antfile="build-x86.xml" inheritall="true" inheritrefs="true" target="cdrom_64-lite"/>
624     </target>
626     <!-- Upload a distribution -->
627     <target name="upload">
628         <property name="upload.dir" value="${build.dir}/upload"/>
629         <mkdir dir="${upload.dir}"/>
630         <gzip src="${jnode-x86.iso}" destfile="${upload.dir}/jnode-x86-${jnode-ver}.iso.gz"/>
631         <copy todir="${upload.dir}" file="${sources.dist.tar.gz}"/>
632         <checksum algorithm="MD5" forceoverwrite="true">
633             <fileset dir="${upload.dir}">
634                 <include name="jnode-x86-${jnode-ver}.iso.gz" />
635                 <include name="jnodesources-${jnode-ver}.tar.gz" />
636             </fileset>
637         </checksum>
638         <echo message="FTP upload disabled. Uploadables are in: ${upload.dir}"/>
639         <!--
640         TODO find a way to automatically upload the files 
641         jsch based scp with sftp fails with an error to sourceforge
642         FTP uploads are abandone by sourceforge
643         <ftp server="upload.sourceforge.net" remotedir="incoming" passive="yes" newer="yes" verbose="yes" userid="anonymous" password="${user.name}@users.sourceforge.net">
644             <fileset dir="${upload.dir}"/>
645         </ftp>
646         -->
647     </target>
648         
649         <!-- Save virtualization etc state across 'clean' -->
650         <target name="save">
651            <copy file="${cdroms.dir}/JNode.nvram" todir="${save.dir}" failonerror="no"/>
652         </target>
654     <!-- Clean everything files -->
655     <target name="clean" depends="save" description="clean the complete build output">
656         <jnode.antall target="clean"/>
657         <delete dir="${build.dir}" quiet="on"/>
658     </target>
659         
660         <path id="cp-javadoc">
661         <path refid="cp"/>
662                 <pathelement location="${bcel-5.1.jar}"/>
663                 <pathelement location="${nanoxml-java.jar}"/>
664         </path>
666     <!-- Generate only the basic api javadoc files -->
667     <target name="javadoc-small" description="generate documentation of the basic JNode APIs">
668         <jnode.javadoc destdir="${build.dir}/javadoc/small">
669             <sourcepath>
670                 <pathelement location="${root.dir}/core/src/classlib"/>
671                 <pathelement location="${root.dir}/core/src/classpath/ext"/>
672                 <pathelement location="${root.dir}/core/src/classpath/vm"/>
673                 <pathelement location="${root.dir}/core/src/openjdk/vm"/>
674                 <pathelement location="${root.dir}/core/src/endorsed/nanoxml"/>
675                 <pathelement location="${root.dir}/core/src/core"/>
676                 <pathelement location="${root.dir}/core/src/vmmagic"/>
677                 <pathelement location="${root.dir}/core/src/driver"/>
678                 <pathelement location="${root.dir}/all/lib/classlib-src.jar"/>
679             </sourcepath>
680             <package name="org.jnode.driver"/>
681             <package name="org.jnode.naming"/>
682             <package name="org.jnode.plugin"/>
683             <package name="org.jnode.system"/>
684             <bootclasspath refid="cp-javadoc"/>
685         </jnode.javadoc>
686     </target>
688     <!-- Generate only the MMTk api javadoc files -->
689     <target name="javadoc-mmtk">
690         <jnode.javadoc destdir="${build.dir}/javadoc/mmtk">
691             <sourcepath>
692                 <pathelement location="${root.dir}/core/src/classlib"/>
693                 <pathelement location="${root.dir}/core/src/vmmagic"/>
694                 <pathelement location="${root.dir}/core/src/mmtk-vm"/>
695                 <pathelement location="${root.dir}/core/src/core"/>
696                 <pathelement location="${root.dir}/core/src/classpath/ext"/>
697                 <pathelement location="${root.dir}/core/src/classpath/vm"/>
698                 <pathelement location="${root.dir}/core/src/openjdk/vm"/>
699                 <pathelement location="${root.dir}/core/src/endorsed/nanoxml"/>
700                 <pathelement location="${root.dir}/all/lib/classlib-src.jar"/>
701             </sourcepath>
702             <package name="org.mmtk.*"/>
703             <package name="org.jnode.vm.memmgr.mmtk.*"/>
704             <package name="org.vmmagic.*"/>
705             <classpath refid="cp-javadoc"/>
706         </jnode.javadoc>
707     </target>
709     <!-- Generate all javadoc files -->
710     <target name="javadoc" description="generate documentation of all java source files">
711         <jnode.javadoc destdir="${build.dir}/javadoc/full">
712             <sourcepath>
713                 <pathelement location="${root.dir}/builder/src/builder"/>
714                 <pathelement location="${root.dir}/builder/src/configure"/>
715                 <pathelement location="${root.dir}/cli/src/commands"/>
716                 <pathelement location="${root.dir}/core/src/classlib"/>
717                 <pathelement location="${root.dir}/core/src/classpath/ext"/>
718                 <pathelement location="${root.dir}/core/src/classpath/vm"/>
719                 <pathelement location="${root.dir}/core/src/openjdk/vm"/>
720                 <pathelement location="${root.dir}/core/src/core"/>
721                 <pathelement location="${root.dir}/core/src/driver"/>
722                 <pathelement location="${root.dir}/core/src/mmtk-vm"/>
723                 <pathelement location="${root.dir}/core/src/endorsed/nanoxml"/>
724                 <pathelement location="${root.dir}/core/src/test"/>
725                 <pathelement location="${root.dir}/core/src/vmmagic"/>
726                 <pathelement location="${root.dir}/distr/src/install"/>
727                 <pathelement location="${root.dir}/fs/src/fs"/>
728                 <pathelement location="${root.dir}/fs/src/fs"/>
729                 <pathelement location="${root.dir}/fs/src/driver"/>
730                 <pathelement location="${root.dir}/gui/src/awt"/>
731                 <pathelement location="${root.dir}/gui/src/driver"/>
732                 <pathelement location="${root.dir}/gui/src/desktop"/>
733                 <pathelement location="${root.dir}/gui/src/font"/>
734                 <pathelement location="${root.dir}/gui/src/thinlet"/>
735                 <pathelement location="${root.dir}/net/src/net"/>
736                 <pathelement location="${root.dir}/net/src/driver"/>
737                 <pathelement location="${root.dir}/shell/src/shell"/>
738             </sourcepath>
739             <package name="org.jnode.*"/>
740             <package name="org.mmtk.*"/>
741             <package name="org.vmmagic.*"/>
742             <bootclasspath refid="cp-javadoc"/>
743         </jnode.javadoc>
744     </target>
746     <!-- Backup CVS files -->
747     <!-- TODO create replacement SVN task
748     <target name="backup">
749         <mkdir dir="${backup.dir}"/>
750         <tstamp>
751             <format property="date" pattern="dd-MM-yyyy"/>
752         </tstamp>
753         <get src="http://cvs.sourceforge.net/cvstarballs/jnode-cvsroot.tar.bz2" dest="${backup.dir}/jnode-cvsroot-${date}.tar.bz2" usetimestamp="true" verbose="true"/>
754     </target>
755     -->
757     <!-- Compare classpath version of jnode with real classpath version -->
758     <target name="cp-compare" depends="assemble">
759         <taskdef name="cp-compare" classname="org.jnode.ant.taskdefs.classpath.CompareTask" classpathref="cp-jnode"/>
761         <patternset id="cp-includes-pattern">
762             <include name="**/*.java"/>
763             <include name="**/*.properties"/>
764             <include name="**/package.html"/>
765         </patternset>
767         <patternset id="cp-sources-pattern">
768             <exclude name="compat/**/*"/>
769             <exclude name="examples/**/*"/>
770             <exclude name="external/**/*"/>
771             <exclude name="tools/**/*"/>
772             <exclude name="gnu/classpath/tools/javah/**/*"/>
773             <exclude name="gnu/java/awt/peer/gtk/**/*"/>
774             <exclude name="gnu/java/awt/peer/qt/**/*"/>
775             <exclude name="gnu/java/awt/peer/x/**/*"/>
776             <exclude name="gnu/java/awt/dnd/peer/gtk/**/*"/>
777             <exclude name="gnu/java/net/local/**/*"/>
778             <exclude name="gnu/javax/sound/midi/alsa/**/*"/>
779             <exclude name="gnu/javax/sound/midi/dssi/**/*"/>
780             <exclude name="gnu/javax/swing/plaf/gtk/**/*"/>
781             <exclude name="gnu/test/**/*"/>
782             <exclude name="gnu/xml/libxmlj/**/*"/>
783             <exclude name="resource/**/*"/>
784             <exclude name="test/**/*"/>
785             <exclude name="testsuite/**/*"/>
786             <exclude name="vm/reference/**/*"/>
787         </patternset>
789         <delete dir="${build.dir}/classpath-compare"/>
790         <cp-compare destdir="${build.dir}/classpath-compare" type="classpath">
791             <vmsources>
792                 <fileset dir="${root.dir}/core/src/classpath/gnu">
793                     <patternset refid="cp-includes-pattern"/>
794                 </fileset>
795                 <fileset dir="${root.dir}/core/src/classpath/java">
796                     <patternset refid="cp-includes-pattern"/>
797                 </fileset>
798                 <fileset dir="${root.dir}/core/src/classpath/javax">
799                         <patternset refid="cp-includes-pattern"/>
800                                 </fileset>
801                 <fileset dir="${root.dir}/core/src/classpath/tools">
802                     <patternset refid="cp-includes-pattern"/>
803                 </fileset>
804                 <fileset dir="${root.dir}/core/src/classpath/sun">
805                     <patternset refid="cp-includes-pattern"/>
806                 </fileset>
807             </vmsources>
808             <vmspecificsources>
809                 <fileset dir="${root.dir}/core/src/classpath/vm">
810                     <patternset refid="cp-includes-pattern"/>
811                 </fileset>
812             </vmspecificsources>
813             <classpathsources>
814                 <fileset dir="${root.dir}/../classpath">
815                     <patternset refid="cp-includes-pattern"/>
816                     <patternset refid="cp-sources-pattern"/>
817                 </fileset>
818                 <fileset dir="${root.dir}/../classpath/external/jsr166">
819                     <patternset refid="cp-includes-pattern"/>
820                     <patternset refid="cp-sources-pattern"/>
821                 </fileset>
822                 <fileset dir="${root.dir}/../classpath/resource">
823                         <patternset refid="cp-includes-pattern"/>
824                 </fileset>
825                 <fileset dir="${root.dir}/../classpath/external/w3c_dom">
826                     <patternset refid="cp-includes-pattern"/>
827                 </fileset>
828                 <fileset dir="${root.dir}/../classpath/external/relaxngDatatype">
829                     <patternset refid="cp-includes-pattern"/>
830                 </fileset>
831                 <fileset dir="${root.dir}/../classpath/external/sax">
832                     <patternset refid="cp-includes-pattern"/>
833                 </fileset>
834                 <fileset dir="${root.dir}/../classpath/tools">
835                     <patternset refid="cp-includes-pattern"/>
836                     <patternset refid="cp-sources-pattern"/>
837                 </fileset>
838                 <fileset dir="${root.dir}/../classpath/tools/external/asm">
839                     <patternset refid="cp-includes-pattern"/>
840                     <patternset refid="cp-sources-pattern"/>
841                 </fileset>
842             </classpathsources>
843         </cp-compare>
844     </target>
846     <!-- Compare classpath version of jnode with real classpath version -->
847     <target name="header-fix" depends="assemble">
848         <!-- todo clean up the excludes -->
849         <taskdef name="header" classname="org.jnode.ant.taskdefs.HeaderTask" classpathref="cp-jnode"/>
851         <header update="on" headerFile="${root.dir}/all/template/header.txt">
852             <fileset dir="${root.dir}/builder/src/builder" includes="**/*.java"/>
853             <fileset dir="${root.dir}/cli/src/commands" includes="**/*.java"/>
854             <fileset dir="${root.dir}/core/src/classpath/ext" includes="**/*.java"/>
855             <fileset dir="${root.dir}/core/src/classpath/vm" includes="**/*.java"
856                     excludes="gnu/classpath/jdwp/VMFrame.java,
857                                gnu/classpath/jdwp/VMIdManager.java,
858                                gnu/classpath/jdwp/VMMethod.java,
859                                gnu/classpath/jdwp/VMVirtualMachine.java,
860                                gnu/classpath/VMStackWalker.java,
861                                gnu/java/lang/VMInstrumentationImpl.java,
862                                gnu/java/nio/VMChannel.java,
863                                java/lang/Thread.java,
864                                java/lang/VMProcess.java,
865                                java/lang/VMSystem.java"/>
866             <fileset dir="${root.dir}/core/src/openjdk/vm" includes="**/*.java" excludes="java/lang/NativeStrictMath.java"/>
867             <fileset dir="${root.dir}/core/src/core" includes="**/*.java" excludes="org/jnode/imageio/jpeg/JPEGDecoder"/>
868             <fileset dir="${root.dir}/core/src/mmtk-vm" includes="**/*.java" excludes="org/mmtk/vm/**/*.java"/>
869             <fileset dir="${root.dir}/core/src/driver" includes="**/*.java"/>
870             <fileset dir="${root.dir}/core/src/test" includes="**/*.java" excludes="org/jnode/test/mauve/**/*.java,org/jtestserver/**/*.java"/>
871             <fileset dir="${root.dir}/distr/src/install" includes="**/*.java"/>
872             <fileset dir="${root.dir}/distr/src/apps" includes="**/*.java"/>
873             <fileset dir="${root.dir}/distr/src/emu" includes="**/*.java"/>
874             <fileset dir="${root.dir}/distr/src/test" includes="**/*.java"/>
875             <fileset dir="${root.dir}/fs/src/fs" includes="**/*.java"/>
876             <fileset dir="${root.dir}/fs/src/driver" includes="**/*.java"/>
877             <fileset dir="${root.dir}/fs/src/test" includes="**/*.java"/>
878             <fileset dir="${root.dir}/gui/src/awt" includes="**/*.java" excludes="org/jnode/awt/font/bdf/**/*.java"/>
879             <fileset dir="${root.dir}/gui/src/desktop" includes="**/*.java"/>
880             <fileset dir="${root.dir}/gui/src/driver" includes="**/*.java"/>
881             <fileset dir="${root.dir}/gui/src/test" includes="**/*.java"/>
882             <fileset dir="${root.dir}/net/src/net" includes="**/*.java"/>
883             <fileset dir="${root.dir}/net/src/driver" includes="**/*.java"/>
884             <fileset dir="${root.dir}/net/src/test" includes="**/*.java"/>
885             <fileset dir="${root.dir}/shell/src/emu" includes="**/*.java"/>
886             <fileset dir="${root.dir}/shell/src/shell" includes="**/*.java"/>
887             <fileset dir="${root.dir}/shell/src/test" includes="**/*.java"/>
888         </header>
889     </target>
891     <target name="check-debugger-properties" depends="prepare">
892         <fail message="Please set jnode.debugger.host property in jnode.properties." unless="jnode.debugger.host"/>
893         <fail message="Please set jnode.debugger.port property in jnode.properties." unless="jnode.debugger.port"/>        
894     </target>
896     <target name="hotswap" depends="check-debugger-properties,assemble-projects" description="hotswap the modified classes">
897       <taskdef name="hotswap" classname="org.jnode.ant.taskdefs.Hotswap" classpathref="cp-jnode" />
898       <hotswap verbose="true" host="${jnode.debugger.host}" port="${jnode.debugger.port}">
899         <fileset dir="../core/build/classes/" includes="**/*.class">
900           <date datetime="${hotswap.class.tstamp}" pattern="MM/dd/yyyy kk:mm:ss" when="after" granularity="0"/>
901         </fileset>
902         <fileset dir="../distr/build/classes/" includes="**/*.class">
903           <date datetime="${hotswap.class.tstamp}" pattern="MM/dd/yyyy kk:mm:ss" when="after" granularity="0"/>
904         </fileset>
905         <fileset dir="../fs/build/classes/" includes="**/*.class">
906           <date datetime="${hotswap.class.tstamp}" pattern="MM/dd/yyyy kk:mm:ss" when="after" granularity="0"/>
907         </fileset>
908         <fileset dir="../gui/build/classes/" includes="**/*.class">
909           <date datetime="${hotswap.class.tstamp}" pattern="MM/dd/yyyy kk:mm:ss" when="after" granularity="0"/>
910         </fileset>
911         <fileset dir="../net/build/classes/" includes="**/*.class">
912           <date datetime="${hotswap.class.tstamp}" pattern="MM/dd/yyyy kk:mm:ss" when="after" granularity="0"/>
913         </fileset>
914         <fileset dir="../shell/build/classes/" includes="**/*.class">
915           <date datetime="${hotswap.class.tstamp}" pattern="MM/dd/yyyy kk:mm:ss" when="after" granularity="0"/>
916         </fileset>
917         <fileset dir="../textui/build/classes/" includes="**/*.class">
918           <date datetime="${hotswap.class.tstamp}" pattern="MM/dd/yyyy kk:mm:ss" when="after" granularity="0"/>
919         </fileset>
920       </hotswap>
921     </target>
923     <target name="oj-compare" depends="assemble">
924             <taskdef name="cp-compare" classname="org.jnode.ant.taskdefs.classpath.CompareTask" classpathref="cp-jnode"/>
926             <patternset id="cp-includes-pattern">
927                 <include name="**/*.java"/>
928                 <include name="**/*.properties"/>
929                 <include name="**/package.html"/>
930             </patternset>
932             <patternset id="cp-sources-pattern">
933                 <exclude name="com/sun/demo/**/*"/>
934                 <exclude name="com/sun/tools/hat/**/*"/>
935                 <exclude name="com/sun/tools/example/**/*"/>
936                 <exclude name="com/sun/tools/javah/**/*"/>
937                 <exclude name="com/sun/tools/internal/txw2/**/*"/>
938                 <exclude name="sun/jvmstat/**/*"/>
939                 <exclude name="sun/tools/attach/**/*"/>
940                 <exclude name="sun/tools/jinfo/**/*"/>
941                 <exclude name="sun/tools/jps/**/*"/>
942                 <exclude name="sun/tools/jmap/**/*"/>
943                 <exclude name="sun/tools/jstack/**/*"/>
944                 <exclude name="sun/tools/jstat/**/*"/>
945                 <exclude name="sun/tools/jstatd/**/*"/>
946                 <exclude name="sun/tools/jconsole/**/*"/>
947             </patternset>
949             <delete dir="${build.dir}/openjdk-compare"/>
950             <cp-compare destdir="${build.dir}/openjdk-compare" type="openjdk">
951                 <vmsources>
952                     <fileset dir="${root.dir}/core/src/openjdk/com">
953                         <patternset refid="cp-includes-pattern"/>
954                     </fileset>
955                     <fileset dir="${root.dir}/core/src/openjdk/java">
956                         <patternset refid="cp-includes-pattern"/>
957                     </fileset>
958                     <fileset dir="${root.dir}/core/src/openjdk/javax">
959                         <patternset refid="cp-includes-pattern"/>
960                     </fileset>
962                     <fileset dir="${root.dir}/core/src/openjdk/org">
963                         <patternset refid="cp-includes-pattern"/>
964                     </fileset>
966                     <fileset dir="${root.dir}/core/src/openjdk/sun">
967                         <patternset refid="cp-includes-pattern"/>
968                     </fileset>
969                     <fileset dir="${root.dir}/core/src/openjdk/jaxws">
970                         <patternset refid="cp-includes-pattern"/>
971                     </fileset>
972                     <fileset dir="${root.dir}/core/src/openjdk/langtools">
973                         <patternset refid="cp-includes-pattern"/>
974                     </fileset>
975                     <fileset dir="${root.dir}/core/src/openjdk/corba">
976                         <patternset refid="cp-includes-pattern"/>
977                     </fileset>
978                 </vmsources>
979                 <vmspecificsources>
980                     <fileset dir="${root.dir}/core/src/openjdk/vm">
981                         <patternset refid="cp-includes-pattern"/>
982                        </fileset>
983                 </vmspecificsources>
984                 <classpathsources>
985                     <fileset dir="${root.dir}/../openjdk/jdk/src/share/classes/">
986                         <patternset refid="cp-includes-pattern"/>
987                         <patternset refid="cp-sources-pattern"/>
988                     </fileset>
989                     <fileset dir="${root.dir}/../openjdk/corba/src/share/classes/">
990                         <patternset refid="cp-includes-pattern"/>
991                         <patternset refid="cp-sources-pattern"/>
992                     </fileset>
993                     <fileset dir="${root.dir}/../openjdk/jaxp/src/share/classes/">
994                         <patternset refid="cp-includes-pattern"/>
995                         <patternset refid="cp-sources-pattern"/>
996                     </fileset>
997                     <fileset dir="${root.dir}/../openjdk/jaxws/src/share/classes/">
998                         <patternset refid="cp-includes-pattern"/>
999                         <patternset refid="cp-sources-pattern"/>
1000                     </fileset>
1001                     <fileset dir="${root.dir}/../openjdk/langtools/src/share/classes/">
1002                         <patternset refid="cp-includes-pattern"/>
1003                         <patternset refid="cp-sources-pattern"/>
1004                     </fileset>
1005                 </classpathsources>
1006             </cp-compare>
1007         </target>
1009     <target name="openjdk-annotate" depends="assemble-projects">
1010         <taskdef name="oj-annotate" classname="org.jnode.ant.taskdefs.AnnotateTask" 
1011                         classpathref="cp-jnode"/>
1013         <oj-annotate annotationFile="${root.dir}/all/conf/openjdk-annotations.properties"
1014                                  buildStartTime="${hotswap.class.tstamp}"
1015                      pattern="${hotswap.class.tstamp.pattern}"
1016                                  trace="false"
1017                      failonerror="true"
1018                      basedir="${root.dir}/core/build/classes"/>
1019     </target>
1021         <!-- check that all native methods are properly implemented for JNode -->
1022     <target name="native-method-check" depends="assemble-projects">
1023         <echo message="native-method-check"/>
1024         <taskdef name="native-check" classname="org.jnode.ant.taskdefs.NativeCheckTask" 
1025                         classpathref="cp-jnode"/>
1027         <native-check trace="false" failonerror="false">
1028             <fileset dir="${root.dir}/core/build/classes">
1029                 <patternset includes="**/*.class"/>
1030             </fileset>          
1031         </native-check>
1032     </target>
1034     <!-- Run all tests -->
1035     <target name="tests" depends="assemble">
1036         <ant target="tests" dir="${root.dir}/fs" inheritall="on" inheritrefs="on"/>
1037     </target>
1039     <!-- Check the encoding of all files -->
1040     <target name="encoding-test" depends="assemble">
1041         <taskdef name="n2a" classname="org.jnode.ant.taskdefs.Native2AsciiTask" classpathref="cp-jnode"/>
1043         <n2a update="off">
1044             <fileset dir="${root.dir}" includes="**/*.java"/>
1045         </n2a>
1046     </target>
1048     <!-- Check and fix the encoding of all files -->
1049     <target name="encoding-fix" depends="assemble">
1050         <taskdef name="n2a" classname="org.jnode.ant.taskdefs.Native2AsciiTask" classpathref="cp-jnode"/>
1052         <n2a update="on">
1053             <fileset dir="${root.dir}" includes="**/*.java"/>
1054         </n2a>
1055     </target>
1057         <!-- check plugin dependencies -->
1058         <target name="check-plugins" depends="assemble-plugins">
1059                 <!-- Check all plugins -->
1060                 <taskdef name="checkDeps" classname="org.jnode.build.dependencies.BCELDependencyChecker" 
1061                         classpathref="cp-jnode" />
1062         <!--
1063         TODO: remove duplicate classes from mmtk related plugins and enable their checking. 
1064         -->
1065         <checkDeps>
1066                         <plugins dir="${plugins.dir}/">
1067                                 <include name="*.jar" />
1068                 <exclude name="*mmtk*.jar" />
1069             </plugins>
1070                         
1071                         <descriptors dir="${descriptors.dir}/">
1072                                 <include name="*.xml" />
1073                                 <exclude name="*plugin-list.xml" />
1074                 <exclude name="*mmtk*.xml" />
1075             </descriptors>
1076                 </checkDeps>
1077         </target>
1079     <!-- Define the task that check the rules -->
1080     <taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask"
1081         classpathref="cp-jnode">
1082         <classpath>
1083             <pathelement location="${pmd.jar}"/>
1084             <pathelement location="${jaxen.jar}"/>
1085             <pathelement location="${saxpath.jar}"/>
1086             <pathelement location="${xerces.jar}"/>
1087             <pathelement location="${xmlParserAPIs.jar}"/>
1088         </classpath>
1089     </taskdef>
1092     <!-- Macro used to check that the rules are applied in the source code -->
1093     <macrodef name="checkProjectRules">
1094         <attribute name="projectName"/>
1095         <attribute name="webSrcUrl"/>
1096         <attribute name="projectSrc"/>
1097         <sequential>
1098             <property name="nbFailures" value="0"/>
1099             <echo message="Scanning @{projectName}."/>
1100             <property name="tmp" value="../@{projectSrc}"/>
1101             <pmd failuresPropertyName="nbFailures">
1102                 <formatter type="html" toFile="${reports.dir}/pmd_report-@{projectName}.html"/>
1104                 <ruleset>rulesets/favorites.xml</ruleset>
1105                 <ruleset>rulesets/basic.xml</ruleset>
1107                 <fileset dir="../@{projectSrc}" includes="**/*.java"/>
1108             </pmd>
1109             <echo message="There was ${nbFailures} failures in @{projectName}."/>
1110         </sequential>
1111     </macrodef>
1113     <target name="checkJNodeRules" depends="prepare">
1114         <parallel>
1115             <checkProjectRules projectName="distr" webSrcUrl="distr" projectSrc="distr"/>
1116             <checkProjectRules projectName="JNode-Builder" webSrcUrl="builder" projectSrc="builder"/>
1117             <checkProjectRules projectName="JNode-Core" webSrcUrl="core" projectSrc="core"/>
1118             <checkProjectRules projectName="JNode-FS" webSrcUrl="fs" projectSrc="fs"/>
1119             <checkProjectRules projectName="JNode-GUI" webSrcUrl="gui" projectSrc="gui"/>
1120             <checkProjectRules projectName="JNode-Net" webSrcUrl="net" projectSrc="net"/>
1121             <checkProjectRules projectName="JNode-Shell" webSrcUrl="shell" projectSrc="shell"/>
1122             <checkProjectRules projectName="JNode-TestUI" webSrcUrl="textui" projectSrc="textui"/>
1123         </parallel>
1124     </target>
1126     <!-- Document all plugins -->
1127     <target name="document-plugins" depends="assemble-projects">
1128         <taskdef name="plugindocumentation" classname="org.jnode.build.documentation.PluginDocumentationTask" classpathref="cp-jnode"/>
1130         <plugindocumentation
1131             destdir="${reports.dir}/plugins"
1132             pluginDir="${descriptors.dir}"
1133             tree="${jnode.plugin.doc.tree}">
1134             <descriptors dir="${descriptors.dir}/">
1135                 <include name="*.xml"/>
1136                 <exclude name="*plugin-list.xml"/>
1137             </descriptors>
1138         </plugindocumentation>
1140     </target>
1142     <target name="checkstyle" description="check the mandatory code conventions">
1143         <taskdef resource="checkstyletask.properties" classpath="../core/lib/checkstyle-all-4.4.jar"/>
1144         <checkstyle config="jnode_checks.xml">
1145             <fileset dir="../builder/src/builder" includes="**/*.java"/>
1146             <fileset dir="../builder/src/configure" includes="**/*.java"/>
1147             <fileset dir="../cli/src/commands" includes="**/*.java"/>
1148             <fileset dir="../core/src/core" includes="**/*.java"/>
1149             <fileset dir="../core/src/driver" includes="**/*.java"/>
1150             <fileset dir="../core/src/test" includes="**/*.java"/>
1151             <fileset dir="../distr/src/apps" includes="**/*.java"/>
1152             <fileset dir="../distr/src/emu" includes="**/*.java"/>
1153             <fileset dir="../distr/src/install" includes="**/*.java"/>
1154             <fileset dir="../distr/src/test" includes="**/*.java"/>
1155             <fileset dir="../fs/src/fs" includes="**/*.java"/>
1156             <fileset dir="../fs/src/driver" includes="**/*.java"/>
1157             <fileset dir="../fs/src/test" includes="**/*.java"/>
1158             <fileset dir="../gui/src/test" includes="**/*.java"/>
1159             <fileset dir="../gui/src/desktop" includes="**/*.java"/>
1160             <fileset dir="../gui/src/driver" includes="**/*.java"/>
1161             <fileset dir="../gui/src/awt" includes="**/*.java"/>
1162             <fileset dir="../net/src/net" includes="**/*.java"/>
1163             <fileset dir="../net/src/driver" includes="**/*.java"/>
1164             <fileset dir="../net/src/test" includes="**/*.java"/>
1165             <fileset dir="../shell/src/test" includes="**/*.java"/>
1166             <fileset dir="../shell/src/shell" includes="**/*.java"/>
1167         </checkstyle>
1168     </target>
1170     <target name="checkstyle-new" description="check the recommanded code conventions">
1171         <taskdef resource="checkstyletask.properties" classpath="../core/lib/checkstyle-all-4.4.jar"/>
1172         <checkstyle config="new_checks.xml">
1173             <!--
1174             <fileset dir="../builder/src/builder" includes="**/*.java"/>
1175             <fileset dir="../builder/src/configure" includes="**/*.java"/>
1176             <fileset dir="../core/src/core" includes="**/*.java"/>
1177             <fileset dir="../core/src/driver" includes="**/*.java"/>
1178             <fileset dir="../core/src/test" includes="**/*.java"/>
1179             -->
1180             <fileset dir="../distr/src/apps" includes="**/*.java"/>
1181             <fileset dir="../distr/src/emu" includes="**/*.java"/>
1182             <fileset dir="../distr/src/install" includes="**/*.java"/>
1183             <fileset dir="../distr/src/test" includes="**/*.java"/>
1184             <!--
1185             <fileset dir="../fs/src/fs" includes="**/*.java"/>
1186             <fileset dir="../fs/src/driver" includes="**/*.java"/>
1187             <fileset dir="../fs/src/test" includes="**/*.java"/>
1188             <fileset dir="../gui/src/test" includes="**/*.java"/>
1189             <fileset dir="../gui/src/desktop" includes="**/*.java"/>
1190             <fileset dir="../gui/src/driver" includes="**/*.java"/>
1191             <fileset dir="../gui/src/awt" includes="**/*.java"/>
1192             <fileset dir="../net/src/net" includes="**/*.java"/>
1193             <fileset dir="../net/src/driver" includes="**/*.java"/>
1194             <fileset dir="../net/src/test" includes="**/*.java"/>
1195             <fileset dir="../shell/src/test" includes="**/*.java"/>
1196             <fileset dir="../shell/src/shell" includes="**/*.java"/>
1197             -->
1198         </checkstyle>
1199     </target>
1201   <target name="findbugs" depends="assemble-plugins">
1202     <taskdef name="findbugs" classpath="../core/lib/findbugs/lib/findbugs-ant.jar"
1203              classname="edu.umd.cs.findbugs.anttask.FindBugsTask"/>
1204     <findbugs home="../core/lib/findbugs/" output="html" outputFile="./build/findbugs.html" >
1205       <auxclasspath>
1206           <pathelement location="./build/plugins/rt_${jnode-ver}.jar" />
1207           <pathelement location="./build/plugins/org.classpath.ext.core_${jnode-ver}.jar" />
1208           <pathelement location="./build/plugins/nanoxml_1.4.jar" />
1209           <pathelement location="${nanoxml-java.jar}" />
1210           <pathelement location="${log4j.jar}" />
1211       </auxclasspath>
1212       <sourcepath>
1213           <pathelement path="../core/src/core/"/>
1214       </sourcepath>
1215       <class location="./build/plugins/org.jnode.vm_${jnode-ver}.jar"/>
1216       <class location="./build/plugins/org.jnode.vm.core_${jnode-ver}.jar"/>
1217       <class location="./build/plugins/org.jnode.vm.memmgr.def_${jnode-ver}.jar"/>
1218       <class location="./build/plugins/org.jnode.driver_${jnode-ver}.jar"/>
1219       <class location="./build/plugins/org.jnode.runtime_${jnode-ver}.jar"/>
1220       <class location="./build/plugins/org.jnode.runtime.core_${jnode-ver}.jar"/>
1221       <class location="./build/plugins/org.jnode.util_${jnode-ver}.jar"/>
1222       <class location="./build/plugins/org.jnode.work_${jnode-ver}.jar"/>
1223       <class location="./build/plugins/org.jnode.security_${jnode-ver}.jar"/>
1224     </findbugs>
1225   </target>
1227     <!-- Create a patch -->
1228     <!-- TODO create replacement SVN task
1229     <target name="create-patch">
1230         <property name="patch.file" value="${root.dir}/patch.txt"/>             
1231                 <echo>Creating patch in ${patch.file}</echo>
1232                 <cvs output="${patch.file}" dest="${root.dir}">
1233                     <commandline>
1234                         <argument line="-q diff -u -N"/>
1235                     </commandline>
1236                 </cvs>
1237         </target>
1238         -->
1239 </project>