From 5634e65859eca78732899ef593bcf5f6f90c67d9 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Sat, 12 Jul 2025 18:33:58 -0400 Subject: [PATCH 1/4] Add Swift Java configuration file --- Sources/Bluetooth/swift-java.config | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Sources/Bluetooth/swift-java.config diff --git a/Sources/Bluetooth/swift-java.config b/Sources/Bluetooth/swift-java.config new file mode 100644 index 000000000..ab8c4ff4d --- /dev/null +++ b/Sources/Bluetooth/swift-java.config @@ -0,0 +1,4 @@ +{ + "javaPackage": "org.pureswift.bluetooth", + "mode": "jni" +} \ No newline at end of file From da42967eb0c4f086b1aa05b1f0f694e0566a8cf8 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Sat, 12 Jul 2025 18:34:24 -0400 Subject: [PATCH 2/4] Add `SWIFT_JAVA` environment variable --- Package.swift | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/Package.swift b/Package.swift index ac0e25c9c..35b0eec61 100644 --- a/Package.swift +++ b/Package.swift @@ -10,6 +10,7 @@ let buildMetadata = environment["SWIFTPM_BLUETOOTH_METADATA"] != "0" let generateCode = environment["SWIFTPM_ENABLE_PLUGINS"] != "0" let enableMacros = environment["SWIFTPM_ENABLE_MACROS"] != "0" let buildDocs = environment["BUILDING_FOR_DOCUMENTATION_GENERATION"] == "1" +let swiftJava = environment["SWIFT_JAVA"] == "1" // force building as dynamic library let libraryType: PackageDescription.Product.Library.LibraryType? = dynamicLibrary ? .dynamic : nil @@ -51,7 +52,10 @@ var package = Package( ], targets: [ .target( - name: "Bluetooth" + name: "Bluetooth", + exclude: [ + "swift-java.config" + ] ), .target( name: "BluetoothMetadata", @@ -190,3 +194,24 @@ if enableMacros { "BluetoothMacros" ] } + +if swiftJava { + package.platforms = [ + .macOS(.v15), + .iOS(.v13), + .watchOS(.v6), + .tvOS(.v13) + ] + package.dependencies += [ + .package( + url: "https://github.com/swiftlang/swift-java.git", + branch: "main" + ) + ] + package.targets[0].plugins = (package.targets[0].plugins ?? []) + [ + .plugin( + name: "JExtractSwiftPlugin", + package: "swift-java" + ) + ] +} From c5124aeabdd61168215e6b89cf8793749a3cdd97 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Sat, 12 Jul 2025 18:37:17 -0400 Subject: [PATCH 3/4] Rename file --- Sources/Bluetooth/{Data.swift => DataContainer.swift} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Sources/Bluetooth/{Data.swift => DataContainer.swift} (100%) diff --git a/Sources/Bluetooth/Data.swift b/Sources/Bluetooth/DataContainer.swift similarity index 100% rename from Sources/Bluetooth/Data.swift rename to Sources/Bluetooth/DataContainer.swift From e097a8840646b9ab290464df3d34977ff2721d6f Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Sat, 12 Jul 2025 18:51:32 -0400 Subject: [PATCH 4/4] Update GitHub CI --- .github/workflows/swift.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/swift.yml b/.github/workflows/swift.yml index 7fc2993d5..2051bd3cf 100644 --- a/.github/workflows/swift.yml +++ b/.github/workflows/swift.yml @@ -8,7 +8,7 @@ jobs: strategy: matrix: config: ["debug", "release"] - options: ["", "SWIFT_BUILD_DYNAMIC_LIBRARY=1"] + options: ["", "SWIFT_BUILD_DYNAMIC_LIBRARY=1", "SWIFT_JAVA=1"] steps: - name: Checkout uses: actions/checkout@v4