source: trunk/abcl/build.xml @ 13803

Last change on this file since 13803 was 13803, checked in by Mark Evenson, 9 years ago

Add Ant convenience target for "abcl-contrib.jar".

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