source: trunk/j/build.xml @ 11376

Last change on this file since 11376 was 11376, checked in by ehuelsmann, 13 years ago

Clean up build system artifacts of slime.
Follow up for compilation of with-mutex.lisp.

Patch by: mevenson

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