Makefile: auto-build cross Chez in jerboa-{linux,freebsd}-amd64 when absent

ober

6fc7dca19ecede4308b1e7ffd4700ff272c933ec

diff --git a/Makefile b/Makefile
index ec5290c..9c534f7 100644
--- a/Makefile
+++ b/Makefile
@@ -286,11 +286,14 @@ jerboa-cross: chez build mcp-check lsp-gen chez-cross
 	CC="$(CROSS_CC)" \
 	$(SCHEME) --script support/build-jerboa-multicall.ss
 
-# Convenience targets: assume `make chez-cross` already produced the cross Chez.
+# Convenience targets: build the cross Chez on demand (only if absent), then
+# the multicall. Re-running is fast once `.chez-cross-<m>` exists.
 jerboa-linux-amd64: chez build mcp-check lsp-gen
 	@command -v x86_64-linux-musl-gcc >/dev/null 2>&1 || { echo "ERROR: x86_64-linux-musl-gcc not on PATH" >&2; exit 1; }
-	@test -d "$(JERBOA_HOME)/.chez-cross-ta6le" || { echo "ERROR: .chez-cross-ta6le not found (make chez-cross CHEZ_TARGET_MACHINE=ta6le CROSS_CC=x86_64-linux-musl-gcc)" >&2; exit 1; }
-	@test -f "$(CHEZ_BUILD_DIR)/xc-ta6le/s/xpatch" || { echo "ERROR: ta6le xpatch not found" >&2; exit 1; }
+	@if test ! -d "$(JERBOA_HOME)/.chez-cross-ta6le" || test ! -f "$(CHEZ_BUILD_DIR)/xc-ta6le/s/xpatch"; then \
+		echo "=== cross Chez (ta6le) missing — building it first ==="; \
+		$(MAKE) chez-cross CHEZ_TARGET_MACHINE=ta6le CROSS_CC=x86_64-linux-musl-gcc; \
+	fi
 	@echo "=== Cross-building jerboa multicall: linux-amd64 (ta6le) ==="
 	@JERBOA_HOME=$(JERBOA_HOME) TARGET_MACHINE=ta6le \
 		JERBOA_CROSS_PREFIX=$(JERBOA_HOME)/.chez-cross-ta6le \
@@ -300,8 +303,10 @@ jerboa-linux-amd64: chez build mcp-check lsp-gen
 
 jerboa-freebsd-amd64: chez build mcp-check lsp-gen
 	@test -x "$(JERBOA_HOME)/support/cross-cc-freebsd-amd64" || { echo "ERROR: support/cross-cc-freebsd-amd64 not found/executable" >&2; exit 1; }
-	@test -d "$(JERBOA_HOME)/.chez-cross-ta6fb" || { echo "ERROR: .chez-cross-ta6fb not found (make chez-cross CHEZ_TARGET_MACHINE=ta6fb CROSS_CC=...)" >&2; exit 1; }
-	@test -f "$(CHEZ_BUILD_DIR)/xc-ta6fb/s/xpatch" || { echo "ERROR: ta6fb xpatch not found" >&2; exit 1; }
+	@if test ! -d "$(JERBOA_HOME)/.chez-cross-ta6fb" || test ! -f "$(CHEZ_BUILD_DIR)/xc-ta6fb/s/xpatch"; then \
+		echo "=== cross Chez (ta6fb) missing — building it first ==="; \
+		$(MAKE) chez-cross CHEZ_TARGET_MACHINE=ta6fb CROSS_CC="$(JERBOA_HOME)/support/cross-cc-freebsd-amd64"; \
+	fi
 	@echo "=== Cross-building jerboa multicall: freebsd-amd64 (ta6fb) ==="
 	@JERBOA_HOME=$(JERBOA_HOME) TARGET_MACHINE=ta6fb \
 		JERBOA_CROSS_PREFIX=$(JERBOA_HOME)/.chez-cross-ta6fb \