From 7f39574c949359843142c09875f19a0c737eea3b Mon Sep 17 00:00:00 2001 From: Angelos Veglektsis Date: Wed, 12 Nov 2025 20:05:17 +0200 Subject: [PATCH] bindings: support JVM darwin target --- .github/workflows/cont_integration.yml | 2 +- justfile | 14 +++++++++++++- lwk_bindings/android_bindings/.gitignore | 1 + .../android_bindings/gradle/libs.versions.toml | 8 ++++---- lwk_bindings/android_bindings/lib/build.gradle.kts | 10 ++++++++++ 5 files changed, 29 insertions(+), 6 deletions(-) diff --git a/.github/workflows/cont_integration.yml b/.github/workflows/cont_integration.yml index c4fd9cb54..d1ada3c1d 100644 --- a/.github/workflows/cont_integration.yml +++ b/.github/workflows/cont_integration.yml @@ -41,7 +41,7 @@ jobs: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@1.85.0 with: - targets: x86_64-apple-ios,aarch64-apple-ios,aarch64-apple-ios-sim + targets: x86_64-apple-ios,aarch64-apple-ios,aarch64-apple-ios-sim,aarch64-apple-darwin - uses: extractions/setup-just@v2 with: just-version: 1.5.0 # optional semver specification, otherwise latest diff --git a/justfile b/justfile index 40323fda4..156483032 100644 --- a/justfile +++ b/justfile @@ -55,7 +55,7 @@ android: aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64 cp -a target/release/android/jniLibs lwk_bindings/android_bindings/lib/src/androidMain # Build the kotlin multiplatform interface and android, ios and jvm -kotlin-multiplatform: ios ios-sim android +kotlin-multiplatform: ios ios-sim android jvm cargo install --bin gobley-uniffi-bindgen gobley-uniffi-bindgen@0.2.0 gobley-uniffi-bindgen --config ./lwk_bindings/uniffi.kotlin-multiplatform.toml --library target/aarch64-apple-ios/release/liblwk.a --out-dir target/release/kotlin-multiplatform cp -a target/release/kotlin-multiplatform/* lwk_bindings/android_bindings/lib/src/ @@ -64,6 +64,18 @@ kotlin-multiplatform: ios ios-sim android cp target/aarch64-apple-ios/release/liblwk.a lwk_bindings/android_bindings/lib/src/libs/ios-arm64/ cp target/lipo-ios-sim/release/liblwk.a lwk_bindings/android_bindings/lib/src/libs/ios-simulator-arm64/ +jvm: aarch64-apple-darwin # x86_64-unknown-linux-gnu + mkdir -p lwk_bindings/android_bindings/lib/src/jvmMain/resources/darwin-aarch64 + cp -a target/aarch64-apple-darwin/release/liblwk.dylib lwk_bindings/android_bindings/lib/src/jvmMain/resources/darwin-aarch64/ + +# Build aarch64-apple-darwin +aarch64-apple-darwin: + MACOSX_DEPLOYMENT_TARGET=11.0 cargo build --release --target aarch64-apple-darwin -p lwk_bindings + +# Build x86_64-unknown-linux-gnu +x86_64-unknown-linux-gnu: + cargo build --release --target x86_64-unknown-linux-gnu -p lwk_bindings + # Build ios (works only on mac) ios: aarch64-apple-ios diff --git a/lwk_bindings/android_bindings/.gitignore b/lwk_bindings/android_bindings/.gitignore index b26b40df2..e0eea1d9f 100644 --- a/lwk_bindings/android_bindings/.gitignore +++ b/lwk_bindings/android_bindings/.gitignore @@ -14,6 +14,7 @@ .cxx local.properties *.so +*.dylib *.a .kotlin diff --git a/lwk_bindings/android_bindings/gradle/libs.versions.toml b/lwk_bindings/android_bindings/gradle/libs.versions.toml index 4e501cd66..2ab0d037a 100644 --- a/lwk_bindings/android_bindings/gradle/libs.versions.toml +++ b/lwk_bindings/android_bindings/gradle/libs.versions.toml @@ -1,15 +1,15 @@ [versions] annotation = "1.9.1" -kotlin = "2.2.20" +kotlin = "2.2.21" kotlinx-serialization = "1.9.0" kotlinx-coroutines = "1.10.2" -android-gradle-plugin = "8.13.0" -okio = "3.16.0" +android-gradle-plugin = "8.13.1" +okio = "3.16.2" espresso = "3.7.0" jna = "5.18.1" junit = "4.13.2" junit-ext = "1.3.0" -maven-publish = "0.34.0" +maven-publish = "0.35.0" atomicfu = "0.29.0" [libraries] diff --git a/lwk_bindings/android_bindings/lib/build.gradle.kts b/lwk_bindings/android_bindings/lib/build.gradle.kts index 01d0e4f8b..bc49a2bcc 100644 --- a/lwk_bindings/android_bindings/lib/build.gradle.kts +++ b/lwk_bindings/android_bindings/lib/build.gradle.kts @@ -144,3 +144,13 @@ mavenPublishing { extensions.configure { useGpgCmd() } + +// Do not require signing when publishing to Maven Local +// Allows `./gradlew publishToMavenLocal` (or `publishToLocalMaven`) without GPG setup +tasks.withType().configureEach { + onlyIf { + val taskNames = gradle.startParameter.taskNames + // Skip signing if the build is targeting the local Maven repository + taskNames.none { it.contains("publishToMavenLocal", ignoreCase = true) || it.contains("publishToLocalMaven", ignoreCase = true) } + } +}