source: trunk/abcl/build.xml @ 15082

Last change on this file since 15082 was 15082, checked in by Mark Evenson, 6 years ago

Fix the Ant build; redid source distribution with this change

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