Skip to content

Commit fa23c99

Browse files
committed
chore: add swift development script and commands
1 parent d6af757 commit fa23c99

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

bdk-swift/build-xcframework-dev.sh

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#!/bin/bash
2+
3+
set -euo pipefail
4+
5+
HEADERPATH="Sources/BitcoinDevKit/BitcoinDevKitFFI.h"
6+
MODMAPPATH="Sources/BitcoinDevKit/BitcoinDevKitFFI.modulemap"
7+
TARGETDIR="../bdk-ffi/target"
8+
OUTDIR="."
9+
NAME="bdkffi"
10+
STATIC_LIB_NAME="lib${NAME}.a"
11+
NEW_HEADER_DIR="../bdk-ffi/target/include"
12+
PROFILE_DIR="debug"
13+
14+
HOST_ARCH=$(uname -m)
15+
if [ "$HOST_ARCH" = "arm64" ]; then
16+
MAC_TARGET="aarch64-apple-darwin"
17+
IOS_SIM_TARGET="aarch64-apple-ios-sim"
18+
else
19+
MAC_TARGET="x86_64-apple-darwin"
20+
IOS_SIM_TARGET="x86_64-apple-ios"
21+
fi
22+
IOS_DEVICE_TARGET="aarch64-apple-ios"
23+
24+
cd ../bdk-ffi/ || exit
25+
26+
rustup component add rust-src
27+
rustup target add "$MAC_TARGET" "$IOS_SIM_TARGET" "$IOS_DEVICE_TARGET"
28+
29+
cargo build --package bdk-ffi --target "$MAC_TARGET"
30+
cargo build --package bdk-ffi --target "$IOS_SIM_TARGET"
31+
cargo build --package bdk-ffi --target "$IOS_DEVICE_TARGET"
32+
33+
cargo run --bin uniffi-bindgen generate \
34+
--library "./target/$IOS_DEVICE_TARGET/$PROFILE_DIR/lib${NAME}.dylib" \
35+
--language swift \
36+
--out-dir ../bdk-swift/Sources/BitcoinDevKit \
37+
--no-format
38+
39+
cd ../bdk-swift/ || exit
40+
41+
mkdir -p "$NEW_HEADER_DIR"
42+
mv "$HEADERPATH" "$NEW_HEADER_DIR"
43+
mv "$MODMAPPATH" "$NEW_HEADER_DIR/module.modulemap"
44+
echo >> "$NEW_HEADER_DIR/module.modulemap"
45+
46+
rm -rf "${OUTDIR}/${NAME}.xcframework"
47+
48+
xcodebuild -create-xcframework \
49+
-library "${TARGETDIR}/${MAC_TARGET}/${PROFILE_DIR}/${STATIC_LIB_NAME}" \
50+
-headers "${NEW_HEADER_DIR}" \
51+
-library "${TARGETDIR}/${IOS_DEVICE_TARGET}/${PROFILE_DIR}/${STATIC_LIB_NAME}" \
52+
-headers "${NEW_HEADER_DIR}" \
53+
-library "${TARGETDIR}/${IOS_SIM_TARGET}/${PROFILE_DIR}/${STATIC_LIB_NAME}" \
54+
-headers "${NEW_HEADER_DIR}" \
55+
-output "${OUTDIR}/${NAME}.xcframework"

bdk-swift/justfile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@ repo:
1313
build:
1414
bash ./build-xcframework.sh
1515

16+
[group("Build")]
17+
[doc("Build the library in debug mode for faster local testing.")]
18+
build-dev:
19+
bash ./build-xcframework-dev.sh
20+
1621
[group("Build")]
1722
[doc("Remove all caches and previous build artifacts to start from scratch.")]
1823
clean:

0 commit comments

Comments
 (0)