build: build jerboa-signal with installed jerbuild (no jerboa checkout)
ober
5d02d21bf708229232f8c1dbb5c50e0fb8fcbe34
--- 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 --- 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 ".") --- 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."