From 722e6cca9e9c51396d56a3d1e998500823b679e7 Mon Sep 17 00:00:00 2001 From: Alexander Cyon Date: Sat, 25 Mar 2023 09:20:51 +0100 Subject: [PATCH] Add Apple Watch and Apple TV support (#19) --- .github/workflows/swift.yml | 28 ++++++++++++++++++++++++++++ Makefile | 21 +++++++++++++++++++++ Package.swift | 23 +++++++++++++++++++---- 3 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/swift.yml create mode 100644 Makefile diff --git a/.github/workflows/swift.yml b/.github/workflows/swift.yml new file mode 100644 index 0000000..19d6cba --- /dev/null +++ b/.github/workflows/swift.yml @@ -0,0 +1,28 @@ +name: CI + +on: + push: + branches: + - main + pull_request: + branches: + - '*' + workflow_dispatch: + +concurrency: + group: ci-${{ github.ref }} + cancel-in-progress: true + +jobs: + library: + runs-on: macos-12 + strategy: + matrix: + xcode: ['13.4.1', '14.0.1'] + config: ['debug', 'release'] + steps: + - uses: actions/checkout@v3 + - name: Select Xcode ${{ matrix.xcode }} + run: sudo xcode-select -s /Applications/Xcode_${{ matrix.xcode }}.app + - name: Run ${{ matrix.config }} tests + run: CONFIG=${{ matrix.config }} make test-library \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..35b0b8a --- /dev/null +++ b/Makefile @@ -0,0 +1,21 @@ +PLATFORM_IOS = iOS Simulator,name=iPhone 11 Pro Max +PLATFORM_MACOS = macOS +PLATFORM_MAC_CATALYST = macOS,variant=Mac Catalyst +PLATFORM_TVOS = tvOS Simulator,name=Apple TV +PLATFORM_WATCHOS = watchOS Simulator,name=Apple Watch Series 7 (45mm) + +default: test-all + +test-all: test-library + +test-library: + swift test + +format: + swift format \ + --ignore-unparsable-files \ + --in-place \ + --recursive \ + ./Examples ./Package.swift ./Sources ./Tests + +.PHONY: format test-all \ No newline at end of file diff --git a/Package.swift b/Package.swift index 0adfee2..b83b316 100644 --- a/Package.swift +++ b/Package.swift @@ -3,15 +3,16 @@ import PackageDescription +let development = false + let cSettings: [CSetting] = [ // Basic config values that are universal and require no dependencies. // https://github.com/bitcoin-core/secp256k1/blob/master/src/basic-config.h#L12-L13 .define("ECMULT_WINDOW_SIZE", to: "15"), .define("ECMULT_GEN_PREC_BITS", to: "4"), - // Enable modules in secp256k1. - // See bottom of: Sources/secp256k1/libsecp256k1/src/secp256k1.c - // For list + // Enable modules in secp256k1, for list scroll down to bottom of: + // Sources/secp256k1/libsecp256k1/src/secp256k1.c .define("ENABLE_MODULE_ECDH"), .define("ENABLE_MODULE_RECOVERY"), .define("ENABLE_MODULE_SCHNORRSIG"), @@ -21,8 +22,10 @@ let cSettings: [CSetting] = [ let package = Package( name: "K1", platforms: [ - .macOS(.v11), .iOS(.v13), + .macOS(.v11), + .tvOS(.v13), + .watchOS(.v6), ], products: [ .library( @@ -85,3 +88,15 @@ let package = Package( ] ) +if development { + for target in package.targets { + target.swiftSettings = target.swiftSettings ?? [] + target.swiftSettings?.append( + .unsafeFlags([ + "-Xfrontend", "-warn-concurrency", + "-Xfrontend", "-enable-actor-data-race-checks", + "-enable-library-evolution", + ]) + ) + } +}