424 lines
12 KiB
Diff
424 lines
12 KiB
Diff
|
From 82157f5b3fb9f71ad7fc978c428d423d06a4a0df Mon Sep 17 00:00:00 2001
|
||
|
From: Philip McGrath <philip@philipmcgrath.com>
|
||
|
Date: Wed, 28 Feb 2024 19:41:22 -0500
|
||
|
Subject: [PATCH 1/2] Chez Scheme: Repairs and improvements for building with
|
||
|
external dependencies
|
||
|
|
||
|
* configure: support `ZUO=<zuo>`
|
||
|
|
||
|
Supplying `ZUO=<zuo>` skips the submodule check in `configure`
|
||
|
and configures the generated makefile not to build or remove Zuo.
|
||
|
|
||
|
* configure: support `STEXLIB=<stex>`
|
||
|
|
||
|
For compatibility with older scripts, when not explicitly configured,
|
||
|
continue to honor the `STEXLIB` environment variable at build time.
|
||
|
|
||
|
(cherry picked from commit 694fbd47a125c7fde10a328c6fda199dac19f802)
|
||
|
---
|
||
|
racket/src/ChezScheme/BUILDING | 5 ++--
|
||
|
racket/src/ChezScheme/build.zuo | 13 +++++++---
|
||
|
racket/src/ChezScheme/configure | 27 ++++++++++++++++++++-
|
||
|
racket/src/ChezScheme/makefiles/Makefile.in | 6 ++---
|
||
|
4 files changed, 40 insertions(+), 11 deletions(-)
|
||
|
|
||
|
diff --git a/racket/src/ChezScheme/BUILDING b/racket/src/ChezScheme/BUILDING
|
||
|
index 50fde27771..2df29b5bd8 100644
|
||
|
--- a/racket/src/ChezScheme/BUILDING
|
||
|
+++ b/racket/src/ChezScheme/BUILDING
|
||
|
@@ -155,7 +155,8 @@ information on the supported options.
|
||
|
The generated makefile mostly just ensures that a `zuo` executable is
|
||
|
built in a `bin` directory, and then it defers the actual build work
|
||
|
to `zuo`, which uses the "main.zuo" file. If you have `zuo` installed,
|
||
|
-you can use `zuo` directly instead of `make`. In general, instead of
|
||
|
+you can use `zuo` directly instead of `make`: in that case, you may
|
||
|
+wish to use `./configure ZUO=<zuo>`. In general, instead of
|
||
|
the command `make X` to build target `X` as described below, you can
|
||
|
use `zuo . X` (or `bin/zuo . X` after `bin/zuo` is built).
|
||
|
|
||
|
@@ -339,7 +340,7 @@ The makefile supports several targets:
|
||
|
* `make clean`
|
||
|
|
||
|
Removes all built elements from the workarea, and then removes
|
||
|
- `bin/zuo`.
|
||
|
+ `bin/zuo` (unless configured with `ZUO=<zuo>`).
|
||
|
|
||
|
|
||
|
WINDOWS VIA COMMAND PROMPT
|
||
|
diff --git a/racket/src/ChezScheme/build.zuo b/racket/src/ChezScheme/build.zuo
|
||
|
index a211632a89..432cc6e5a1 100644
|
||
|
--- a/racket/src/ChezScheme/build.zuo
|
||
|
+++ b/racket/src/ChezScheme/build.zuo
|
||
|
@@ -218,10 +218,15 @@
|
||
|
token))
|
||
|
|
||
|
(define stexlib
|
||
|
- (let ((found (assoc "STEXLIB" (hash-ref (runtime-env) 'env))))
|
||
|
- (if found
|
||
|
- (cdr found)
|
||
|
- (at-source "stex"))))
|
||
|
+ (let ([configured (hash-ref config 'STEXLIB "")]
|
||
|
+ [env (assoc "STEXLIB" (hash-ref (runtime-env) 'env))])
|
||
|
+ (cond
|
||
|
+ [(not (equal? "" configured))
|
||
|
+ configured]
|
||
|
+ [env
|
||
|
+ (cdr env)]
|
||
|
+ [else
|
||
|
+ (at-source "stex")])))
|
||
|
(define stex-sources
|
||
|
(source-tree stexlib))
|
||
|
|
||
|
diff --git a/racket/src/ChezScheme/configure b/racket/src/ChezScheme/configure
|
||
|
index 721d1d1335..f88c6f7625 100755
|
||
|
--- a/racket/src/ChezScheme/configure
|
||
|
+++ b/racket/src/ChezScheme/configure
|
||
|
@@ -93,6 +93,7 @@ default_warning_flags="-Wpointer-arith -Wall -Wextra -Wno-implicit-fallthrough"
|
||
|
CFLAGS_ADD=
|
||
|
zlibLib=
|
||
|
LZ4Lib=
|
||
|
+STEXLIB=
|
||
|
Kernel=KernelLib
|
||
|
buildKernelOnly=no
|
||
|
enableFrompb=yes
|
||
|
@@ -102,6 +103,7 @@ empetite=no
|
||
|
moreBootFiles=
|
||
|
preloadBootFiles=
|
||
|
alwaysUseBootFile=
|
||
|
+zuoExternal=
|
||
|
|
||
|
CONFIG_UNAME=`uname`
|
||
|
|
||
|
@@ -442,6 +444,12 @@ while [ $# != 0 ] ; do
|
||
|
LZ4=*)
|
||
|
LZ4Lib=`echo $1 | sed -e 's/^LZ4=//'`
|
||
|
;;
|
||
|
+ STEXLIB=*)
|
||
|
+ STEXLIB=`echo $1 | sed -e 's/^STEXLIB=//'`
|
||
|
+ ;;
|
||
|
+ ZUO=*)
|
||
|
+ zuoExternal=`echo $1 | sed -e 's/^ZUO=//'`
|
||
|
+ ;;
|
||
|
*)
|
||
|
echo "option '$1' unrecognized or missing an argument; try $0 --help"
|
||
|
exit 1
|
||
|
@@ -667,6 +675,8 @@ if [ "$help" = "yes" ]; then
|
||
|
echo " STRIP=<strip> executable stripper"
|
||
|
echo " ZLIB=<lib> link to <lib> instead of own zlib"
|
||
|
echo " LZ4=<lib> link to <lib> instead of own LZ4"
|
||
|
+ echo " STEXLIB=<stex> build docs with <stex> instead of own stex"
|
||
|
+ echo " ZUO=<zuo> build with <zuo> instead of own Zuo"
|
||
|
echo ""
|
||
|
echo "Available machine types: $machs"
|
||
|
echo ""
|
||
|
@@ -869,6 +879,16 @@ if [ "$addflags" = "yes" ] ; then
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
+if [ "${zuoExternal}" = "" ] ; then
|
||
|
+ ZUO="bin/zuo"
|
||
|
+ RM_ZUO="rm -f bin/zuo"
|
||
|
+ ZUO_TARGET="bin/zuo"
|
||
|
+else
|
||
|
+ ZUO="${zuoExternal}"
|
||
|
+ RM_ZUO="@echo 'Not cleaning external ${zuoExternal}'"
|
||
|
+ ZUO_TARGET="DoNotBuildZuo"
|
||
|
+fi
|
||
|
+
|
||
|
# more compile and link flags for c/Mf-unix and mats/Mf-unix
|
||
|
mdinclude=
|
||
|
mdcppflags=
|
||
|
@@ -1039,7 +1059,7 @@ cp "$srcdir"/makefiles/buildmain.zuo main.zuo
|
||
|
# Some idea, but in the workarea, so it refers to "workarea.zuo" here:
|
||
|
cp "$srcdir"/makefiles/workmain.zuo $w/main.zuo
|
||
|
|
||
|
-# The content of "$w/Makefile" records configuration decisions,
|
||
|
+# The content of "$w/Mf-config" records configuration decisions,
|
||
|
# and the Zuo build script takes it from there
|
||
|
cat > $w/Mf-config << END
|
||
|
srcdir=$srcdir
|
||
|
@@ -1075,6 +1095,7 @@ cursesLib=$cursesLib
|
||
|
ncursesLib=$ncursesLib
|
||
|
zlibLib=$zlibLib
|
||
|
LZ4Lib=$LZ4Lib
|
||
|
+STEXLIB=$STEXLIB
|
||
|
warningFlags=$warningFlags
|
||
|
Kernel=$Kernel
|
||
|
installscriptname=$installscriptname
|
||
|
@@ -1086,6 +1107,10 @@ preloadBootFiles=$preloadBootFiles
|
||
|
alwaysUseBootFile=$alwaysUseBootFile
|
||
|
relativeBootFiles=$relativeBootFiles
|
||
|
|
||
|
+ZUO=$ZUO
|
||
|
+RM_ZUO=$RM_ZUO
|
||
|
+ZUO_TARGET=$ZUO_TARGET
|
||
|
+
|
||
|
InstallBin=$installbin
|
||
|
InstallLib=$installlib
|
||
|
InstallMan=$installman/man1
|
||
|
diff --git a/racket/src/ChezScheme/makefiles/Makefile.in b/racket/src/ChezScheme/makefiles/Makefile.in
|
||
|
index cfdd0230a3..4865bf2e2f 100644
|
||
|
--- a/racket/src/ChezScheme/makefiles/Makefile.in
|
||
|
+++ b/racket/src/ChezScheme/makefiles/Makefile.in
|
||
|
@@ -3,8 +3,6 @@ workarea=$(w)
|
||
|
|
||
|
include $(workarea)/Mf-config
|
||
|
|
||
|
-ZUO=bin/zuo
|
||
|
-
|
||
|
.PHONY: build
|
||
|
build: $(ZUO)
|
||
|
+ $(ZUO) $(workarea) MAKE="$(MAKE)"
|
||
|
@@ -140,9 +138,9 @@ pkg: $(ZUO)
|
||
|
.PHONY: clean
|
||
|
clean: $(ZUO)
|
||
|
+ $(ZUO) $(workarea) clean MAKE="$(MAKE)"
|
||
|
- rm -f bin/zuo
|
||
|
+ $(RM_ZUO)
|
||
|
|
||
|
# Using `+` here means that $(ZUO) gets built even if `-n`/`--dry-run` is provided to `make`
|
||
|
-$(ZUO): $(srcdir)/../zuo/zuo.c
|
||
|
+$(ZUO_TARGET): $(srcdir)/../zuo/zuo.c
|
||
|
+ mkdir -p bin
|
||
|
+ $(CC_FOR_BUILD) -DZUO_LIB_PATH='"'"$(upsrcdir)/../zuo/lib"'"' -o $(ZUO) $(srcdir)/../zuo/zuo.c
|
||
|
|
||
|
base-commit: 78fef00d4d16a79fdf6ab31924b3a80cadf4b368
|
||
|
--
|
||
|
2.41.0
|
||
|
|
||
|
|
||
|
From e2bc69c5ce7437dd9a1b30ac1b12b3a56872c491 Mon Sep 17 00:00:00 2001
|
||
|
From: Matthew Flatt <mflatt@racket-lang.org>
|
||
|
Date: Sun, 10 Mar 2024 09:13:40 -0600
|
||
|
Subject: [PATCH 2/2] Chez Scheme: adjust `configure ZUO=<command>` support
|
||
|
|
||
|
Continuing from 694fbd47a1, adjust the generated makefile so the
|
||
|
supplied `<command>` is not a makefile dependency. That way, `ZUO=zuo`
|
||
|
works if `zuo` is installed and the current build directory is not the
|
||
|
source directory. (The `zuo` executable is a dependency in a real and
|
||
|
relevant sense, but not in the sense of dependencies that we normally
|
||
|
track in makefiles.)
|
||
|
|
||
|
Also adapt the makefile for the case that `ZUO=...` is not supplied
|
||
|
and the build directory is not the source directory, in which case
|
||
|
`ZUO_LIB_PATH` needs to be relative to the source directory.
|
||
|
|
||
|
Using `make ZUO=zuo` can also work, but in that case, `bin/zuo` is
|
||
|
still built as a dependency. It's possible that some portable makefile
|
||
|
magic could overcome that limitation, but it doesn't seem important.
|
||
|
|
||
|
(cherry picked from commit 28157ba88d48fe645563f46f6c00d6626b3428fa)
|
||
|
---
|
||
|
racket/src/ChezScheme/configure | 3 +
|
||
|
racket/src/ChezScheme/makefiles/Makefile.in | 70 +++++++++++----------
|
||
|
2 files changed, 40 insertions(+), 33 deletions(-)
|
||
|
|
||
|
diff --git a/racket/src/ChezScheme/configure b/racket/src/ChezScheme/configure
|
||
|
index f88c6f7625..201dbe580f 100755
|
||
|
--- a/racket/src/ChezScheme/configure
|
||
|
+++ b/racket/src/ChezScheme/configure
|
||
|
@@ -881,10 +881,12 @@ fi
|
||
|
|
||
|
if [ "${zuoExternal}" = "" ] ; then
|
||
|
ZUO="bin/zuo"
|
||
|
+ ZUO_DEP="${ZUO}"
|
||
|
RM_ZUO="rm -f bin/zuo"
|
||
|
ZUO_TARGET="bin/zuo"
|
||
|
else
|
||
|
ZUO="${zuoExternal}"
|
||
|
+ ZUO_DEP=""
|
||
|
RM_ZUO="@echo 'Not cleaning external ${zuoExternal}'"
|
||
|
ZUO_TARGET="DoNotBuildZuo"
|
||
|
fi
|
||
|
@@ -1108,6 +1110,7 @@ alwaysUseBootFile=$alwaysUseBootFile
|
||
|
relativeBootFiles=$relativeBootFiles
|
||
|
|
||
|
ZUO=$ZUO
|
||
|
+ZUO_DEP=$ZUO_DEP
|
||
|
RM_ZUO=$RM_ZUO
|
||
|
ZUO_TARGET=$ZUO_TARGET
|
||
|
|
||
|
diff --git a/racket/src/ChezScheme/makefiles/Makefile.in b/racket/src/ChezScheme/makefiles/Makefile.in
|
||
|
index 4865bf2e2f..5ce237178e 100644
|
||
|
--- a/racket/src/ChezScheme/makefiles/Makefile.in
|
||
|
+++ b/racket/src/ChezScheme/makefiles/Makefile.in
|
||
|
@@ -4,51 +4,55 @@ workarea=$(w)
|
||
|
include $(workarea)/Mf-config
|
||
|
|
||
|
.PHONY: build
|
||
|
-build: $(ZUO)
|
||
|
+build: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) MAKE="$(MAKE)"
|
||
|
|
||
|
.PHONY: run
|
||
|
-run: $(ZUO)
|
||
|
+run: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) run
|
||
|
|
||
|
.PHONY: kernel
|
||
|
-kernel: $(ZUO)
|
||
|
+kernel: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) kernel MAKE="$(MAKE)"
|
||
|
|
||
|
.PHONY: install
|
||
|
-install: $(ZUO)
|
||
|
+install: $(ZUO_DEP)
|
||
|
$(ZUO) $(workarea) install MAKE="$(MAKE)"
|
||
|
|
||
|
.PHONY: uninstall
|
||
|
-uninstall: $(ZUO)
|
||
|
+uninstall: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) uninstall MAKE="$(MAKE)"
|
||
|
|
||
|
-.PHONY: test
|
||
|
-test: $(ZUO)
|
||
|
- + $(ZUO) $(workarea) test MAKE="$(MAKE)"
|
||
|
+.PHONY: test-one
|
||
|
+test-one: $(ZUO_DEP)
|
||
|
+ + $(ZUO) $(workarea) test-one MAKE="$(MAKE)"
|
||
|
|
||
|
.PHONY: test-some-fast
|
||
|
-test-some-fast: $(ZUO)
|
||
|
+test-some-fast: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) test-some-fast MAKE="$(MAKE)"
|
||
|
|
||
|
.PHONY: test-some
|
||
|
-test-some: $(ZUO)
|
||
|
+test-some: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) test-some MAKE="$(MAKE)"
|
||
|
|
||
|
+.PHONY: test
|
||
|
+test: $(ZUO_DEP)
|
||
|
+ + $(ZUO) $(workarea) test MAKE="$(MAKE)"
|
||
|
+
|
||
|
.PHONY: test-more
|
||
|
-test-more: $(ZUO)
|
||
|
+test-more: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) test-more MAKE="$(MAKE)"
|
||
|
|
||
|
.PHONY: coverage
|
||
|
-coverage: $(ZUO)
|
||
|
+coverage: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) coverage MAKE="$(MAKE)"
|
||
|
|
||
|
.PHONY: bootfiles
|
||
|
-bootfiles: $(ZUO)
|
||
|
+bootfiles: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) bootfiles MAKE="$(MAKE)"
|
||
|
|
||
|
.PHONY: reset
|
||
|
-reset: $(ZUO)
|
||
|
+reset: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) reset MAKE="$(MAKE)"
|
||
|
|
||
|
# Supply XM=<machine> to build boot files for <machine>
|
||
|
@@ -57,86 +61,86 @@ boot:
|
||
|
+ $(ZUO) $(workarea) boot "$(XM)" MAKE="$(MAKE)"
|
||
|
|
||
|
# `<machine>.boot` as alias for `boot XM=<machine>`
|
||
|
-%.boot: $(ZUO)
|
||
|
+%.boot: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) boot $* MAKE="$(MAKE)"
|
||
|
|
||
|
.PHONY: auto.boot
|
||
|
-auto.boot: $(ZUO)
|
||
|
+auto.boot: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) boot MAKE="$(MAKE)"
|
||
|
|
||
|
SCHEME=scheme
|
||
|
|
||
|
.PHONY: cross.boot
|
||
|
-cross.boot: $(ZUO)
|
||
|
+cross.boot: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) boot SCHEME="$(SCHEME)" MAKE="$(MAKE)"
|
||
|
|
||
|
.PHONY: re.boot
|
||
|
-re.boot: $(ZUO)
|
||
|
+re.boot: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) reboot SCHEME="$(SCHEME)"
|
||
|
|
||
|
# Supply XM=<machine> to build boot files for <machine>
|
||
|
# with o=3 d=0 for the cross compiler, and only after
|
||
|
# building the kernel for the configured machine
|
||
|
.PHONY: bootquick
|
||
|
-bootquick: $(ZUO)
|
||
|
+bootquick: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) bootquick "$(XM)" MAKE="$(MAKE)"
|
||
|
|
||
|
# `<machine>.bootquick` as alias for `boot XM=<machine>`
|
||
|
-%.bootquick: $(ZUO)
|
||
|
+%.bootquick: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) bootquick $* MAKE="$(MAKE)"
|
||
|
|
||
|
-auto.bootquick: $(ZUO)
|
||
|
+auto.bootquick: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) bootquick MAKE="$(MAKE)"
|
||
|
|
||
|
# Supply XM=<machine>-<tag>.bootpbchunk to repackage boot files for
|
||
|
# <machine> with pbchunk sources, including additional
|
||
|
# boot files
|
||
|
.PHONY: bootpbchunk
|
||
|
-bootpbchunk: $(ZUO)
|
||
|
+bootpbchunk: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) bootpbchunk "$(XM)" $(ARGS) MAKE="$(MAKE)"
|
||
|
|
||
|
# `<machine>.bootpbchunk` as alias for `pbchunk XM=<machine>`
|
||
|
-%.bootpbchunk: $(ZUO)
|
||
|
+%.bootpbchunk: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) bootpbchunk $* $(ARGS) MAKE="$(MAKE)"
|
||
|
|
||
|
.PHONY: docs
|
||
|
-docs: build $(ZUO)
|
||
|
+docs: build $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) docs MAKE="$(MAKE)"
|
||
|
|
||
|
.PHONY: csug
|
||
|
-csug: build $(ZUO)
|
||
|
+csug: build $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) csug MAKE="$(MAKE)"
|
||
|
|
||
|
.PHONY: release_notes
|
||
|
-release_notes: build $(ZUO)
|
||
|
+release_notes: build $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) release_notes MAKE="$(MAKE)"
|
||
|
|
||
|
.PHONY: install-docs
|
||
|
-install-docs: build $(ZUO)
|
||
|
+install-docs: build $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) install-docs MAKE="$(MAKE)"
|
||
|
|
||
|
.PHONY: install-csug
|
||
|
-install-csug: build $(ZUO)
|
||
|
+install-csug: build $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) install-csug MAKE="$(MAKE)"
|
||
|
|
||
|
.PHONY: install-release_notes
|
||
|
-install-release_notes: build $(ZUO)
|
||
|
+install-release_notes: build $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) install-release_notes MAKE="$(MAKE)"
|
||
|
|
||
|
.PHONY: bintar
|
||
|
-bintar: $(ZUO)
|
||
|
+bintar: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) bintar MAKE="$(MAKE)"
|
||
|
|
||
|
.PHONY: rpm
|
||
|
-rpm: $(ZUO)
|
||
|
+rpm: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) rpm MAKE="$(MAKE)"
|
||
|
|
||
|
.PHONY: pkg
|
||
|
-pkg: $(ZUO)
|
||
|
+pkg: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) pkg MAKE="$(MAKE)"
|
||
|
|
||
|
.PHONY: clean
|
||
|
-clean: $(ZUO)
|
||
|
+clean: $(ZUO_DEP)
|
||
|
+ $(ZUO) $(workarea) clean MAKE="$(MAKE)"
|
||
|
$(RM_ZUO)
|
||
|
|
||
|
--
|
||
|
2.41.0
|
||
|
|