source: branches/0.23.x/abcl/build.xml

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

[backport r13029] Ensure that build process exits with error if abcl.contrib.compile fails.

  • Property svn:eol-style set to LF
File size: 28.3 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<project xmlns="antlib:org.apache.tools.ant"
3   name="abcl-master" default="abcl.wrapper" basedir=".">
4    <description>Compiling, testing, and packaging Armed Bear Common Lisp</description>
5
6    <target name="abcl" depends="abcl.wrapper"/>
7 
8    <target name="help">
9      <echo>
10Main Ant targets:
11
12 abcl.wrapper
13   -- [default] create executable wrapper for ABCL.
14 abcl.compile 
15   -- compile ABCL to ${build.classes.dir}.
16 abcl.jar     
17   -- create packaged ${abcl.jar.path}.
18 abcl.source.zip abcl.source.tar
19   -- create source distributions in ${dist.dir}.
20 abcl.clean
21   -- remove ABCL intermediate files
22      </echo>
23
24      <echo>
25For help on the automatic tests available, use the Ant target 'help.test'.
26      </echo>
27    </target>
28
29    <!-- Behavior of the build system can be customized via setting
30         properties in the 'abcl.properties' file. -->
31    <property file="abcl.properties"/>
32
33    <property name="build.dir" 
34        value="${basedir}/build"/>
35    <property name="build.classes.dir" 
36        value="${build.dir}/classes"/>
37    <property name="src.dir" 
38        value="${basedir}/src"/>
39    <property name="dist.dir" 
40        value="${basedir}/dist"/>
41    <property name="abcl.jar.path"
42        value="${dist.dir}/abcl.jar"/>
43    <property name="abcl.ext.dir"
44        value="${basedir}/ext"/>
45
46    <fail message="Please build using Ant 1.7.1 or higher.">
47        <condition>
48            <not>
49                <antversion atleast="1.7.1"/>
50            </not>
51        </condition>
52    </fail>
53
54    <!-- Checks if JSR-223 support is available - thanks to Mark Evenson -->
55    <available property="abcl.jsr-223.p"
56         classname="javax.script.ScriptEngine"/>
57
58    <patternset id="abcl.source.java">
59      <include name="org/armedbear/lisp/*.java"/>
60      <include name="org/armedbear/lisp/util/*.java"/>
61      <include name="org/armedbear/lisp/java/**/*.java"/>
62      <include name="org/armedbear/lisp/scripting/*.java" if="abcl.jsr-223.p"/>
63      <include name="org/armedbear/lisp/scripting/util/*.java" if="abcl.jsr-223.p"/>
64      <include name="org/armedbear/Main.java"/>
65    </patternset>
66
67    <patternset id="abcl.source.lisp">
68      <include name="org/armedbear/lisp/*.lisp"/>
69      <include name="org/armedbear/lisp/java/**/*.lisp"/>
70      <include name="org/armedbear/lisp/tests/*.lisp"/>
71      <exclude name="org/armedbear/lisp/j.lisp"/>
72      <include name="org/armedbear/lisp/scripting/lisp/*.lisp" if="abcl.jsr-223.p"/>
73    </patternset>
74
75    <!-- Lisp files required at runtime -->
76    <patternset id="abcl.source.lisp.dist">
77      <include name="org/armedbear/lisp/boot.lisp"/>
78      <include name="org/armedbear/lisp/scripting/lisp/*.lisp" if="abcl.jsr-223.p"/>
79      <include name="**/*.lisp" if="abcl.compile.lisp.skip"/>
80    </patternset>
81
82    <patternset id="abcl.objects">
83      <!-- "system.lisp" is dynamically created by COMPILE-SYSTEM -->
84      <include name="org/armedbear/lisp/system.lisp"/> 
85      <include name="org/armedbear/lisp/**/*.class"/>
86      <include name="org/armedbear/lisp/**/*.cls"/> 
87      <include name="org/armedbear/lisp/**/*.abcl"/>
88      <include name="org/armedbear/lisp/scripting/*.class" if="abcl.jsr-223.p"/>
89      <include name="org/armedbear/lisp/scripting/util/*.class" if="abcl.jsr-223.p"/>
90      <patternset refid="abcl.source.lisp.dist"/>
91    </patternset>
92   
93    <path id="abcl.classpath.dist">
94      <pathelement location="${abcl.jar.path}"/>
95    </path>
96   
97    <path id="abcl.classpath.build">
98      <pathelement location="${build.classes.dir}"/>
99    </path>
100
101    <target name="abcl.compile" depends="abcl.clean.maybe,abcl.compile.lisp">
102      <echo>Compiled ABCL with Java version: ${java.version}</echo>
103    </target>
104
105    <target name="abcl.clean.maybe" unless="abcl.build.incremental">
106      <echo>Cleaning all intermediate compilation artifacts.</echo>
107      <echo>Setting 'abcl.build.incremental' enables incremental compilation.</echo>
108      <antcall target="abcl.clean"/>
109    </target>
110     
111
112    <target name="abcl.init">
113      <tstamp>
114  <format property="build" pattern="EEE MMM dd yyyy HH:mm:ss zzz"/>
115      </tstamp>
116
117      <tstamp>
118  <format property="build.stamp" pattern="yyyymmdd-HHmm"/>
119      </tstamp>
120
121      <property name="abcl.test.log.file"
122    value="abcl-test-${build.stamp}.log"/>
123
124      <property name="java.path"
125    value="${java.home}/bin/java"/>
126
127      <!-- Deprecated. Two main types of build environents: 'unix' or 'windows'. -->
128      <condition property="unix"> 
129  <or>
130    <os family="unix"/>
131    <os family="mac"/>
132  </or>
133      </condition>
134      <condition property="windows"> 
135  <os family="windows"/>
136      </condition>
137
138      <!-- Deprecated. -->
139      <available file="${src.dir}org/armedbear/lisp/Interpreter.java" 
140     property="abcl.lisp.p"/>
141
142      <echo>java.version: ${java.version}</echo>
143      <condition property="abcl.java.version.p">
144  <or>
145    <matches string="${java.version}" pattern="1\.5"/>
146    <matches string="${java.version}" pattern="1\.6\.0_[12][0-9]"/>
147  </or> 
148      </condition>
149
150      <!-- Set from commandline via -D or in 'build.properties' -->
151      <property name="build.version" value="abcl.svn"/>
152      <echo>Implementation-Source: ${version.src}</echo>
153
154    </target>
155   
156    <target name="abcl.java.warning" 
157      depends="abcl.init"
158      unless="abcl.java.version.p">
159      <echo>WARNING: Use of Java version ${java.version} not recommended.</echo>
160    </target>
161 
162    <target name="abcl.jsr-223.notice"
163      depends="abcl.init"
164      unless="abcl.jsr-223.p">
165      <echo>
166  Notice: JSR-223 support won't be built since it is not
167          supported, neither natively by your JVM nor by
168    libraries in the CLASSPATH.
169      </echo>
170    </target>
171
172    <target name="abcl.compile.java" 
173      depends="abcl.init,abcl.java.warning,abcl.jsr-223.notice">
174      <mkdir dir="${build.dir}"/>
175      <mkdir dir="${build.classes.dir}"/>
176      <javac destdir="${build.classes.dir}"
177       debug="true"
178       target="1.5"
179             includeantruntime="false"
180       failonerror="true">
181  <src path="${src.dir}"/>
182  <patternset refid="abcl.source.java"/>
183      </javac>
184      <echo message="${build}" 
185      file="${build.classes.dir}/org/armedbear/lisp/build"/>
186    </target>
187
188    <target name="abcl.copy.lisp">
189      <copy todir="${build.classes.dir}" preservelastmodified="yes">
190  <fileset dir="${src.dir}">
191          <patternset refid="abcl.source.lisp.dist"/>
192  </fileset>
193      </copy>
194    </target>
195
196    <!-- Adjust the patternset for ABCL source to use the much faster
197         Ant 'uptodate' task to check if we need to compile the system
198         fasls.  Highly inter-dependent with the behavior specified in
199         'compile-system.lisp', i.e. files not listed in
200         there should NOT occur here. -->
201    <patternset id="abcl.source.lisp.fasls">
202      <patternset refid="abcl.source.lisp"/>
203      <exclude name="org/armedbear/lisp/scripting/**/*.lisp"/>
204      <exclude name="org/armedbear/lisp/boot.lisp"/>
205      <exclude name="org/armedbear/lisp/emacs.lisp"/>
206      <exclude name="org/armedbear/lisp/runtime-class.lisp"/>
207      <exclude name="org/armedbear/lisp/run-benchmarks.lisp"/>
208    </patternset>
209
210    <target name="abcl.fasls.uptodate">
211      <uptodate property="abcl.fasls.uptodate.p" value="true">
212  <srcfiles dir="${src.dir}">
213    <patternset refid="abcl.source.lisp.fasls"/>
214  </srcfiles>
215  <mapper type="glob" from="*.lisp" to="${build.classes.dir}/*.abcl"/>
216      </uptodate>
217    </target>
218
219    <path id="abcl.home.dir.path">
220        <path location="${src.dir}/org/armedbear/lisp/"/>
221    </path>         
222    <pathconvert property="abcl.home.dir" refid="abcl.home.dir.path"/>
223
224    <path id="abcl.lisp.output.path"
225          location="${build.classes.dir}/org/armedbear/lisp/"/>
226    <pathconvert dirsep="/" property="abcl.lisp.output" refid="abcl.lisp.output.path"/>
227
228    <property name="system.lisp.file" 
229              value="${build.classes.dir}/org/armedbear/lisp/system.lisp"/>
230   
231    <target name="abcl.compile.lisp" 
232      depends="abcl.copy.lisp,abcl.compile.java,abcl.system.update.maybe,abcl.fasls.uptodate"
233      unless="abcl.fasls.uptodate.p">
234      <echo>
235Compiling Lisp system
236from ${abcl.home.dir}
237 to  ${abcl.lisp.output}</echo>
238 
239     <!-- Not good if ${abcl.home.dir} == ${abcl.lisp.output} -->
240     <delete>
241       <fileset dir="${abcl.home.dir}" includes="**/*.abcl **/*.cls **/*._"/>
242     </delete>
243     <java classpath="${build.classes.dir}" 
244      fork="true"
245      failonerror="true"
246            inputstring="(handler-case (compile-system :zip nil :quit t :output-path &quot;${abcl.lisp.output}/&quot;) (t (x) (progn (format t &quot;~A: ~A~%&quot; (type-of x) x) (exit :status -1))))"
247      classname="org.armedbear.lisp.Main">
248        <jvmarg value="-Dabcl.home=${abcl.home.dir}${file.separator}"/>
249  <arg value="--noinit"/>
250        <arg value="--nosystem"/>
251        <arg value="--eval"/>
252        <arg value="(setf *load-verbose* t)"/>
253      </java>
254      <concat destfile="${system.lisp.file}" append="true">
255        <fileset file="${abcl.startup.file}"/>
256      </concat>
257    </target>
258
259    <property name="abcl.build.path"
260        value="${build.classes.dir}/org/armedbear/lisp/build"/>
261    <target name="abcl.stamp" depends="abcl.compile,abcl.stamp.version,abcl.stamp.hostname">
262      <mkdir dir="${abcl.build.path}/.."/>
263      <echo message="${build}" file="${abcl.build.path}"/>   
264    </target>
265
266    <property name="abcl.home.dir"
267              value="${src.dir}/org/armedbear/lisp/"/>
268    <property name="abcl.version.path"
269        value="${build.classes.dir}/org/armedbear/lisp/version"/>
270    <target name="abcl.stamp.version" depends="abcl.compile.java"  >
271      <java fork="true"
272      classpath="${build.classes.dir}"
273      outputproperty="abcl.version"
274      classname="org.armedbear.lisp.Version"
275            logerror="yes"/> <!-- Don't catch stderr output -->
276
277      <echo>ABCL version: ${abcl.version}</echo>
278      <mkdir dir="${abcl.version.path}/.."/>
279      <echo message="${abcl.version}" file="${abcl.version.path}"/> 
280    </target>
281
282    <target name="abcl.stamp.hostname" if="unix">
283      <exec executable="hostname" outputproperty="abcl.hostname"/>
284      <echo>abcl.hostname: ${abcl.hostname}</echo>
285    </target>
286
287    <target name="abcl.system.uptodate">
288      <condition property="abcl.system.needs-update.p">
289        <and>
290          <available file="${system.lisp.file}"/>
291          <available file="${abcl.startup.file}"/>
292          <uptodate
293                srcfile="${system.lisp.file}"
294                targetfile="${abcl.startup.file}"/>
295        </and>
296      </condition>
297    </target>
298   
299    <target name="abcl.system.update.maybe" depends="abcl.system.uptodate" 
300            if="abcl.system.needs-update.p">
301      <touch file="${src.dir}/org/armedbear/lisp/compile-system.lisp"/>
302    </target>
303
304    <target name="abcl.jar.uptodate" depends="abcl.compile">
305      <uptodate property="abcl.jar.uptodate.p" targetfile="${abcl.jar.path}">
306        <srcfiles dir="${build.classes.dir}">
307          <patternset refid="abcl.objects"/>
308        </srcfiles>
309      </uptodate>
310    </target>
311
312    <target name="abcl.jar" depends="abcl.stamp,abcl.jar.uptodate"
313      unless="abcl.jar.uptodate.p">
314      <mkdir dir="${dist.dir}"/>
315      <loadfile property="abcl.version"
316      srcFile="${abcl.version.path}"/>
317      <jar destfile="${abcl.jar.path}"
318     compress="true"
319     basedir="${build.classes.dir}">
320  <patternset refid="abcl.objects"/>
321  <manifest>
322    <attribute name="Main-Class" value="org.armedbear.lisp.Main"/>
323    <section name="org/armedbear/lisp">
324      <attribute name="Implementation-Title" 
325           value="ABCL"/>
326      <attribute name="Implementation-Version" 
327           value="${abcl.version}"/>
328      <attribute name="Implementation-Build" 
329           value="${build}"/>
330      <attribute name="Implementation-Source" 
331           value="${version.src}"/>
332    </section>
333  </manifest>
334  <metainf dir="${src.dir}/META-INF"> 
335    <exclude name="services/javax.script.ScriptEngineFactory"
336       unless="abcl.jsr-223.p"/>
337        </metainf>
338      </jar>
339    </target>
340   
341    <target name="abcl.wrapper" 
342      depends="abcl.jar,abcl.wrapper.unix,abcl.wrapper.windows">
343      <description>
344  Creates in-place exectuable shell wrapper in '${abcl.wrapper.file}'
345      </description>
346      <!-- Set from commandline or in 'build.properties' -->
347      <property name="additional.jars" value=""/>
348      <path id="abcl.runtime.classpath">
349  <pathelement location="${abcl.jar.path}"/>
350  <pathelement path="${additional.jars}"/>
351      </path>
352      <!-- set via '-Djava.options=JAVA_OPTIONS' or in 'build.properties -->
353      <property name="java.options" value=""/>
354
355      <copy file="${abcl.wrapper.in.file}" toFile="${abcl.wrapper.file}" overwrite="yes">
356  <filterset>
357    <filter token="JAVA" 
358      value="${java.path}"/>
359    <filter token="ABCL_JAVA_OPTIONS" 
360      value="${java.options}"/>
361    <filter token="ABCL_CLASSPATH"
362      value="${toString:abcl.runtime.classpath}"/>
363  </filterset>
364      </copy>
365      <chmod file="${abcl.wrapper.file}" perm="a+x"/>
366
367      <echo>Created executable ABCL wrapper in '${abcl.wrapper.file}'</echo>
368      <echo>N.B. This wrapper requires '${abcl.jar.path}' not be moved.</echo>
369    </target>
370
371    <target name="abcl.wrapper.unix" if="unix">
372      <property name="abcl.wrapper.file" value="abcl"/>
373      <property name="abcl.wrapper.in.file" value="abcl.in"/>
374    </target>
375
376    <target name="abcl.wrapper.windows" if="windows">
377      <property name="abcl.wrapper.file" value="abcl.bat"/>
378      <property name="abcl.wrapper.in.file" value="abcl.bat.in"/>
379    </target>
380
381    <!-- XXX Generalize when (if?) we get more contribs --> 
382    <target name="abcl.contrib.compile" depends="abcl.jar">
383      <java fork="true"
384      failonerror="true"
385            classpathref="abcl.classpath.dist"
386            inputstring="(require 'asdf) (handler-case (progn (setf *default-pathname-defaults* &quot;${basedir}/contrib/asdf-install/&quot;) (asdf:operate 'asdf:compile-op :asdf-install)) (t (x) (progn (format t &quot;~A: ~A~%&quot; (type-of x) x) (exit :status -1))))"
387            classname="org.armedbear.lisp.Main">
388        <arg value="--noinit"/>
389      </java>
390    </target>
391   
392    <target name="abcl.contrib" depends="abcl.contrib.compile">
393      <jar destfile="dist/abcl-contrib.jar"
394           compress="true"
395           basedir="contrib">
396        <patternset>
397          <include name="**/*.asd"/>
398          <include name="**/*.lisp"/>
399          <include name="**/*.abcl"/>
400        </patternset>
401      </jar>
402      <echo>
403Packaged contribs in ${dist.dir}/abcl-contrib.jar.
404
405To use ASDF-INSTALL, use the following in your ~/.abclrc:
406
407  (require 'asdf)
408  (pushnew "jar:file:${dist.dir}/abcl-contrib.jar!/asdf-install/" asdf:*central-registry*)
409
410Then issuing
411
412  CL-USER> (require 'asdf-install)
413
414will load ASDF-INSTALL.
415</echo>
416    </target>
417
418    <target name="abcl.debug.jpda" depends="abcl.jar">
419      <description>Invoke ABCL with JPDA listener on port 6789</description>
420      <java fork="true"
421      classpathref="abcl.classpath.dist"
422      classname="org.armedbear.lisp.Main">
423  <jvmarg 
424      value="-agentlib:jdwp=transport=dt_socket,address=6789,server=y"/>
425      </java>
426      <echo>JPDA listening on localhost:6789</echo>
427    </target>
428
429    <target name="abcl.build.debug.jpda" depends="abcl.compile.java">
430      <description>Invoke ABCL with JPDA listener on port 6789</description>
431      <java fork="true"
432      classpathref="abcl.classpath.build"
433      classname="org.armedbear.lisp.Main">
434  <jvmarg
435      value="-agentlib:jdwp=transport=dt_socket,address=6789,server=y"/>
436        <jvmarg value="-Dabcl.home=${abcl.home.dir}${file.separator}"/>
437      </java>
438      <echo>JPDA listening on localhost:6789</echo>
439    </target>
440
441    <target name="abcl.run" depends="abcl.jar">
442      <java fork="true"
443      classpathref="abcl.classpath.dist"
444      classname="org.armedbear.lisp.Main">
445      </java>
446    </target>
447
448    <target name="abcl.clean">
449      <delete dir="${build.dir}"/>
450      <delete file="${abcl.jar.path}"/>
451      <delete file="abcl"/>
452      <delete file="abcl.bat"/>
453    </target>
454
455    <target name="abcl.dist" depends="abcl.jar">
456      <copy file="${abcl.jar.path}"
457      toFile="${dist.dir}/abcl-${abcl.version}.jar"/>
458    </target>
459
460    <target name="abcl.distclean" depends="abcl.clean">
461      <delete dir="${dist.dir}"/>
462      <delete file="abcl"/>
463      <delete file="abcl.bat"/>
464    </target>
465
466    <target name="TAGS">
467      <delete file="TAGS"/>
468      <apply executable="etags" parallel="true" verbose="true" maxparallel="300">
469        <arg value="--append"/>
470  <arg value="--regex=|[ \t]+//[ \t]+###[ \t]+\([^ \t]+\)|\1|"/>
471  <arg value='--regex=|[ \t]*@DocString([ \t]*name=\"\([^\"]*\)|\1|'/>
472  <fileset dir="${src.dir}">
473    <patternset refid="abcl.source.java"/>
474    <patternset refid="abcl.source.lisp"/>
475  </fileset>
476      </apply>
477    </target>
478
479    <patternset id="abcl.dist.misc"
480    description="Additional includes in the source distributions relative to basedir">
481      <include name="build.xml"/>
482      <include name="abcl.properties.in"/>
483      <include name="COPYING"/>
484      <include name="README"/>
485      <include name="CHANGES"/>
486      <include name="abcl.in"/>
487      <include name="abcl.bat.in"/>
488     
489      <include name="examples/**"/>
490
491      <include name="contrib/**"/>
492
493      <include name="build-from-lisp.sh"/>
494     
495      <!-- The remainder of these files are used by the Lisp hosted
496           build in 'build-abcl.lisp' but not used by Ant, so include
497           them in the source distribution. -->
498      <include name="make-jar.in"/>
499      <include name="make-jar.bat.in"/>
500
501
502
503      <include name="build-abcl.lisp"/>
504      <include name="customizations.lisp.in"/>
505
506    </patternset>
507
508    <patternset 
509        id="abcl.source.misc"
510        description="Additional includes in the source distribution relative to source root">
511      <include name="org/armedbear/lisp/LICENSE"/>
512      <include name="manifest-abcl"/>
513      <include name="META-INF/services/javax.script.ScriptEngineFactory"/>
514    </patternset>
515
516    <target name="abcl.source.prepare" depends="abcl.stamp.version">
517      <property name="abcl.build.src.dir"
518    value="${build.dir}/abcl-src-${abcl.version}"/>
519      <mkdir dir="${abcl.build.src.dir}/src"/>
520      <copy todir="${abcl.build.src.dir}/src"
521            preservelastmodified="true">
522        <fileset dir="${src.dir}"
523                 id="abcl.source.src">
524            <patternset refid="abcl.source.java"/>
525            <patternset refid="abcl.source.lisp"/>
526            <patternset refid="abcl.source.misc"/>
527        </fileset>
528      </copy>
529      <copy todir="${abcl.build.src.dir}"
530            preservelastmodified="true">
531        <fileset dir="${basedir}">
532            <patternset refid="abcl.dist.misc"/>
533        </fileset>
534      </copy>
535    </target>
536
537    <!--  Files in source distribution that always get LF EOL (aka
538         'unix') -->   
539    <patternset id="abcl.dist.lf">
540      <include name="abcl.in"/>
541    </patternset>
542
543    <!--  Files in source distribution that always get CRLF EOL (aka
544         'dos') -->   
545    <patternset id="abcl.dist.crlf">
546      <include name="abcl.bat.in"/>
547    </patternset>
548
549    <target name="abcl.source.tar" depends="abcl.source.prepare">
550      <fixcrlf srcdir="${abcl.build.src.dir}"
551               preservelastmodified="true"
552               eol="lf">
553      </fixcrlf>
554
555      <fixcrlf srcdir="${abcl.build.src.dir}"
556               preservelastmodified="true"
557               eol="crlf">
558          <patternset refid="abcl.dist.crlf"/>
559      </fixcrlf>
560
561      <fixcrlf srcdir="${abcl.build.src.dir}"
562               preservelastmodified="true"
563               eol="lf">
564          <patternset refid="abcl.dist.lf"/>
565      </fixcrlf>
566
567      <mkdir dir="${dist.dir}"/>
568      <tar destfile="${dist.dir}/abcl-src-${abcl.version}.tar.gz"
569     compression="gzip">
570  <tarfileset dir="${build.dir}">
571    <include name="abcl-src-${abcl.version}/**"/>
572  </tarfileset>
573      </tar>
574    </target>
575
576    <target name="abcl.source.zip" depends="abcl.source.prepare">
577      <fixcrlf srcdir="${abcl.build.src.dir}"
578               preservelastmodified="true"
579               eol="crlf">
580      </fixcrlf>
581
582      <fixcrlf srcdir="${abcl.build.src.dir}"
583               preservelastmodified="true"
584               eol="crlf">
585          <patternset refid="abcl.dist.crlf"/>
586      </fixcrlf>
587
588      <fixcrlf srcdir="${abcl.build.src.dir}"
589               preservelastmodified="true"
590               eol="lf">
591          <patternset refid="abcl.dist.lf"/>
592      </fixcrlf>
593
594      <mkdir dir="${dist.dir}"/>
595      <zip destfile="${dist.dir}/abcl-src-${abcl.version}.zip"
596     compress="true">
597  <zipfileset dir="${abcl.build.src.dir}" prefix="abcl-src-${abcl.version}"/>
598      </zip>
599    </target>
600   
601    <target name="abcl.binary.prepare" depends="abcl.jar,abcl.stamp.version">
602      <property name="abcl.build.binary.dir"
603                value="${build.dir}/abcl-bin-${abcl.version}"/>
604      <mkdir dir="${abcl.build.binary.dir}"/>
605      <copy todir="${abcl.build.binary.dir}"
606            preservelastmodified="true">
607        <fileset dir="${basedir}/dist">
608          <patternset>
609            <include name="abcl.jar"/>
610          </patternset>
611        </fileset>
612        <fileset dir="${basedir}">
613          <patternset>
614            <include name="README"/>
615            <include name="CHANGES"/>
616          </patternset>
617        </fileset>
618      </copy>
619    </target>
620
621    <target name="abcl.binary.tar" depends="abcl.binary.prepare">
622      <tar destfile="${dist.dir}/abcl-bin-${abcl.version}.tar.gz"
623           compression="gzip">
624        <tarfileset dir="${build.dir}">
625          <include name="abcl-bin-${abcl.version}/**"/>
626          </tarfileset>
627      </tar>
628    </target>
629
630    <target name="abcl.binary.zip" depends="abcl.binary.prepare">
631      <zip destfile="${dist.dir}/abcl-bin-${abcl.version}.zip"
632           compress="true">
633        <zipfileset dir="${abcl.build.binary.dir}" prefix="abcl-bin-${abcl.version}"/>
634      </zip>
635    </target>
636
637    <target name="help.test">
638      <echo>
639The following Ant targets run various test suites:
640 
641  abcl.test
642    --  Run all available tests.
643  abcl.test.java
644    --  Run the ABCL junit Java tests under ${basedir}/test/src
645  abcl.test.lisp
646    --  Run the 'test.ansi.compiled', 'test.abcl', 'test.cl-bench' targets
647  test.ansi.compiled
648    --  Run the compiled version of the ANSI test suite
649  test.abcl
650    --  Run the Lisp RT tests collected in ${basedir}/test/lisp/abcl
651  test.cl-bench
652    --  Run the cl-bench test suite.
653
654The ANSI tests require that the [ansi-tests][1] be manually installed in
655${basedir}/../ansi-tests.
656
657[1]: svn://common-lisp.net/project/ansi-test/svn/trunk/ansi-tests
658
659The CL-BENCH test require that [cl-bench][2] be maunally installed in
660${basedir}/../cl-bench
661
662[2]: http://www.chez.com/emarsden/downloads/cl-bench.tar.gz
663      </echo>
664    </target>
665
666    <property name="abcl.test.classes.dir"
667        value="${build.dir}/classes-test"/>
668
669    <property name="abcl.test.src.dir"
670        value="${basedir}/test/src"/>
671
672    <patternset id="abcl.test.source.java">
673      <!-- For now, we list tests explicitly, because we have to
674           enumerate them later to the JUnit test runner. -->
675      <include name="org/armedbear/lisp/*.java"/>
676    </patternset>
677
678    <property name="junit.path"
679        value="${abcl.ext.dir}/junit-4.8.1.jar"/>
680
681
682    <path id="abcl.test.compile.classpath">
683      <pathelement location="${junit.path}"/>
684      <pathelement location="${build.classes.dir}"/>
685    </path>
686
687    <target name="abcl.test.pre-compile" depends="abcl.ext"/>
688
689    <target name="abcl.ext.p">
690      <!--XXX generalize over enumeration of all contributions to
691           abcl.ext if we get more of them.  -->
692      <available file="${junit.path}" property="abcl.ext.p"/>
693    </target>
694    <target name="abcl.ext" depends="abcl.ext.p" unless="abcl.ext.p">
695
696      <mkdir dir="${abcl.ext.dir}"/>
697      <get 
698          src="http://cloud.github.com/downloads/KentBeck/junit/junit-4.8.1.jar"
699          usetimestamp="true"
700          dest="${junit.path}"/>
701    </target>
702 
703    <target name="abcl.test.compile" 
704      depends="abcl.test.pre-compile">
705      <mkdir dir="${abcl.test.classes.dir}"/>
706      <javac destdir="${abcl.test.classes.dir}"
707       classpathref="abcl.test.compile.classpath"
708       debug="true"
709       target="1.5">
710  <src path="${abcl.test.src.dir}"/>
711  <patternset refid="abcl.test.source.java"/>
712      </javac>
713    </target>
714
715    <path id="abcl.test.run.classpath">
716      <path refid="abcl.test.compile.classpath"/>
717      <pathelement location="${abcl.test.classes.dir}"/>
718    </path>
719
720    <target name="abcl.test" 
721      depends="abcl.test.java,abcl.test.lisp"/>
722 
723    <target name="abcl.test.java" depends="abcl.test.compile">
724      <java fork="true"
725      classpathref="abcl.test.run.classpath"
726      classname="org.junit.runner.JUnitCore">
727        <arg value="org.armedbear.lisp.PathnameTest"/>
728        <arg value="org.armedbear.lisp.StreamTest"/>
729        <arg value="org.armedbear.lisp.UtilitiesTest"/>
730      </java>
731    </target>
732
733    <target name="abcl.test.lisp" 
734      depends="test.ansi.compiled,test.abcl,test.cl-bench"/>
735
736    <target name="test.ansi.interpreted" depends="abcl.jar">
737      <echo>Recording test output in ${abcl.test.log.file}.</echo>
738      <record name="${abcl.test.log.file}" emacsmode="true" action="start" append="yes"/>
739      <java fork="true" dir="${basedir}"
740      classpathref="abcl.classpath.dist"
741      classname="org.armedbear.lisp.Main">
742  <arg value="--noinit"/> 
743  <arg value="--eval"/><arg value="(require (quote asdf))"/>
744  <arg value="--eval"/><arg value="(asdf:operate (quote asdf:load-op) :abcl)"/>
745  <arg value="--eval"/><arg value="(asdf:operate (quote asdf:test-op) :ansi-interpreted)"/>
746        <arg value="--eval"/><arg value="(ext:exit)"/>
747      </java>
748      <record name="${abcl.test.log.file}" emacsmode="true" action="stop"/>
749      <echo>Finished recording test output in ${abcl.test.log.file}.</echo>
750    </target>
751
752    <target name="test.ansi.compiled" depends="abcl.jar">
753      <echo>Recording test output in ${abcl.test.log.file}.</echo>
754      <record name="${abcl.test.log.file}" emacsmode="true" action="start" append="yes"/>
755      <java fork="true" dir="${basedir}"
756      classpathref="abcl.classpath.dist"
757      classname="org.armedbear.lisp.Main">
758  <arg value="--noinit"/> 
759  <arg value="--eval"/><arg value="(require (quote asdf))"/>
760  <arg value="--eval"/><arg value="(asdf:operate (quote asdf:load-op) :abcl)"/>
761  <arg value="--eval"/><arg value="(asdf:operate (quote asdf:test-op) :ansi-compiled)"/>
762        <arg value="--eval"/><arg value="(ext:exit)"/>
763      </java>
764      <record name="${abcl.test.log.file}" emacsmode="true" action="stop"/>
765      <echo>Finished recording test output in ${abcl.test.log.file}.</echo>
766    </target>
767
768    <target name="test.abcl" depends="abcl.jar">
769      <echo>Recording test output in ${abcl.test.log.file}.</echo>
770      <record name="${abcl.test.log.file}" emacsmode="true" action="start" append="yes"/>
771      <java fork="true" dir="${basedir}"
772      classpathref="abcl.classpath.dist"
773      classname="org.armedbear.lisp.Main">
774  <arg value="--noinit"/> 
775  <arg value="--eval"/><arg value="(require (quote asdf))"/>
776  <arg value="--eval"/><arg value="(asdf:operate (quote asdf:load-op) :abcl)"/>
777  <arg value="--eval"/><arg value="(asdf:operate (quote asdf:test-op) :abcl-test-lisp)"/>
778        <arg value="--eval"/><arg value="(ext:exit)"/>
779      </java>
780      <record name="${abcl.test.log.file}" emacsmode="true" action="stop"/>
781      <echo>Finished recording test output in ${abcl.test.log.file}.</echo>
782    </target>
783
784    <target name="test.cl-bench" depends="abcl.jar">
785      <echo>Recording test output in ${abcl.test.log.file}.</echo>
786      <record name="${abcl.test.log.file}" emacsmode="true" action="start" append="yes"/>
787      <java fork="true" dir="${basedir}"
788      classpathref="abcl.classpath.dist"
789      classname="org.armedbear.lisp.Main">
790  <arg value="--noinit"/> 
791  <arg value="--eval"/><arg value="(require (quote asdf))"/>
792  <arg value="--eval"/><arg value="(asdf:operate (quote asdf:load-op) :abcl)"/>
793  <arg value="--eval"/><arg value="(asdf:operate (quote asdf:test-op) :cl-bench)"/>
794        <arg value="--eval"/><arg value="(ext:exit)"/>
795      </java>
796      <record name="${abcl.test.log.file}" emacsmode="true" action="stop"/>
797      <echo>Finished recording test output in ${abcl.test.log.file}.</echo>
798    </target>
799   
800    <target name="abcl.release" 
801            depends="abcl.binary.tar,abcl.source.tar,abcl.binary.zip,abcl.source.zip">
802      <copy file="${abcl.jar.path}"
803            tofile="${dist.dir}/abcl-${abcl.version}.jar"/>
804    </target>
805
806    <import file="netbeans-build.xml" optional="true"/> 
807<!--    <import file="j-build.xml" optional="true"/>  -->
808    <import file="not.org-build.xml" optional="true"/> 
809</project>
810
811
812
813
Note: See TracBrowser for help on using the repository browser.