sbcl.sbcl/make-c-runtime.sh
Douglas Katzman 0abf67fd58 Relax requirement on current directory during build
After this it is more-or-less possible to have the SBCL root directory
be a subdirectory of the current dir. Everything in src/cold finds required
files as siblings, so if SBCL is in "mumble/something/sbcl", you needn't
change dir into "sbcl" but instead, while in "mumble" it works to load
"something/sbcl/src/cold/shared"

A quick not-too-exciting example:
* (setq *sbcl-local-target-features-file* "sbcl/local-target-features.lisp-expr")
"sbcl/local-target-features.lisp-expr"
* (load "sbcl/src/cold/shared")
T

In real-world usage, the SBCL directory would be buried deeper in the tree
and you don't want to physically change dir into it because reasons.

It should be easier to parallelize crossbuild-runner too. With suitable
input and output directories, each architecture can place its artifacts into
a different fasl tree while pulling sources from the common location.
2021-06-30 11:25:13 -04:00

29 lines
1 KiB
Bash
Executable file

#!/bin/sh
# Load our build configuration
. output/build-config
# This script has been tested with CLISP, ECL and SBCL (of course).
# Running with CCL it gets:
# > Error: Class is not yet defined or was undefined: CTYPE
# > While executing: COMPILER-LAYOUT-OR-LOSE, in process listener(1).
time $SBCL_XC_HOST <<EOF
(load "src/cold/shared.lisp")
(load "src/cold/set-up-cold-packages.lisp")
(load "tools-for-build/corefile.lisp")
(in-package "SB-COLD")
(defvar *target-sbcl-version* (read-from-file "version.lisp-expr"))
(in-host-compilation-mode
(lambda (&aux (sb-xc:*features* (cons :c-headers-only sb-xc:*features*)))
(do-stems-and-flags (stem flags 1)
(when (member :c-headers flags)
(handler-bind ((style-warning (function muffle-warning)))
(load (merge-pathnames (stem-remap-target stem) ".lisp")))))
(load "src/compiler/generic/genesis.lisp")))
(genesis :c-header-dir-name "src/runtime/genesis/" :verbose nil)
EOF
diff -r output/genesis-2 src/runtime/genesis
(cd src/runtime ; $GNUMAKE)