From 6642c5808b24a23d515f37c9524aa16a7b47e407 Mon Sep 17 00:00:00 2001 From: Steve Myers Date: Tue, 11 Jun 2024 21:03:00 -0500 Subject: [PATCH] chore(swift): rename build script to build-xcframework.sh and update to use xcodebuild tool --- .github/workflows/live-tests.yaml | 2 +- .github/workflows/test-swift.yaml | 2 +- .gitignore | 2 + bdk-ffi/Cargo.lock | 135 +++++++++--------- bdk-ffi/tests/bindings/test.swift | 2 +- bdk-ffi/uniffi.toml | 1 + bdk-swift/README.md | 2 +- bdk-swift/bdkFFI.xcframework/Info.plist | 59 -------- .../Headers/bdkFFI-umbrella.h | 4 - .../ios-arm64/bdkFFI.framework/Info.plist | 18 --- .../bdkFFI.framework/Modules/module.modulemap | 6 - .../Headers/bdkFFI-umbrella.h | 4 - .../bdkFFI.framework/Info.plist | 18 --- .../bdkFFI.framework/Modules/module.modulemap | 6 - .../Headers/bdkFFI-umbrella.h | 4 - .../bdkFFI.framework/Info.plist | 18 --- .../bdkFFI.framework/Modules/module.modulemap | 6 - ...ld-local-swift.sh => build-xcframework.sh} | 40 ++++-- bdk-swift/justfile | 2 +- 19 files changed, 110 insertions(+), 221 deletions(-) delete mode 100644 bdk-swift/bdkFFI.xcframework/Info.plist delete mode 100644 bdk-swift/bdkFFI.xcframework/ios-arm64/bdkFFI.framework/Headers/bdkFFI-umbrella.h delete mode 100644 bdk-swift/bdkFFI.xcframework/ios-arm64/bdkFFI.framework/Info.plist delete mode 100644 bdk-swift/bdkFFI.xcframework/ios-arm64/bdkFFI.framework/Modules/module.modulemap delete mode 100644 bdk-swift/bdkFFI.xcframework/ios-arm64_x86_64-simulator/bdkFFI.framework/Headers/bdkFFI-umbrella.h delete mode 100644 bdk-swift/bdkFFI.xcframework/ios-arm64_x86_64-simulator/bdkFFI.framework/Info.plist delete mode 100644 bdk-swift/bdkFFI.xcframework/ios-arm64_x86_64-simulator/bdkFFI.framework/Modules/module.modulemap delete mode 100644 bdk-swift/bdkFFI.xcframework/macos-arm64_x86_64/bdkFFI.framework/Headers/bdkFFI-umbrella.h delete mode 100644 bdk-swift/bdkFFI.xcframework/macos-arm64_x86_64/bdkFFI.framework/Info.plist delete mode 100644 bdk-swift/bdkFFI.xcframework/macos-arm64_x86_64/bdkFFI.framework/Modules/module.modulemap rename bdk-swift/{build-local-swift.sh => build-xcframework.sh} (57%) diff --git a/.github/workflows/live-tests.yaml b/.github/workflows/live-tests.yaml index 443d336c..f4501846 100644 --- a/.github/workflows/live-tests.yaml +++ b/.github/workflows/live-tests.yaml @@ -49,7 +49,7 @@ jobs: - name: "Build Swift package" working-directory: bdk-swift - run: bash ./build-local-swift.sh + run: bash ./build-xcframework.sh - name: "Run live Swift tests" working-directory: bdk-swift diff --git a/.github/workflows/test-swift.yaml b/.github/workflows/test-swift.yaml index 2aa0e3ee..89174bbb 100644 --- a/.github/workflows/test-swift.yaml +++ b/.github/workflows/test-swift.yaml @@ -20,7 +20,7 @@ jobs: - name: "Build Swift package" working-directory: bdk-swift - run: bash ./build-local-swift.sh + run: bash ./build-xcframework.sh - name: "Run Swift tests" working-directory: bdk-swift diff --git a/.gitignore b/.gitignore index a7699b89..55bac571 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,8 @@ bdkFFI.h BitcoinDevKit.swift bdk.swift .build +*.xcframework/ +Info.plist # Python related __pycache__ \ No newline at end of file diff --git a/bdk-ffi/Cargo.lock b/bdk-ffi/Cargo.lock index dde188c3..4e45ad2d 100644 --- a/bdk-ffi/Cargo.lock +++ b/bdk-ffi/Cargo.lock @@ -16,47 +16,48 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.13" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" +checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" [[package]] name = "anstyle-parse" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" dependencies = [ "windows-sys", ] [[package]] name = "anstyle-wincon" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" dependencies = [ "anstyle", "windows-sys", @@ -64,9 +65,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.82" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "arrayvec" @@ -123,9 +124,9 @@ checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "base64" @@ -300,7 +301,7 @@ dependencies = [ "bech32", "bitcoin-internals", "bitcoin_hashes 0.13.0", - "hex-conservative 0.1.1", + "hex-conservative 0.1.2", "hex_lit", "secp256k1", "serde", @@ -328,7 +329,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" dependencies = [ "bitcoin-internals", - "hex-conservative 0.1.1", + "hex-conservative 0.1.2", "serde", ] @@ -382,9 +383,9 @@ checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" [[package]] name = "camino" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" dependencies = [ "serde", ] @@ -414,9 +415,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.94" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f6e324229dc011159fcc089755d1e2e216a90d43a7dea6853ca740b84f35e7" +checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" [[package]] name = "cfg-if" @@ -426,9 +427,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" -version = "4.5.4" +version = "4.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +checksum = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f" dependencies = [ "clap_builder", "clap_derive", @@ -436,9 +437,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.2" +version = "4.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +checksum = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f" dependencies = [ "anstream", "anstyle", @@ -448,9 +449,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.4" +version = "4.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -460,15 +461,15 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" [[package]] name = "electrum-client" @@ -523,9 +524,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -540,9 +541,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "goblin" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb07a4ffed2093b118a525b1d8f5204ae274faed5604537caf7135d0f18d9887" +checksum = "1b363a30c165f666402fe6a3024d3bec7ebc898f96a4a23bd1c99f8dbf3f4f47" dependencies = [ "log", "plain", @@ -581,9 +582,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hex-conservative" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30ed443af458ccb6d81c1e7e661545f94d3176752fb1df2f543b902a1e0f51e2" +checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20" [[package]] name = "hex-conservative" @@ -600,6 +601,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3011d1213f159867b13cfd6ac92d2cd5f1345762c63be3554e84092d85a50bbd" +[[package]] +name = "is_terminal_polyfill" +version = "1.70.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" + [[package]] name = "itoa" version = "1.0.11" @@ -628,9 +635,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.153" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libsqlite3-sys" @@ -729,9 +736,9 @@ checksum = "6c548d5c78976f6955d72d0ced18c48ca07030f7a1d4024529fedd7c1c01b29c" [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pkg-config" @@ -753,9 +760,9 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.81" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" +checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" dependencies = [ "unicode-ident", ] @@ -852,9 +859,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "scroll" @@ -909,27 +916,27 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" dependencies = [ "serde", ] [[package]] name = "serde" -version = "1.0.198" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" +checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.198" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" +checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", @@ -938,9 +945,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.116" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" dependencies = [ "itoa", "ryu", @@ -985,9 +992,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.60" +version = "2.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" +checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" dependencies = [ "proc-macro2", "quote", @@ -1007,18 +1014,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.58" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.58" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", @@ -1081,9 +1088,9 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "uniffi" @@ -1138,9 +1145,9 @@ dependencies = [ [[package]] name = "uniffi_checksum_derive" -version = "0.27.2" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95e86ccd44c138ba12b9132decbabeed84bf686ebe4b6538a5e489a243a7c2c9" +checksum = "d5c400339a9d1d17be34257d0b407e91d64af335e5b4fa49f4bf28467fc8d635" dependencies = [ "quote", "syn", @@ -1226,9 +1233,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "vcpkg" diff --git a/bdk-ffi/tests/bindings/test.swift b/bdk-ffi/tests/bindings/test.swift index 04afd6ae..2786ca02 100644 --- a/bdk-ffi/tests/bindings/test.swift +++ b/bdk-ffi/tests/bindings/test.swift @@ -4,6 +4,6 @@ */ import Foundation -import bdk +import BitcoinDevKit let network = Network.testnet diff --git a/bdk-ffi/uniffi.toml b/bdk-ffi/uniffi.toml index 9dd45ba9..081610a7 100644 --- a/bdk-ffi/uniffi.toml +++ b/bdk-ffi/uniffi.toml @@ -6,4 +6,5 @@ cdylib_name = "bdkffi" cdylib_name = "bdkffi" [bindings.swift] +module_name = "BitcoinDevKit" cdylib_name = "bdkffi" diff --git a/bdk-swift/README.md b/bdk-swift/README.md index 5cc8ea19..9690b1a3 100644 --- a/bdk-swift/README.md +++ b/bdk-swift/README.md @@ -25,7 +25,7 @@ import BitcoinDevKit Swift Package Manager releases for `bdk-swift` are published to a separate repository (https://github.com/bitcoindevkit/bdk-swift), and that is where the releases are created for it. -The `bdk-swift/build-local-swift.sh` script can be used instead to create a version of the project for local testing. +The `bdk-swift/build-xcframework.sh` script can be used instead to create a version of the project for local testing. ### How to test diff --git a/bdk-swift/bdkFFI.xcframework/Info.plist b/bdk-swift/bdkFFI.xcframework/Info.plist deleted file mode 100644 index 89fa6042..00000000 --- a/bdk-swift/bdkFFI.xcframework/Info.plist +++ /dev/null @@ -1,59 +0,0 @@ - - - - - AvailableLibraries - - - LibraryIdentifier - macos-arm64_x86_64 - LibraryPath - bdkFFI.framework - SupportedArchitectures - - arm64 - x86_64 - - SupportedPlatform - macos - LSMinimumSystemVersion - 12.0 - - - LibraryIdentifier - ios-arm64_x86_64-simulator - LibraryPath - bdkFFI.framework - SupportedArchitectures - - arm64 - x86_64 - - SupportedPlatform - ios - SupportedPlatformVariant - simulator - MinimumOSVersion - 15.0 - - - LibraryIdentifier - ios-arm64 - LibraryPath - bdkFFI.framework - SupportedArchitectures - - arm64 - - SupportedPlatform - ios - MinimumOSVersion - 15.0 - - - CFBundlePackageType - XFWK - XCFrameworkFormatVersion - 1.0 - - diff --git a/bdk-swift/bdkFFI.xcframework/ios-arm64/bdkFFI.framework/Headers/bdkFFI-umbrella.h b/bdk-swift/bdkFFI.xcframework/ios-arm64/bdkFFI.framework/Headers/bdkFFI-umbrella.h deleted file mode 100644 index c10f2d91..00000000 --- a/bdk-swift/bdkFFI.xcframework/ios-arm64/bdkFFI.framework/Headers/bdkFFI-umbrella.h +++ /dev/null @@ -1,4 +0,0 @@ -// This is the "umbrella header" for our combined Rust code library. -// It needs to import all of the individual headers. - -#import "bdkFFI.h" diff --git a/bdk-swift/bdkFFI.xcframework/ios-arm64/bdkFFI.framework/Info.plist b/bdk-swift/bdkFFI.xcframework/ios-arm64/bdkFFI.framework/Info.plist deleted file mode 100644 index 71b8db90..00000000 --- a/bdk-swift/bdkFFI.xcframework/ios-arm64/bdkFFI.framework/Info.plist +++ /dev/null @@ -1,18 +0,0 @@ - - - - - CFBundleIdentifier - com.bitcoindevkit.bdkFFI - CFBundleName - bdkFFI - CFBundleVersion - 1.0.0 - CFBundleShortVersionString - 1.0.0 - CFBundleExecutable - bdkFFI - MinimumOSVersion - 100 - - \ No newline at end of file diff --git a/bdk-swift/bdkFFI.xcframework/ios-arm64/bdkFFI.framework/Modules/module.modulemap b/bdk-swift/bdkFFI.xcframework/ios-arm64/bdkFFI.framework/Modules/module.modulemap deleted file mode 100644 index 1b7f601d..00000000 --- a/bdk-swift/bdkFFI.xcframework/ios-arm64/bdkFFI.framework/Modules/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module bdkFFI { - umbrella header "bdkFFI-umbrella.h" - - export * - module * { export * } -} diff --git a/bdk-swift/bdkFFI.xcframework/ios-arm64_x86_64-simulator/bdkFFI.framework/Headers/bdkFFI-umbrella.h b/bdk-swift/bdkFFI.xcframework/ios-arm64_x86_64-simulator/bdkFFI.framework/Headers/bdkFFI-umbrella.h deleted file mode 100644 index c10f2d91..00000000 --- a/bdk-swift/bdkFFI.xcframework/ios-arm64_x86_64-simulator/bdkFFI.framework/Headers/bdkFFI-umbrella.h +++ /dev/null @@ -1,4 +0,0 @@ -// This is the "umbrella header" for our combined Rust code library. -// It needs to import all of the individual headers. - -#import "bdkFFI.h" diff --git a/bdk-swift/bdkFFI.xcframework/ios-arm64_x86_64-simulator/bdkFFI.framework/Info.plist b/bdk-swift/bdkFFI.xcframework/ios-arm64_x86_64-simulator/bdkFFI.framework/Info.plist deleted file mode 100644 index d8cbc0c6..00000000 --- a/bdk-swift/bdkFFI.xcframework/ios-arm64_x86_64-simulator/bdkFFI.framework/Info.plist +++ /dev/null @@ -1,18 +0,0 @@ - - - - - CFBundleIdentifier - com.bitcoindevkit.bdkFFI - CFBundleName - bdkFFI - CFBundleVersion - 1.0.0 - CFBundleShortVersionString - 1.0.0 - CFBundleExecutable - bdkFFI - MinimumOSVersion - 15.0 - - \ No newline at end of file diff --git a/bdk-swift/bdkFFI.xcframework/ios-arm64_x86_64-simulator/bdkFFI.framework/Modules/module.modulemap b/bdk-swift/bdkFFI.xcframework/ios-arm64_x86_64-simulator/bdkFFI.framework/Modules/module.modulemap deleted file mode 100644 index 1b7f601d..00000000 --- a/bdk-swift/bdkFFI.xcframework/ios-arm64_x86_64-simulator/bdkFFI.framework/Modules/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module bdkFFI { - umbrella header "bdkFFI-umbrella.h" - - export * - module * { export * } -} diff --git a/bdk-swift/bdkFFI.xcframework/macos-arm64_x86_64/bdkFFI.framework/Headers/bdkFFI-umbrella.h b/bdk-swift/bdkFFI.xcframework/macos-arm64_x86_64/bdkFFI.framework/Headers/bdkFFI-umbrella.h deleted file mode 100644 index c10f2d91..00000000 --- a/bdk-swift/bdkFFI.xcframework/macos-arm64_x86_64/bdkFFI.framework/Headers/bdkFFI-umbrella.h +++ /dev/null @@ -1,4 +0,0 @@ -// This is the "umbrella header" for our combined Rust code library. -// It needs to import all of the individual headers. - -#import "bdkFFI.h" diff --git a/bdk-swift/bdkFFI.xcframework/macos-arm64_x86_64/bdkFFI.framework/Info.plist b/bdk-swift/bdkFFI.xcframework/macos-arm64_x86_64/bdkFFI.framework/Info.plist deleted file mode 100644 index 693fefa0..00000000 --- a/bdk-swift/bdkFFI.xcframework/macos-arm64_x86_64/bdkFFI.framework/Info.plist +++ /dev/null @@ -1,18 +0,0 @@ - - - - - CFBundleIdentifier - com.bitcoindevkit.bdkFFI - CFBundleName - bdkFFI - CFBundleVersion - 1.0.0 - CFBundleShortVersionString - 1.0.0 - CFBundleExecutable - bdkFFI - LSMinimumSystemVersion - 12.0 - - \ No newline at end of file diff --git a/bdk-swift/bdkFFI.xcframework/macos-arm64_x86_64/bdkFFI.framework/Modules/module.modulemap b/bdk-swift/bdkFFI.xcframework/macos-arm64_x86_64/bdkFFI.framework/Modules/module.modulemap deleted file mode 100644 index 1b7f601d..00000000 --- a/bdk-swift/bdkFFI.xcframework/macos-arm64_x86_64/bdkFFI.framework/Modules/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module bdkFFI { - umbrella header "bdkFFI-umbrella.h" - - export * - module * { export * } -} diff --git a/bdk-swift/build-local-swift.sh b/bdk-swift/build-xcframework.sh similarity index 57% rename from bdk-swift/build-local-swift.sh rename to bdk-swift/build-xcframework.sh index 44b530b2..7b4639ee 100755 --- a/bdk-swift/build-local-swift.sh +++ b/bdk-swift/build-xcframework.sh @@ -3,6 +3,16 @@ # The results of this script can be used for locally testing your SPM package adding a local package # to your application pointing at the bdk-swift directory. +HEADERPATH="Sources/BitcoinDevKit/BitcoinDevKitFFI.h" +MODMAPPATH="Sources/BitcoinDevKit/BitcoinDevKitFFI.modulemap" +TARGETDIR="../bdk-ffi/target" +OUTDIR="." +RELDIR="release-smaller" +NAME="bdkffi" +STATIC_LIB_NAME="lib${NAME}.a" +NEW_HEADER_DIR="../bdk-ffi/target/include" + +# set required rust version and install component and targets rustup default 1.77.1 rustup component add rust-src rustup target add aarch64-apple-ios # iOS arm64 @@ -13,26 +23,38 @@ rustup target add x86_64-apple-darwin # mac x86_64 cd ../bdk-ffi/ || exit +# build bdk-ffi rust lib for apple targets cargo build --package bdk-ffi --profile release-smaller --target x86_64-apple-darwin cargo build --package bdk-ffi --profile release-smaller --target aarch64-apple-darwin cargo build --package bdk-ffi --profile release-smaller --target x86_64-apple-ios cargo build --package bdk-ffi --profile release-smaller --target aarch64-apple-ios cargo build --package bdk-ffi --profile release-smaller --target aarch64-apple-ios-sim +# build bdk-ffi Swift bindings and put in bdk-swift Sources cargo run --bin uniffi-bindgen generate --library ./target/aarch64-apple-ios/release-smaller/libbdkffi.dylib --language swift --out-dir ../bdk-swift/Sources/BitcoinDevKit --no-format +# combine bdk-ffi static libs for aarch64 and x86_64 targets via lipo tool mkdir -p target/lipo-ios-sim/release-smaller lipo target/aarch64-apple-ios-sim/release-smaller/libbdkffi.a target/x86_64-apple-ios/release-smaller/libbdkffi.a -create -output target/lipo-ios-sim/release-smaller/libbdkffi.a mkdir -p target/lipo-macos/release-smaller lipo target/aarch64-apple-darwin/release-smaller/libbdkffi.a target/x86_64-apple-darwin/release-smaller/libbdkffi.a -create -output target/lipo-macos/release-smaller/libbdkffi.a cd ../bdk-swift/ || exit -mv Sources/BitcoinDevKit/bdk.swift Sources/BitcoinDevKit/BitcoinDevKit.swift -cp Sources/BitcoinDevKit/bdkFFI.h bdkFFI.xcframework/ios-arm64/bdkFFI.framework/Headers -cp Sources/BitcoinDevKit/bdkFFI.h bdkFFI.xcframework/ios-arm64_x86_64-simulator/bdkFFI.framework/Headers -cp Sources/BitcoinDevKit/bdkFFI.h bdkFFI.xcframework/macos-arm64_x86_64/bdkFFI.framework/Headers -cp ../bdk-ffi/target/aarch64-apple-ios/release-smaller/libbdkffi.a bdkFFI.xcframework/ios-arm64/bdkFFI.framework/bdkFFI -cp ../bdk-ffi/target/lipo-ios-sim/release-smaller/libbdkffi.a bdkFFI.xcframework/ios-arm64_x86_64-simulator/bdkFFI.framework/bdkFFI -cp ../bdk-ffi/target/lipo-macos/release-smaller/libbdkffi.a bdkFFI.xcframework/macos-arm64_x86_64/bdkFFI.framework/bdkFFI -rm Sources/BitcoinDevKit/bdkFFI.h -rm Sources/BitcoinDevKit/bdkFFI.modulemap + +# move bdk-ffi static lib header files to temporary directory +mkdir -p "${NEW_HEADER_DIR}" +mv "${HEADERPATH}" "${NEW_HEADER_DIR}" +mv "${MODMAPPATH}" "${NEW_HEADER_DIR}/module.modulemap" + +# remove old xcframework directory +rm -rf "${OUTDIR}/${NAME}.xcframework" + +# create new xcframework directory from bdk-ffi static libs and headers +xcodebuild -create-xcframework \ + -library "${TARGETDIR}/lipo-macos/${RELDIR}/${STATIC_LIB_NAME}" \ + -headers "${NEW_HEADER_DIR}" \ + -library "${TARGETDIR}/aarch64-apple-ios/${RELDIR}/${STATIC_LIB_NAME}" \ + -headers "${NEW_HEADER_DIR}" \ + -library "${TARGETDIR}/lipo-ios-sim/${RELDIR}/${STATIC_LIB_NAME}" \ + -headers "${NEW_HEADER_DIR}" \ + -output "${OUTDIR}/${NAME}.xcframework" \ No newline at end of file diff --git a/bdk-swift/justfile b/bdk-swift/justfile index 84d5fd49..11155208 100644 --- a/bdk-swift/justfile +++ b/bdk-swift/justfile @@ -2,7 +2,7 @@ default: just --list build: - bash ./build-local-swift.sh + bash ./build-xcframework.sh clean: rm -rf ../bdk-ffi/target/