fixing openssl build

This commit is contained in:
Matt Hess
2026-02-25 05:10:40 +00:00
parent ae4a5de809
commit 04f3fc4da7
2 changed files with 39 additions and 14 deletions
Generated
+1
View File
@@ -2169,6 +2169,7 @@ dependencies = [
name = "salvium-multisig"
version = "1.0.7-r001"
dependencies = [
"curve25519-dalek",
"hex",
"rand 0.8.5",
"salvium-crypto",
+38 -14
View File
@@ -28,24 +28,48 @@ FRAMEWORK_NAMES=( "SalviumCrypto" "SalviumFfi" )
echo "==> Building Salvium libraries for iOS targets..."
# Minimum iOS version — must be consistent across Rust and C compilation.
# Prevents ___chkstk_darwin linker errors from vendored C code (OpenSSL/SQLCipher)
# being compiled with macOS settings instead of iOS.
# Minimum iOS version — consistent across Rust and all vendored C compilation.
export IPHONEOS_DEPLOYMENT_TARGET="14.0"
# Set cross-compilation C compiler per target so vendored C builds (openssl-sys,
# libsqlite3-sys) use the correct iOS SDK instead of the macOS host SDK.
export CC_aarch64_apple_ios="$(xcrun --sdk iphoneos --find clang)"
export CFLAGS_aarch64_apple_ios="-isysroot $(xcrun --sdk iphoneos --show-sdk-path) -mios-version-min=${IPHONEOS_DEPLOYMENT_TARGET}"
export CC_aarch64_apple_ios_sim="$(xcrun --sdk iphonesimulator --find clang)"
export CFLAGS_aarch64_apple_ios_sim="-isysroot $(xcrun --sdk iphonesimulator --show-sdk-path) -mios-simulator-version-min=${IPHONEOS_DEPLOYMENT_TARGET}"
export CC_x86_64_apple_ios="$(xcrun --sdk iphonesimulator --find clang)"
export CFLAGS_x86_64_apple_ios="-isysroot $(xcrun --sdk iphonesimulator --show-sdk-path) -mios-simulator-version-min=${IPHONEOS_DEPLOYMENT_TARGET}"
for target in "${TARGETS[@]}"; do
echo " -> $target"
# Determine the correct Apple SDK for this target
case "$target" in
aarch64-apple-ios)
sdk="iphoneos"
min_ver_flag="-mios-version-min=${IPHONEOS_DEPLOYMENT_TARGET}"
;;
*)
sdk="iphonesimulator"
min_ver_flag="-mios-simulator-version-min=${IPHONEOS_DEPLOYMENT_TARGET}"
;;
esac
SDK_PATH="$(xcrun --sdk "$sdk" --show-sdk-path)"
CC_PATH="$(xcrun --sdk "$sdk" --find clang)"
AR_PATH="$(xcrun --sdk "$sdk" --find ar)"
RANLIB_PATH="$(xcrun --sdk "$sdk" --find ranlib)"
# Env var key: aarch64-apple-ios -> aarch64_apple_ios
target_env="${target//-/_}"
# ── cc crate (libsqlite3-sys / SQLCipher build) ──
export "CC_${target_env}=${CC_PATH}"
export "CFLAGS_${target_env}=-isysroot ${SDK_PATH} ${min_ver_flag}"
export "AR_${target_env}=${AR_PATH}"
export "RANLIB_${target_env}=${RANLIB_PATH}"
# ── openssl-src (uses its own Configure/make, not the cc crate) ──
# OpenSSL ios64-xcrun / iossimulator-xcrun configs look up the SDK via
# CROSS_TOP + CROSS_SDK (e.g. .../iPhoneOS.platform/Developer + iPhoneOS17.0.sdk).
# Without these, openssl-src falls back to the macOS host SDK and produces
# ___chkstk_darwin references that don't exist on iOS.
PLATFORM_DIR="${SDK_PATH%/SDKs/*}" # .../iPhoneOS.platform/Developer
SDK_NAME="${SDK_PATH##*/}" # iPhoneOS17.0.sdk
export CROSS_TOP="$PLATFORM_DIR"
export CROSS_SDK="$SDK_NAME"
for crate in "${CRATES[@]}"; do
cargo build --release \
--target "$target" \