@@ -7,4 +7,40 @@ $UNIFFI_BINDGEN_BIN generate bindings/ldk_node.udl --language swift -o "$BINDING
7
7
8
8
mkdir -p $BINDINGS_DIR
9
9
10
- swiftc -module-name ldk_node -emit-library -o " $BINDINGS_DIR " /libldk_node.dylib -emit-module -emit-module-path " $BINDINGS_DIR " -parse-as-library -L ./target/release -lldk_node -Xcc -fmodule-map-file=" $BINDINGS_DIR " /ldk_nodeFFI.modulemap " $BINDINGS_DIR " /ldk_node.swift -v
10
+ # Install rust target toolchains
11
+ rustup install nightly-x86_64-apple-darwin
12
+ rustup component add rust-src --toolchain nightly-x86_64-apple-darwin
13
+ rustup target add aarch64-apple-ios x86_64-apple-ios
14
+ rustup target add aarch64-apple-ios-sim --toolchain nightly
15
+ rustup target add aarch64-apple-darwin x86_64-apple-darwin
16
+
17
+ # Build rust target libs
18
+ cargo build --profile release-smaller || exit 1
19
+ cargo build --profile release-smaller --target x86_64-apple-darwin || exit 1
20
+ cargo build --profile release-smaller --target aarch64-apple-darwin || exit 1
21
+ cargo build --profile release-smaller --target x86_64-apple-ios || exit 1
22
+ cargo build --profile release-smaller --target aarch64-apple-ios || exit 1
23
+ cargo +nightly build --release --target aarch64-apple-ios-sim || exit 1
24
+
25
+ # Combine ios-sim and apple-darwin (macos) libs for x86_64 and aarch64 (m1)
26
+ mkdir -p target/lipo-ios-sim/release-smaller || exit 1
27
+ lipo target/aarch64-apple-ios-sim/release/libldk_node.a target/x86_64-apple-ios/release-smaller/libldk_node.a -create -output target/lipo-ios-sim/release-smaller/libldk_node.a || exit 1
28
+ mkdir -p target/lipo-macos/release-smaller || exit 1
29
+ lipo target/aarch64-apple-darwin/release-smaller/libldk_node.a target/x86_64-apple-darwin/release-smaller/libldk_node.a -create -output target/lipo-macos/release-smaller/libldk_node.a || exit 1
30
+
31
+ $UNIFFI_BINDGEN_BIN generate bindings/ldk_node.udl --language swift -o " $BINDINGS_DIR " || exit 1
32
+
33
+ swiftc -module-name ldk_node -emit-library -o " $BINDINGS_DIR " /libldk_node.dylib -emit-module -emit-module-path " $BINDINGS_DIR " -parse-as-library -L ./target/release-smaller -lldk_node -Xcc -fmodule-map-file=" $BINDINGS_DIR " /ldk_nodeFFI.modulemap " $BINDINGS_DIR " /ldk_node.swift -v || exit 1
34
+
35
+ # Create xcframework from bindings Swift file and libs
36
+ mkdir -p " $BINDINGS_DIR " /Sources/LightningDevKitNode || exit 1
37
+ mv " $BINDINGS_DIR " /ldk_node.swift " $BINDINGS_DIR " /Sources/LightningDevKitNode/LightningDevKitNode.swift || exit 1
38
+ cp " $BINDINGS_DIR " /ldk_nodeFFI.h " $BINDINGS_DIR " /ldk_nodeFFI.xcframework/ios-arm64/ldk_nodeFFI.framework/Headers || exit 1
39
+ cp " $BINDINGS_DIR " /ldk_nodeFFI.h " $BINDINGS_DIR " /ldk_nodeFFI.xcframework/ios-arm64_x86_64-simulator/ldk_nodeFFI.framework/Headers || exit 1
40
+ cp " $BINDINGS_DIR " /ldk_nodeFFI.h " $BINDINGS_DIR " /ldk_nodeFFI.xcframework/macos-arm64_x86_64/ldk_nodeFFI.framework/Headers || exit 1
41
+ cp target/aarch64-apple-ios/release-smaller/libldk_node.a " $BINDINGS_DIR " /ldk_nodeFFI.xcframework/ios-arm64/ldk_nodeFFI.framework/ldk_nodeFFI || exit 1
42
+ cp target/lipo-ios-sim/release-smaller/libldk_node.a " $BINDINGS_DIR " /ldk_nodeFFI.xcframework/ios-arm64_x86_64-simulator/ldk_nodeFFI.framework/ldk_nodeFFI || exit 1
43
+ cp target/lipo-macos/release-smaller/libldk_node.a " $BINDINGS_DIR " /ldk_nodeFFI.xcframework/macos-arm64_x86_64/ldk_nodeFFI.framework/ldk_nodeFFI || exit 1
44
+ # rm "$BINDINGS_DIR"/ldk_nodeFFI.h || exit 1
45
+ # rm "$BINDINGS_DIR"/ldk_nodeFFI.modulemap || exit 1
46
+ echo finished successfully!
0 commit comments