source: branches/0.26.x/abcl/build.xml @ 13479

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

Backport r13439: Fix #131: Don't include ':' in the version string.

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