commit d43ec1f95872c1f8701b08096c0bae8a1b532bd2
parent bc2bb9145e26626e81c43289441e9b28ff020eda
Author: triesap <tyson@radroots.org>
Date: Sun, 15 Feb 2026 17:41:16 +0000
ios: replace radrootscore submodule with tracked wrapper
- remove the radrootscore git submodule and drop .gitmodules
- add ios/radrootscore makefile wrapper that builds crates/app-ffi-swift
- route root ios make targets through the radrootscore wrapper makefile
- document wrapper usage and shared crate mapping in ios/radrootscore/readme
Diffstat:
6 files changed, 77 insertions(+), 48 deletions(-)
diff --git a/.gitmodules b/.gitmodules
@@ -1,3 +0,0 @@
-[submodule "RadrootsCore"]
- path = RadrootsCore
- url = ssh://git@git.radroots.dev:2222/radroots/app.git
diff --git a/Makefile b/Makefile
@@ -1,57 +1,21 @@
-CRATE := radroots-app-ffi
-ROOT := $(CURDIR)/RadrootsCore
-OUTDIR := $(ROOT)/target/xcframework
-
-FRAMEWORK_DEST := $(CURDIR)/RadrootsKit/Artifacts
-GENERATED_SWIFT := $(CURDIR)/RadrootsKit/Sources/RadrootsKit/Generated
-CONFIG_PATH := $(ROOT)/crates/ffi/uniffi.toml
-
-LIB_DEV := $(ROOT)/target/aarch64-apple-ios/release/libradroots_app_ffi.a
-LIB_SIM_ARM64 := $(ROOT)/target/aarch64-apple-ios-sim/release/libradroots_app_ffi.a
-HOST_DYLIB := $(ROOT)/target/release/libradroots_app_ffi.dylib
-
-HEADERS_DIR := $(OUTDIR)/headers
+WRAPPER_ROOT := $(CURDIR)/RadrootsCore
.PHONY: all clean build generate package bindings
-all: clean build generate package bindings
- @echo "Done."
- @echo " - XCFramework: $(FRAMEWORK_DEST)/RadrootsFFI.xcframework"
- @echo " - Swift bindings: $(GENERATED_SWIFT)/*.swift"
+all:
+ $(MAKE) -C $(WRAPPER_ROOT) all
clean:
- @echo "Cleaning output dirs..."
- rm -rf $(OUTDIR) $(FRAMEWORK_DEST) $(GENERATED_SWIFT)
- mkdir -p $(OUTDIR) $(FRAMEWORK_DEST) $(GENERATED_SWIFT)
+ $(MAKE) -C $(WRAPPER_ROOT) clean
build:
- @echo "Building $(CRATE) for iOS device + simulator..."
- cd $(ROOT) && cargo build -p $(CRATE) --release --target aarch64-apple-ios
- cd $(ROOT) && cargo build -p $(CRATE) --release --target aarch64-apple-ios-sim
-
- @echo "Building host cdylib for UniFFI (metadata)…"
- cd $(ROOT) && cargo build -p $(CRATE) --release
+ $(MAKE) -C $(WRAPPER_ROOT) build
generate:
- @echo "Generating Swift bindings with UniFFI (host dylib)…"
- cd $(ROOT) && cargo run -p $(CRATE) --bin uniffi-bindgen -- \
- generate --library $(HOST_DYLIB) \
- --language swift \
- --out-dir $(OUTDIR)/generated \
- --config $(CONFIG_PATH)
-
- @echo "Preparing headers..."
- mkdir -p $(HEADERS_DIR)
- cp $(OUTDIR)/generated/RadrootsFFI.h $(HEADERS_DIR)/
- cp $(OUTDIR)/generated/RadrootsFFI.modulemap $(HEADERS_DIR)/module.modulemap
+ $(MAKE) -C $(WRAPPER_ROOT) generate
package:
- @echo "Packaging RadrootsFFI.xcframework..."
- xcodebuild -create-xcframework \
- -library $(LIB_DEV) -headers $(HEADERS_DIR) \
- -library $(LIB_SIM_ARM64) -headers $(HEADERS_DIR) \
- -output $(FRAMEWORK_DEST)/RadrootsFFI.xcframework
+ $(MAKE) -C $(WRAPPER_ROOT) package
bindings:
- @echo "Copying Swift bindings into RadrootsKit..."
- cp $(OUTDIR)/generated/*.swift $(GENERATED_SWIFT)/
+ $(MAKE) -C $(WRAPPER_ROOT) bindings
diff --git a/RadrootsCore b/RadrootsCore
@@ -1 +0,0 @@
-Subproject commit 3fd6661c5bd4eeb1dea0d64d4743059efc5e9323
diff --git a/RadrootsCore/.gitignore b/RadrootsCore/.gitignore
@@ -0,0 +1 @@
+target/
diff --git a/RadrootsCore/Makefile b/RadrootsCore/Makefile
@@ -0,0 +1,59 @@
+CRATE := radroots-app-ffi-swift
+WRAPPER_ROOT := $(CURDIR)
+IOS_ROOT := $(abspath $(WRAPPER_ROOT)/..)
+CRATES_ROOT := $(abspath $(IOS_ROOT)/../crates)
+OUTDIR := $(WRAPPER_ROOT)/target/xcframework
+
+FRAMEWORK_DEST := $(IOS_ROOT)/RadrootsKit/Artifacts
+GENERATED_SWIFT := $(IOS_ROOT)/RadrootsKit/Sources/RadrootsKit/Generated
+CONFIG_PATH := $(CRATES_ROOT)/app-ffi-swift/uniffi.toml
+
+LIB_DEV := $(WRAPPER_ROOT)/target/aarch64-apple-ios/release/libradroots_app_ffi_swift.a
+LIB_SIM_ARM64 := $(WRAPPER_ROOT)/target/aarch64-apple-ios-sim/release/libradroots_app_ffi_swift.a
+HOST_DYLIB := $(WRAPPER_ROOT)/target/release/libradroots_app_ffi_swift.dylib
+
+HEADERS_DIR := $(OUTDIR)/headers
+
+.PHONY: all clean build generate package bindings
+
+all: clean build generate package bindings
+ @echo "done."
+ @echo " - xcframework: $(FRAMEWORK_DEST)/RadrootsFFI.xcframework"
+ @echo " - swift bindings: $(GENERATED_SWIFT)/*.swift"
+
+clean:
+ @echo "cleaning output dirs..."
+ rm -rf $(OUTDIR) $(FRAMEWORK_DEST) $(GENERATED_SWIFT)
+ mkdir -p $(OUTDIR) $(FRAMEWORK_DEST) $(GENERATED_SWIFT)
+
+build:
+ @echo "building $(CRATE) for ios device + simulator..."
+ cd $(CRATES_ROOT) && CARGO_TARGET_DIR=$(WRAPPER_ROOT)/target cargo build -p $(CRATE) --release --target aarch64-apple-ios
+ cd $(CRATES_ROOT) && CARGO_TARGET_DIR=$(WRAPPER_ROOT)/target cargo build -p $(CRATE) --release --target aarch64-apple-ios-sim
+
+ @echo "building host cdylib for uniffi metadata..."
+ cd $(CRATES_ROOT) && CARGO_TARGET_DIR=$(WRAPPER_ROOT)/target cargo build -p $(CRATE) --release
+
+generate:
+ @echo "generating swift bindings with uniffi..."
+ cd $(CRATES_ROOT) && CARGO_TARGET_DIR=$(WRAPPER_ROOT)/target cargo run -p $(CRATE) --bin uniffi-bindgen -- \
+ generate --library $(HOST_DYLIB) \
+ --language swift \
+ --out-dir $(OUTDIR)/generated \
+ --config $(CONFIG_PATH)
+
+ @echo "preparing headers..."
+ mkdir -p $(HEADERS_DIR)
+ cp $(OUTDIR)/generated/RadrootsFFI.h $(HEADERS_DIR)/
+ cp $(OUTDIR)/generated/RadrootsFFI.modulemap $(HEADERS_DIR)/module.modulemap
+
+package:
+ @echo "packaging RadrootsFFI.xcframework..."
+ xcodebuild -create-xcframework \
+ -library $(LIB_DEV) -headers $(HEADERS_DIR) \
+ -library $(LIB_SIM_ARM64) -headers $(HEADERS_DIR) \
+ -output $(FRAMEWORK_DEST)/RadrootsFFI.xcframework
+
+bindings:
+ @echo "copying swift bindings into RadrootsKit..."
+ cp $(OUTDIR)/generated/*.swift $(GENERATED_SWIFT)/
diff --git a/RadrootsCore/README.md b/RadrootsCore/README.md
@@ -0,0 +1,9 @@
+# RadrootsCore
+
+This directory is a thin iOS wrapper around shared Rust crates in `../crates`.
+
+- shared backend crate: `../crates/app-core`
+- swift ffi crate: `../crates/app-ffi-swift`
+- wasm crate: `../crates/app-wasm`
+
+Use `make -C ios/RadrootsCore` (or `make` from `ios/`) to build the Rust static libraries, generate UniFFI Swift bindings, and package `RadrootsFFI.xcframework` for `RadrootsKit`.