#!/bin/sh
+set -e
# This is a script to be run as part of make.sh. The only time you'd
# want to run it by itself is if you're trying to cross-compile the
echo //entering make-target-1.sh
-# Use a little lisp to write LDSO stubs in correct format for the toolchain.
-echo //generating ldso-subs.S
-$SBCL_XC_HOST <<-'EOF' || exit 1
- (load "src/cold/shared.lisp")
- (load "tools-for-build/ldso-stubs.lisp")
- #+cmu (ext:quit)
- #+clisp (ext:quit)
-EOF
+LANG=C
+LC_ALL=C
+export LANG LC_ALL
+
+# Load our build configuration
+. output/build-config
# Build the runtime system and symbol table (.nm) file.
#
# (This C build has to come after the first genesis in order to get
# the sbcl.h the C build needs, and come before the second genesis in
-# order to produce the symbol table file that second genesis needs. It
+# order to produce the symbol table file that second genesis needs. It
# could come either before or after running the cross compiler; that
# doesn't matter.)
+#
+# Note that the latter requirement does not apply to sb-dynamic-core
+# builds, since the cross compiler does not depend on symbol tables in
+# that case. Only because sbcl.nm is convenient for debugging purposes
+# is its generation left enabled even for those builds.
echo //building runtime system and symbol table file
-cd src/runtime
-$GNUMAKE clean || exit 1
-$GNUMAKE depend || exit 1
-$GNUMAKE all || exit 1
-cd ../..
+
+# The clean is needed for Darwin's readonlyspace hack.
+$GNUMAKE -C src/runtime clean
+# $GNUMAKE -C src/runtime depend
+$GNUMAKE -C src/runtime all
# Use a little C program to grab stuff from the C header files and
# smash it into Lisp source code.
-cd tools-for-build
-$GNUMAKE -I../src/runtime grovel-headers || exit 1
-cd ..
+$GNUMAKE -C tools-for-build -I../src/runtime grovel-headers
tools-for-build/grovel-headers > output/stuff-groveled-from-headers.lisp
-# after-grovel-headers may not exist for all platforms (used for
-# Darwin hacks)
-cd src/runtime
-$GNUMAKE after-grovel-headers || true
-cd ..
+$GNUMAKE -C src/runtime after-grovel-headers