source: trunk/abcl/build.xml @ 11499

Last change on this file since 11499 was 11499, checked in by Mark Evenson, 13 years ago

Revert Netbeans breakage.

  • Property svn:eol-style set to LF
File size: 17.9 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<project xmlns="antlib:org.apache.tools.ant"
3   name="abcl-master" default="help" basedir=".">
4    <description>Armed Bear Common Lisp</description>
5
6    <target name="abcl" depends="abcl.wrapper"/>
7
8    <property file="build.properties"/>
9
10    <property name="build.dir" 
11        value="${basedir}/build"/>
12    <property name="build.classes.dir" 
13        value="${build.dir}/classes"/>
14    <property name="src.dir" 
15        value="${basedir}/src"/>
16    <property name="dist.dir" 
17        value="${basedir}/dist"/>
18    <property name="abcl.jar.path"
19        value="${dist.dir}/abcl.jar"/>
20    <property name="j.jar.path"
21        value="${dist.dir}/j.jar"/>
22
23    <target name="help">
24      <echo>Main Ant targets:
25 abcl.compile 
26   -- compile ABCL to ${build.classes.dir}
27 abcl.jar     
28   -- create packaged ${abcl.jar.path}
29 abcl.wrapper 
30   -- create executable wrapper for ABCL
31 abcl.source.zip abcl.source.tar
32    -- create source distributions in ${dist.dir}
33 abcl.clean
34    -- remove ABCL intermediate files</echo>
35      <echo>Corresponding targets for J exist, but currently aren't as well tested.
36      </echo>
37    </target>
38
39    <property name="abcl.version.path"
40        value="${build.classes.dir}/org/armedbear/lisp/version"/>
41    <property name="abcl.build.path"
42        value="${build.classes.dir}/org/armedbear/lisp/build"/>
43    <property name="j.version.path"
44        value="${build.classes.dir}/org/armedbear/j/version"/>
45    <property name="j.build.path"
46        value="${build.classes.dir}/org/armedbear/j/build"/>
47
48    <target name="abcl.stamp" depends="abcl.compile">
49      <tstamp>
50         <format property="build" pattern="EEE MMM dd yyyy HH:mm:ss zzz"/>
51      </tstamp>
52      <mkdir dir="${abcl.build.path}/.."/>
53      <echo message="${build}" file="${abcl.build.path}"/>   
54      <condition property="unix"> 
55  <or>
56    <os family="unix"/>
57    <os family="mac"/>
58  </or>
59      </condition>
60
61      <condition property="windows"> <os family="windows"/></condition>
62
63      <available file="${src.dir}org/armedbear/lisp/Interpreter.java" 
64     property="abcl.lisp.p"/>
65
66      <antcall target="abcl.stamp.version"/>
67      <antcall target="abcl.stamp.hostname"/>
68    </target>
69
70    <target name="j.stamp" depends="abcl.stamp,j.compile">
71      <echo message="${build}" file="${j.build.path}"/>   
72    </target>
73
74    <target name="abcl.stamp.version" depends="abcl.compile">
75      <java fork="true"
76      classpath="${build.classes.dir}"
77      outputproperty="abcl.version"
78      classname="org.armedbear.lisp.Main">
79  <arg value="--noinit"/>
80  <arg value="--noinform"/>
81  <arg value="--eval"/>
82  <arg value="(progn (format t (lisp-implementation-version)) (finish-output) (quit))"/>
83      </java>
84
85      <echo>Building ABCL version: ${abcl.version}</echo>
86      <mkdir dir="${abcl.version.path}/.."/>
87      <echo message="${abcl.version}" file="${abcl.version.path}"/> 
88    </target>
89
90    <target name="abcl.stamp.hostname">
91      <property name="j.build.path"
92    value="${build.classes.dir}/org/armedbear/j/build"/>
93      <exec executable="hostname" outputproperty="abcl.hostname"/>
94      <echo>abcl.hostname: ${abcl.hostname}</echo>
95    </target>
96
97    <target name="j.stamp.hostname">
98      <echo message="${abcl.hostname}" file="${j.build.path}" append="yes"/>
99    </target>
100
101    <patternset id="abcl.source.java">
102      <include name="org/armedbear/lisp/*.java"/>
103      <include name="org/armedbear/lisp/util/*.java"/>
104      <include name="org/armedbear/Main.java"/>
105    </patternset>
106   
107    <patternset id="abcl.source.lisp">
108      <include name="org/armedbear/lisp/*.lisp"/>
109      <include name="org/armedbear/lisp/tests/*.lisp"/>
110      <include name="org/armedbear/lisp/java/awt/*.lisp"/>
111      <include name="org/armedbear/lisp/java/awt/*.java"/>
112    </patternset>
113
114    <!-- Lisp files required at runtime -->
115    <patternset id="abcl.source.lisp.dist">
116      <include name="org/armedbear/lisp/boot.lisp"/>
117    </patternset>
118
119    <patternset id="abcl.objects">
120      <include name="org/armedbear/lisp/*.class"/>
121      <include name="org/armedbear/lisp/util/*.class"/>
122      <include name="org/armedbear/lisp/*.cls"/> 
123      <include name="org/armedbear/lisp/*.abcl"/>
124      <patternset refid="abcl.source.lisp.dist"/>
125    </patternset>
126   
127    <patternset id="j.source">
128      <include name="Main.java"/>
129      <include name="gnu/regexp/*.java"/>
130      <include name="org/armedbear/j/**/*.java"/>
131      <!-- Assumed to need the org.armedbear.lisp.awt.* classes as ABCL
132           itself doesn't seem to need them. -->
133      <include name="org/armedbear/lisp/awt/*.class"/>
134    </patternset>
135
136    <patternset id="j.objects">
137      <patternset refid="abcl.objects"/>
138      <include name="Main.class"/>
139      <include name="gnu/regexp/*.class"/>
140      <include name="org/armedbear/j/**/*.class"/>
141    </patternset>
142
143    <patternset id="j.resources.src">
144      <include name="**/*.keywords"/>
145      <include name="org/armedbear/j/version"/>
146      <include name="org/armedbear/j/build"/>
147      <include name="org/armedbear/j/snapshot"/>
148      <include name="org/armedbear/j/images/*.png"/>
149      <include name="gnu/regexp/MessagesBundle.properties"/>
150    </patternset>
151
152    <patternset id="j.resources.top">
153      <include name="COPYING"/>
154      <include name="doc/*.html"/>
155      <include name="doc/*.css"/>
156      <include name="themes/*"/>
157      <include name="examples/*"/>
158    </patternset>
159
160    <path id="abcl.classpath.dist">
161      <pathelement location="${abcl.jar.path}"/>
162    </path>
163   
164    <path id="abcl.classpath.build">
165      <pathelement location="${build.classes.dir}"/>
166    </path>
167
168    <target name="abcl.compile" depends="abcl.pre-compile,abcl.compile.lisp">
169      <echo>Compiled ABCL with java version: ${java.version}</echo>
170    </target>
171
172    <target name="j.pre-compile" depends="abcl.pre-compile"/>
173
174    <target name="abcl.pre-compile">
175      <!--- antversion fails in ant 1.7.1 <antversion property="ant.version"
176                                                atleast="1.7"/> -->
177      <mkdir dir="${build.dir}"/>
178      <mkdir dir="${build.classes.dir}"/>
179
180      <property name="j.compile.version.path"
181    value="${build.classes.dir}/org/armedbear/j/version"/>
182
183      <property name="java.path"
184    value="${java.home}/bin/java"/>
185
186      <exec executable="hostname" os="unix" 
187      outputproperty="abcl.compile.hostname"/>
188      <exec executable="uname" os="unix" 
189      outputproperty="abcl.compile.uname">
190  <arg value="-a"/>
191      </exec>
192
193      <exec executable="hostname" os="Linux" outputproperty="hostname"/>
194
195      <condition property="abcl.java.version">
196  <or>
197    <matches string="${java.version}" pattern="1\.5"/>
198    <matches string="${java.version}" pattern="1\.6\.0_1[0-9]"/>
199  </or> 
200      </condition>
201      <echo>java.version: ${java.version}</echo>
202    </target>
203   
204    <target name="abcl.java.warning" 
205      depends="abcl.pre-compile"
206      unless="abcl.java.version">
207      <echo>WARNING: Java version ${java.version} not recommended.</echo>
208    </target>
209 
210    <target name="abcl.compile.java" 
211      depends="abcl.pre-compile,abcl.java.warning">
212      <tstamp>
213  <format property="build" pattern="EEE MMM dd yyyy HH:mm:ss zzz"/>
214      </tstamp>
215
216      <javac destdir="${build.classes.dir}"
217       debug="true"
218       target="1.5">
219  <src path="${src.dir}"/>
220  <patternset refid="abcl.source.java"/>
221      </javac>
222      <echo message="${build}" 
223      file="${build.classes.dir}/org/armedbear/lisp/build"/>
224    </target>
225
226    <target name="j.compile" depends="j.pre-compile">
227      <javac destdir="${build.classes.dir}"
228       debug="true"
229       target="1.5">
230  <src path="${src.dir}"/>
231  <patternset refid="j.source"/>
232      </javac>
233    </target>
234
235    <target name="abcl.copy.lisp">
236      <copy todir="${build.classes.dir}" preservelastmodified="yes">
237  <fileset dir="${src.dir}">
238    <patternset refid="abcl.source.lisp"/>
239  </fileset>
240      </copy>
241    </target>
242
243    <!-- Adjust the patternset for ABCL source to use the much faster
244         Ant 'uptodate' task to check if we need to compile the system
245         fasls. -->
246    <patternset id="abcl.source.lisp.fasls">
247      <patternset refid="abcl.source.lisp"/>
248      <exclude name="org/armedbear/lisp/tests/*.lisp"/>
249      <exclude name="org/armedbear/lisp/boot.lisp"/>
250      <exclude name="org/armedbear/lisp/emacs.lisp"/>
251      <exclude name="org/armedbear/lisp/runtime-class.lisp"/>
252      <exclude name="org/armedbear/lisp/run-benchmarks.lisp"/>
253      <exclude name="org/armedbear/lisp/j.lisp"/>
254    </patternset>
255
256    <target name="abcl.fasls.uptodate">
257      <uptodate property="abcl.fasls.uptodate.p" value="true">
258  <srcfiles dir="${build.classes.dir}">
259    <patternset refid="abcl.source.lisp.fasls"/>
260  </srcfiles>
261  <mapper type="glob" from="*.lisp" to="*.abcl"/>
262      </uptodate>
263    </target>
264   
265    <target name="abcl.compile.lisp" 
266      depends="abcl.copy.lisp,abcl.compile.java,abcl.fasls.uptodate"
267      unless="abcl.fasls.uptodate.p">
268      <java classpath="${build.classes.dir}"
269      fork="true"
270      classname="org.armedbear.lisp.Main">
271  <arg value="--noinit"/>
272  <arg value="--eval"/>
273  <arg value="(compile-system :zip nil :quit t)"/>
274      </java>
275    </target>
276
277    <target name="abcl.jar" depends="abcl.compile,abcl.stamp">
278      <mkdir dir="${dist.dir}"/>
279      <loadfile property="abcl.version"
280      srcFile="${abcl.version.path}"/>
281      <jar destfile="${abcl.jar.path}"
282     compress="true"
283     basedir="${build.classes.dir}">
284  <patternset refid="abcl.objects"/>
285  <manifest>
286    <attribute name="Main-Class" value="org.armedbear.lisp.Main"/>
287    <section name="org/armedbear/lisp">
288      <attribute name="Implementation-Title" 
289           value="ABCL"/>
290      <attribute name="Implementation-Version" 
291           value="${abcl.version}"/>
292      <attribute name="Implementation-Build" 
293           value="${build}"/>
294      <attribute name="Build-Version" 
295           value="${version}"/>
296    </section>
297  </manifest>
298      </jar>
299    </target>
300   
301    <target name="abcl.debug.jpda" depends="abcl.jar">
302      <description>Invoke ABCL with JPDA listener on port 6789</description>
303      <java fork="true"
304      classpathref="abcl.classpath.dist"
305      classname="org.armedbear.lisp.Main">
306  <jvmarg 
307      value="-agentlib:jdwp=transport=dt_socket,address=6789,server=y"/>
308      </java>
309    </target>
310
311    <target name="abcl.run" depends="abcl.jar">
312      <java fork="true"
313      classpathref="abcl.classpath.dist"
314      classname="org.armedbear.lisp.Main">
315      </java>
316    </target>
317
318    <target name="abcl.wrapper" 
319      depends="abcl.jar,abcl.wrapper.unix,abcl.wrapper.windows">
320      <description>
321  Creates in-place exectuable shell wrapper in '${abcl.wrapper.file}'
322      </description>
323      <!-- Set from commandline or in 'build.properties' -->
324      <property name="additional.jars" value=""/>
325      <path id="abcl.runtime.classpath">
326  <pathelement location="${abcl.jar.path}"/>
327  <pathelement path="${additional.jars}"/>
328      </path>
329      <!-- set via '-Djava.options=JAVA_OPTIONS' or in 'build.properties -->
330      <property name="java.options" value=""/>
331
332      <copy file="${abcl.wrapper.in.file}" toFile="${abcl.wrapper.file}" overwrite="yes">
333  <filterset>
334    <filter token="JAVA" 
335      value="${java.path}"/>
336    <filter token="ABCL_JAVA_OPTIONS" 
337      value= "${java.options}"/>
338    <filter token="ABCL_LIBPATH" 
339      value="${basedir}/src/org/armedbear/lisp/libabcl.so"/>
340    <filter token="ABCL_CLASSPATH" 
341      value="${toString:abcl.runtime.classpath}"/>
342  </filterset>
343      </copy>
344      <chmod file="${abcl.wrapper.file}" perm="a+x"/>
345      <echo>N.B. This wrapper requires '${abcl.jar.path}' not be moved.</echo>
346    </target>
347
348    <target name="abcl.wrapper.unix" if="unix">
349      <property name="abcl.wrapper.file" value="abcl"/>
350      <property name="abcl.wrapper.in.file" value="abcl.in"/>
351    </target>
352
353    <target name="abcl.wrapper.windows" if="windows">
354      <property name="abcl.wrapper.file" value="abcl.bat"/>
355      <property name="abcl.wrapper.in.file" value="abcl.bat.in"/>
356    </target>
357
358    <target name="j.jar" depends="j.compile,j.stamp">
359      <copy todir="${build.classes.dir}">
360  <fileset dir="${basedir}/src">
361    <patternset refid="j.objects"/>
362    <patternset refid="j.resources.src"/>
363  </fileset>
364      </copy>
365      <jar destfile="${j.jar.path}" 
366     compress="true"
367     basedir="${build.classes.dir}">
368  <patternset refid="j.objects"/>
369  <patternset refid="j.resources.src"/>
370  <manifest>
371    <attribute name="Main-Class" value="Main"/>
372    <section name="org/armedbear/lisp">
373      <attribute name="Implementation-Title" value="ABCL"/>
374      <attribute name="Implementation-Version"  value="${abcl.version}"/>
375    </section>
376  </manifest>
377      </jar>
378    </target>
379
380    <target name="j.dist" depends="j.jar">
381      <mkdir dir="${dist.dir}"/>
382      <copy todir="dist">
383  <fileset dir="${basedir}">
384    <patternset refid="j.resources.top"/>
385  </fileset>
386      </copy>
387    </target>
388
389    <target name="abcl.clean">
390      <delete dir="${build.dir}"/>
391      <delete file="abcl"/>
392    </target>
393
394    <target name="abcl.dist" depends="abcl.jar">
395      <copy file="${abcl.jar.path}"
396      toFile="${dist.dir}/abcl-${abcl.version}.jar"/>
397    </target>
398
399    <target name="abcl.distclean" depends="abcl.clean">
400      <delete dir="${dist.dir}"/>
401      <delete file="abcl"/>
402      <delete file="j"/>
403    </target>
404
405    <target name="TAGS">
406      <apply executable="etags" parallel="true" verbose="true">
407  <fileset dir="${src.dir}">
408    <patternset refid="abcl.source.java"/>
409    <patternset refid="abcl.source.lisp"/>
410  </fileset>
411      </apply>
412    </target>
413
414    <target name="j.jpty" depends="j.jpty.compile"/>
415
416    <target name="j.jpty.compile" if="unix">
417      <exec executable="gcc" dir="${src.dir}/jpty">
418  <arg line="-Wall -O2 jpty.c -o jpty"/>
419      </exec>
420    </target>
421
422    <target name="j.install" depends="j.jar,j.install.unix,j.install.windows">
423      <property name="j.install.data.dir" value="${j.install.root}/share"/>
424      <property name="j.install.bin.dir" value="${j.install.root}/bin"/>
425
426      <mkdir dir="${j.install.data.dir}/j"/>
427      <copy file="${dist.dir}/j.jar" todir="${j.install.data.dir}/j"/>
428      <!-- set via '-Djava.options=JAVA_OPTIONS' or in 'build.properties -->
429      <property name="java.options" value=""/>
430      <copy file="${j.wrapper.file}.in" toFile="${j.install.bin.dir}/${j.wrapper.file}">
431  <filterset>
432    <filter token="JAVA" 
433      value="${java.path}"/>
434    <filter token="JAVA_OPTIONS" 
435      value="${java.options}"/>
436    <filter token="CLASSPATH"
437      value="${j.install.data.dir}/j/j.jar"/>
438  </filterset>
439      </copy>
440      <chmod file="${j.install.bin.dir}/j" perm="ugo+rx"/>
441
442      <property name="j.install.themes.path"
443    value="${j.install.data.dir}/j/themes"/>
444      <mkdir dir="${j.install.themes.dir}"/>
445      <copy todir="{j.install.themes.dir}">
446  <fileset dir="${basedir}/themes"/>
447      </copy>
448
449      <property name="j.install.doc.path"
450    value="${j.install.data.dir}/doc/j"/>
451      <mkdir dir="${j.install.doc.dir}" />
452
453      <copy file="${basedir}/src/jpty/jpty" 
454            todir="${j.install.bin.dir}"
455      failonerror="false"/>
456      <chmod file="${j.install.bin.dir}/jpty" perm="ugo+rx"/>
457      <copy todir="${j.install.data.dir}/doc/j">
458  <fileset dir="${basedir}/doc"/>
459      </copy>
460    </target>
461
462    <target name="j.install.unix" depends="j.jpty" if="unix">
463      <property name="j.install.root" value="/usr/local"/>
464      <property name="j.wrapper.file" value="j"/>
465    </target>
466
467    <target name="j.install.windows" depends="j.jpty" if="windows">
468      <property name="j.install.root" value="c:/j"/>
469      <property name="j.wrapper.file" value="j.bat"/>
470    </target>
471
472    <patternset id="abcl.dist.misc"
473    description="Additional includes in the source distributions relative to basedir">
474      <include name="build.xml"/>
475      <include name="build.properties.in"/>
476      <include name="COPYING"/>
477      <include name="README"/>
478      <include name="abcl.in"/>
479      <include name="abcl.bat.in"/>
480     
481      <!-- The remainder of these files are used by BUILD-ABCL to
482           build ABCL from Lisp but not used by Ant, include them in
483           the source distribution. -->
484      <include name="make-jar.in"/>
485      <include name="make-jar.bat.in"/>
486
487      <include name="build-abcl.lisp"/>
488      <include name="customizations.lisp.in"/>
489
490      <include name="test-abcl.asd"/>
491      <include name="build-abcl.asd"/>
492    </patternset>
493
494    <patternset id="abcl.source.misc"
495    description="Additional includes in the source distribution relative to source root">
496      <include name="org/armedbear/lisp/LICENSE"/>
497      <include name="manifest-abcl"/>
498    </patternset>
499   
500    <target name="abcl.source.prepare" depends="abcl.stamp.version">
501      <property name="abcl.source.eol" value="asis"/>
502      <echo>Using '${abcl.source.eol}' to drive line-ending transformations.</echo>
503      <property name="abcl.build.src.dir"
504    value="${build.dir}/abcl-src-${abcl.version}"/>
505      <mkdir dir="${abcl.build.src.dir}/src"/>
506      <fixcrlf srcdir="${src.dir}" 
507         eol="${abcl.source.eol}"
508         destdir="${abcl.build.src.dir}/src"
509         preservelastmodified="true">
510  <patternset refid="abcl.source.java"/>
511  <patternset refid="abcl.source.lisp"/>
512  <patternset refid="abcl.source.misc"/>
513      </fixcrlf>
514      <fixcrlf srcdir="${basedir}" 
515         eol="${abcl.source.eol}"
516         destdir="${abcl.build.src.dir}"
517         preservelastmodified="true">
518  <patternset refid="abcl.dist.misc"/>
519      </fixcrlf>
520    </target>
521
522    <target name="abcl.source.tar" depends="abcl.source.prepare">
523      <mkdir dir="${dist.dir}"/>
524      <tar destfile="${dist.dir}/abcl-src-${abcl.version}.tar.gz"
525     compression="gzip">
526  <tarfileset dir="${build.dir}">
527    <include name="abcl-src-${abcl.version}/**"/>
528  </tarfileset>
529      </tar>
530    </target>
531
532    <target name="abcl.source.zip" depends="abcl.source.prepare">
533      <mkdir dir="${dist.dir}"/>
534      <zip destfile="${dist.dir}/abcl-src-${abcl.version}.zip"
535     compress="true">
536  <zipfileset dir="${abcl.build.src.dir}" prefix="abcl-src-${abcl.version}"/>
537      </zip>
538    </target>
539
540    <import file="netbeans-build.xml" optional="true"/> 
541<!--    <import file="j-build.xml" optional="true"/>  -->
542    <import file="not.org-build.xml" optional="true"/> 
543</project>
544
Note: See TracBrowser for help on using the repository browser.