source: trunk/abcl/build.xml @ 13793

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

Comment on desired buildtime bytecode JVM compilance

  • 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" unless="abcl.contrib.uptodate.p">
510      <jar destfile="${abcl-contrib.jar}"
511           compress="true"
512           basedir="contrib">
513        <patternset refid="abcl.contrib.source"/>
514      </jar>
515      <echo>
516Packaged contribs in ${abcl-contrib.jar}. To use contribs, ensure that
517this file is in the same directory as 'abcl.jar', and then
518
519  CL-USER> (require 'abcl-contrib)
520
521will place all the contribs in the ASDF registry.
522
523To load a contrib, something like
524
525  CL-USER> (require 'jss)
526
527will compile (if necessary) and load JSS.
528</echo>
529    </target>
530
531    <target name="abcl.contrib.javadoc.jar">
532      <mkdir dir="${dist.dir}"/>
533      <jar destfile="${dist.dir}/abcl-contrib-javadoc.jar" basedir="contrib">
534        <patternset refid="abcl.contrib.docs" />
535      </jar>
536    </target>
537
538    <target name="abcl.contrib.source.jar">
539      <mkdir dir="${dist.dir}"/>
540      <jar destfile="${dist.dir}/abcl-contrib-sources.jar" basedir="contrib">
541        <patternset refid="abcl.contrib.source" />
542      </jar>
543    </target>
544
545    <target name="abcl.debug.jpda" depends="abcl.jar">
546      <description>Invoke ABCL with JPDA listener on port 6789</description>
547      <java fork="true"
548            classpathref="abcl.classpath.dist"
549            classname="org.armedbear.lisp.Main">
550        <jvmarg 
551            value="-agentlib:jdwp=transport=dt_socket,address=6789,server=y"/>
552      </java>
553      <echo>JPDA listening on localhost:6789</echo>
554    </target>
555
556    <target name="abcl.build.debug.jpda" depends="abcl.compile.java">
557      <description>Invoke ABCL with JPDA listener on port 6789</description>
558      <java fork="true"
559            classpathref="abcl.classpath.build"
560            classname="org.armedbear.lisp.Main">
561        <jvmarg
562            value="-agentlib:jdwp=transport=dt_socket,address=6789,server=y"/>
563        <jvmarg value="-Dabcl.home=${abcl.home.dir}${file.separator}"/>
564      </java>
565      <echo>JPDA listening on localhost:6789</echo>
566    </target>
567
568    <target name="abcl.run" depends="abcl.jar">
569      <java fork="true"
570            classpathref="abcl.classpath.dist"
571            classname="org.armedbear.lisp.Main">
572      </java>
573    </target>
574
575    <target name="abcl.clean">
576      <delete dir="${build.dir}"/>
577      <delete file="${abcl.jar.path}"/>
578      <delete file="abcl"/>
579      <delete file="abcl.bat"/>
580    </target>
581
582    <target name="abcl.dist" depends="abcl.jar">
583      <copy file="${abcl.jar.path}"
584            toFile="${dist.dir}/abcl-${abcl.version}.jar"/>
585    </target>
586
587    <target name="abcl.distclean" depends="abcl.clean">
588      <delete dir="${dist.dir}"/>
589      <delete file="abcl"/>
590      <delete file="abcl.bat"/>
591    </target>
592
593    <target name="TAGS">
594      <delete file="TAGS"/>
595      <apply executable="etags" parallel="true" verbose="true" maxparallel="300">
596        <arg value="--append"/>
597        <arg value="--regex=|[ \t]+//[ \t]+###[ \t]+\([^ \t]+\)|\1|"/>
598        <arg value='--regex=|[ \t]*@DocString([ \t]*name=\"\([^\"]*\)|\1|'/>
599        <fileset dir="${src.dir}">
600          <patternset refid="abcl.source.java"/>
601          <patternset refid="abcl.source.lisp"/>
602        </fileset>
603      </apply>
604    </target>
605
606    <patternset id="abcl.dist.misc"
607                description="Additional includes in the source distributions relative to basedir">
608      <include name="build.xml"/>
609      <include name="abcl.properties.in"/>
610      <include name="COPYING"/>
611      <include name="README"/>
612      <include name="CHANGES"/>
613      <include name="abcl.in"/>
614      <include name="abcl.bat.in"/>
615
616      <include name="abcl.asd"/>
617     
618      <include name="examples/**"/>
619
620      <include name="contrib/**"/>
621     
622      <include name="test/**"/>
623
624      <include name="build-from-lisp.sh"/>
625     
626      <!-- The remainder of these files are used by the Lisp hosted
627           build in 'build-abcl.lisp' but not used by Ant, so include
628           them in the source distribution. -->
629      <include name="make-jar.in"/>
630      <include name="make-jar.bat.in"/>
631
632      <include name="build-abcl.lisp"/>
633      <include name="customizations.lisp.in"/>
634
635    </patternset>
636
637    <patternset 
638        id="abcl.source.misc"
639        description="Additional includes in the source distribution relative to source root">
640      <include name="org/armedbear/lisp/LICENSE"/>
641      <include name="manifest-abcl"/>
642      <include name="META-INF/services/javax.script.ScriptEngineFactory"/>
643    </patternset>
644
645    <target name="abcl.source.prepare" depends="abcl.stamp.version">
646      <property name="abcl.build.src.dir"
647                value="${build.dir}/abcl-src-${abcl.version}"/>
648      <mkdir dir="${abcl.build.src.dir}/src"/>
649      <copy todir="${abcl.build.src.dir}/src"
650            preservelastmodified="true">
651        <fileset dir="${src.dir}"
652                 id="abcl.source.src">
653            <patternset refid="abcl.source.java"/>
654            <patternset refid="abcl.source.lisp"/>
655            <patternset refid="abcl.source.misc"/>
656        </fileset>
657      </copy>
658      <copy todir="${abcl.build.src.dir}"
659            preservelastmodified="true">
660        <fileset dir="${basedir}">
661            <patternset refid="abcl.dist.misc"/>
662        </fileset>
663      </copy>
664    </target>
665
666    <!--  Files in source distribution that always get LF EOL (aka
667         'unix') -->   
668    <patternset id="abcl.dist.lf">
669      <include name="abcl.in"/>
670    </patternset>
671
672    <!--  Files in source distribution that always get CRLF EOL (aka
673         'dos') -->   
674    <patternset id="abcl.dist.crlf">
675      <include name="abcl.bat.in"/>
676    </patternset>
677
678    <target name="abcl.source.unix" depends="abcl.source.prepare">
679      <fixcrlf srcdir="${abcl.build.src.dir}"
680               preservelastmodified="true"
681               eol="lf">
682      </fixcrlf>
683
684      <fixcrlf srcdir="${abcl.build.src.dir}"
685               preservelastmodified="true"
686               eol="crlf">
687          <patternset refid="abcl.dist.crlf"/>
688      </fixcrlf>
689
690      <fixcrlf srcdir="${abcl.build.src.dir}"
691               preservelastmodified="true"
692               eol="lf">
693          <patternset refid="abcl.dist.lf"/>
694      </fixcrlf>
695    </target>
696
697    <target name="abcl.source.tar" depends="abcl.source.unix">
698      <mkdir dir="${dist.dir}"/>
699      <tar destfile="${dist.dir}/abcl-src-${abcl.version}.tar.gz"
700           compression="gzip">
701        <tarfileset dir="${build.dir}">
702          <include name="abcl-src-${abcl.version}/**"/>
703        </tarfileset>
704      </tar>
705    </target>
706
707    <target name="abcl.source.windows" depends="abcl.source.prepare">
708      <fixcrlf srcdir="${abcl.build.src.dir}"
709               preservelastmodified="true"
710               eol="crlf">
711      </fixcrlf>
712
713      <fixcrlf srcdir="${abcl.build.src.dir}"
714               preservelastmodified="true"
715               eol="crlf">
716          <patternset refid="abcl.dist.crlf"/>
717      </fixcrlf>
718
719      <fixcrlf srcdir="${abcl.build.src.dir}"
720               preservelastmodified="true"
721               eol="lf">
722          <patternset refid="abcl.dist.lf"/>
723      </fixcrlf>
724    </target>
725
726    <target name="abcl.source.zip" depends="abcl.source.windows">
727      <mkdir dir="${dist.dir}"/>
728      <zip destfile="${dist.dir}/abcl-src-${abcl.version}.zip"
729           compress="true">
730        <zipfileset dir="${abcl.build.src.dir}" prefix="abcl-src-${abcl.version}"/>
731      </zip>
732    </target>
733
734    <target name="abcl.source.jar" depends="abcl.source.unix">
735      <mkdir dir="${dist.dir}"/>
736      <jar destfile="${dist.dir}/abcl-${abcl.version}-sources.jar">
737        <metainf dir="${abcl.build.src.dir}">
738          <include name="COPYING"/>
739        </metainf>
740        <fileset dir="${abcl.build.src.dir}/src">
741          <include name="**/*.java"/>
742          <include name="**/*.lisp"/>
743        </fileset>
744      </jar>
745    </target>
746
747    <property name="abcl.javadoc.dir" value="${build.dir}/javadoc"/>
748
749    <target name="abcl.javadoc">
750      <mkdir dir="${abcl.javadoc.dir}"/>
751      <javadoc destdir="${abcl.javadoc.dir}"
752               sourcepath="${src.dir}"/>
753    </target>
754   
755    <target name="abcl.javadoc.jar" depends="abcl.stamp.version,abcl.javadoc">
756      <mkdir dir="${dist.dir}"/>
757      <jar destfile="${dist.dir}/abcl-${abcl.version}-javadoc.jar">
758        <fileset dir="${abcl.javadoc.dir}"/>
759      </jar>
760    </target>
761
762    <target name="abcl.binary.prepare" depends="abcl.jar,abcl.contrib,abcl.stamp.version">
763      <property name="abcl.build.binary.dir"
764                value="${build.dir}/abcl-bin-${abcl.version}"/>
765      <mkdir dir="${abcl.build.binary.dir}"/>
766      <copy todir="${abcl.build.binary.dir}"
767            preservelastmodified="true">
768        <fileset dir="${basedir}/dist">
769          <patternset>
770            <include name="abcl.jar"/>
771            <include name="abcl-contrib.jar"/>
772          </patternset>
773        </fileset>
774        <fileset dir="${basedir}">
775          <patternset>
776            <include name="README"/>
777            <include name="CHANGES"/>
778          </patternset>
779        </fileset>
780      </copy>
781    </target>
782
783    <target name="abcl.binary.tar" depends="abcl.binary.prepare">
784      <tar destfile="${dist.dir}/abcl-bin-${abcl.version}.tar.gz"
785           compression="gzip">
786        <tarfileset dir="${build.dir}">
787          <include name="abcl-bin-${abcl.version}/**"/>
788          </tarfileset>
789      </tar>
790    </target>
791
792    <target name="abcl.binary.zip" depends="abcl.binary.prepare">
793      <zip destfile="${dist.dir}/abcl-bin-${abcl.version}.zip"
794           compress="true">
795        <zipfileset dir="${abcl.build.binary.dir}" prefix="abcl-bin-${abcl.version}"/>
796      </zip>
797    </target>
798
799    <target name="help.test">
800      <echo>
801The following Ant targets run various test suites:
802 
803  abcl.test
804    --  Run all available tests.
805  abcl.test.java
806    --  Run the ABCL junit Java tests under ${basedir}/test/src
807  abcl.test.lisp
808    --  Run the 'test.ansi.compiled', 'test.abcl', 'test.cl-bench' targets
809  test.ansi.compiled
810    --  Run the compiled version of the ANSI test suite
811  test.abcl
812    --  Run the Lisp RT tests collected in ${basedir}/test/lisp/abcl
813  test.cl-bench
814    --  Run the cl-bench test suite.
815
816The ANSI tests require that the [ansi-tests][1] be manually installed in
817${basedir}/../ansi-tests.
818
819[1]: svn://common-lisp.net/project/ansi-test/svn/trunk/ansi-tests
820
821The CL-BENCH tests require that [cl-bench][2] be manually installed in
822${basedir}/../cl-bench
823
824[2]: http://www.chez.com/emarsden/downloads/cl-bench.tar.gz
825      </echo>
826    </target>
827
828    <property name="abcl.test.classes.dir"
829              value="${build.dir}/classes-test"/>
830
831    <property name="abcl.test.src.dir"
832              value="${basedir}/test/src"/>
833
834    <patternset id="abcl.test.source.java">
835      <!-- For now, we list tests explicitly, because we have to
836           enumerate them later to the JUnit test runner. -->
837      <include name="org/armedbear/lisp/*.java"/>
838    </patternset>
839
840    <property name="junit.path"
841              value="${abcl.ext.dir}/junit-4.8.1.jar"/>
842
843
844    <path id="abcl.test.compile.classpath">
845      <pathelement location="${junit.path}"/>
846      <pathelement location="${build.classes.dir}"/>
847    </path>
848
849    <target name="abcl.test.pre-compile" depends="abcl.ext"/>
850
851    <target name="abcl.ext.p">
852      <!--XXX generalize over enumeration of all contributions to
853           abcl.ext if we get more of them.  -->
854      <available file="${junit.path}" property="abcl.ext.p"/>
855    </target>
856    <target name="abcl.ext" depends="abcl.ext.p" unless="abcl.ext.p">
857
858      <mkdir dir="${abcl.ext.dir}"/>
859      <get 
860          src="http://cloud.github.com/downloads/KentBeck/junit/junit-4.8.1.jar"
861          usetimestamp="true"
862          dest="${junit.path}"/>
863    </target>
864       
865    <target name="abcl.test.compile" 
866            depends="abcl.test.pre-compile">
867      <mkdir dir="${abcl.test.classes.dir}"/>
868      <javac destdir="${abcl.test.classes.dir}"
869             classpathref="abcl.test.compile.classpath"
870             debug="true"
871             target="1.5">
872        <src path="${abcl.test.src.dir}"/>
873        <patternset refid="abcl.test.source.java"/>
874      </javac>
875    </target>
876
877    <path id="abcl.test.run.classpath">
878      <path refid="abcl.test.compile.classpath"/>
879      <pathelement location="${abcl.test.classes.dir}"/>
880    </path>
881
882    <target name="abcl.test" 
883            depends="abcl.test.java,abcl.test.lisp"/>
884       
885    <target name="abcl.test.java" depends="abcl.test.compile">
886      <java fork="true"
887            classpathref="abcl.test.run.classpath"
888            classname="org.junit.runner.JUnitCore">
889        <arg value="org.armedbear.lisp.PathnameTest"/>
890        <arg value="org.armedbear.lisp.StreamTest"/>
891        <arg value="org.armedbear.lisp.UtilitiesTest"/>
892      </java>
893    </target>
894
895    <target name="abcl.test.lisp" 
896            depends="test.ansi.compiled,test.abcl,test.cl-bench"/>
897
898    <target name="test.ansi.interpreted" depends="abcl.jar">
899      <echo>Recording test output in ${abcl.test.log.file}.</echo>
900      <record name="${abcl.test.log.file}" emacsmode="true" action="start" append="yes"/>
901      <java fork="true" dir="${basedir}"
902            classpathref="abcl.classpath.dist"
903            classname="org.armedbear.lisp.Main">
904        <arg value="--noinit"/> 
905        <arg value="--eval"/><arg value="(require (quote asdf))"/>
906        <arg value="--eval"/><arg value="(asdf:operate (quote asdf:load-op) :abcl)"/>
907        <arg value="--eval"/><arg value="(asdf:operate (quote asdf:test-op) :ansi-interpreted)"/>
908        <arg value="--eval"/><arg value="(ext:exit)"/>
909      </java>
910      <record name="${abcl.test.log.file}" emacsmode="true" action="stop"/>
911      <echo>Finished recording test output in ${abcl.test.log.file}.</echo>
912    </target>
913
914    <target name="test.ansi.compiled" depends="abcl.jar">
915      <echo>Recording test output in ${abcl.test.log.file}.</echo>
916      <record name="${abcl.test.log.file}" emacsmode="true" action="start" append="yes"/>
917      <java fork="true" dir="${basedir}"
918            classpathref="abcl.classpath.dist"
919            classname="org.armedbear.lisp.Main">
920        <arg value="--noinit"/> 
921        <arg value="--eval"/><arg value="(require (quote asdf))"/>
922        <arg value="--eval"/><arg value="(asdf:operate (quote asdf:load-op) :abcl)"/>
923        <arg value="--eval"/><arg value="(asdf:operate (quote asdf:test-op) :ansi-compiled)"/>
924        <arg value="--eval"/><arg value="(ext:exit)"/>
925      </java>
926      <record name="${abcl.test.log.file}" emacsmode="true" action="stop"/>
927      <echo>Finished recording test output in ${abcl.test.log.file}.</echo>
928    </target>
929
930    <target name="test.abcl" depends="abcl.jar">
931      <echo>Recording test output in ${abcl.test.log.file}.</echo>
932      <record name="${abcl.test.log.file}" emacsmode="true" action="start" append="yes"/>
933      <java fork="true" dir="${basedir}"
934            classpathref="abcl.classpath.dist"
935            classname="org.armedbear.lisp.Main">
936        <arg value="--noinit"/> 
937        <arg value="--eval"/><arg value="(require (quote asdf))"/>
938        <arg value="--eval"/><arg value="(asdf:operate (quote asdf:load-op) :abcl)"/>
939        <arg value="--eval"/><arg value="(asdf:operate (quote asdf:test-op) :abcl-test-lisp)"/>
940        <arg value="--eval"/><arg value="(ext:exit)"/>
941      </java>
942      <record name="${abcl.test.log.file}" emacsmode="true" action="stop"/>
943      <echo>Finished recording test output in ${abcl.test.log.file}.</echo>
944    </target>
945
946    <target name="test.cl-bench" depends="abcl.jar">
947      <echo>Recording test output in ${abcl.test.log.file}.</echo>
948      <record name="${abcl.test.log.file}" emacsmode="true" action="start" append="yes"/>
949      <java fork="true" dir="${basedir}"
950            classpathref="abcl.classpath.dist"
951            classname="org.armedbear.lisp.Main">
952        <arg value="--noinit"/> 
953        <arg value="--eval"/><arg value="(require (quote asdf))"/>
954        <arg value="--eval"/><arg value="(asdf:operate (quote asdf:load-op) :abcl)"/>
955        <arg value="--eval"/><arg value="(asdf:operate (quote asdf:test-op) :cl-bench)"/>
956        <arg value="--eval"/><arg value="(ext:exit)"/>
957      </java>
958      <record name="${abcl.test.log.file}" emacsmode="true" action="stop"/>
959      <echo>Finished recording test output in ${abcl.test.log.file}.</echo>
960    </target>
961   
962    <target name="abcl.release" 
963            depends="abcl.binary.tar,abcl.source.tar,abcl.binary.zip,abcl.source.zip">
964      <copy file="${abcl.jar.path}"
965            tofile="${dist.dir}/abcl-${abcl.version}.jar"/>
966      <copy file="${abcl-contrib.jar}"
967            tofile="${dist.dir}/abcl-contrib-${abcl.version}.jar"/>
968    </target>
969
970    <import file="netbeans-build.xml" optional="true"/> 
971<!--    <import file="j-build.xml" optional="true"/>  -->
972    <import file="not.org-build.xml" optional="true"/> 
973</project>
974
975
976
977
Note: See TracBrowser for help on using the repository browser.