source: trunk/abcl/build.xml @ 15009

Last change on this file since 15009 was 15009, checked in by mevenson, 13 months ago

Rework ABCL-BUILD as a contrib

ABCL-BUILD now more usefully installs necessary build machinery.

Refactor the ABCL-BUILD Lisp based build to use use Ant, which allows
us to canonicalize the build instructions in a much more configurable
manner, restoring the cross-implementation build of ABCL for CL users
who really do want to know about Java tooling.

Since we want to use ASDF/UIOP anyways, this code is best expressed as
an abcl contrib where such behavior can profitably take place.

TODO: does not pass all tests

TODO: API compatibility so that build-from-lisp.bash works

TODO: If an invocable Ant cannot be found, then offer to install one via restart

TODO: work backwards to the scenario that we are booting in pure
interepreted mode without access to compilers.

  • Property svn:eol-style set to LF
File size: 44.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,abcl-contrib.jar"/>
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-aio.jar.path"
44              value="${dist.dir}/abcl-aio.jar"/>
45    <property name="abcl.ext.dir"
46              value="${basedir}/ext"/>
47
48    <property name="abcl.runtime.jar.path"
49              value="${abcl.jar.path}"/>
50
51    <fail message="Please build using Ant 1.7.1 or higher.">
52        <condition>
53            <not>
54                <antversion atleast="1.7.1"/>
55            </not>
56        </condition>
57    </fail>
58
59    <!-- Checks if JSR-223 support is available - thanks to Mark Evenson -->
60    <available property="abcl.jsr-223.p"
61               classname="javax.script.ScriptEngine"/>
62
63    <patternset id="abcl.source.java">
64      <include name="org/armedbear/lisp/*.java"/>
65      <include name="org/armedbear/lisp/util/*.java"/>
66      <include name="org/armedbear/lisp/protocol/*.java"/>
67      <include name="org/armedbear/lisp/java/**/*.java"/>
68      <include if="abcl.jsr-223.p"
69               name="org/armedbear/lisp/scripting/*.java" />
70      <include if="abcl.jsr-223.p"
71               name="org/armedbear/lisp/scripting/util/*.java" />
72      <include name="org/armedbear/Main.java"/>
73    </patternset>
74
75    <patternset id="abcl.source.lisp">
76      <include name="org/armedbear/lisp/*.lisp"/>
77      <include name="org/armedbear/lisp/java/**/*.lisp"/>
78      <include name="org/armedbear/lisp/tests/*.lisp"/>
79      <exclude name="org/armedbear/lisp/j.lisp"/>
80      <include if="abcl.jsr-223.p" name="org/armedbear/lisp/scripting/lisp/*.lisp"/>
81    </patternset>
82   
83    <!-- Lisp files required at runtime -->
84    <patternset id="abcl.source.lisp.dist">
85      <include name="org/armedbear/lisp/boot.lisp"/>
86      <include if="abcl.jsr-223.p"
87               name="org/armedbear/lisp/scripting/lisp/*.lisp" />
88      <include if="abcl.compile.lisp.skip"
89               name="**/*.lisp" />
90    </patternset>
91
92    <patternset id="abcl.objects">
93      <!-- "system.lisp" is dynamically created by COMPILE-fSYSTEM -->
94      <include name="org/armedbear/lisp/system.lisp"/> 
95      <include name="org/armedbear/lisp/**/*.class"/>
96      <include name="org/armedbear/lisp/**/*.cls"/> 
97      <include name="org/armedbear/lisp/**/*.abcl"/>
98      <include name="org/armedbear/lisp/version"/>
99      <include if="abcl.jsr-223.p"
100               name="org/armedbear/lisp/scripting/*.class"/>
101      <include if="abcl.jsr-223.p"
102               name="org/armedbear/lisp/scripting/util/*.class"/>
103      <patternset refid="abcl.source.lisp.dist"/>
104      <include name="abcl.rdf"/>
105      <include name="abcl.asd"/>
106      <include name="README"/>
107      <include name="build.xml"/>
108      <include name="abcl.properties.in"/>
109      <include name="abcl.in"/>
110      <include name="abcl.bat.in"/>
111    </patternset>
112   
113    <path id="abcl.classpath.dist">
114      <pathelement location="${abcl.jar.path}"/>
115    </path>
116   
117    <path id="abcl.classpath.build">
118      <pathelement location="${build.classes.dir}"/>
119    </path>
120
121    <target name="abcl.compile" depends="abcl.clean.maybe,abcl.compile.lisp">
122      <echo>Compiled ABCL with Java version: ${java.version}</echo>
123    </target>
124
125    <target name="abcl.clean.maybe" unless="abcl.build.incremental">
126      <echo>Cleaning all intermediate compilation artifacts.</echo>
127      <echo>Setting 'abcl.build.incremental' enables incremental compilation.</echo>
128      <antcall target="abcl.clean"/>
129    </target>
130
131    <target name="abcl.init">
132      <tstamp>
133        <format property="build" pattern="EEE MMM dd yyyy HH:mm:ss zzz"/>
134      </tstamp>
135
136      <tstamp>
137        <format property="build.stamp" pattern="yyyymmdd-HHmm"/>
138      </tstamp>
139
140      <property name="abcl.test.log.file"
141                value="abcl-test-${build.stamp}.log"/>
142
143      <property name="java.path"
144                value="${java.home}/bin/java"/>
145
146      <!-- Deprecated. Two main types of build environents: 'unix' or 'windows'. -->
147      <condition property="unix"> 
148        <or>
149          <os family="unix"/>
150          <os family="mac"/>
151        </or>
152      </condition>
153      <condition property="windows"> 
154        <os family="windows"/>
155      </condition>
156
157      <!-- Deprecated. -->
158      <available file="${src.dir}org/armedbear/lisp/Interpreter.java" 
159                 property="abcl.lisp.p"/>
160
161      <echo>java.version: ${java.version}</echo>
162      <condition property="abcl.java.version.p">
163        <or>
164          <matches string="${java.version}" 
165                   pattern="1\.5"/>
166          <!-- Don't use 1.6.0_09 or earlier. -->
167          <matches string="${java.version}" 
168                   pattern="1\.6\.0_[1-9][0-9]"/>
169          <!-- 1.7.0_04 works much better. -->
170          <matches string="${java.version}" 
171                   pattern="1\.7\.0_(0[4-9])|([1-9][0-9])"/>
172          <matches string="${java.version}" 
173                   pattern="1\.8\.0"/>
174        </or> 
175      </condition>
176
177    </target>
178   
179    <target name="abcl.java.warning" 
180            depends="abcl.init"
181            unless="abcl.java.version.p">
182      <echo>WARNING: Use of Java version ${java.version} not recommended.</echo>
183    </target>
184       
185    <target name="abcl.jsr-223.notice"
186            depends="abcl.init"
187            unless="abcl.jsr-223.p">
188      <echo>
189        Notice: JSR-223 support won't be built since it is not
190                supported, neither natively by your JVM nor by
191                libraries in the CLASSPATH.
192      </echo>
193    </target>
194
195    <target name="abcl.compile.java" 
196            depends="abcl.init,abcl.java.warning,abcl.jsr-223.notice">
197      <mkdir dir="${build.dir}"/>
198      <mkdir dir="${build.classes.dir}"/>
199      <!-- abcl-1.5.0: Stock build for Java 1.6 (aka Java 2) container -->
200      <javac destdir="${build.classes.dir}"
201             debug="true"
202             target="1.6"
203             source="1.6"
204             includeantruntime="false"
205             failonerror="true">
206        <src path="${src.dir}"/>
207        <patternset refid="abcl.source.java"/>
208      </javac>
209    </target>
210
211    <!-- Additional artifacts to stage relative to Ant ${basedir} -->
212    <patternset id="abcl.stage">
213      <include name="README"/>
214      <include name="COPYING"/>
215      <include name="abcl.rdf"/>
216      <include name="abcl.asd"/> 
217      <include name="build.xml"/>
218      <include name="abcl.properties.in"/> <!--TODO: massage into abcl.properties at build-time -->
219      <include name="abcl.bat"/>
220      <include name="abcl.bat.in"/>
221    </patternset>
222
223    <target name="abcl.stage"
224      depends="abcl.copy.lisp">
225      <copy todir="${build.classes.dir}" preservelastmodified="yes"
226            verbose="true">
227  <fileset dir="${basedir}/">
228    <patternset refid="abcl.stage"/>
229  </fileset>
230      </copy>
231    </target>
232   
233    <target name="abcl.copy.lisp">
234      <copy todir="${build.classes.dir}" preservelastmodified="yes">
235        <fileset dir="${src.dir}">
236          <patternset refid="abcl.source.lisp.dist"/>
237        </fileset>
238      </copy>
239    </target>
240
241    <!-- Adjust the patternset for ABCL source to use the much faster
242         Ant 'uptodate' task to check if we need to compile the system
243         fasls.  Highly inter-dependent with the behavior specified in
244         'compile-system.lisp', i.e. files not listed in
245         there should NOT occur here. -->
246    <patternset id="abcl.source.lisp.fasls">
247      <patternset refid="abcl.source.lisp"/>
248      <exclude name="org/armedbear/lisp/scripting/**/*.lisp"/>
249      <exclude name="org/armedbear/lisp/boot.lisp"/>
250      <exclude name="org/armedbear/lisp/emacs.lisp"/>
251      <exclude name="org/armedbear/lisp/run-benchmarks.lisp"/>
252    </patternset>
253
254    <target name="abcl.fasls.uptodate">
255      <uptodate property="abcl.fasls.uptodate.p" value="true">
256        <srcfiles dir="${src.dir}">
257          <patternset refid="abcl.source.lisp.fasls"/>
258        </srcfiles>
259        <mapper type="glob" from="*.lisp" to="${build.classes.dir}/*.abcl"/>
260      </uptodate>
261    </target>
262
263    <path id="abcl.home.dir.path">
264        <path location="${src.dir}/org/armedbear/lisp/"/>
265    </path>         
266    <pathconvert property="abcl.home.dir" refid="abcl.home.dir.path"/>
267
268    <path id="abcl.lisp.output.path"
269          location="${build.classes.dir}/org/armedbear/lisp/"/>
270    <pathconvert dirsep="/" property="abcl.lisp.output" refid="abcl.lisp.output.path"/>
271
272    <property name="system.lisp.file" 
273              value="${build.classes.dir}/org/armedbear/lisp/system.lisp"/>
274
275    <target name="abcl.compile.lisp" 
276            depends="abcl.stage,abcl.compile.java,abcl.system.update.maybe,abcl.fasls.uptodate"
277            unless="abcl.fasls.uptodate.p">
278      <abcl.compile.lisp/>
279    </target>
280
281    <macrodef name="abcl.compile.lisp">
282      <element name="additional.jvmarg" optional="true"/>
283      <sequential>
284        <echo>
285Compiling Lisp system
286from ${abcl.home.dir}
287 to  ${abcl.lisp.output}</echo>
288 
289     <!-- Not good if ${abcl.home.dir} == ${abcl.lisp.output} -->
290     <delete>
291       <fileset dir="${abcl.home.dir}" includes="**/*.abcl **/*.cls **/*._"/>
292     </delete>
293     <java classpath="${build.classes.dir}" 
294            fork="true"
295            failonerror="true"
296            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))))"
297            classname="org.armedbear.lisp.Main">
298        <jvmarg value="-Dabcl.home=${abcl.home.dir}${file.separator}"/>
299        <jvmarg value="-Dabcl.autoload.verbose=Y"/>
300        <additional.jvmarg/>
301        <arg value="--noinit"/>
302        <arg value="--nosystem"/>
303        <arg value="--eval"/>
304        <arg value="(setf *load-verbose* t)"/>
305      </java>
306      <concat destfile="${system.lisp.file}" append="true">
307        <fileset file="${abcl.startup.file}"/>
308      </concat>
309        </sequential>
310    </macrodef>
311
312    <property name="abcl.compile.lisp.debug.jvmarg"
313              value="-agentlib:jdwp=transport=dt_socket,server=y,address=6789,suspend=y"/>
314    <target name="abcl.compile.lisp.debug" 
315            depends="abcl.stage,abcl.compile.java,abcl.system.update.maybe,abcl.fasls.uptodate"
316            unless="abcl.fasls.uptodate.p">
317      <echo>Debugging with jvmarg ${abcl.compile.lisp.debug.jvmarg}</echo>
318      <abcl.compile.lisp> 
319          <additional.jvmarg>
320            <jvmarg value="${abcl.compile.lisp.debug.jvmarg}"/>
321          </additional.jvmarg>
322      </abcl.compile.lisp>
323    </target>
324
325    <property name="abcl.build.path"
326              value="${build.classes.dir}/org/armedbear/lisp/build"/>
327    <target name="abcl.stamp" 
328            depends="abcl.compile,abcl.stamp.version,abcl.stamp.hostname">
329      <mkdir dir="${abcl.build.path}/.."/>
330      <loadfile property="abcl.version"
331                srcFile="${abcl.version.path}"/>
332      <echo message="${build}" file="${abcl.build.path}"/>   
333    </target>
334
335
336    <!-- Environment variables may be accessed as ${env.NAME} -->
337    <property environment="env"/>
338
339    <!-- Can we derive an SVN version from the current build tree? -->
340    <condition property="abcl.version.svn.p">
341      <and>
342        <available
343            file="${basedir}/.svn"
344            type="dir"/>
345        <or>
346            <available
347                file="svnversion.exe"
348                filepath="${env.Path}"/>
349            <available
350                file="svnversion.exe"
351                filepath="${env.PATH}"/>
352             <available
353                file="svnversion"
354                filepath="${env.Path}"/>
355            <available
356                file="svnversion"
357                filepath="${env.PATH}"/>
358        </or>
359      </and>
360    </condition>
361
362    <target name="abcl.version.src" depends="abcl.version.src.3"/>
363
364    <target name="abcl.version.src.0" if="windows">
365      <exec
366          executable="svnversion.exe"
367          outputproperty="abcl.version.svn.raw"
368          failifexecutionfails="false"
369          searchpath="true" />
370    </target>
371
372    <target name="abcl.version.src.1" depends="abcl.version.src.0">
373      <exec 
374          executable="svnversion"
375          outputproperty="abcl.version.svn.raw"
376          failifexecutionfails="false"
377          searchpath="true" />
378    </target>
379
380    <target name="abcl.version.src.2" 
381            depends="abcl.version.src.1"
382            if="abcl.version.svn.p">
383
384      <!-- Transform all occurances of ":" ==> "-" in the version string -->
385      <tempfile property="version-tmp.path"/>
386      <echo message="${abcl.version.svn.raw}"
387            file="${version-tmp.path}"/>
388      <replace file="${version-tmp.path}"
389               token=":" value="-"/>
390      <loadfile property="abcl.version.svn" srcFile="${version-tmp.path}"/>
391      <delete file="${version-tmp.path}"/>
392
393      <echo>abcl.version.svn: ${abcl.version.svn}</echo>
394      <property name="abcl.version.src"
395                value="svn-${abcl.version.svn}"/>
396    </target>
397
398    <target name="abcl.version.src.3"
399            depends="abcl.version.src.2"
400            unless="abcl.version.svn.p">
401      <property name="abcl.version.src"
402                value=""/>
403    </target>
404
405    <property name="abcl.home.dir"
406              value="${src.dir}/org/armedbear/lisp/"/>
407    <property name="abcl.version.path"
408              value="${build.classes.dir}/org/armedbear/lisp/version"/>
409
410    <target name="abcl.clean.version">
411      <delete file="${abcl.version.path}"/>
412    </target>
413
414    <target name="abcl.stamp.version.uptodate">
415      <uptodate property="abcl.stamp.version.uptodate.p" 
416                targetfile="${abcl.version.path}"
417                srcfile="${build.classes.dir}/org/armedbear/lisp/Version.class"/>
418    </target>
419
420    <target name="abcl.stamp.version" 
421            depends="abcl.version.src,abcl.stamp.version.1,abcl.stamp.version.2"
422            unless="abcl.stamp.version.uptodate.p">
423      <mkdir dir="${abcl.version.path}/.."/>
424      <echo>ABCL implementation version: ${abcl.implementation.version}</echo>
425      <echo file="${abcl.version.path}">${abcl.implementation.version}</echo>
426    </target>
427   
428    <target name="abcl.stamp.version.generate" 
429            depends="abcl.compile.java"
430            unless="abcl.stamp.version.uptodate.p">
431      <java fork="true"
432            classpath="${build.classes.dir}"
433            outputproperty="abcl.version"
434            classname="org.armedbear.lisp.Version"
435            logerror="yes"/> <!-- Don't catch stderr output -->
436    </target>
437
438    <target name="abcl.stamp.version.0" 
439            depends="abcl.stamp.version.uptodate,abcl.stamp.version.generate">
440    </target>
441
442    <target name="abcl.stamp.version.1"
443            depends="abcl.stamp.version.0"
444            unless="abcl.version.svn.p">
445      <property name="abcl.implementation.version"
446                value="${abcl.version}"/>
447    </target>
448
449    <target name="abcl.stamp.version.2" 
450            depends="abcl.stamp.version.0"
451            if="abcl.version.svn.p">
452      <property name="abcl.implementation.version"
453                value="${abcl.version}-${abcl.version.src}"/>
454    </target>
455
456    <target name="abcl.stamp.hostname" if="unix">
457      <exec executable="hostname" outputproperty="abcl.hostname"/>
458      <echo>abcl.hostname: ${abcl.hostname}</echo>
459    </target>
460
461    <target name="abcl.system.uptodate">
462      <condition property="abcl.system.needs-update.p">
463        <and>
464          <available file="${system.lisp.file}"/>
465          <available file="${abcl.startup.file}"/>
466          <uptodate
467                srcfile="${system.lisp.file}"
468                targetfile="${abcl.startup.file}"/>
469        </and>
470      </condition>
471    </target>
472   
473    <target name="abcl.system.update.maybe" depends="abcl.system.uptodate" 
474            if="abcl.system.needs-update.p">
475      <touch file="${src.dir}/org/armedbear/lisp/compile-system.lisp"/>
476    </target>
477
478    <target name="abcl.jar.uptodate" depends="abcl.compile,abcl.stamp">
479      <uptodate property="abcl.jar.uptodate.p" targetfile="${abcl.jar.path}">
480        <srcfiles dir="${build.classes.dir}">
481          <patternset refid="abcl.objects"/>
482        </srcfiles>
483      </uptodate>
484    </target>
485
486    <target name="abcl.jar" depends="abcl.jar.uptodate,abcl-contrib.jar"
487            unless="abcl.jar.uptodate.p">
488      <mkdir dir="${dist.dir}"/>
489      <jar destfile="${abcl.jar.path}"
490           compress="true"
491           update="true"
492           basedir="${build.classes.dir}">
493        <patternset refid="abcl.objects"/>
494        <manifest>
495          <attribute name="Main-Class" value="org.armedbear.lisp.Main"/>
496          <section name="org/armedbear/lisp">
497            <attribute name="Implementation-Title" 
498                       value="ABCL"/>
499            <attribute name="Implementation-Version" 
500                       value="${abcl.implementation.version}"/>
501            <attribute name="Implementation-Build" 
502                       value="${build}"/>
503          </section>
504        </manifest>
505        <metainf dir="${src.dir}/META-INF"> 
506          <exclude name="services/javax.script.ScriptEngineFactory"
507                   unless="abcl.jsr-223.p"/>
508        </metainf>
509      </jar>
510    </target>
511
512    <target name="abcl-aio.jar" depends="abcl.compile,abcl.version">
513      <mkdir dir="${dist.dir}"/>
514      <jar destfile="${abcl-aio.jar.path}"
515           compress="true"
516           update="true"
517           basedir="${build.classes.dir}">
518  <fileset dir="${src.dir}">
519          <patternset refid="abcl.objects"/>
520    <patternset refid="abcl.source.java"/>
521    <patternset refid="abcl.source.lisp"/>
522  </fileset>
523  <fileset dir="${basedir}">
524    <patternset refid="abcl.contrib.source"/>
525  </fileset>
526        <!-- According to <http://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html>
527             any attributes not specified are ignored, so we are free to make up new attributes if necessary.  For now we just overload Implementation-Title and Implementation-Version.
528            -->
529        <manifest>
530          <attribute name="Main-Class" value="org.armedbear.lisp.Main"/>
531          <section name="org/armedbear/lisp">
532            <attribute name="Implementation-Title" 
533                       value="ABCL"/>
534            <attribute name="Implementation-Version" 
535                       value="${abcl.implementation.version}"/>
536            <attribute name="Implementation-Build" 
537                       value="${build}"/>
538          </section>
539          <section name="contrib">
540            <attribute name="Implementation-Title" 
541                       value="org.abcl-contrib"/>
542            <!-- FIXME: declare separate abcl-contrib version? -->
543            <attribute name="Implementation-Version" 
544                       value="${abcl.implementation.version}"/>
545          </section>
546          <section name="tools">
547            <attribute name="Implementation-Title" 
548                       value="org.abcl-tools"/>
549          </section>
550          <section name="src">
551            <attribute name="Implementation-Title" 
552                       value="org.abcl-source"/>
553            <attribute name="Implementation-Version" 
554                       value="${abcl.implementation.version}"/>
555          </section>
556        </manifest>
557        <metainf dir="${src.dir}/META-INF"> 
558          <exclude name="services/javax.script.ScriptEngineFactory"
559                   unless="abcl.jsr-223.p"/>
560        </metainf>
561      </jar>
562    </target>
563
564   
565    <target name="abcl.wrapper" 
566            depends="abcl.jar,abcl.contrib,abcl.wrapper.unix,abcl.wrapper.windows">
567      <description>
568        Creates in-place executable shell wrapper in
569        '${abcl.wrapper.file}'
570      </description>
571      <!-- Set from commandline or in 'build.properties' -->
572      <property name="additional.jars" value=""/>
573      <path id="abcl.runtime.classpath">
574        <pathelement location="${abcl.runtime.jar.path}"/>
575        <pathelement path="${additional.jars}"/>
576      </path>
577      <!-- set via '-Djava.options=JAVA_OPTIONS' or in 'build.properties -->
578      <property name="java.options" value=""/>
579
580      <copy file="${abcl.wrapper.in.file}" toFile="${abcl.wrapper.file}" overwrite="yes">
581        <filterset>
582          <filter token="JAVA" 
583                  value="${java.path}"/>
584          <filter token="ABCL_JAVA_OPTIONS" 
585                  value="${java.options}"/>
586          <filter token="ABCL_CLASSPATH"
587                  value="${toString:abcl.runtime.classpath}"/>
588        </filterset>
589      </copy>
590      <chmod file="${abcl.wrapper.file}" perm="a+x"/>
591
592      <echo>Created executable ABCL wrapper in '${abcl.wrapper.file}'</echo>
593      <echo>N.B. This wrapper requires '${abcl.jar.path}' not be moved.</echo>
594    </target>
595
596    <target name="abcl.wrapper.unix" if="unix">
597      <property name="abcl.wrapper.file" value="abcl"/>
598      <property name="abcl.wrapper.in.file" value="abcl.in"/>
599    </target>
600
601    <target name="abcl.wrapper.windows" if="windows">
602      <property name="abcl.wrapper.file" value="abcl.bat"/>
603      <property name="abcl.wrapper.in.file" value="abcl.bat.in"/>
604    </target>
605
606    <patternset id="abcl.contrib.source">
607          <include name="**/*.asd"/>
608          <include name="**/*.lisp"/>
609          <include name="**/README.markdown"/>
610    </patternset>
611
612    <patternset id="abcl.contrib.docs">
613          <include name="**/README.markdown"/>
614    </patternset>
615
616    <property name="abcl-contrib.jar"
617              value="${dist.dir}/abcl-contrib.jar"/>
618    <condition property="abcl.contrib.uptodate.p">
619      <uptodate targetfile="${abcl-contrib.jar}">
620        <srcfiles dir="contrib">
621          <patternset refid="abcl.contrib.source"/>
622        </srcfiles>
623      </uptodate>
624    </condition>
625
626    <target name="abcl-contrib.jar" depends="abcl.contrib"/>
627    <target name="abcl.contrib" unless="abcl.contrib.uptodate.p">
628      <jar destfile="${abcl-contrib.jar}"
629           compress="true"
630           basedir="contrib">
631        <patternset refid="abcl.contrib.source"/>
632      </jar>
633      <echo>
634Packaged contribs in ${abcl-contrib.jar}. To use contribs, ensure that
635this file is in the same directory as 'abcl.jar', and then
636
637  CL-USER> (require 'abcl-contrib)
638
639will place all the contribs in the ASDF registry.
640
641To load a contrib, something like
642
643  CL-USER> (require 'jss)
644
645will compile (if necessary) and load JSS.
646</echo>
647    </target>
648
649    <target name="abcl.contrib.javadoc.jar">
650      <mkdir dir="${dist.dir}"/>
651      <jar destfile="${dist.dir}/abcl-contrib-javadoc.jar" basedir="contrib">
652        <patternset refid="abcl.contrib.docs" />
653      </jar>
654    </target>
655
656    <target name="abcl.contrib.source.jar">
657      <mkdir dir="${dist.dir}"/>
658      <jar destfile="${dist.dir}/abcl-contrib-sources.jar" basedir="contrib">
659        <patternset refid="abcl.contrib.source" />
660      </jar>
661    </target>
662
663    <target name="abcl.debug.jpda" depends="abcl.jar">
664      <description>Invoke ABCL with JPDA listener on port 6789</description>
665      <java fork="true"
666            classpathref="abcl.classpath.dist"
667            classname="org.armedbear.lisp.Main">
668        <jvmarg 
669            value="-agentlib:jdwp=transport=dt_socket,address=6789,server=y"/>
670      </java>
671      <echo>JPDA listening on localhost:6789</echo>
672    </target>
673
674    <target name="abcl.build.debug.jpda" depends="abcl.compile.java">
675      <description>Invoke ABCL with JPDA listener on port 6789</description>
676      <java fork="true"
677            classpathref="abcl.classpath.build"
678            classname="org.armedbear.lisp.Main">
679        <jvmarg
680            value="-agentlib:jdwp=transport=dt_socket,address=6789,server=y"/>
681        <jvmarg value="-Dabcl.home=${abcl.home.dir}${file.separator}"/>
682      </java>
683      <echo>JPDA listening on localhost:6789</echo>
684    </target>
685
686    <target name="abcl.run" depends="abcl.jar">
687      <java fork="true"
688            classpathref="abcl.classpath.dist"
689            classname="org.armedbear.lisp.Main">
690      </java>
691    </target>
692
693    <target name="abcl.clean">
694      <delete dir="${build.dir}"/>
695      <delete file="${abcl.jar.path}"/>
696      <delete file="abcl"/>
697      <delete file="abcl.bat"/>
698    </target>
699
700    <property name="slime.fasls" 
701              value="${user.home}/.slime/"/>
702    <property name="quicklisp.common-lisp.fasls"
703              value="${user.home}/.cache/common-lisp/"/>
704    <target name="abcl.clean.application.fasls">
705      <echo>Deleting ABCL SLIME fasls under ${slime.fasls}</echo>
706      <delete>
707        <fileset dir="${slime.fasls}" includes="**/*.abcl"/>
708      </delete>
709      <echo>Deleting ABCL Quicklisp fasls under ${quicklisp.common-lisp.fasls}</echo>
710      <delete>
711        <fileset dir="${quicklisp.common-lisp.fasls}" includes="**/*.abcl"/>
712      </delete>
713    </target>
714
715    <target name="abcl.dist" depends="abcl.jar">
716      <copy file="${abcl.jar.path}"
717            toFile="${dist.dir}/abcl-${abcl.version}.jar"/>
718    </target>
719
720    <target name="abcl.distclean" depends="abcl.clean">
721      <delete dir="${dist.dir}"/>
722      <delete file="abcl"/>
723      <delete file="abcl.bat"/>
724    </target>
725
726    <condition property="etags.executable"
727               value="etags"
728               else="c:/cygwin64/bin/ctags.exe">
729      <not>
730        <os family="windows"/>
731      </not>
732    </condition>
733     
734    <target name="TAGS">
735      <delete file="TAGS"/>
736      <apply executable="${etags.executable}" parallel="true" verbose="true" maxparallel="300">
737        <arg value="--append"/>
738        <arg value="--regex=|[ \t]+//[ \t]+###[ \t]+\([^ \t]+\)|\1|"/>
739        <arg value='--regex=|[ \t]*@DocString([ \n\r\t]*name=\"\([^\"]*\)|\1|m'/>
740        <fileset dir="${src.dir}">
741          <patternset refid="abcl.source.java"/>
742          <patternset refid="abcl.source.lisp"/>
743        </fileset>
744      </apply>
745    </target>
746
747    <patternset id="abcl.dist.misc"
748                description="Additional includes in the source distributions relative to basedir">
749      <include name="abcl.rdf"/>
750      <include name="build.xml"/>
751      <include name="abcl.properties.in"/>
752      <include name="COPYING"/>
753      <include name="README"/>
754      <include name="CHANGES"/>
755      <include name="abcl.in"/>
756      <include name="abcl.bat.in"/>
757
758      <include name="abcl.asd"/>
759     
760      <include name="examples/**"/>
761
762      <include name="contrib/**"/>
763     
764      <include name="test/**"/>
765
766      <include name="build-from-lisp.bash"/>
767     
768      <!-- The remainder of these files are used by the Lisp hosted
769           build in 'build-abcl.lisp' but not used by Ant, so include
770           them in the source distribution. -->
771      <include name="make-jar.in"/>
772      <include name="make-jar.bat.in"/>
773
774      <include name="build-abcl.lisp"/>
775      <include name="customizations.lisp.in"/>
776
777    </patternset>
778
779    <!-- TODO merge with artifacts from 'abcl.stage' -->
780    <patternset 
781        id="abcl.source.misc"
782        description="Additional includes in the source distribution relative to source root">
783      <include name="org/armedbear/lisp/LICENSE"/>
784      <include name="manifest-abcl"/>
785      <include name="META-INF/services/javax.script.ScriptEngineFactory"/>
786    </patternset>
787
788    <target name="abcl.source.prepare" depends="abcl.stamp.version">
789      <property name="abcl.build.src.dir"
790                value="${build.dir}/abcl-src-${abcl.version}"/>
791      <mkdir dir="${abcl.build.src.dir}/src"/>
792      <copy todir="${abcl.build.src.dir}/src"
793            preservelastmodified="true">
794        <fileset dir="${src.dir}"
795                 id="abcl.source.src">
796            <patternset refid="abcl.source.java"/>
797            <patternset refid="abcl.source.lisp"/>
798            <patternset refid="abcl.source.misc"/>
799        </fileset>
800      </copy>
801      <copy todir="${abcl.build.src.dir}"
802            preservelastmodified="true">
803        <fileset dir="${basedir}">
804            <patternset refid="abcl.dist.misc"/>
805        </fileset>
806      </copy>
807    </target>
808
809    <!--  Files in source distribution that always get LF EOL (aka
810         'unix') -->   
811    <patternset id="abcl.dist.lf">
812      <include name="abcl.in"/>
813    </patternset>
814
815    <!--  Files in source distribution that always get CRLF EOL (aka
816         'dos') -->   
817    <patternset id="abcl.dist.crlf">
818      <include name="abcl.bat.in"/>
819    </patternset>
820
821    <target name="abcl.source.unix" depends="abcl.source.prepare">
822      <fixcrlf srcdir="${abcl.build.src.dir}"
823               preservelastmodified="true"
824               eol="lf">
825      </fixcrlf>
826
827      <fixcrlf srcdir="${abcl.build.src.dir}"
828               preservelastmodified="true"
829               eol="crlf">
830          <patternset refid="abcl.dist.crlf"/>
831      </fixcrlf>
832
833      <fixcrlf srcdir="${abcl.build.src.dir}"
834               preservelastmodified="true"
835               eol="lf">
836          <patternset refid="abcl.dist.lf"/>
837      </fixcrlf>
838    </target>
839
840    <target name="abcl.source.tar" depends="abcl.source.unix">
841      <mkdir dir="${dist.dir}"/>
842      <tar destfile="${dist.dir}/abcl-src-${abcl.version}.tar.gz"
843           compression="gzip">
844        <tarfileset dir="${build.dir}">
845          <include name="abcl-src-${abcl.version}/**"/>
846        </tarfileset>
847      </tar>
848    </target>
849
850    <target name="abcl.source.windows" depends="abcl.source.prepare">
851      <fixcrlf srcdir="${abcl.build.src.dir}"
852               preservelastmodified="true"
853               eol="crlf">
854      </fixcrlf>
855
856      <fixcrlf srcdir="${abcl.build.src.dir}"
857               preservelastmodified="true"
858               eol="crlf">
859          <patternset refid="abcl.dist.crlf"/>
860      </fixcrlf>
861
862      <fixcrlf srcdir="${abcl.build.src.dir}"
863               preservelastmodified="true"
864               eol="lf">
865          <patternset refid="abcl.dist.lf"/>
866      </fixcrlf>
867    </target>
868
869    <target name="abcl.source.zip" depends="abcl.stamp,abcl.source.windows">
870      <mkdir dir="${dist.dir}"/>
871      <zip destfile="${dist.dir}/abcl-src-${abcl.version}.zip"
872           compress="true">
873        <zipfileset dir="${abcl.build.src.dir}" prefix="abcl-src-${abcl.version}"/>
874      </zip>
875    </target>
876
877    <target name="abcl.source.jar" depends="abcl.stamp,abcl.source.unix">
878      <mkdir dir="${dist.dir}"/>
879      <jar destfile="${dist.dir}/abcl-${abcl.version}-sources.jar">
880        <metainf dir="${abcl.build.src.dir}">
881          <include name="COPYING"/>
882        </metainf>
883        <fileset dir="${abcl.build.src.dir}/src">
884          <include name="**/*.java"/>
885          <include name="**/*.lisp"/>
886        </fileset>
887      </jar>
888    </target>
889
890    <property name="abcl.javadoc.dir" value="${build.dir}/javadoc"/>
891
892    <target name="abcl.javadoc" depends="abcl.stamp">
893      <mkdir dir="${abcl.javadoc.dir}"/>
894      <javadoc destdir="${abcl.javadoc.dir}"
895               sourcepath="${src.dir}"/>
896    </target>
897   
898    <target name="abcl.javadoc.jar" depends="abcl.stamp.version,abcl.javadoc">
899      <mkdir dir="${dist.dir}"/>
900      <jar destfile="${dist.dir}/abcl-${abcl.version}-javadoc.jar">
901        <fileset dir="${abcl.javadoc.dir}"/>
902      </jar>
903    </target>
904
905    <target name="abcl.binary.prepare" depends="abcl.jar,abcl.contrib,abcl.documentation,abcl.stamp.version">
906      <property name="abcl.build.binary.dir"
907                value="${build.dir}/abcl-bin-${abcl.version}"/>
908      <mkdir dir="${abcl.build.binary.dir}"/>
909      <copy todir="${abcl.build.binary.dir}"
910            preservelastmodified="true">
911        <fileset dir="${basedir}/dist">
912          <patternset>
913            <include name="abcl.jar"/>
914            <include name="abcl-contrib.jar"/>
915            <include name="*.pdf"/>
916          </patternset>
917        </fileset>
918        <fileset dir="${basedir}">
919          <patternset>
920            <include name="README"/>
921            <include name="CHANGES"/>
922          </patternset>
923        </fileset>
924      </copy>
925    </target>
926
927    <target name="abcl.binary.tar" depends="abcl.binary.prepare">
928      <tar destfile="${dist.dir}/abcl-bin-${abcl.version}.tar.gz"
929           compression="gzip">
930        <tarfileset dir="${build.dir}">
931          <include name="abcl-bin-${abcl.version}/**"/>
932          </tarfileset>
933      </tar>
934    </target>
935
936    <target name="abcl.binary.zip" depends="abcl.binary.prepare">
937      <zip destfile="${dist.dir}/abcl-bin-${abcl.version}.zip"
938           compress="true">
939        <zipfileset dir="${abcl.build.binary.dir}" prefix="abcl-bin-${abcl.version}"/>
940      </zip>
941    </target>
942
943    <target name="help.test">
944      <echo>
945The following Ant targets run various test suites:
946 
947  abcl.test
948    --  Run all available tests.
949  abcl.test.java
950    --  Run the ABCL junit Java tests under ${basedir}/test/src/
951  abcl.test.lisp
952    --  Run the 'test.ansi.compiled', 'test.abcl', 'test.cl-bench' targets
953  test.ansi.compiled
954    --  Run the compiled version of the ANSI test suite
955  test.abcl
956    --  Run the Lisp RT tests collected in ${basedir}/test/lisp/abcl/
957  test.cl-bench
958    --  Run the cl-bench test suite.
959
960The ANSI tests require that the [ansi-tests][1] be manually installed in
961${basedir}/../ansi-tests.
962
963[1]: git+https://gitlab.common-lisp.net/ansi-test/ansi-test.git
964
965The CL-BENCH tests require that [cl-bench][2] be manually installed in
966${basedir}/../cl-bench
967
968[2]: http://www.chez.com/emarsden/downloads/cl-bench.tar.gz
969      </echo>
970    </target>
971
972    <property name="abcl.test.classes.dir"
973              value="${build.dir}/classes-test"/>
974
975    <property name="abcl.test.src.dir"
976              value="${basedir}/test/src"/>
977
978    <patternset id="abcl.test.source.java">
979      <include name="org/armedbear/lisp/**/*.java"/>
980    </patternset>
981
982    <property name="junit.path"
983              value="${abcl.ext.dir}/junit-4.8.1.jar"/>
984    <property name="maven.dist.name"
985              value="apache-maven-3.3.9-bin.zip"/>
986    <property name="maven.dist.uri"
987              value="http://www-eu.apache.org/dist/maven/maven-3/3.3.9/binaries/${maven.dist.name}"/>
988    <property name="maven.local.path"
989              value="${abcl.ext.dir}/${maven.dist.name}"/>
990
991    <path id="abcl.test.compile.classpath">
992      <pathelement location="${junit.path}"/>
993      <pathelement location="${build.classes.dir}"/>
994    </path>
995
996    <target name="abcl.test.pre-compile" depends="abcl.ext"/>
997
998    <target name="abcl.ext.p">
999      <!--XXX generalize over enumeration of all contributions to
1000          abcl.ext if we get more of them.  -->
1001      <condition property="abcl.ext.p">
1002        <and>
1003          <available file="${junit.path}"/>
1004          <available file="${maven.local.path}"/>
1005        </and>
1006      </condition>
1007    </target>
1008
1009    <target name="abcl.ext" depends="abcl.ext.p" unless="abcl.ext.p">
1010      <mkdir dir="${abcl.ext.dir}"/>
1011      <get 
1012          src="http://cloud.github.com/downloads/KentBeck/junit/junit-4.8.1.jar"
1013          usetimestamp="true"
1014          dest="${junit.path}"/>
1015      <get 
1016          src="${maven.dist.uri}"
1017          usetimestamp="true"
1018          dest="${maven.local.path}"/>
1019    </target>
1020
1021    <target name="abcl.ext.maven" depends="abcl.ext">
1022      <echo>Installing Maven for ABCL from ${maven.dist.uri}.</echo>
1023      <unzip src="${maven.local.path}"
1024             dest="${abcl.ext.dir}">
1025      </unzip>
1026    </target>
1027       
1028    <target name="abcl.test.compile" 
1029            depends="abcl.test.pre-compile">
1030      <mkdir dir="${abcl.test.classes.dir}"/>
1031      <javac destdir="${abcl.test.classes.dir}"
1032             classpathref="abcl.test.compile.classpath"
1033             debug="true"
1034             target="1.5">
1035        <src path="${abcl.test.src.dir}"/>
1036        <patternset refid="abcl.test.source.java"/>
1037      </javac>
1038    </target>
1039
1040    <path id="abcl.test.run.classpath">
1041      <path refid="abcl.test.compile.classpath"/>
1042      <pathelement location="${abcl.test.classes.dir}"/>
1043    </path>
1044
1045    <target name="abcl.test" 
1046            depends="abcl.test.java,abcl.test.lisp"/>
1047       
1048    <target name="abcl.test.java" depends="abcl.test.compile">
1049      <java fork="true"
1050            classpathref="abcl.test.run.classpath"
1051            classname="org.junit.runner.JUnitCore">
1052        <arg value="org.armedbear.lisp.PathnameTest"/>
1053        <arg value="org.armedbear.lisp.StreamTest"/>
1054        <arg value="org.armedbear.lisp.SeekableStringWriterTest"/>
1055        <arg value="org.armedbear.lisp.UtilitiesTest"/>
1056    <!-- currently hangs(!) the running process
1057        <arg value="org.armedbear.lisp.util.HttpHeadTest"/>
1058    -->
1059      </java>
1060    </target>
1061
1062    <target name="abcl.test.lisp" 
1063            depends="test.ansi.compiled,test.abcl,test.cl-bench"/>
1064
1065    <target name="test.ansi.interpreted" depends="abcl.jar">
1066      <echo>Recording test output in ${abcl.test.log.file}.</echo>
1067      <record name="${abcl.test.log.file}" emacsmode="true" action="start" append="yes"/>
1068      <java fork="true" dir="${basedir}"
1069            classpathref="abcl.classpath.dist"
1070            classname="org.armedbear.lisp.Main">
1071        <arg value="--noinit"/> 
1072        <arg value="--eval"/><arg value="(require (quote asdf))"/>
1073        <arg value="--eval"/>
1074          <arg value="(asdf:initialize-source-registry `(:source-registry (:directory ,*default-pathname-defaults*) :inherit-configuration)))"/>
1075        <arg value="--eval"/><arg value="(asdf:test-system :abcl/test/ansi/interpreted)"/>
1076        <arg value="--eval"/><arg value="(ext:exit)"/>
1077      </java>
1078      <record name="${abcl.test.log.file}" emacsmode="true" action="stop"/>
1079      <echo>Finished recording test output in ${abcl.test.log.file}.</echo>
1080    </target>
1081
1082    <target name="test.ansi.compiled" depends="abcl.jar">
1083      <echo>Recording test output in ${abcl.test.log.file}.</echo>
1084      <record name="${abcl.test.log.file}" emacsmode="true" action="start" append="yes"/>
1085      <java fork="true" dir="${basedir}"
1086            classpathref="abcl.classpath.dist"
1087            classname="org.armedbear.lisp.Main">
1088        <!-- Run in 64bit mode-->
1089        <jvmarg value="-d64"/> 
1090
1091        <!-- Enable JVM assertions -->
1092        <jvmarg value="-ea"/> 
1093       
1094        <!-- (Possibly) unload classes when reference count reaches zero -->
1095        <jvmarg value="-XX:+CMSClassUnloadingEnabled"/> 
1096
1097        <!-- Increase the size of the space used to store JVM class metadata. -->
1098        <jvmarg value="-XX:MaxPermSize=768m"/> 
1099
1100        <arg value="--noinit"/> 
1101        <arg value="--eval"/><arg value="(require (quote asdf))"/>
1102        <arg value="--eval"/>
1103          <arg value="(asdf:initialize-source-registry `(:source-registry (:directory ,*default-pathname-defaults*) :inherit-configuration)))"/>
1104        <arg value="--eval"/><arg value="(asdf:test-system :abcl/test/ansi/compiled)"/>
1105        <arg value="--eval"/><arg value="(ext:exit)"/>
1106      </java>
1107      <record name="${abcl.test.log.file}" emacsmode="true" action="stop"/>
1108      <echo>Finished recording test output in ${abcl.test.log.file}.</echo>
1109    </target>
1110
1111    <target name="test.abcl" depends="abcl.jar">
1112      <echo>Recording test output in ${abcl.test.log.file}.</echo>
1113      <record name="${abcl.test.log.file}" emacsmode="true" action="start" append="yes"/>
1114      <java fork="true" dir="${basedir}"
1115            classpathref="abcl.classpath.dist"
1116            classname="org.armedbear.lisp.Main">
1117        <arg value="--noinit"/> 
1118        <arg value="--eval"/><arg value="(require (quote asdf))"/>
1119        <arg value="--eval"/>
1120          <arg value="(asdf:initialize-source-registry `(:source-registry (:directory ,*default-pathname-defaults*) :inherit-configuration)))"/>
1121        <arg value="--eval"/><arg value="(asdf:test-system :abcl)"/>
1122        <arg value="--eval"/><arg value="(ext:exit)"/>
1123      </java>
1124      <record name="${abcl.test.log.file}" emacsmode="true" action="stop"/>
1125      <echo>Finished recording test output in ${abcl.test.log.file}.</echo>
1126    </target>
1127
1128    <target name="test.cl-bench" depends="abcl.jar">
1129      <echo>Recording test output in ${abcl.test.log.file}.</echo>
1130      <record name="${abcl.test.log.file}" emacsmode="true" action="start" append="yes"/>
1131      <java fork="true" dir="${basedir}"
1132            classpathref="abcl.classpath.dist"
1133            classname="org.armedbear.lisp.Main">
1134        <arg value="--noinit"/> 
1135        <arg value="--eval"/><arg value="(require (quote asdf))"/>
1136        <arg value="--eval"/>
1137          <arg value="(asdf:initialize-source-registry `(:source-registry (:directory ,*default-pathname-defaults*) :inherit-configuration))"/>
1138        <arg value="--eval"/><arg value="(asdf:test-system :abcl/test/cl-bench)"/>
1139        <arg value="--eval"/><arg value="(ext:exit)"/>
1140      </java>
1141      <record name="${abcl.test.log.file}" emacsmode="true" action="stop"/>
1142      <echo>Finished recording test output in ${abcl.test.log.file}.</echo>
1143    </target>
1144
1145
1146<target name="abcl.diagnostic" 
1147        description="Emit diagnostics describing available hosting JVM properties."
1148        depends="abcl.build.diagnostic"/>
1149<!--
1150
1151urn:org.abcl.build.ant.targets.diagnostic
1152
1153"Possible JVM values from"
1154
1155http://docs.oracle.com/javase/6/docs/api/java/lang/System.html#getProperties
1156
1157.
1158
1159
1160java.version  Java Runtime Environment version
1161java.vendor   Java Runtime Environment vendor
1162java.vendor.url   Java vendor URL
1163java.home   Java installation directory
1164java.vm.specification.version   Java Virtual Machine specification version
1165java.vm.specification.vendor  Java Virtual Machine specification vendor
1166java.vm.specification.name  Java Virtual Machine specification name
1167java.vm.version   Java Virtual Machine implementation version
1168java.vm.vendor  Java Virtual Machine implementation vendor
1169java.vm.name  Java Virtual Machine implementation name
1170java.specification.version  Java Runtime Environment specification version
1171java.specification.vendor   Java Runtime Environment specification vendor
1172java.specification.name   Java Runtime Environment specification name
1173java.class.version  Java class format version number
1174java.class.path   Java class path
1175java.library.path   List of paths to search when loading libraries
1176java.io.tmpdir  Default temp file path
1177java.compiler   Name of JIT compiler to use
1178java.ext.dirs   Path of extension directory or directories
1179os.name   Operating system name
1180os.arch   Operating system architecture
1181os.version  Operating system version
1182file.separator  File separator ("/" on UNIX)
1183path.separator  Path separator (":" on UNIX)
1184line.separator  Line separator ("\n" on UNIX)
1185user.name   User's account name
1186user.home   User's home directory
1187user.dir
1188
1189-->
1190
1191<target name="abcl.build.diagnostic" description="Emit diagnostics describing available hosting JVM properties.">
1192  <echo>:java.version    ${java.version}</echo>
1193  <echo>:java.vendor     ${java.vendor}</echo>
1194  <echo>:java.vm.vendor  ${java.vm.vendor}</echo>
1195  <echo>:java.vm.name    ${java.vm.name}</echo>
1196
1197  <echo>:os.name    ${os.name}</echo>
1198  <echo>:os.arch    ${os.arch}</echo>
1199  <echo>:os.version ${os.version}</echo>
1200 
1201  <echo>:java.specification.version       ${java.specification.version}</echo>
1202  <echo>:java.vm.specification.version    ${java.vm.specification.version}</echo>
1203</target>
1204
1205    <target name="abcl.release" 
1206            depends="abcl.clean,abcl.binary.tar,abcl.source.tar,abcl.binary.zip,abcl.source.zip">
1207      <copy file="${abcl.jar.path}"
1208            tofile="${dist.dir}/abcl-${abcl.version}.jar"/>
1209      <copy file="${abcl-contrib.jar}"
1210            tofile="${dist.dir}/abcl-contrib-${abcl.version}.jar"/>
1211    </target>
1212
1213    <target name="abcl.documentation"
1214            depends="abcl.documentation.manual,abcl.documentation.asdf"/>
1215    <target name="abcl.documentation.manual"
1216            depends="abcl.stamp.version">
1217      <echo>This target requires 'make' and a LaTeX installation to be on the PATH.</echo>
1218      <exec
1219          executable="make"
1220          dir="${basedir}/doc/manual"/>
1221      <copy file="doc/manual/abcl.pdf"
1222            tofile="${dist.dir}/abcl-${abcl.version}.pdf"/>
1223    </target>
1224    <target name="abcl.documentation.asdf">
1225      <echo>This target requires 'texi2pdf' to be on the PATH.</echo>
1226      <exec
1227          executable="texi2pdf"
1228          dir="${basedir}/doc/asdf">
1229        <arg value="asdf.texinfo"/>
1230      </exec>
1231      <copy file="doc/asdf/asdf.pdf"
1232            tofile="${dist.dir}/asdf.pdf"/>
1233    </target>
1234
1235    <import file="netbeans-build.xml" optional="true"/> 
1236<!--    <import file="j-build.xml" optional="true"/>  -->
1237    <import file="not.org-build.xml" optional="true"/> 
1238   
1239    <import file="build-snapshot.xml" optional="true"/>
1240
1241    <import file="build-maven.xml" optional="true"/> </project>
Note: See TracBrowser for help on using the repository browser.