source: trunk/abcl/build.xml @ 13370

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

Add support for releasing the contrib with Maven artifacts.

Create a "versioned" contrib jar as part of the release.

N.B. the pom.xml and instructions are untested.

  • Property svn:eol-style set to LF
File size: 33.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/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      <copy file="${abcl-contrib.jar}"
931            tofile="${dist.dir}/abcl-contrib-${abcl.version}.jar"/>
932    </target>
933
934    <import file="netbeans-build.xml" optional="true"/> 
935<!--    <import file="j-build.xml" optional="true"/>  -->
936    <import file="not.org-build.xml" optional="true"/> 
937</project>
938
939
940
941
Note: See TracBrowser for help on using the repository browser.