source: trunk/abcl/build.xml @ 13357

Last change on this file since 13357 was 13357, checked in by Mark Evenson, 10 years ago

Another stab at fixing the build version which was failing on incomplete compiles.

  • Property svn:eol-style set to LF
File size: 33.2 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/version"/>
89      <include name="org/armedbear/lisp/scripting/*.class" if="abcl.jsr-223.p"/>
90      <include name="org/armedbear/lisp/scripting/util/*.class" if="abcl.jsr-223.p"/>
91      <patternset refid="abcl.source.lisp.dist"/>
92    </patternset>
93   
94    <path id="abcl.classpath.dist">
95      <pathelement location="${abcl.jar.path}"/>
96    </path>
97   
98    <path id="abcl.classpath.build">
99      <pathelement location="${build.classes.dir}"/>
100    </path>
101
102    <target name="abcl.compile" depends="abcl.clean.maybe,abcl.compile.lisp">
103      <echo>Compiled ABCL with Java version: ${java.version}</echo>
104    </target>
105
106    <target name="abcl.clean.maybe" unless="abcl.build.incremental">
107      <echo>Cleaning all intermediate compilation artifacts.</echo>
108      <echo>Setting 'abcl.build.incremental' enables incremental compilation.</echo>
109      <antcall target="abcl.clean"/>
110    </target>
111     
112
113    <target name="abcl.init">
114      <tstamp>
115        <format property="build" pattern="EEE MMM dd yyyy HH:mm:ss zzz"/>
116      </tstamp>
117
118      <tstamp>
119        <format property="build.stamp" pattern="yyyymmdd-HHmm"/>
120      </tstamp>
121
122      <property name="abcl.test.log.file"
123                value="abcl-test-${build.stamp}.log"/>
124
125      <property name="java.path"
126                value="${java.home}/bin/java"/>
127
128      <!-- Deprecated. Two main types of build environents: 'unix' or 'windows'. -->
129      <condition property="unix"> 
130        <or>
131          <os family="unix"/>
132          <os family="mac"/>
133        </or>
134      </condition>
135      <condition property="windows"> 
136        <os family="windows"/>
137      </condition>
138
139      <!-- Deprecated. -->
140      <available file="${src.dir}org/armedbear/lisp/Interpreter.java" 
141                 property="abcl.lisp.p"/>
142
143      <echo>java.version: ${java.version}</echo>
144      <condition property="abcl.java.version.p">
145        <or>
146          <matches string="${java.version}" pattern="1\.5"/>
147          <matches string="${java.version}" pattern="1\.6\.0_[12][0-9]"/>
148        </or> 
149      </condition>
150
151    </target>
152   
153    <target name="abcl.java.warning" 
154            depends="abcl.init"
155            unless="abcl.java.version.p">
156      <echo>WARNING: Use of Java version ${java.version} not recommended.</echo>
157    </target>
158       
159    <target name="abcl.jsr-223.notice"
160            depends="abcl.init"
161            unless="abcl.jsr-223.p">
162      <echo>
163        Notice: JSR-223 support won't be built since it is not
164                supported, neither natively by your JVM nor by
165                libraries in the CLASSPATH.
166      </echo>
167    </target>
168
169    <target name="abcl.compile.java" 
170            depends="abcl.init,abcl.java.warning,abcl.jsr-223.notice">
171      <mkdir dir="${build.dir}"/>
172      <mkdir dir="${build.classes.dir}"/>
173      <javac destdir="${build.classes.dir}"
174             debug="true"
175             target="1.5"
176             includeantruntime="false"
177             failonerror="true">
178        <src path="${src.dir}"/>
179        <patternset refid="abcl.source.java"/>
180      </javac>
181      <echo message="${build}" 
182            file="${build.classes.dir}/org/armedbear/lisp/build"/>
183    </target>
184
185    <target name="abcl.copy.lisp">
186      <copy todir="${build.classes.dir}" preservelastmodified="yes">
187        <fileset dir="${src.dir}">
188          <patternset refid="abcl.source.lisp.dist"/>
189        </fileset>
190      </copy>
191    </target>
192
193    <!-- Adjust the patternset for ABCL source to use the much faster
194         Ant 'uptodate' task to check if we need to compile the system
195         fasls.  Highly inter-dependent with the behavior specified in
196         'compile-system.lisp', i.e. files not listed in
197         there should NOT occur here. -->
198    <patternset id="abcl.source.lisp.fasls">
199      <patternset refid="abcl.source.lisp"/>
200      <exclude name="org/armedbear/lisp/scripting/**/*.lisp"/>
201      <exclude name="org/armedbear/lisp/boot.lisp"/>
202      <exclude name="org/armedbear/lisp/emacs.lisp"/>
203      <exclude name="org/armedbear/lisp/runtime-class.lisp"/>
204      <exclude name="org/armedbear/lisp/run-benchmarks.lisp"/>
205    </patternset>
206
207    <target name="abcl.fasls.uptodate">
208      <uptodate property="abcl.fasls.uptodate.p" value="true">
209        <srcfiles dir="${src.dir}">
210          <patternset refid="abcl.source.lisp.fasls"/>
211        </srcfiles>
212        <mapper type="glob" from="*.lisp" to="${build.classes.dir}/*.abcl"/>
213      </uptodate>
214    </target>
215
216    <path id="abcl.home.dir.path">
217        <path location="${src.dir}/org/armedbear/lisp/"/>
218    </path>         
219    <pathconvert property="abcl.home.dir" refid="abcl.home.dir.path"/>
220
221    <path id="abcl.lisp.output.path"
222          location="${build.classes.dir}/org/armedbear/lisp/"/>
223    <pathconvert dirsep="/" property="abcl.lisp.output" refid="abcl.lisp.output.path"/>
224
225    <property name="system.lisp.file" 
226              value="${build.classes.dir}/org/armedbear/lisp/system.lisp"/>
227   
228    <target name="abcl.compile.lisp" 
229            depends="abcl.copy.lisp,abcl.compile.java,abcl.system.update.maybe,abcl.fasls.uptodate"
230            unless="abcl.fasls.uptodate.p">
231      <echo>
232Compiling Lisp system
233from ${abcl.home.dir}
234 to  ${abcl.lisp.output}</echo>
235 
236     <!-- Not good if ${abcl.home.dir} == ${abcl.lisp.output} -->
237     <delete>
238       <fileset dir="${abcl.home.dir}" includes="**/*.abcl **/*.cls **/*._"/>
239     </delete>
240     <java classpath="${build.classes.dir}" 
241            fork="true"
242            failonerror="true"
243            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))))"
244            classname="org.armedbear.lisp.Main">
245        <jvmarg value="-Dabcl.home=${abcl.home.dir}${file.separator}"/>
246        <arg value="--noinit"/>
247        <arg value="--nosystem"/>
248        <arg value="--eval"/>
249        <arg value="(setf *load-verbose* t)"/>
250      </java>
251      <concat destfile="${system.lisp.file}" append="true">
252        <fileset file="${abcl.startup.file}"/>
253      </concat>
254    </target>
255
256    <property name="abcl.build.path"
257              value="${build.classes.dir}/org/armedbear/lisp/build"/>
258    <target name="abcl.stamp" 
259            depends="abcl.compile,abcl.stamp.version,abcl.stamp.hostname">
260      <mkdir dir="${abcl.build.path}/.."/>
261      <loadfile property="abcl.version"
262                srcFile="${abcl.version.path}"/>
263      <echo message="${build}" file="${abcl.build.path}"/>   
264    </target>
265
266
267    <!-- Environment variables may be accessed as ${env.NAME} -->
268    <property environment="env"/>
269
270    <!-- Can we derive an SVN version from the current build tree? -->
271    <condition property="abcl.version.svn.p">
272      <and>
273        <available
274            file="${basedir}/.svn"
275            type="dir"/>
276        <or>
277            <available
278                file="svnversion.exe"
279                filepath="${env.Path}"/>
280            <available
281                file="svnversion.exe"
282                filepath="${env.PATH}"/>
283             <available
284                file="svnversion"
285                filepath="${env.Path}"/>
286            <available
287                file="svnversion"
288                filepath="${env.PATH}"/>
289        </or>
290      </and>
291    </condition>
292
293    <target name="abcl.version.src" depends="abcl.version.src.3"/>
294
295    <target name="abcl.version.src.0" if="windows">
296      <exec
297          executable="svnversion.exe"
298          outputproperty="abcl.version.svn"
299          failifexecutionfails="false"
300          searchpath="true" />
301    </target>
302
303    <target name="abcl.version.src.1" depends="abcl.version.src.0">
304      <exec 
305          executable="svnversion"
306          outputproperty="abcl.version.svn"
307          failifexecutionfails="false"
308          searchpath="true" />
309    </target>
310
311    <target name="abcl.version.src.2" 
312            depends="abcl.version.src.1"
313            if="abcl.version.svn.p">
314      <echo>abcl.version.svn: ${abcl.version.svn}</echo>
315      <property name="abcl.version.src"
316                value="svn-${abcl.version.svn}"/>
317    </target>
318
319    <target name="abcl.version.src.3"
320            depends="abcl.version.src.2"
321            unless="abcl.version.svn.p">
322      <property name="abcl.version.src"
323                value=""/>
324    </target>
325
326    <property name="abcl.home.dir"
327              value="${src.dir}/org/armedbear/lisp/"/>
328    <property name="abcl.version.path"
329              value="${build.classes.dir}/org/armedbear/lisp/version"/>
330
331    <target name="abcl.clean.version">
332      <delete file="${abcl.version.path}"/>
333    </target>
334
335    <target name="abcl.stamp.version.uptodate">
336      <uptodate property="abcl.stamp.version.uptodate.p" 
337                targetfile="${abcl.version.path}"
338                srcfile="${build.classes.dir}/org/armedbear/lisp/Version.class"/>
339    </target>
340
341    <target name="abcl.stamp.version" 
342            depends="abcl.version.src,abcl.stamp.version.1,abcl.stamp.version.2"
343            unless="abcl.stamp.version.uptodate.p">
344      <mkdir dir="${abcl.version.path}/.."/>
345      <echo>ABCL implementation version: ${abcl.implementation.version}</echo>
346      <echo file="${abcl.version.path}">${abcl.implementation.version}</echo>
347    </target>
348   
349    <target name="abcl.stamp.version.generate" 
350            depends="abcl.compile.java"
351            unless="abcl.stamp.version.uptodate.p">
352      <java fork="true"
353            classpath="${build.classes.dir}"
354            outputproperty="abcl.version"
355            classname="org.armedbear.lisp.Version"
356            logerror="yes"/> <!-- Don't catch stderr output -->
357    </target>
358
359    <target name="abcl.stamp.version.0" 
360            depends="abcl.stamp.version.uptodate,abcl.stamp.version.generate">
361    </target>
362
363    <target name="abcl.stamp.version.1"
364            depends="abcl.stamp.version.0"
365            unless="abcl.version.svn.p">
366      <property name="abcl.implementation.version"
367                value="${abcl.version}"/>
368    </target>
369
370    <target name="abcl.stamp.version.2" 
371            depends="abcl.stamp.version.0"
372            if="abcl.version.svn.p">
373      <property name="abcl.implementation.version"
374                value="${abcl.version}-${abcl.version.src}"/>
375    </target>
376
377    <target name="abcl.stamp.hostname" if="unix">
378      <exec executable="hostname" outputproperty="abcl.hostname"/>
379      <echo>abcl.hostname: ${abcl.hostname}</echo>
380    </target>
381
382    <target name="abcl.system.uptodate">
383      <condition property="abcl.system.needs-update.p">
384        <and>
385          <available file="${system.lisp.file}"/>
386          <available file="${abcl.startup.file}"/>
387          <uptodate
388                srcfile="${system.lisp.file}"
389                targetfile="${abcl.startup.file}"/>
390        </and>
391      </condition>
392    </target>
393   
394    <target name="abcl.system.update.maybe" depends="abcl.system.uptodate" 
395            if="abcl.system.needs-update.p">
396      <touch file="${src.dir}/org/armedbear/lisp/compile-system.lisp"/>
397    </target>
398
399    <target name="abcl.jar.uptodate" depends="abcl.compile,abcl.stamp">
400      <uptodate property="abcl.jar.uptodate.p" targetfile="${abcl.jar.path}">
401        <srcfiles dir="${build.classes.dir}">
402          <patternset refid="abcl.objects"/>
403        </srcfiles>
404      </uptodate>
405    </target>
406
407    <target name="abcl.jar" depends="abcl.jar.uptodate"
408            unless="abcl.jar.uptodate.p">
409      <mkdir dir="${dist.dir}"/>
410      <jar destfile="${abcl.jar.path}"
411           compress="true"
412           update="true"
413           basedir="${build.classes.dir}">
414        <patternset refid="abcl.objects"/>
415        <manifest>
416          <attribute name="Main-Class" value="org.armedbear.lisp.Main"/>
417          <section name="org/armedbear/lisp">
418            <attribute name="Implementation-Title" 
419                       value="ABCL"/>
420            <attribute name="Implementation-Version" 
421                       value="${abcl.implementation.version}"/>
422            <attribute name="Implementation-Build" 
423                       value="${build}"/>
424          </section>
425        </manifest>
426        <metainf dir="${src.dir}/META-INF"> 
427          <exclude name="services/javax.script.ScriptEngineFactory"
428                   unless="abcl.jsr-223.p"/>
429        </metainf>
430      </jar>
431    </target>
432   
433    <target name="abcl.wrapper" 
434            depends="abcl.jar,abcl.contrib,abcl.wrapper.unix,abcl.wrapper.windows">
435      <description>
436        Creates in-place exectuable shell wrapper in '${abcl.wrapper.file}'
437      </description>
438      <!-- Set from commandline or in 'build.properties' -->
439      <property name="additional.jars" value=""/>
440      <path id="abcl.runtime.classpath">
441        <pathelement location="${abcl.jar.path}"/>
442        <pathelement path="${additional.jars}"/>
443      </path>
444      <!-- set via '-Djava.options=JAVA_OPTIONS' or in 'build.properties -->
445      <property name="java.options" value=""/>
446
447      <copy file="${abcl.wrapper.in.file}" toFile="${abcl.wrapper.file}" overwrite="yes">
448        <filterset>
449          <filter token="JAVA" 
450                  value="${java.path}"/>
451          <filter token="ABCL_JAVA_OPTIONS" 
452                  value="${java.options}"/>
453          <filter token="ABCL_CLASSPATH"
454                  value="${toString:abcl.runtime.classpath}"/>
455        </filterset>
456      </copy>
457      <chmod file="${abcl.wrapper.file}" perm="a+x"/>
458
459      <echo>Created executable ABCL wrapper in '${abcl.wrapper.file}'</echo>
460      <echo>N.B. This wrapper requires '${abcl.jar.path}' not be moved.</echo>
461    </target>
462
463    <target name="abcl.wrapper.unix" if="unix">
464      <property name="abcl.wrapper.file" value="abcl"/>
465      <property name="abcl.wrapper.in.file" value="abcl.in"/>
466    </target>
467
468    <target name="abcl.wrapper.windows" if="windows">
469      <property name="abcl.wrapper.file" value="abcl.bat"/>
470      <property name="abcl.wrapper.in.file" value="abcl.bat.in"/>
471    </target>
472
473    <patternset id="abcl.contrib.source">
474          <include name="**/*.asd"/>
475          <include name="**/*.lisp"/>
476          <include name="**/README.markdown"/>
477    </patternset>
478
479    <property name="abcl-contrib.jar"
480              value="${dist.dir}/abcl-contrib.jar"/>
481    <condition property="abcl.contrib.uptodate.p">
482      <uptodate targetfile="${abcl-contrib.jar}">
483        <srcfiles dir="contrib">
484          <patternset refid="abcl.contrib.source"/>
485        </srcfiles>
486      </uptodate>
487    </condition>
488
489    <target name="abcl.contrib" unless="abcl.contrib.uptodate.p">
490      <jar destfile="${abcl-contrib.jar}"
491           compress="true"
492           basedir="contrib">
493        <patternset refid="abcl.contrib.source"/>
494      </jar>
495      <echo>
496Packaged contribs in ${abcl-contrib.jar}. To use contribs, ensure that
497this file is in the same directory as 'abcl.jar', and then
498
499  CL-USER> (require 'abcl-contrib)
500
501will place all the contribs in the ASDF registry.
502
503To load a contrib, something like
504
505  CL-USER> (require 'jss)
506
507will compile (if necessary) and load JSS.
508</echo>
509    </target>
510
511    <target name="abcl.debug.jpda" depends="abcl.jar">
512      <description>Invoke ABCL with JPDA listener on port 6789</description>
513      <java fork="true"
514            classpathref="abcl.classpath.dist"
515            classname="org.armedbear.lisp.Main">
516        <jvmarg 
517            value="-agentlib:jdwp=transport=dt_socket,address=6789,server=y"/>
518      </java>
519      <echo>JPDA listening on localhost:6789</echo>
520    </target>
521
522    <target name="abcl.build.debug.jpda" depends="abcl.compile.java">
523      <description>Invoke ABCL with JPDA listener on port 6789</description>
524      <java fork="true"
525            classpathref="abcl.classpath.build"
526            classname="org.armedbear.lisp.Main">
527        <jvmarg
528            value="-agentlib:jdwp=transport=dt_socket,address=6789,server=y"/>
529        <jvmarg value="-Dabcl.home=${abcl.home.dir}${file.separator}"/>
530      </java>
531      <echo>JPDA listening on localhost:6789</echo>
532    </target>
533
534    <target name="abcl.run" depends="abcl.jar">
535      <java fork="true"
536            classpathref="abcl.classpath.dist"
537            classname="org.armedbear.lisp.Main">
538      </java>
539    </target>
540
541    <target name="abcl.clean">
542      <delete dir="${build.dir}"/>
543      <delete file="${abcl.jar.path}"/>
544      <delete file="abcl"/>
545      <delete file="abcl.bat"/>
546    </target>
547
548    <target name="abcl.dist" depends="abcl.jar">
549      <copy file="${abcl.jar.path}"
550            toFile="${dist.dir}/abcl-${abcl.version}.jar"/>
551    </target>
552
553    <target name="abcl.distclean" depends="abcl.clean">
554      <delete dir="${dist.dir}"/>
555      <delete file="abcl"/>
556      <delete file="abcl.bat"/>
557    </target>
558
559    <target name="TAGS">
560      <delete file="TAGS"/>
561      <apply executable="etags" parallel="true" verbose="true" maxparallel="300">
562        <arg value="--append"/>
563        <arg value="--regex=|[ \t]+//[ \t]+###[ \t]+\([^ \t]+\)|\1|"/>
564        <arg value='--regex=|[ \t]*@DocString([ \t]*name=\"\([^\"]*\)|\1|'/>
565        <fileset dir="${src.dir}">
566          <patternset refid="abcl.source.java"/>
567          <patternset refid="abcl.source.lisp"/>
568        </fileset>
569      </apply>
570    </target>
571
572    <patternset id="abcl.dist.misc"
573                description="Additional includes in the source distributions relative to basedir">
574      <include name="build.xml"/>
575      <include name="abcl.properties.in"/>
576      <include name="COPYING"/>
577      <include name="README"/>
578      <include name="CHANGES"/>
579      <include name="abcl.in"/>
580      <include name="abcl.bat.in"/>
581     
582      <include name="examples/**"/>
583
584      <include name="contrib/**"/>
585
586      <include name="build-from-lisp.sh"/>
587     
588      <!-- The remainder of these files are used by the Lisp hosted
589           build in 'build-abcl.lisp' but not used by Ant, so include
590           them in the source distribution. -->
591      <include name="make-jar.in"/>
592      <include name="make-jar.bat.in"/>
593
594
595
596      <include name="build-abcl.lisp"/>
597      <include name="customizations.lisp.in"/>
598
599    </patternset>
600
601    <patternset 
602        id="abcl.source.misc"
603        description="Additional includes in the source distribution relative to source root">
604      <include name="org/armedbear/lisp/LICENSE"/>
605      <include name="manifest-abcl"/>
606      <include name="META-INF/services/javax.script.ScriptEngineFactory"/>
607    </patternset>
608
609    <target name="abcl.source.prepare" depends="abcl.stamp.version">
610      <property name="abcl.build.src.dir"
611                value="${build.dir}/abcl-src-${abcl.version}"/>
612      <mkdir dir="${abcl.build.src.dir}/src"/>
613      <copy todir="${abcl.build.src.dir}/src"
614            preservelastmodified="true">
615        <fileset dir="${src.dir}"
616                 id="abcl.source.src">
617            <patternset refid="abcl.source.java"/>
618            <patternset refid="abcl.source.lisp"/>
619            <patternset refid="abcl.source.misc"/>
620        </fileset>
621      </copy>
622      <copy todir="${abcl.build.src.dir}"
623            preservelastmodified="true">
624        <fileset dir="${basedir}">
625            <patternset refid="abcl.dist.misc"/>
626        </fileset>
627      </copy>
628    </target>
629
630    <!--  Files in source distribution that always get LF EOL (aka
631         'unix') -->   
632    <patternset id="abcl.dist.lf">
633      <include name="abcl.in"/>
634    </patternset>
635
636    <!--  Files in source distribution that always get CRLF EOL (aka
637         'dos') -->   
638    <patternset id="abcl.dist.crlf">
639      <include name="abcl.bat.in"/>
640    </patternset>
641
642    <target name="abcl.source.unix" depends="abcl.source.prepare">
643      <fixcrlf srcdir="${abcl.build.src.dir}"
644               preservelastmodified="true"
645               eol="lf">
646      </fixcrlf>
647
648      <fixcrlf srcdir="${abcl.build.src.dir}"
649               preservelastmodified="true"
650               eol="crlf">
651          <patternset refid="abcl.dist.crlf"/>
652      </fixcrlf>
653
654      <fixcrlf srcdir="${abcl.build.src.dir}"
655               preservelastmodified="true"
656               eol="lf">
657          <patternset refid="abcl.dist.lf"/>
658      </fixcrlf>
659    </target>
660
661    <target name="abcl.source.tar" depends="abcl.source.unix">
662      <mkdir dir="${dist.dir}"/>
663      <tar destfile="${dist.dir}/abcl-src-${abcl.version}.tar.gz"
664           compression="gzip">
665        <tarfileset dir="${build.dir}">
666          <include name="abcl-src-${abcl.version}/**"/>
667        </tarfileset>
668      </tar>
669    </target>
670
671    <target name="abcl.source.windows" depends="abcl.source.prepare">
672      <fixcrlf srcdir="${abcl.build.src.dir}"
673               preservelastmodified="true"
674               eol="crlf">
675      </fixcrlf>
676
677      <fixcrlf srcdir="${abcl.build.src.dir}"
678               preservelastmodified="true"
679               eol="crlf">
680          <patternset refid="abcl.dist.crlf"/>
681      </fixcrlf>
682
683      <fixcrlf srcdir="${abcl.build.src.dir}"
684               preservelastmodified="true"
685               eol="lf">
686          <patternset refid="abcl.dist.lf"/>
687      </fixcrlf>
688    </target>
689
690    <target name="abcl.source.zip" depends="abcl.source.windows">
691      <mkdir dir="${dist.dir}"/>
692      <zip destfile="${dist.dir}/abcl-src-${abcl.version}.zip"
693           compress="true">
694        <zipfileset dir="${abcl.build.src.dir}" prefix="abcl-src-${abcl.version}"/>
695      </zip>
696    </target>
697
698    <target name="abcl.source.jar" depends="abcl.source.unix">
699      <mkdir dir="${dist.dir}"/>
700      <jar destfile="${dist.dir}/abcl-${abcl.version}-sources.jar">
701        <metainf dir="${abcl.build.src.dir}">
702          <include name="COPYING"/>
703        </metainf>
704        <fileset dir="${abcl.build.src.dir}/src">
705          <include name="**/*.java"/>
706          <include name="**/*.lisp"/>
707        </fileset>
708      </jar>
709    </target>
710
711    <property name="abcl.javadoc.dir" value="${build.dir}/javadoc"/>
712
713    <target name="abcl.javadoc">
714      <mkdir dir="${abcl.javadoc.dir}"/>
715      <javadoc destdir="${abcl.javadoc.dir}"
716               sourcepath="${src.dir}"/>
717    </target>
718   
719    <target name="abcl.javadoc.jar" depends="abcl.stamp.version,abcl.javadoc">
720      <mkdir dir="${dist.dir}"/>
721      <jar destfile="${dist.dir}/abcl-${abcl.version}-javadoc.jar">
722        <fileset dir="${abcl.javadoc.dir}"/>
723      </jar>
724    </target>
725
726    <target name="abcl.binary.prepare" depends="abcl.jar,abcl.contrib,abcl.stamp.version">
727      <property name="abcl.build.binary.dir"
728                value="${build.dir}/abcl-bin-${abcl.version}"/>
729      <mkdir dir="${abcl.build.binary.dir}"/>
730      <copy todir="${abcl.build.binary.dir}"
731            preservelastmodified="true">
732        <fileset dir="${basedir}/dist">
733          <patternset>
734            <include name="abcl.jar"/>
735            <include name="abcl-contrib.jar"/>
736          </patternset>
737        </fileset>
738        <fileset dir="${basedir}">
739          <patternset>
740            <include name="README"/>
741            <include name="CHANGES"/>
742          </patternset>
743        </fileset>
744      </copy>
745    </target>
746
747    <target name="abcl.binary.tar" depends="abcl.binary.prepare">
748      <tar destfile="${dist.dir}/abcl-bin-${abcl.version}.tar.gz"
749           compression="gzip">
750        <tarfileset dir="${build.dir}">
751          <include name="abcl-bin-${abcl.version}/**"/>
752          </tarfileset>
753      </tar>
754    </target>
755
756    <target name="abcl.binary.zip" depends="abcl.binary.prepare">
757      <zip destfile="${dist.dir}/abcl-bin-${abcl.version}.zip"
758           compress="true">
759        <zipfileset dir="${abcl.build.binary.dir}" prefix="abcl-bin-${abcl.version}"/>
760      </zip>
761    </target>
762
763    <target name="help.test">
764      <echo>
765The following Ant targets run various test suites:
766 
767  abcl.test
768    --  Run all available tests.
769  abcl.test.java
770    --  Run the ABCL junit Java tests under ${basedir}/test/src
771  abcl.test.lisp
772    --  Run the 'test.ansi.compiled', 'test.abcl', 'test.cl-bench' targets
773  test.ansi.compiled
774    --  Run the compiled version of the ANSI test suite
775  test.abcl
776    --  Run the Lisp RT tests collected in ${basedir}/test/lisp/abcl
777  test.cl-bench
778    --  Run the cl-bench test suite.
779
780The ANSI tests require that the [ansi-tests][1] be manually installed in
781${basedir}/../ansi-tests.
782
783[1]: svn://common-lisp.net/project/ansi-test/svn/trunk/ansi-tests
784
785The CL-BENCH test require that [cl-bench][2] be maunally installed in
786${basedir}/../cl-bench
787
788[2]: http://www.chez.com/emarsden/downloads/cl-bench.tar.gz
789      </echo>
790    </target>
791
792    <property name="abcl.test.classes.dir"
793              value="${build.dir}/classes-test"/>
794
795    <property name="abcl.test.src.dir"
796              value="${basedir}/test/src"/>
797
798    <patternset id="abcl.test.source.java">
799      <!-- For now, we list tests explicitly, because we have to
800           enumerate them later to the JUnit test runner. -->
801      <include name="org/armedbear/lisp/*.java"/>
802    </patternset>
803
804    <property name="junit.path"
805              value="${abcl.ext.dir}/junit-4.8.1.jar"/>
806
807
808    <path id="abcl.test.compile.classpath">
809      <pathelement location="${junit.path}"/>
810      <pathelement location="${build.classes.dir}"/>
811    </path>
812
813    <target name="abcl.test.pre-compile" depends="abcl.ext"/>
814
815    <target name="abcl.ext.p">
816      <!--XXX generalize over enumeration of all contributions to
817           abcl.ext if we get more of them.  -->
818      <available file="${junit.path}" property="abcl.ext.p"/>
819    </target>
820    <target name="abcl.ext" depends="abcl.ext.p" unless="abcl.ext.p">
821
822      <mkdir dir="${abcl.ext.dir}"/>
823      <get 
824          src="http://cloud.github.com/downloads/KentBeck/junit/junit-4.8.1.jar"
825          usetimestamp="true"
826          dest="${junit.path}"/>
827    </target>
828       
829    <target name="abcl.test.compile" 
830            depends="abcl.test.pre-compile">
831      <mkdir dir="${abcl.test.classes.dir}"/>
832      <javac destdir="${abcl.test.classes.dir}"
833             classpathref="abcl.test.compile.classpath"
834             debug="true"
835             target="1.5">
836        <src path="${abcl.test.src.dir}"/>
837        <patternset refid="abcl.test.source.java"/>
838      </javac>
839    </target>
840
841    <path id="abcl.test.run.classpath">
842      <path refid="abcl.test.compile.classpath"/>
843      <pathelement location="${abcl.test.classes.dir}"/>
844    </path>
845
846    <target name="abcl.test" 
847            depends="abcl.test.java,abcl.test.lisp"/>
848       
849    <target name="abcl.test.java" depends="abcl.test.compile">
850      <java fork="true"
851            classpathref="abcl.test.run.classpath"
852            classname="org.junit.runner.JUnitCore">
853        <arg value="org.armedbear.lisp.PathnameTest"/>
854        <arg value="org.armedbear.lisp.StreamTest"/>
855        <arg value="org.armedbear.lisp.UtilitiesTest"/>
856      </java>
857    </target>
858
859    <target name="abcl.test.lisp" 
860            depends="test.ansi.compiled,test.abcl,test.cl-bench"/>
861
862    <target name="test.ansi.interpreted" depends="abcl.jar">
863      <echo>Recording test output in ${abcl.test.log.file}.</echo>
864      <record name="${abcl.test.log.file}" emacsmode="true" action="start" append="yes"/>
865      <java fork="true" dir="${basedir}"
866            classpathref="abcl.classpath.dist"
867            classname="org.armedbear.lisp.Main">
868        <arg value="--noinit"/> 
869        <arg value="--eval"/><arg value="(require (quote asdf))"/>
870        <arg value="--eval"/><arg value="(asdf:operate (quote asdf:load-op) :abcl)"/>
871        <arg value="--eval"/><arg value="(asdf:operate (quote asdf:test-op) :ansi-interpreted)"/>
872        <arg value="--eval"/><arg value="(ext:exit)"/>
873      </java>
874      <record name="${abcl.test.log.file}" emacsmode="true" action="stop"/>
875      <echo>Finished recording test output in ${abcl.test.log.file}.</echo>
876    </target>
877
878    <target name="test.ansi.compiled" depends="abcl.jar">
879      <echo>Recording test output in ${abcl.test.log.file}.</echo>
880      <record name="${abcl.test.log.file}" emacsmode="true" action="start" append="yes"/>
881      <java fork="true" dir="${basedir}"
882            classpathref="abcl.classpath.dist"
883            classname="org.armedbear.lisp.Main">
884        <arg value="--noinit"/> 
885        <arg value="--eval"/><arg value="(require (quote asdf))"/>
886        <arg value="--eval"/><arg value="(asdf:operate (quote asdf:load-op) :abcl)"/>
887        <arg value="--eval"/><arg value="(asdf:operate (quote asdf:test-op) :ansi-compiled)"/>
888        <arg value="--eval"/><arg value="(ext:exit)"/>
889      </java>
890      <record name="${abcl.test.log.file}" emacsmode="true" action="stop"/>
891      <echo>Finished recording test output in ${abcl.test.log.file}.</echo>
892    </target>
893
894    <target name="test.abcl" depends="abcl.jar">
895      <echo>Recording test output in ${abcl.test.log.file}.</echo>
896      <record name="${abcl.test.log.file}" emacsmode="true" action="start" append="yes"/>
897      <java fork="true" dir="${basedir}"
898            classpathref="abcl.classpath.dist"
899            classname="org.armedbear.lisp.Main">
900        <arg value="--noinit"/> 
901        <arg value="--eval"/><arg value="(require (quote asdf))"/>
902        <arg value="--eval"/><arg value="(asdf:operate (quote asdf:load-op) :abcl)"/>
903        <arg value="--eval"/><arg value="(asdf:operate (quote asdf:test-op) :abcl-test-lisp)"/>
904        <arg value="--eval"/><arg value="(ext:exit)"/>
905      </java>
906      <record name="${abcl.test.log.file}" emacsmode="true" action="stop"/>
907      <echo>Finished recording test output in ${abcl.test.log.file}.</echo>
908    </target>
909
910    <target name="test.cl-bench" depends="abcl.jar">
911      <echo>Recording test output in ${abcl.test.log.file}.</echo>
912      <record name="${abcl.test.log.file}" emacsmode="true" action="start" append="yes"/>
913      <java fork="true" dir="${basedir}"
914            classpathref="abcl.classpath.dist"
915            classname="org.armedbear.lisp.Main">
916        <arg value="--noinit"/> 
917        <arg value="--eval"/><arg value="(require (quote asdf))"/>
918        <arg value="--eval"/><arg value="(asdf:operate (quote asdf:load-op) :abcl)"/>
919        <arg value="--eval"/><arg value="(asdf:operate (quote asdf:test-op) :cl-bench)"/>
920        <arg value="--eval"/><arg value="(ext:exit)"/>
921      </java>
922      <record name="${abcl.test.log.file}" emacsmode="true" action="stop"/>
923      <echo>Finished recording test output in ${abcl.test.log.file}.</echo>
924    </target>
925   
926    <target name="abcl.release" 
927            depends="abcl.binary.tar,abcl.source.tar,abcl.binary.zip,abcl.source.zip">
928      <copy file="${abcl.jar.path}"
929            tofile="${dist.dir}/abcl-${abcl.version}.jar"/>
930    </target>
931
932    <import file="netbeans-build.xml" optional="true"/> 
933<!--    <import file="j-build.xml" optional="true"/>  -->
934    <import file="not.org-build.xml" optional="true"/> 
935</project>
936
937
938
939
Note: See TracBrowser for help on using the repository browser.