makefiles: build Chez Scheme in the "build" area

Instead of leaving Chez Scheme build artifacts in in the ChezScheme
source directory, keep them in a "build" directory like everything
else.
This commit is contained in:
Matthew Flatt 2020-07-31 16:33:07 -06:00
parent c1cd9c499c
commit 2ae4ee4163
9 changed files with 75 additions and 45 deletions

View File

@ -327,7 +327,7 @@ RACKET_FOR_BOOTFILES = $(RACKET)
RACKET_FOR_BUILD = $(RACKET)
# This branch name changes each time the pb boot files are updated:
PB_BRANCH == circa-7.8.0.6-1
PB_BRANCH == circa-7.8.0.6-2
PB_REPO == https://github.com/racket/pb
# Alternative source for Chez Scheme boot files, normally set by
@ -438,7 +438,7 @@ pb-stage:
cd $(PB_DIR) && git add . && git commit --amend -m "new build"
pb-push:
git push -u origin $(PB_BRANCH)
cd $(PB_DIR) && git push -u origin $(PB_BRANCH)
WIN32_BOOT_ARGS == SETUP_BOOT_MODE=--boot WIN32_BUILD_LEVEL=bc PLAIN_RACKET=racket\racketbc

View File

@ -44,7 +44,7 @@ RACKETCS_SUFFIX = cs
RACKET =
RACKET_FOR_BOOTFILES = $(RACKET)
RACKET_FOR_BUILD = $(RACKET)
PB_BRANCH = circa-7.8.0.6-1
PB_BRANCH = circa-7.8.0.6-2
PB_REPO = https://github.com/racket/pb
EXTRA_REPOS_BASE =
CS_CROSS_SUFFIX =
@ -300,14 +300,14 @@ maybe-fetch-pb:
if [ "$(RACKET_FOR_BOOTFILES)" = "" ] ; then $(MAKE) fetch-pb EXTRA_REPOS_BASE="$(EXTRA_REPOS_BASE)" ; fi
fetch-pb-from:
mkdir -p racket/src/ChezScheme/boot
if [ ! -d racket/src/ChezScheme/boot/pb ] ; then git clone -q -b circa-7.8.0.6-1 https://github.com/racket/pb racket/src/ChezScheme/boot/pb ; else cd racket/src/ChezScheme/boot/pb && git fetch -q origin circa-7.8.0.6-1 ; fi
cd racket/src/ChezScheme/boot/pb && git checkout -q circa-7.8.0.6-1
if [ ! -d racket/src/ChezScheme/boot/pb ] ; then git clone -q -b circa-7.8.0.6-2 https://github.com/racket/pb racket/src/ChezScheme/boot/pb ; else cd racket/src/ChezScheme/boot/pb && git fetch -q origin circa-7.8.0.6-2 ; fi
cd racket/src/ChezScheme/boot/pb && git checkout -q circa-7.8.0.6-2
pb-stage:
cd racket/src/ChezScheme/boot/pb && git branch circa-7.8.0.6-1
cd racket/src/ChezScheme/boot/pb && git checkout circa-7.8.0.6-1
cd racket/src/ChezScheme/boot/pb && git branch circa-7.8.0.6-2
cd racket/src/ChezScheme/boot/pb && git checkout circa-7.8.0.6-2
cd racket/src/ChezScheme/boot/pb && git add . && git commit --amend -m "new build"
pb-push:
git push -u origin circa-7.8.0.6-1
cd racket/src/ChezScheme/boot/pb && git push -u origin circa-7.8.0.6-2
win-cs-base:
IF "$(RACKET_FOR_BUILD)" == "" $(MAKE) win-bc-then-cs-base SETUP_BOOT_MODE=--boot WIN32_BUILD_LEVEL=bc PLAIN_RACKET=racket\racketbc DISABLE_STATIC_LIBS="$(DISABLE_STATIC_LIBS)" EXTRA_REPOS_BASE="$(EXTRA_REPOS_BASE)" GIT_CLONE_ARGS_qq="$(GIT_CLONE_ARGS_qq)" JOB_OPTIONS="$(JOB_OPTIONS)" PLT_SETUP_OPTIONS="$(PLT_SETUP_OPTIONS)" RACKETBC_SUFFIX="$(RACKETBC_SUFFIX)" RACKETCS_SUFFIX="$(RACKETCS_SUFFIX)"
IF not "$(RACKET_FOR_BUILD)" == "" $(MAKE) win-just-cs-base SETUP_BOOT_MODE=--chain DISABLE_STATIC_LIBS="$(DISABLE_STATIC_LIBS)" EXTRA_REPOS_BASE="$(EXTRA_REPOS_BASE)" GIT_CLONE_ARGS_qq="$(GIT_CLONE_ARGS_qq)" JOB_OPTIONS="$(JOB_OPTIONS)" PLT_SETUP_OPTIONS="$(PLT_SETUP_OPTIONS)" RACKETCS_SUFFIX="$(RACKETCS_SUFFIX)" RACKET_FOR_BUILD="$(RACKET_FOR_BUILD)"

View File

@ -21,8 +21,11 @@ DEBUG_COMP = # --debug
# the Chez Scheme directory must have "<machine>/s/xpatch":
CROSS_COMP =
# Can be set by a caller:
EXTRA_COMPILE_DEPS =
COMPILE_FILE = $(SCHEME) --script compile-file.ss $(UNSAFE_COMP) $(COMPRESS_COMP) $(DEBUG_COMP) $(CROSS_COMP) --dest "$(BUILDDIR)"
COMPILE_FILE_DEPS = compile-file.ss include.ss place-register.ss
COMPILE_FILE_DEPS = compile-file.ss include.ss place-register.ss $(EXTRA_COMPILE_DEPS)
RACKET_SETUP_ARGS = false ../../bin/racket ../../bin/racket ../collects ../etc 0 true false 0 ""

View File

@ -1,16 +1,19 @@
srcdir = @srcdir@
builddir = @builddir@
upsrcdir = @upsrcdir@
PACKAGE = racket
SCHEME_DIR = $(srcdir)/../../ChezScheme
UP_SCHEME_DIR = $(upsrcdir)/../../ChezScheme
SCHEME_WORKAREA = ChezScheme
MACH = @MACH@
SCHEME_BIN = $(SCHEME_DIR)/$(MACH)/bin/$(MACH)/scheme
SCHEME_INC = $(SCHEME_DIR)/$(MACH)/boot/$(MACH)
SCHEME = $(SCHEME_BIN) -b $(SCHEME_INC)/petite.boot -b $(SCHEME_INC)/scheme.boot
SCHEME_BIN = $(SCHEME_WORKAREA)/$(MACH)/bin/$(MACH)/scheme
SCHEME_INC = $(SCHEME_WORKAREA)/$(MACH)/boot/$(MACH)
SCHEME = $(SCHEME_BIN) -B $(SCHEME_INC)/petite.boot -B $(SCHEME_INC)/scheme.boot
TARGET_MACH = @TARGET_MACH@
SCHEME_TARGET_INC = $(SCHEME_DIR)/$(TARGET_MACH)/boot/$(TARGET_MACH)
SCHEME_TARGET_INC = $(SCHEME_WORKAREA)/$(TARGET_MACH)/boot/$(TARGET_MACH)
CC = @CC@
BASE_CFLAGS = @CFLAGS@ @CPPFLAGS@
@ -81,7 +84,7 @@ SETUP_BOOT_MODE = @SETUP_BOOT_MODE@
BOOT_COMPILED_SUBDIR =
SETUP_COMMON_BOOT = -l- setup $(SETUP_BOOT_MODE) $(srcdir)/../../setup-go.rkt $(builddir)/compiled$(BOOT_COMPILED_SUBDIR)
ABS_SCHEME_DIR = "`$(SCHEME) --script $(srcdir)/../absify.ss --no-trailing-sep $(SCHEME_DIR)`"
ABS_SCHEME_WORKAREA = "`$(SCHEME) --script $(srcdir)/../absify.ss --no-trailing-sep $(SCHEME_WORKAREA)`"
ABS_BUILDDIR = "`$(SCHEME) --script $(srcdir)/../absify.ss --no-trailing-sep $(builddir)`"
SETUP_BOOT = -O 'info@compiler/cm' $(SETUP_COMMON_BOOT)
@ -98,15 +101,17 @@ RACKET_SO_ENV = @CONFIGURE_RACKET_SO_COMPILE@
CS_PROGS = SCHEME="$(SCHEME)"
CS_OPTS = COMPRESS_COMP=@COMPRESS_COMP@
CS_OPTScross = $(CS_OPTS) CSO=$(MACH) CROSS_COMP="--xpatch $(SCHEME_DIR)/$(TARGET_MACH)/s/xpatch"
CS_OPTScross = $(CS_OPTS) CSO=$(MACH) CROSS_COMP="--xpatch $(SCHEME_WORKAREA)/$(TARGET_MACH)/s/xpatch"
PASS_COMPILE_DEPS = EXTRA_COMPILE_DEPS="$(SCHEME_INC)/petite.boot $(SCHEME_INC)/scheme.boot"
build-racket-so:
cd $(srcdir)/.. && $(RACKET_SO_ENV) $(MAKE) "$(builddir)/racket.so" $(CS_PROGS) $(CS_OPTS@CROSS_MODE@) BUILDDIR="$(builddir)/" BOOTSTRAPPED="done"
cd $(srcdir)/.. && $(RACKET_SO_ENV) $(MAKE) "$(builddir)/racket.so" $(CS_PROGS) $(CS_OPTS@CROSS_MODE@) BUILDDIR="$(builddir)/" BOOTSTRAPPED="done" $(PASS_COMPILE_DEPS)
bounce:
$(MAKE) builddir="$(ABS_BUILDDIR)" SCHEME_DIR="$(ABS_SCHEME_DIR)" $(TARGET)
$(MAKE) builddir="$(ABS_BUILDDIR)" SCHEME_WORKAREA="$(ABS_SCHEME_WORKAREA)" $(TARGET)
scheme:
mkdir -p $(SCHEME_WORKAREA)
if [ "$(BOOTFILE_RACKET)" != "$(DEFAULT_RACKET)" ] ; \
then $(MAKE) scheme-via-rktboot BOOTFILE_RACKET="$(BOOTFILE_RACKET)" ; \
else $(MAKE) scheme-via-pb ; fi
@ -117,26 +122,26 @@ scheme-via-rktboot:
else $(MAKE) scheme-via-rktboot-at ; fi
scheme-via-rktboot-at:
SCHEME_SRC="$(SCHEME_DIR)" MACH="$(MACH)" $(BOOTSTRAP_BOOTFILE_RACKET) $(SCHEME_DIR)/rktboot/make-boot.rkt
/bin/sh $(srcdir)/reset_boot.sh $(MACH) "$(srcdir)/../../ChezScheme"
SCHEME_SRC="$(SCHEME_DIR)" MACH="$(MACH)" SCHEME_WORKAREA=$(SCHEME_WORKAREA) $(BOOTSTRAP_BOOTFILE_RACKET) "$(SCHEME_DIR)"/rktboot/make-boot.rkt
/bin/sh $(srcdir)/reset_boot.sh $(MACH) $(SCHEME_WORKAREA)
$(MAKE) mach-make
scheme-via-pb:
/bin/sh $(srcdir)/check_boot.sh $(MACH) "$(srcdir)/../../ChezScheme"
/bin/sh $(srcdir)/check_boot.sh $(MACH) "$(SCHEME_DIR)" $(SCHEME_WORKAREA)
if [ -f boot_pending ] ; then $(MAKE) pb-bootquick ; fi
$(MAKE) mach-make
pb-bootquick:
$(MAKE) config-scheme MACH=pb CONFIG_SCHEME_MODE=--pb
cd $(SCHEME_DIR) && $(MAKE) reset
cd $(SCHEME_DIR) && $(MAKE) ${MACH}.bootquick
cd $(SCHEME_WORKAREA) && $(MAKE) reset
cd $(SCHEME_WORKAREA) && $(MAKE) ${MACH}.bootquick
$(MAKE) config-scheme
cd $(SCHEME_DIR) && $(MAKE) reset
/bin/sh $(srcdir)/ready_boot.sh $(MACH) "$(srcdir)/../../ChezScheme"
cd $(SCHEME_WORKAREA) && $(MAKE) reset
/bin/sh $(srcdir)/ready_boot.sh $(MACH) $(SCHEME_WORKAREA)
mach-make:
$(MAKE) config-scheme
cd $(SCHEME_DIR) && $(MAKE)
cd $(SCHEME_WORKAREA) && $(MAKE)
SCHEME_CONFIG_VARS = CC="$(CC)" CFLAGS="$(BASE_CFLAGS)" LDFLAGS="$(LDFLAGS)" \
AR="$(AR)" ARFLAGS="$(ARFLAGS)" RANLIB="$(RANLIB)" \
@ -144,23 +149,23 @@ SCHEME_CONFIG_VARS = CC="$(CC)" CFLAGS="$(BASE_CFLAGS)" LDFLAGS="$(LDFLAGS)" \
CONFIG_SCHEME_MODE =
config-scheme:
cd $(SCHEME_DIR) && ./configure $(CONFIG_SCHEME_MODE) @SCHEME_CONFIG_ARGS@ $(SCHEME_CONFIG_VARS)
cd $(SCHEME_WORKAREA) && "$(UP_SCHEME_DIR)"/configure $(CONFIG_SCHEME_MODE) @SCHEME_CONFIG_ARGS@ $(SCHEME_CONFIG_VARS)
scheme-cross:
env MAKE_BOOT_FOR_CROSS=yes SCHEME_SRC="$(SCHEME_DIR)" MACH="$(TARGET_MACH)" $(BOOTSTRAP_RACKET) "$(SCHEME_DIR)"/rktboot/make-boot.rkt
/bin/sh $(srcdir)/reset_boot.sh $(TARGET_MACH) "$(srcdir)/../../ChezScheme"
cd $(SCHEME_DIR) && ./configure @SCHEME_CROSS_CONFIG_ARGS@ $(SCHEME_CONFIG_VARS)
cd $(SCHEME_DIR)/$(TARGET_MACH)/c && $(MAKE) o=o cross=t
$(MAKE) $(SCHEME_DIR)/$(TARGET_MACH)/s/xpatch
env MAKE_BOOT_FOR_CROSS=yes SCHEME_SRC="$(SCHEME_DIR)" SCHEME_WORKAREA=$(SCHEME_WORKAREA) MACH="$(TARGET_MACH)" $(BOOTSTRAP_RACKET) "$(SCHEME_DIR)"/rktboot/make-boot.rkt
/bin/sh $(srcdir)/reset_boot.sh $(TARGET_MACH) $(SCHEME_WORKAREA)
cd $(SCHEME_WORKAREA) && ./configure @SCHEME_CROSS_CONFIG_ARGS@ $(SCHEME_CONFIG_VARS)
cd $(SCHEME_WORKAREA)/$(TARGET_MACH)/c && $(MAKE) o=o cross=t
$(MAKE) $(SCHEME_WORKAREA)/$(TARGET_MACH)/s/xpatch
# Rebuild patch file and cross "petite.boot" and "scheme.boot" when older
# than the build-host "scheme.boot"
$(SCHEME_DIR)/$(TARGET_MACH)/s/xpatch: $(SCHEME_DIR)/$(MACH)/boot/$(MACH)/scheme.boot
rm -f $(SCHEME_DIR)/$(TARGET_MACH)/s/nanopass.so $(SCHEME_DIR)/$(TARGET_MACH)/s/nanopass/*.so
cd $(SCHEME_DIR)/$(TARGET_MACH)/s && $(MAKE) -f Mf-cross m=$(MACH) xm=$(TARGET_MACH) Scheme="$(SCHEME_BIN)" SCHEMEHEAPDIRS="$(SCHEME_INC)"
$(SCHEME_WORKAREA)/$(TARGET_MACH)/s/xpatch: $(SCHEME_WORKAREA)/$(MACH)/boot/$(MACH)/scheme.boot
rm -f $(SCHEME_WORKAREA)/$(TARGET_MACH)/s/nanopass.so $(SCHEME_WORKAREA)/$(TARGET_MACH)/s/nanopass/*.so
cd $(SCHEME_WORKAREA)/$(TARGET_MACH)/s && $(MAKE) -f Mf-cross m=$(MACH) xm=$(TARGET_MACH) Scheme="$(SCHEME_BIN)" SCHEMEHEAPDIRS="$(SCHEME_INC)"
XPATCH =
XPATCHcross = --xpatch $(SCHEME_DIR)/$(TARGET_MACH)/s/xpatch
XPATCHcross = --xpatch $(SCHEME_WORKAREA)/$(TARGET_MACH)/s/xpatch
racket.boot: racket.so
$(SCHEME) --script $(srcdir)/convert-to-boot.ss @BOOT_COMPRESS_COMP@ $(XPATCH@CROSS_MODE@) racket.so racket.boot $(TARGET_MACH)
@ -354,7 +359,7 @@ plain-install-upcased:
$(MAKE) compile-xpatch.$(TARGET_MACH)
$(MAKE) library-xpatch.$(TARGET_MACH)
SCHEME_XPATCH = $(SCHEME_DIR)/$(TARGET_MACH)/s/xpatch
SCHEME_XPATCH = $(SCHEME_WORKAREA)/$(TARGET_MACH)/s/xpatch
compile-xpatch.$(TARGET_MACH): $(SCHEME_XPATCH) $(srcdir)/mk-cross-serve.ss $(srcdir)/cross-serve.ss $(srcdir)/../expander/env.ss
$(SCHEME) --script $(srcdir)/mk-cross-serve.ss $(srcdir)/cross-serve.ss $(srcdir)/../expander/env.ss
@ -392,7 +397,7 @@ starter@NOT_MINGW@: $(srcdir)/../../start/ustart.c
repack-install-libs:
$(MAKE) libracketcs.a SCHEME_DIR="$(ABS_SCHEME_DIR)"
$(MAKE) libracketcs.a SCHEME_WORKAREA="$(ABS_SCHEME_WORKAREA)"
libracketcs.a: $(SCHEME_LIB_DEPS) rktio/librktio.a boot.o
mkdir -p repack

View File

@ -5,11 +5,12 @@
MACH=$1
SCHEME_DIR=$2
SCHEME_WORKAREA=$3
check_pb()
{
SRC=$SCHEME_DIR/boot/pb/$1
DEST=$SCHEME_DIR/pb/boot/pb/$1
SRC="$SCHEME_DIR"/boot/pb/$1
DEST=$SCHEME_WORKAREA/pb/boot/pb/$1
if [ ! -e $DEST ] ; then
touch boot_pending
elif [ "`/usr/bin/find "$SRC" -newer "$DEST"`" != "" ] ; then
@ -28,7 +29,7 @@ check_pb vfasl.inc
check_mach()
{
SRC=$SCHEME_DIR/boot/pb/$1
INIT=$SCHEME_DIR/boot/$MACH/$1
INIT=$SCHEME_WORKAREA/boot/$MACH/$1
if [ ! -e $INIT ] ; then
touch boot_pending
elif [ "`/usr/bin/find "$SRC" -newer "$INIT"`" != "" ] ; then

View File

@ -674,6 +674,7 @@ STATIC_AR
ARFLAGS
AR
LD
upsrcdir
STRIP
EGREP
GREP
@ -4932,6 +4933,15 @@ fi
############## Racket and Chez Scheme ################
case "$srcdir" in
/*)
upsrcdir=$srcdir
;;
*)
upsrcdir=../$srcdir
;;
esac
SCHEME_DIR=${srcdir}/../../ChezScheme
MAKE_BUILD_SCHEME=checkout
@ -5581,6 +5591,7 @@ SCHEME_CROSS_CONFIG_ARGS="--machine=${TARGET_MACH} --disable-x11 ${disable_curse
makefiles="Makefile"

View File

@ -422,6 +422,15 @@ fi
############## Racket and Chez Scheme ################
case "$srcdir" in
/*)
upsrcdir=$srcdir
;;
*)
upsrcdir=../$srcdir
;;
esac
SCHEME_DIR=${srcdir}/../../ChezScheme
MAKE_BUILD_SCHEME=checkout
@ -676,6 +685,7 @@ m4_include(../ac/rktio_keep.m4)
SCHEME_CONFIG_ARGS="--machine=${MACH} --disable-x11 ${disable_curses_arg} ${extra_scheme_config_args}"
SCHEME_CROSS_CONFIG_ARGS="--machine=${TARGET_MACH} --disable-x11 ${disable_curses_arg} ${extra_scheme_config_args}"
AC_SUBST(upsrcdir)
AC_SUBST(CC)
AC_SUBST(CFLAGS)
AC_SUBST(CPPFLAGS)

View File

@ -6,11 +6,11 @@
# Then, delete `boot_pending`.
MACH=$1
SCHEME_DIR=$2
SCHEME_WORKAREA=$2
ready_mach()
{
INIT=$SCHEME_DIR/boot/$MACH/$1
INIT=$SCHEME_WORKAREA/boot/$MACH/$1
if [ -e $INIT ] ; then
touch $INIT
fi

View File

@ -6,12 +6,12 @@
# Then, delete `boot_pending`.
MACH=$1
SCHEME_DIR=$2
SCHEME_WORKAREA=$2
ready_mach()
{
INIT=$SCHEME_DIR/boot/$MACH/$1
DEST=$SCHEME_DIR/$MACH/boot/$MACH/$1
INIT=$SCHEME_WORKAREA/boot/$MACH/$1
DEST=$SCHEME_WORKAREA/$MACH/boot/$MACH/$1
if [ "`/usr/bin/find "$INIT" -newer "$DEST"`" != "" ] ; then
cp "$INIT" "$DEST"
fi