Implementation of Lisp build without intermediate files.

It is still the case that if anything loaded by 'boot.lisp' causes an
error, the 'abcl.compile.lisp' task does not properly signal an error
to the Ant build process.  But this is no different from the previous
behavior, so we adopt this as the conceptually simpler approach to
writing Ant tasks (and the one that doesn't litter the filesystem with
intermediate build files when the compilation process is being debugged).
parent eadef699
......@@ -220,43 +220,25 @@ For help on the automatic tests available, use the Ant target 'help.test'.
<path id="abcl.lisp.output.path"
location="${build.classes.dir}/org/armedbear/lisp/"/>
<pathconvert dirsep="/" property="abcl.lisp.output" refid="abcl.lisp.output.path"/>
<target name="abcl.compile.lisp"
depends="abcl.copy.lisp,abcl.compile.java,abcl.fasls.uptodate"
unless="abcl.fasls.uptodate.p">
<!-- The following shenanigans are necessary to get something
that ABCL under Windows can parse as a pathname with the
drive syntax not being interpreted as a Lisp package
namespace, and with backslash characters not starting
escape sequences. -->
<tempfile property="abcl.compile.lisp.tmp" suffix=".lisp"/>
<echo file="${abcl.compile.lisp.tmp}">
(compile-system :zip nil :quit t
:output-path "${toString:abcl.lisp.output.path}${file.separator}")
</echo>
<tempfile property="abcl.compile.lisp.tmp.2" suffix=".lisp"/>
<copy file="${abcl.compile.lisp.tmp}"
tofile="${abcl.compile.lisp.tmp.2}">
<filterchain>
<replacestring from="\" to="/"/>
</filterchain>
</copy>
<java classpath="${build.classes.dir}"
<echo>
Compiling Lisp system
from ${abcl.home.dir}
to ${abcl.lisp.output}</echo>
<java classpath="${build.classes.dir}"
fork="true"
failonerror="true"
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))))"
classname="org.armedbear.lisp.Main">
<jvmarg value="-Dabcl.home=${abcl.home.dir}${file.separator}"/>
<arg value="--noinit"/>
<arg value="--load"/>
<arg value="${abcl.compile.lisp.tmp.2}"/>
<arg value="--eval"/>
<arg value="(setf *load-verbose* t)"/>
</java>
<delete file="${abcl.compile.lisp.tmp}"/>
<delete file="${abcl.compile.lisp.tmp.2}"/>
</target>
<property name="abcl.build.path"
......@@ -722,7 +704,7 @@ ${basedir}/../cl-bench
<record name="${abcl.test.log.file}" emacsmode="true" action="stop"/>
<echo>Finished recording test output in ${abcl.test.log.file}.</echo>
</target>
<target name="abcl.release"
depends="abcl.binary.tar,abcl.source.tar,abcl.binary.zip,abcl.source.zip">
<copy file="${abcl.jar.path}"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment