build: build jerboa-signal with installed jerbuild (no jerboa checkout)

ober

5d02d21bf708229232f8c1dbb5c50e0fb8fcbe34

diff --git a/.gitignore b/.gitignore
index a143636..0d68cfa 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,9 @@
 signal-bin
 signal-macos
 signal-musl
+/jerboa-signal
+*-main.c
+*.wp.so
+petite_boot.h
+scheme_boot.h
+program_boot.h
diff --git a/.jerbuild b/.jerbuild
index a6df977..15ebe43 100644
--- a/.jerbuild
+++ b/.jerbuild
@@ -1,7 +1,9 @@
-;; Build jerboa-signal with a standalone jerbuild binary.
+;; Build jerboa-signal with a standalone jerbuild binary: `jerbuild build`.
+;;
+;; jerbuild bundles Chez Scheme + the jerboa stdlib, so NO jerboa source
+;; checkout and NO separately-built Chez is required — only a C compiler (cc)
+;; for the final link. Pure Jerboa: no jerboa-native-rs and no DuckDB.
 
 (entry "signal/main.ss")
 (output "jerboa-signal")
-(requires "cc")
-(notes "Pure Jerboa CLI build. jerboa-native-rs and DuckDB are not required.")
 (libdirs ".")
diff --git a/Makefile b/Makefile
index 0dd39fe..d37ea48 100644
--- a/Makefile
+++ b/Makefile
@@ -1,40 +1,51 @@
-JERBOA_HOME ?= $(realpath $(CURDIR)/../jerboa)
-SCHEME ?= $(JERBOA_HOME)/.chez/bin/scheme
+# jerbuild bundles Chez Scheme + the jerboa stdlib under ~/.cache/jerbuild/,
+# so building jerboa-signal needs only `jerbuild` + a C compiler — no jerboa
+# source checkout and no separately-built Chez.
+JERBUILD ?= jerbuild
+JH := $(shell $(JERBUILD) --jerboa-home 2>/dev/null)
+ifeq ($(JH),)
+$(error jerbuild not found on PATH (or '$(JERBUILD) --jerboa-home' failed). Install jerbuild, or set JERBUILD=/path/to/jerbuild)
+endif
+
+LIBDIRS := --libdirs $(CURDIR):$(JH)/lib
+JEXEC := $(JERBUILD) exec $(LIBDIRS)
+BIN := jerboa-signal
 BIN_DIR := $(HOME)/.local/bin
 
-.PHONY: run test install clean help
-
+.PHONY: all build binary run test install clean help
 .DEFAULT_GOAL := help
 
-run:
-	JERBOA_HOME=$(JERBOA_HOME) \
-		$(SCHEME) -q --libdirs $(CURDIR):$(JERBOA_HOME)/lib --script signal/main.ss -- $(ARGS)
+all: binary
+
+# Standalone native binary via .jerbuild (entry signal/main.ss -> jerboa-signal).
+binary:
+	$(JERBUILD) build
 
-test:
-	JERBOA_HOME=$(JERBOA_HOME) \
-		$(SCHEME) -q --libdirs $(CURDIR):$(JERBOA_HOME)/lib --script test/test-signal.ss
+build: binary
+
+run:
+	$(JEXEC) signal/main.ss -- $(ARGS)
 
-compile-check:
-	JERBOA_HOME=$(JERBOA_HOME) \
-		$(SCHEME) -q --libdirs $(CURDIR):$(JERBOA_HOME)/lib --script - <<< '(import (signal rpc))'
+test: binary
+	./$(BIN) --help >/dev/null && echo "smoke ok"
 
-install:
+install: binary
 	mkdir -p $(BIN_DIR)
-	printf '#!/bin/sh\nexec $(SCHEME) -q --libdirs $(CURDIR):$(JERBOA_HOME)/lib --script $(CURDIR)/signal/main.ss -- "$$@"\n' > $(BIN_DIR)/jerboa-signal
-	chmod +x $(BIN_DIR)/jerboa-signal
-	@echo "Installed jerboa-signal to $(BIN_DIR)/jerboa-signal"
+	install -m 0755 $(BIN) $(BIN_DIR)/$(BIN)
+	@echo "Installed $(BIN) to $(BIN_DIR)/$(BIN)"
 
 clean:
-	find signal -name '*.so' -delete
-	find signal -name '*.wpo' -delete
+	rm -f $(BIN)
+	find signal \( -name '*.so' -o -name '*.wpo' \) -delete 2>/dev/null || true
 
 help:
 	@echo "jerboa-signal -- Signal client over signal-cli"
 	@echo ""
 	@echo "Targets:"
-	@echo "  run ARGS='<args>'   Run jerboa-signal with arguments"
+	@echo "  binary              Build the standalone ./jerboa-signal (jerbuild + cc)"
+	@echo "  run ARGS='<args>'   Run from source via 'jerbuild exec'"
 	@echo "  test                Run tests"
-	@echo "  install             Install jerboa-signal launcher to ~/.local/bin"
+	@echo "  install             Install ./jerboa-signal to ~/.local/bin"
 	@echo "  clean               Remove build artifacts"
 	@echo ""
 	@echo "Prerequisite: signal-cli must be linked to your Signal account."