build: migrate from github.com to sr.ht; convert submodules to vendor-deps

ober

e1e2c88d8d0ccf36d3e208f1170a9c6568967421

diff --git a/.gitignore b/.gitignore
index 8fe30cf..c7e96da 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,9 @@
 .jerbuild-hashes
 jcode.json
 
+# Vendored dependencies cloned at build time by `make vendor-deps`
+/vendor/
+
 # Generated Scheme libraries (built from src/**/*.ss by jerbuild)
 /lib/
 /jcode_tui_shim.dylib
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index eb9c1f4..0000000
--- a/.gitmodules
+++ /dev/null
@@ -1,9 +0,0 @@
-[submodule "vendor/chez-sqlite"]
-	path = vendor/chez-sqlite
-	url = https://github.com/ober/chez-sqlite.git
-[submodule "vendor/termbox2"]
-	path = vendor/termbox2
-	url = https://github.com/termbox/termbox2.git
-[submodule "vendor/jerboa-websearch"]
-	path = vendor/jerboa-websearch
-	url = git@git.sr.ht:~lisp/jerboa-websearch
diff --git a/Makefile b/Makefile
index 095423d..d65bba7 100644
--- a/Makefile
+++ b/Makefile
@@ -15,7 +15,7 @@ TUI_SHIM_DIR   := $(CURDIR)/vendor/termbox2
 NATIVE_LIB_DIR := $(JERBOA_HOME)/lib
 LDPATH         := $(SHIM_DIR):$(TUI_SHIM_DIR):$(SQLITE_LIB_DIR):$(NATIVE_LIB_DIR)
 
-.PHONY: all help build gen run test test-providers clean repl binary install tui-shim run-tui jcode-musl linux linux-amd64 linux-arm64 jcode-linux-amd64 linux-docker linux-check linux-local docker test-linux test-linux-amd64 purge-stale sqlite-shim android android-clean
+.PHONY: all help build gen run test test-providers clean repl binary install tui-shim run-tui jcode-musl linux linux-amd64 linux-arm64 jcode-linux-amd64 linux-docker linux-check linux-local docker test-linux test-linux-amd64 purge-stale sqlite-shim android android-clean vendor-deps vendor-clean
 
 all: help
 
@@ -75,7 +75,7 @@ purge-stale:
 # ── chez-sqlite shim build ──────────────────────────────────────────────────
 # Rebuild the FFI shim if its C source is newer than the .so. This catches
 # the case where vendor/chez-sqlite is updated but the .so isn't refreshed.
-sqlite-shim:
+sqlite-shim: vendor/chez-sqlite
 	@if [ ! -f vendor/chez-sqlite/chez_sqlite_shim.so ] || \
 	    [ vendor/chez-sqlite/chez_sqlite_shim.c -nt vendor/chez-sqlite/chez_sqlite_shim.so ]; then \
 	  echo "=== Rebuilding chez_sqlite_shim.so ==="; \
@@ -112,7 +112,33 @@ native-so:
 	  ln -sf libjerboa_native.dylib "$(NATIVE_SO)"; \
 	fi
 
-gen: purge-stale sqlite-shim native-so
+# ─── Vendor Dependencies ─────────────────────────────────────────────────────
+# Clone dependency repos into vendor/ at build time. vendor/ is .gitignored;
+# we do NOT use git submodules — every target that needs vendor/<x> depends on
+# vendor-deps so a fresh checkout populates itself.
+
+vendor-deps: vendor/chez-sqlite vendor/termbox2 vendor/jerboa-websearch
+
+vendor/chez-sqlite:
+	@mkdir -p vendor
+	@echo "=== Cloning chez-sqlite into vendor/ ==="
+	@git clone --depth 1 git@git.sr.ht:~lisp/chez-sqlite vendor/chez-sqlite
+	@rm -f vendor/chez-sqlite/chez_sqlite_shim.so
+
+vendor/termbox2:
+	@mkdir -p vendor
+	@echo "=== Cloning termbox2 (upstream) into vendor/ ==="
+	@git clone --depth 1 https://github.com/termbox/termbox2.git vendor/termbox2
+
+vendor/jerboa-websearch:
+	@mkdir -p vendor
+	@echo "=== Cloning jerboa-websearch into vendor/ ==="
+	@git clone --depth 1 git@git.sr.ht:~lisp/jerboa-websearch vendor/jerboa-websearch
+
+vendor-clean:
+	rm -rf vendor
+
+gen: vendor-deps purge-stale sqlite-shim native-so
 	$(JERBUILD) src lib
 
 build: gen
@@ -123,7 +149,7 @@ run:
 	DYLD_LIBRARY_PATH=$(LDPATH) LD_LIBRARY_PATH=$(LDPATH) \
 	$(SCHEME) $(LIBDIRS) --script main.ss
 
-tui-shim:
+tui-shim: vendor/termbox2
 	@test -f $(TUI_SHIM_DIR)/jcode_tui_shim.dylib \
 	  -o -f $(TUI_SHIM_DIR)/jcode_tui_shim.so || \
 	  cc -shared -fPIC -DTB_OPT_ATTR_W=32 \
diff --git a/vendor/chez-sqlite b/vendor/chez-sqlite
deleted file mode 160000
index 388d081..0000000
--- a/vendor/chez-sqlite
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 388d0814b86c84e53544d2077f0616f38d047185
diff --git a/vendor/jerboa-websearch b/vendor/jerboa-websearch
deleted file mode 160000
index c1f19ff..0000000
--- a/vendor/jerboa-websearch
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit c1f19ffbec557de5275d32e64443812a305f8f3e
diff --git a/vendor/termbox2 b/vendor/termbox2
deleted file mode 160000
index 605398f..0000000
--- a/vendor/termbox2
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 605398fa79108412976191e062ea14bd4bd30213