Restructure the build scripts to allow building a native system from a
authorChris Hanson <org/chris-hanson/cph>
Sun, 6 May 2007 14:17:14 +0000 (14:17 +0000)
committerChris Hanson <org/chris-hanson/cph>
Sun, 6 May 2007 14:17:14 +0000 (14:17 +0000)
liarc system.  More work needs to be done, but these changes don't
break the other builds.

v7/src/Clean.sh
v7/src/Makefile.in
v7/src/etc/c-boot-compiler.sh
v7/src/etc/c-compile.sh
v7/src/etc/c-prepare.sh
v7/src/etc/compile.scm
v7/src/etc/compile.sh

index 6ace9242bc74671a098a4d1f9a8c20125c5a3593..3fdeb712a9c3932a1f1c29a90abeebb5e5f27af9 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $Id: Clean.sh,v 1.14 2007/05/03 03:40:02 cph Exp $
+# $Id: Clean.sh,v 1.15 2007/05/06 14:16:44 cph Exp $
 #
 # Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
 #     1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
@@ -69,7 +69,7 @@ esac
 
 . etc/functions.sh
 
-maybe_rm boot-compiler.com
+maybe_rm c-boot-compiler.com native-boot-compiler.com
 
 if [ ${FULL} = yes ]; then
     maybe_rm lib/*.com
index 508dd93a439e52b0829c9472042526583ed64a26..a938567c7cbdb052c99be51f1b0e2f1028af16f5 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.34 2007/05/04 01:27:30 cph Exp $
+# $Id: Makefile.in,v 1.35 2007/05/06 14:16:49 cph Exp $
 #
 # Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
 #     1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
@@ -72,17 +72,23 @@ COMPILE_SCRIPT = @COMPILE_SCRIPT@
 
 all:
        ( cd microcode && $(MAKE) all )
-       $(srcdir)/etc/$(COMPILE_SCRIPT) $(srcdir)
+       $(srcdir)/etc/$(COMPILE_SCRIPT)
        ( cd microcode && $(MAKE) liarc-bundles )
        $(srcdir)/etc/build-bands.sh
 
-c: boot-compiler.com
+c: c-boot-compiler.com
        $(srcdir)/etc/c-prepare.sh
        -rm -f liarc.stamp
        echo "done" > liarc.stamp
 
-boot-compiler.com:
-       $(srcdir)/etc/c-boot-compiler.sh
+native: native-boot-compiler.com
+       $(srcdir)/etc/compile.sh mit-scheme-c --band native-boot-compiler.com
+
+c-boot-compiler.com:
+       $(srcdir)/etc/c-boot-compiler.sh mit-scheme c-boot-compiler
+
+native-boot-compiler.com:
+       $(srcdir)/etc/c-boot-compiler.sh mit-scheme-c native-boot-compiler
 
 mostlyclean clean distclean maintainer-clean c-clean:
        $(srcdir)/Clean.sh $@ $(SUBDIRS)
index bda41a0d8dd853edabd337bd880477a06bd7e206..018a27da76005aa74e4a902150085ab826afb1f6 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $Id: c-boot-compiler.sh,v 1.4 2007/05/03 03:45:51 cph Exp $
+# $Id: c-boot-compiler.sh,v 1.5 2007/05/06 14:16:54 cph Exp $
 #
 # Copyright 2007 Massachusetts Institute of Technology
 #
 #
 # You should have received a copy of the GNU General Public License
 # along with MIT/GNU Scheme; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301, USA.
 
 set -e
 
-if [ -z "${SCHEME_LARGE}" ]; then
-    SCHEME_LARGE="mit-scheme --heap 6000"
+if [ ${#} -eq 2 ]; then
+    EXE=${1}
+    OUT=${2}
+else
+    echo "usage: ${0} <executable> <output-file>"
+    exit 1
 fi
+CMD="${EXE} --heap 6000"
 
-if [ -z "${SCHEME_COMPILER}" ]; then
-    SCHEME_COMPILER="${SCHEME_LARGE} --compiler"
-fi
-
-# Step 1: Compile CREF and SF natively, so that we can load them
-# independently of the compiler.  (There is no standard band that
-# loads them independently.)
-
-echo "${SCHEME_COMPILER}"
-${SCHEME_COMPILER} <<EOF
-(begin
-  (load "etc/compile.scm")
-  (compile-bootstrap-1))
-EOF
-
-# Step 2: Load CREF and SF, and syntax the compiler configured with
+# Step 1: Load CREF and SF, and syntax the compiler configured with
 # the C back end.
 
-echo "${SCHEME_LARGE}"
-${SCHEME_LARGE} <<EOF
+echo "${CMD}"
+${CMD} <<EOF
 (begin
   (load "etc/compile.scm")
-  (compile-bootstrap-2))
+  (compile-bootstrap-1))
 EOF
 
-# Step 3: Now that the compiler with the C back end is syntaxed and
+# Step 2: Now that the compiler with the C back end is syntaxed and
 # packaged, use the native compiler to compile the bootstrap C
 # compiler natively.
 
-echo "${SCHEME_COMPILER}"
-${SCHEME_COMPILER} <<EOF
+echo "${CMD} --compiler"
+${CMD} --compiler <<EOF
 (begin
   (load "etc/compile.scm")
-  (compile-bootstrap-3))
+  (compile-bootstrap-2))
 EOF
 
-# Step 4: Load up the natively compiled compiler with the C back end,
+# Step 3: Load up the natively compiled compiler with the C back end,
 # and save a band.
 
-echo "${SCHEME_LARGE}"
-${SCHEME_LARGE} <<EOF
+echo "${CMD}"
+${CMD} <<EOF
 (begin
   (load "etc/compile.scm")
-  (compile-bootstrap-4)
-  (disk-save "boot-compiler.com"))
+  (compile-bootstrap-3)
+  (disk-save "${OUT}.com"))
 EOF
index 4ed84443f1c236b27a4ba535c52a19dee4dd6362..e3c06b6797659fb35d9586ff5f4b01e918dd9a09 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $Id: c-compile.sh,v 1.5 2007/05/04 19:34:03 cph Exp $
+# $Id: c-compile.sh,v 1.6 2007/05/06 14:16:59 cph Exp $
 #
 # Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
 #     1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 
 set -e
 
-if [ ${#} -ge 1 ]; then
-    echo "cd ${1}"
-    cd "${1}"
-elif [ -r etc/compile.scm ]; then
-    :
-else
-    echo "usage: ${0} DIRECTORY"
-    exit 1
-fi
-
 etc/build-runtime.sh
 
 echo "microcode/scheme --library lib --heap 6000 --stack 200"
index 59c2bdba17599c42154813973ad02abfa5be188b..bf3e3c5fb872d8d0ee818588009f3eeede7c76eb 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $Id: c-prepare.sh,v 1.4 2007/05/04 19:35:37 cph Exp $
+# $Id: c-prepare.sh,v 1.5 2007/05/06 14:17:14 cph Exp $
 #
 # Copyright 2007 Massachusetts Institute of Technology
 #
 
 set -e
 
-if [ ${#} -ge 1 ]; then
-    cd "${1}"
-elif [ -r etc/compile.scm ]; then
-    :
-else
-    echo "usage: ${0} DIRECTORY"
-    exit 1
-fi
-
 if [ -z "${SCHEME_LARGE}" ]; then
     SCHEME_LARGE="mit-scheme --heap 6000"
 fi
 
-${SCHEME_LARGE} --band boot-compiler.com <<EOF
+${SCHEME_LARGE} --band c-boot-compiler.com <<EOF
 (begin
   (load "etc/compile.scm")
   (c-prepare))
index 7f4ecebac7331cde43f09369a423cc321cb97a94..9e0c633da6f0786ee782cacb94b2bd1473bbc6d7 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: compile.scm,v 1.17 2007/05/04 01:26:59 cph Exp $
+$Id: compile.scm,v 1.18 2007/05/06 14:17:04 cph Exp $
 
 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
     1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
@@ -40,7 +40,7 @@ USA.
 
 (define (compile-boot-dirs compile-dir)
   (compile-cref compile-dir)
-  (for-each compile-dir '("runtime" "sf" "compiler" "star-parser")))
+  (for-each compile-dir '("runtime" "cref" "sf" "compiler" "star-parser")))
 
 (define (compile-cref compile-dir)
   (compile-dir "cref")
@@ -68,24 +68,24 @@ USA.
             (load "load"))))))
 \f
 (define (compile-bootstrap-1)
-  (compile-cref compile-dir)
-  (compile-dir "sf"))
-
-(define (compile-bootstrap-2)
-  (load-dir "cref")
-  (load-dir "sf")
+  (load-option 'SF)
   (with-working-directory-pathname "compiler"
     (lambda ()
       (load "compiler.sf"))))
 
-(define (compile-bootstrap-3)
-  (with-working-directory-pathname "compiler"
-    (lambda ()
-      (load "compiler.cbf"))))
+(define (compile-bootstrap-2)
+  (if (eq? microcode-id/compiled-code-type 'C)
+      (fluid-let ((compiler:invoke-c-compiler? #f))
+       (with-working-directory-pathname "compiler"
+         (lambda ()
+           (load "compiler.cbf")))
+       (c-compile-pkgs "compiler"))
+      (with-working-directory-pathname "compiler"
+       (lambda ()
+         (load "compiler.cbf")))))
 
-(define (compile-bootstrap-4)
-  (load-dir "cref")
-  (load-dir "sf")
+(define (compile-bootstrap-3)
+  (load-option 'SF)
   (load-dir "compiler"))
 
 (define (c-prepare)
index cb917430afdc0e1844f4684cf8e764e5be2d7edf..4a65ef882659b892df3691480bdc930afb62412b 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $Id: compile.sh,v 1.11 2007/05/03 03:45:52 cph Exp $
+# $Id: compile.sh,v 1.12 2007/05/06 14:17:10 cph Exp $
 #
 # Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
 #     1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 
 set -e
 
-if [ ${#} -ge 1 ]; then
-    echo "cd ${1}"
-    cd "${1}"
-elif [ -r etc/compile.scm ]; then
-    :
+if [ ${#} -eq 0 ]; then
+    SCHEME_COMPILER="mit-scheme --compiler"
 else
-    echo "usage: ${0} DIRECTORY"
-    exit 1
+    SCHEME_COMPILER=${1}
+    shift
+    while [ ${#} -gt 0 ]; do
+       SCHEME_COMPILER="${SCHEME_COMPILER} ${1}"
+       shift
+    done
 fi
 
-if [ -z "${SCHEME_COMPILER}" ]; then
-    SCHEME_COMPILER="mit-scheme --compiler --heap 6000 --stack 200"
-fi
+SCHEME_COMPILER="${SCHEME_COMPILER} --heap 6000 --stack 200"
 
 echo "${SCHEME_COMPILER}"
 exec ${SCHEME_COMPILER} <<EOF