commit a28264830bb9f5a8b0812f0937835a62fde16d2a
parent 649b96d46fe36367daafcda6f7713dcb210f7a71
Author: triesap <tyson@radroots.org>
Date: Sun, 15 Feb 2026 18:28:14 +0000
build: align radrootscore makefile to shared ffi crate
- build ios ffi artifacts through crates/app-ffi-swift manifest path
- keep arm64 ios device and arm64 simulator targets as the default matrix
- keep rust build cache under ios/radrootscore/target and outputs in radrootskit
- update radrootscore readme to document the wrapper-driven shared crate flow
Diffstat:
2 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/RadrootsCore/Makefile b/RadrootsCore/Makefile
@@ -1,16 +1,18 @@
CRATE := radroots-app-ffi-swift
WRAPPER_ROOT := $(CURDIR)
IOS_ROOT := $(abspath $(WRAPPER_ROOT)/..)
-CRATES_ROOT := $(abspath $(IOS_ROOT)/../crates)
-OUTDIR := $(WRAPPER_ROOT)/target/xcframework
+CRATES_ROOT := $(abspath $(WRAPPER_ROOT)/../../crates)
+FFI_MANIFEST := $(CRATES_ROOT)/app-ffi-swift/Cargo.toml
+RUST_TARGET_DIR := $(WRAPPER_ROOT)/target
+OUTDIR := $(RUST_TARGET_DIR)/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
+LIB_DEV := $(RUST_TARGET_DIR)/aarch64-apple-ios/release/libradroots_app_ffi_swift.a
+LIB_SIM_ARM64 := $(RUST_TARGET_DIR)/aarch64-apple-ios-sim/release/libradroots_app_ffi_swift.a
+HOST_DYLIB := $(RUST_TARGET_DIR)/release/libradroots_app_ffi_swift.dylib
HEADERS_DIR := $(OUTDIR)/headers
@@ -28,15 +30,15 @@ clean:
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
+ cd $(WRAPPER_ROOT) && CARGO_TARGET_DIR=$(RUST_TARGET_DIR) cargo build --manifest-path $(FFI_MANIFEST) --release --target aarch64-apple-ios
+ cd $(WRAPPER_ROOT) && CARGO_TARGET_DIR=$(RUST_TARGET_DIR) cargo build --manifest-path $(FFI_MANIFEST) --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
+ cd $(WRAPPER_ROOT) && CARGO_TARGET_DIR=$(RUST_TARGET_DIR) cargo build --manifest-path $(FFI_MANIFEST) --release
generate:
@echo "generating swift bindings with uniffi..."
- cd $(CRATES_ROOT) && CARGO_TARGET_DIR=$(WRAPPER_ROOT)/target cargo run -p $(CRATE) --bin uniffi-bindgen -- \
+ cd $(WRAPPER_ROOT) && CARGO_TARGET_DIR=$(RUST_TARGET_DIR) cargo run --manifest-path $(FFI_MANIFEST) --bin uniffi-bindgen -- \
generate --library $(HOST_DYLIB) \
--language swift \
--out-dir $(OUTDIR)/generated \
diff --git a/RadrootsCore/README.md b/RadrootsCore/README.md
@@ -16,6 +16,7 @@ When crates.io releases are ready, these paths can be switched to versioned depe
## Build flow
Use `make -C ios/RadrootsCore` (or `make` from `ios/`) to:
-- build Rust libs from shared crates
+- build from `../../crates/app-ffi-swift/Cargo.toml`
+- write Rust build artifacts under `ios/RadrootsCore/target`
- generate UniFFI Swift bindings
- package `RadrootsFFI.xcframework` into `ios/RadrootsKit/Artifacts`