source: trunk/abcl/build.xml @ 13987

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

build: Fix typos in match for ORCL JDK version.

  • Property svn:eol-style set to LF
File size: 37.0 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_[1-9][0-9]"/>
150          <!-- 1.7.0_04 works much better. FIXME: will break at jdk-1.7.0_99 -->
151          <matches string="${java.version}" pattern="1\.7\.0_[3-9][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/run-benchmarks.lisp"/>
210    </patternset>
211
212    <target name="abcl.fasls.uptodate">
213      <uptodate property="abcl.fasls.uptodate.p" value="true">
214        <srcfiles dir="${src.dir}">
215          <patternset refid="abcl.source.lisp.fasls"/>
216        </srcfiles>
217        <mapper type="glob" from="*.lisp" to="${build.classes.dir}/*.abcl"/>
218      </uptodate>
219    </target>
220
221    <path id="abcl.home.dir.path">
222        <path location="${src.dir}/org/armedbear/lisp/"/>
223    </path>         
224    <pathconvert property="abcl.home.dir" refid="abcl.home.dir.path"/>
225
226    <path id="abcl.lisp.output.path"
227          location="${build.classes.dir}/org/armedbear/lisp/"/>
228    <pathconvert dirsep="/" property="abcl.lisp.output" refid="abcl.lisp.output.path"/>
229
230    <property name="system.lisp.file" 
231              value="${build.classes.dir}/org/armedbear/lisp/system.lisp"/>
232   
233    <target name="abcl.compile.lisp" 
234            depends="abcl.copy.lisp,abcl.compile.java,abcl.system.update.maybe,abcl.fasls.uptodate"
235            unless="abcl.fasls.uptodate.p">
236      <echo>
237Compiling Lisp system
238from ${abcl.home.dir}
239 to  ${abcl.lisp.output}</echo>
240 
241     <!-- Not good if ${abcl.home.dir} == ${abcl.lisp.output} -->
242     <delete>
243       <fileset dir="${abcl.home.dir}" includes="**/*.abcl **/*.cls **/*._"/>
244     </delete>
245     <java classpath="${build.classes.dir}" 
246            fork="true"
247            failonerror="true"
248            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))))"
249            classname="org.armedbear.lisp.Main">
250        <jvmarg value="-Dabcl.home=${abcl.home.dir}${file.separator}"/>
251        <arg value="--noinit"/>
252        <arg value="--nosystem"/>
253        <arg value="--eval"/>
254        <arg value="(setf *load-verbose* t)"/>
255      </java>
256      <concat destfile="${system.lisp.file}" append="true">
257        <fileset file="${abcl.startup.file}"/>
258      </concat>
259    </target>
260
261    <property name="abcl.build.path"
262              value="${build.classes.dir}/org/armedbear/lisp/build"/>
263    <target name="abcl.stamp" 
264            depends="abcl.compile,abcl.stamp.version,abcl.stamp.hostname">
265      <mkdir dir="${abcl.build.path}/.."/>
266      <loadfile property="abcl.version"
267                srcFile="${abcl.version.path}"/>
268      <echo message="${build}" file="${abcl.build.path}"/>   
269    </target>
270
271
272    <!-- Environment variables may be accessed as ${env.NAME} -->
273    <property environment="env"/>
274
275    <!-- Can we derive an SVN version from the current build tree? -->
276    <condition property="abcl.version.svn.p">
277      <and>
278        <available
279            file="${basedir}/.svn"
280            type="dir"/>
281        <or>
282            <available
283                file="svnversion.exe"
284                filepath="${env.Path}"/>
285            <available
286                file="svnversion.exe"
287                filepath="${env.PATH}"/>
288             <available
289                file="svnversion"
290                filepath="${env.Path}"/>
291            <available
292                file="svnversion"
293                filepath="${env.PATH}"/>
294        </or>
295      </and>
296    </condition>
297
298    <target name="abcl.version.src" depends="abcl.version.src.3"/>
299
300    <target name="abcl.version.src.0" if="windows">
301      <exec
302          executable="svnversion.exe"
303          outputproperty="abcl.version.svn.raw"
304          failifexecutionfails="false"
305          searchpath="true" />
306    </target>
307
308    <target name="abcl.version.src.1" depends="abcl.version.src.0">
309      <exec 
310          executable="svnversion"
311          outputproperty="abcl.version.svn.raw"
312          failifexecutionfails="false"
313          searchpath="true" />
314    </target>
315
316    <target name="abcl.version.src.2" 
317            depends="abcl.version.src.1"
318            if="abcl.version.svn.p">
319
320      <!-- Transform all occurances of ":" ==> "-" in the version string -->
321      <tempfile property="version-tmp.path"/>
322      <echo message="${abcl.version.svn.raw}"
323            file="${version-tmp.path}"/>
324      <replace file="${version-tmp.path}"
325               token=":" value="-"/>
326      <loadfile property="abcl.version.svn" srcFile="${version-tmp.path}"/>
327      <delete file="${version-tmp.path}"/>
328
329      <echo>abcl.version.svn: ${abcl.version.svn}</echo>
330      <property name="abcl.version.src"
331                value="svn-${abcl.version.svn}"/>
332    </target>
333
334    <target name="abcl.version.src.3"
335            depends="abcl.version.src.2"
336            unless="abcl.version.svn.p">
337      <property name="abcl.version.src"
338                value=""/>
339    </target>
340
341    <property name="abcl.home.dir"
342              value="${src.dir}/org/armedbear/lisp/"/>
343    <property name="abcl.version.path"
344              value="${build.classes.dir}/org/armedbear/lisp/version"/>
345
346    <target name="abcl.clean.version">
347      <delete file="${abcl.version.path}"/>
348    </target>
349
350    <target name="abcl.stamp.version.uptodate">
351      <uptodate property="abcl.stamp.version.uptodate.p" 
352                targetfile="${abcl.version.path}"
353                srcfile="${build.classes.dir}/org/armedbear/lisp/Version.class"/>
354    </target>
355
356    <target name="abcl.stamp.version" 
357            depends="abcl.version.src,abcl.stamp.version.1,abcl.stamp.version.2"
358            unless="abcl.stamp.version.uptodate.p">
359      <mkdir dir="${abcl.version.path}/.."/>
360      <echo>ABCL implementation version: ${abcl.implementation.version}</echo>
361      <echo file="${abcl.version.path}">${abcl.implementation.version}</echo>
362    </target>
363   
364    <target name="abcl.stamp.version.generate" 
365            depends="abcl.compile.java"
366            unless="abcl.stamp.version.uptodate.p">
367      <java fork="true"
368            classpath="${build.classes.dir}"
369            outputproperty="abcl.version"
370            classname="org.armedbear.lisp.Version"
371            logerror="yes"/> <!-- Don't catch stderr output -->
372    </target>
373
374    <target name="abcl.stamp.version.0" 
375            depends="abcl.stamp.version.uptodate,abcl.stamp.version.generate">
376    </target>
377
378    <target name="abcl.stamp.version.1"
379            depends="abcl.stamp.version.0"
380            unless="abcl.version.svn.p">
381      <property name="abcl.implementation.version"
382                value="${abcl.version}"/>
383    </target>
384
385    <target name="abcl.stamp.version.2" 
386            depends="abcl.stamp.version.0"
387            if="abcl.version.svn.p">
388      <property name="abcl.implementation.version"
389                value="${abcl.version}-${abcl.version.src}"/>
390    </target>
391
392    <target name="abcl.stamp.hostname" if="unix">
393      <exec executable="hostname" outputproperty="abcl.hostname"/>
394      <echo>abcl.hostname: ${abcl.hostname}</echo>
395    </target>
396
397    <target name="abcl.system.uptodate">
398      <condition property="abcl.system.needs-update.p">
399        <and>
400          <available file="${system.lisp.file}"/>
401          <available file="${abcl.startup.file}"/>
402          <uptodate
403                srcfile="${system.lisp.file}"
404                targetfile="${abcl.startup.file}"/>
405        </and>
406      </condition>
407    </target>
408   
409    <target name="abcl.system.update.maybe" depends="abcl.system.uptodate" 
410            if="abcl.system.needs-update.p">
411      <touch file="${src.dir}/org/armedbear/lisp/compile-system.lisp"/>
412    </target>
413
414    <target name="abcl.jar.uptodate" depends="abcl.compile,abcl.stamp">
415      <uptodate property="abcl.jar.uptodate.p" targetfile="${abcl.jar.path}">
416        <srcfiles dir="${build.classes.dir}">
417          <patternset refid="abcl.objects"/>
418        </srcfiles>
419      </uptodate>
420    </target>
421
422    <target name="abcl.jar" depends="abcl.jar.uptodate"
423            unless="abcl.jar.uptodate.p">
424      <mkdir dir="${dist.dir}"/>
425      <jar destfile="${abcl.jar.path}"
426           compress="true"
427           update="true"
428           basedir="${build.classes.dir}">
429        <patternset refid="abcl.objects"/>
430        <manifest>
431          <attribute name="Main-Class" value="org.armedbear.lisp.Main"/>
432          <section name="org/armedbear/lisp">
433            <attribute name="Implementation-Title" 
434                       value="ABCL"/>
435            <attribute name="Implementation-Version" 
436                       value="${abcl.implementation.version}"/>
437            <attribute name="Implementation-Build" 
438                       value="${build}"/>
439          </section>
440        </manifest>
441        <metainf dir="${src.dir}/META-INF"> 
442          <exclude name="services/javax.script.ScriptEngineFactory"
443                   unless="abcl.jsr-223.p"/>
444        </metainf>
445      </jar>
446    </target>
447   
448    <target name="abcl.wrapper" 
449            depends="abcl.jar,abcl.contrib,abcl.wrapper.unix,abcl.wrapper.windows">
450      <description>
451        Creates in-place executable shell wrapper in '${abcl.wrapper.file}'
452      </description>
453      <!-- Set from commandline or in 'build.properties' -->
454      <property name="additional.jars" value=""/>
455      <path id="abcl.runtime.classpath">
456        <pathelement location="${abcl.jar.path}"/>
457        <pathelement path="${additional.jars}"/>
458      </path>
459      <!-- set via '-Djava.options=JAVA_OPTIONS' or in 'build.properties -->
460      <property name="java.options" value=""/>
461
462      <copy file="${abcl.wrapper.in.file}" toFile="${abcl.wrapper.file}" overwrite="yes">
463        <filterset>
464          <filter token="JAVA" 
465                  value="${java.path}"/>
466          <filter token="ABCL_JAVA_OPTIONS" 
467                  value="${java.options}"/>
468          <filter token="ABCL_CLASSPATH"
469                  value="${toString:abcl.runtime.classpath}"/>
470        </filterset>
471      </copy>
472      <chmod file="${abcl.wrapper.file}" perm="a+x"/>
473
474      <echo>Created executable ABCL wrapper in '${abcl.wrapper.file}'</echo>
475      <echo>N.B. This wrapper requires '${abcl.jar.path}' not be moved.</echo>
476    </target>
477
478    <target name="abcl.wrapper.unix" if="unix">
479      <property name="abcl.wrapper.file" value="abcl"/>
480      <property name="abcl.wrapper.in.file" value="abcl.in"/>
481    </target>
482
483    <target name="abcl.wrapper.windows" if="windows">
484      <property name="abcl.wrapper.file" value="abcl.bat"/>
485      <property name="abcl.wrapper.in.file" value="abcl.bat.in"/>
486    </target>
487
488    <patternset id="abcl.contrib.source">
489          <include name="**/*.asd"/>
490          <include name="**/*.lisp"/>
491          <include name="**/README.markdown"/>
492    </patternset>
493
494    <patternset id="abcl.contrib.docs">
495          <include name="**/README.markdown"/>
496    </patternset>
497
498    <property name="abcl-contrib.jar"
499              value="${dist.dir}/abcl-contrib.jar"/>
500    <condition property="abcl.contrib.uptodate.p">
501      <uptodate targetfile="${abcl-contrib.jar}">
502        <srcfiles dir="contrib">
503          <patternset refid="abcl.contrib.source"/>
504        </srcfiles>
505      </uptodate>
506    </condition>
507
508    <target name="abcl-contrib.jar" depends="abcl.contrib"/>
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
963<target name="abcl.diagnostic" 
964        description="Emit diagnostics describing available hosting JVM properties."
965        depends="abcl.build.diagnostic"/>
966<!--
967
968urn:org.abcl.build.ant.targets.diagnostic
969
970"Possible JVM values from"
971
972http://docs.oracle.com/javase/6/docs/api/java/lang/System.html#getProperties
973
974.
975
976
977java.version  Java Runtime Environment version
978java.vendor   Java Runtime Environment vendor
979java.vendor.url   Java vendor URL
980java.home   Java installation directory
981java.vm.specification.version   Java Virtual Machine specification version
982java.vm.specification.vendor  Java Virtual Machine specification vendor
983java.vm.specification.name  Java Virtual Machine specification name
984java.vm.version   Java Virtual Machine implementation version
985java.vm.vendor  Java Virtual Machine implementation vendor
986java.vm.name  Java Virtual Machine implementation name
987java.specification.version  Java Runtime Environment specification version
988java.specification.vendor   Java Runtime Environment specification vendor
989java.specification.name   Java Runtime Environment specification name
990java.class.version  Java class format version number
991java.class.path   Java class path
992java.library.path   List of paths to search when loading libraries
993java.io.tmpdir  Default temp file path
994java.compiler   Name of JIT compiler to use
995java.ext.dirs   Path of extension directory or directories
996os.name   Operating system name
997os.arch   Operating system architecture
998os.version  Operating system version
999file.separator  File separator ("/" on UNIX)
1000path.separator  Path separator (":" on UNIX)
1001line.separator  Line separator ("\n" on UNIX)
1002user.name   User's account name
1003user.home   User's home directory
1004user.dir
1005
1006-->
1007
1008<target name="abcl.build.diagnostic" description="Emit diagnostics describing available hosting JVM properties.">
1009  <echo>:java.version    ${java.version}</echo>
1010  <echo>:java.vendor     ${java.vendor}</echo>
1011  <echo>:java.vm.vendor  ${java.vm.vendor}</echo>
1012  <echo>:java.vm.name    ${java.vm.name}</echo>
1013
1014  <echo>:os.name    ${os.name}</echo>
1015  <echo>:os.arch    ${os.arch}</echo>
1016  <echo>:os.version ${os.version}</echo>
1017 
1018  <echo>:java.specification.version       ${java.specification.version}</echo>
1019  <echo>:java.vm.specification.version    ${java.vm.specification.version}</echo>
1020</target>
1021
1022    <target name="abcl.release" 
1023            depends="abcl.binary.tar,abcl.source.tar,abcl.binary.zip,abcl.source.zip">
1024      <copy file="${abcl.jar.path}"
1025            tofile="${dist.dir}/abcl-${abcl.version}.jar"/>
1026      <copy file="${abcl-contrib.jar}"
1027            tofile="${dist.dir}/abcl-contrib-${abcl.version}.jar"/>
1028    </target>
1029
1030    <import file="netbeans-build.xml" optional="true"/> 
1031<!--    <import file="j-build.xml" optional="true"/>  -->
1032    <import file="not.org-build.xml" optional="true"/> 
1033   
1034    <import file="build-snapshot.xml" optional="true"/>
1035</project>
1036
1037
1038
1039
Note: See TracBrowser for help on using the repository browser.