X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=make-host-2.sh;h=63e4512a1fb9d428929117b16c47a700ce0a8b1a;hb=a18f0a95bc9a457e4d2d00c702b746f29c2662b1;hp=9100dfe887ec0f3afa6101a50934339e809c2eaf;hpb=a530bbe337109d898d5b4a001fc8f1afa3b5dc39;p=sbcl.git diff --git a/make-host-2.sh b/make-host-2.sh index 9100dfe..63e4512 100644 --- a/make-host-2.sh +++ b/make-host-2.sh @@ -56,16 +56,16 @@ $SBCL_XC_HOST <<-'EOF' || exit 1 "Call FN with everything set up appropriately for cross-compiling a target file." (let (;; Life is simpler at genesis/cold-load time if we - ;; needn't worry about byte-compiled code. - (sb!ext:*byte-compile-top-level* nil) - ;; Let the target know that we're the cross-compiler. - (*features* (cons :sb-xc *features*)) - ;; We need to tweak the readtable.. - (*readtable* (copy-readtable)) + ;; needn't worry about byte-compiled code. + (sb!ext:*byte-compile-top-level* nil) ;; In order to reduce peak memory usage during GENESIS, ;; it helps to stuff several toplevel forms together - ;; into the same function. - (sb!c::*top-level-lambda-max* 10)) + ;; into the same function. + (sb!c::*top-level-lambda-max* 10) + ;; Let the target know that we're the cross-compiler. + (*features* (cons :sb-xc *features*)) + ;; We need to tweak the readtable.. + (*readtable* (copy-readtable))) ;; ..in order to make backquotes expand into target code ;; instead of host code. ;; FIXME: Isn't this now taken care of automatically by @@ -87,11 +87,16 @@ $SBCL_XC_HOST <<-'EOF' || exit 1 (ensure-directories-exist filename :verbose t) (with-open-file (s filename :direction :output) (write *target-object-file-names* :stream s :readably t))) + ;; Let's check that the type system was reasonably sane. (It's + ;; easy to spend a long time wandering around confused trying + ;; to debug cold init if it wasn't.) + (when (find :sb-test *shebang-features*) + (load "tests/type.after-xc.lisp")) ;; If you're experimenting with the system under a ;; cross-compilation host which supports CMU-CL-style SAVE-LISP, - ;; this can be a good time to run it, - ;; The resulting core isn't used in the normal build, but - ;; can be handy for experimenting with the system. + ;; this can be a good time to run it. The resulting core isn't + ;; used in the normal build, but can be handy for experimenting + ;; with the system. (when (find :sb-show *shebang-features*) #+cmu (ext:save-lisp "output/after-xc.core" :load-init-file nil) #+sbcl (sb-ext:save-lisp-and-die "output/after-xc.core")) @@ -101,14 +106,17 @@ $SBCL_XC_HOST <<-'EOF' || exit 1 # # In a fresh host Lisp invocation, load the cross-compiler (in order # to get various definitions that GENESIS needs, not in order to -# cross-compile GENESIS, compile and load GENESIS, then run GENESIS. -# (We use a fresh host Lisp invocation here for basically the same -# reasons we did before when loading and running the cross-compiler.) +# cross-compile GENESIS, then load and run GENESIS. (We use a fresh +# host Lisp invocation here for basically the same reasons we did +# before when loading and running the cross-compiler.) # -# (This second invocation of GENESIS is done because in order to +# (Why do we need this second invocation of GENESIS? In order to # create a .core file, as opposed to just a .h file, GENESIS needs -# symbol table data on the C runtime, which we can get only after the -# C runtime has been built.) +# symbol table data on the C runtime. And we can get that symbol +# data only after the C runtime has been built. Therefore, even +# though we ran GENESIS earlier, we couldn't get it to make a .core +# file at that time; but we needed to run it earlier in order to +# get to where we can write a .core file.) echo //loading and running GENESIS to create cold-sbcl.core $SBCL_XC_HOST <<-'EOF' || exit 1 (setf *print-level* 5 *print-length* 5)