Index: src/clj/precompile.clj
===================================================================
--- src/clj/precompile.clj	(revision 1106)
+++ src/clj/precompile.clj	(working copy)
@@ -1,11 +0,0 @@
-;; 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))
Index: src/jvm/clojure/lang/CompileFiles.java
===================================================================
--- src/jvm/clojure/lang/CompileFiles.java	(revision 0)
+++ src/jvm/clojure/lang/CompileFiles.java	(revision 0)
@@ -0,0 +1,61 @@
+/**
+ *   Copyright (c) Rich Hickey. All rights reserved.
+ *   The use and distribution terms for this software are covered by the
+ *   Common Public License 1.0 (http://opensource.org/licenses/cpl.php)
+ *   which can be found in the file CPL.TXT at the root of this distribution.
+ *   By using this software in any fashion, you are agreeing to be bound by
+ * 	 the terms of this license.
+ *   You must not remove this notice, or any other, from this software.
+ **/
+
+package clojure.lang;
+
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.IOException;
+import java.util.List;
+import java.util.Arrays;
+
+/** Static compiler for .clj files.  All files given on the command
+ * line will be compiled and saved to the directory named in the Java
+ * system property "clojure.compile.path".  That directory must also
+ * be on the classpath. */
+public class CompileFiles {
+
+    private static final String PATH_PROP = "clojure.compile.path";
+    private static final Var compile_path = RT.var("clojure.core", "*compile-path*");
+    private static final Var compile_files = RT.var("clojure.core", "*compile-files*");
+
+    public static void main(String[] args) throws Exception {
+        if (System.getProperty(PATH_PROP) == null) {
+            System.err.println("ERROR: Must set system property " + PATH_PROP +
+                               "\nto the location for compiled .class files." +
+                               "\nThis directory must also be on your CLASSPATH.");
+            System.exit(1);
+        }
+        try {
+            Var.pushThreadBindings(RT.map(compile_files, RT.T,
+                                          compile_path, System.getProperty(PATH_PROP)));
+            // The following is copied from clojure.lang.Script
+            for (String file : RT.processCommandLine(args)) {
+                if (file.startsWith("@")) {
+                    RT.loadResourceScript(file.substring(file.startsWith("@/") ? 2 : 1));
+                } else {
+                    Compiler.loadFile(file);
+                }
+            }
+            Var.popThreadBindings();
+        }
+	finally {
+            OutputStreamWriter w = (OutputStreamWriter) RT.OUT.get();
+            try {
+                w.flush();
+                w.close();
+            }
+            catch(IOException e) {
+                e.printStackTrace((PrintWriter)RT.ERR.get());
+            }
+        }
+    }
+}
+
Index: build.xml
===================================================================
--- build.xml	(revision 1106)
+++ build.xml	(working copy)
@@ -11,7 +11,6 @@
 	<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/>
@@ -25,10 +24,14 @@
 
 	<target name="core" depends="compile"
 		description="Precompile Clojure core sources.">
-		<java classname="clojure.lang.Script"
+		<java classname="clojure.lang.CompileFiles"
                       classpath="${build}:${cljsrc}">
                         <sysproperty key="clojure.compile.path" value="${build}"/>
-			<arg value="${precompile}"/>
+                        <arg value="${bootclj}"/>
+                        <arg value="${cljsrc}/clojure/set.clj"/>
+                        <arg value="${cljsrc}/clojure/xml.clj"/>
+                        <arg value="${cljsrc}/clojure/zip.clj"/>
+                        <arg value="${cljsrc}/clojure/inspector.clj"/>
 		</java>
 	</target>
 
