summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2008-11-14 19:34:57 +0000
committerRich Hickey <richhickey@gmail.com>2008-11-14 19:34:57 +0000
commitfc96a62035ea7ceeeeaf7efd28b5ea54d0025a5c (patch)
tree4228bae5584c6116fea760d45bd5d1dad6b740db
parent6bb26646634156eedd24a2eb241df8497c0dad81 (diff)
added precompilation of base library .cljs into clojure.jar, patch from Stuart Sierra
-rw-r--r--build.xml20
-rw-r--r--src/clj/precompile.clj11
2 files changed, 26 insertions, 5 deletions
diff --git a/build.xml b/build.xml
index a7954295..a1d3490f 100644
--- a/build.xml
+++ b/build.xml
@@ -11,6 +11,7 @@
<property name="build" location="classes"/>
<property name="clojure_jar" location="clojure.jar"/>
<property name="bootclj" location="${cljsrc}/clojure/core.clj"/>
+ <property name="precompile" location="${cljsrc}/precompile.clj"/>
<target name="init">
<tstamp/>
@@ -18,14 +19,23 @@
</target>
<target name="compile" depends="init"
- description="Compile Java sources.">
+ description="Compile Java sources.">
<javac srcdir="${jsrc}" destdir="${build}" includeJavaRuntime="yes" debug="true" target="1.5"/>
</target>
- <target name="jar" depends="compile"
- description="Create jar file.">
+ <target name="core" depends="compile"
+ description="Precompile Clojure core sources.">
+ <java classname="clojure.lang.Script"
+ classpath="${build}:${cljsrc}">
+ <sysproperty key="clojure.compile.path" value="${build}"/>
+ <arg value="${precompile}"/>
+ </java>
+ </target>
+
+ <target name="jar" depends="core"
+ description="Create jar file.">
<jar jarfile="${clojure_jar}" basedir="${build}">
- <fileset dir="${cljsrc}" includes="**/*.clj"/>
+ <!-- <fileset dir="${cljsrc}" includes="**/*.clj"/> -->
<manifest>
<attribute name="Main-Class" value="clojure.lang.Repl"/>
<attribute name="Class-Path" value="."/>
@@ -34,7 +44,7 @@
</target>
<target name="clean"
- description="Remove autogenerated files and directories.">
+ description="Remove autogenerated files and directories.">
<delete dir="${build}"/>
</target>
diff --git a/src/clj/precompile.clj b/src/clj/precompile.clj
new file mode 100644
index 00000000..0f17a58d
--- /dev/null
+++ b/src/clj/precompile.clj
@@ -0,0 +1,11 @@
+;; This script is run by the Ant build task to precompile the core
+;; Clojure source files.
+
+(println "Compiling Clojure core sources...")
+
+(binding [*compile-path* (System/getProperty "clojure.compile.path")]
+ (compile 'clojure.core)
+ (compile 'clojure.set)
+ (compile 'clojure.xml)
+ (compile 'clojure.zip)
+ (compile 'clojure.inspector))