source: trunk/abcl/build.xml @ 13988

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

build: generalized corrected version of JDK version match.

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