From 11a19441a12e4277a17b51d4f331a421299fccc2 Mon Sep 17 00:00:00 2001 From: sstone Date: Mon, 11 Dec 2023 15:56:40 +0100 Subject: [PATCH] Use kotlin 1.9 --- .github/workflows/release.yml | 4 +-- .github/workflows/snapshot.yml | 4 +-- .github/workflows/test.yml | 2 +- build.gradle.kts | 28 ++++++++++--------- .../jni/NativeSecp256k1AndroidLoader.kt | 4 +-- src/nativeInterop/cinterop/libsecp256k1.def | 6 ++-- .../fr/acinq/secp256k1/Secp256k1Native.kt | 4 +-- tests/build.gradle.kts | 15 +++++----- 8 files changed, 35 insertions(+), 32 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6856c44..086b9f3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -86,7 +86,7 @@ jobs: - name: Check Linux if: matrix.os == 'ubuntu-latest' shell: bash - run: ./gradlew linuxTest + run: ./gradlew linuxX64Test - name: Check iOS if: matrix.os == 'macOS-latest' shell: bash @@ -103,7 +103,7 @@ jobs: - name: Publish Linux if: matrix.os == 'ubuntu-latest' shell: bash - run: ./gradlew publishLinuxPublicationToMavenLocal :jni:jvm:linux:publishJvmPublicationToMavenLocal + run: ./gradlew publishLinuxX64PublicationToMavenLocal :jni:jvm:linux:publishJvmPublicationToMavenLocal - name: Publish Windows if: matrix.os == 'windows-latest' shell: msys2 {0} diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml index dd788d2..daf2582 100644 --- a/.github/workflows/snapshot.yml +++ b/.github/workflows/snapshot.yml @@ -95,7 +95,7 @@ jobs: - name: Check Linux if: matrix.os == 'ubuntu-latest' shell: bash - run: ./gradlew linuxTest + run: ./gradlew linuxX64Test - name: Check iOS if: matrix.os == 'macOS-latest' shell: bash @@ -112,7 +112,7 @@ jobs: - name: Publish Linux if: matrix.os == 'ubuntu-latest' shell: bash - run: ./gradlew publishLinuxPublicationToMavenLocal :jni:jvm:linux:publishJvmPublicationToMavenLocal -PsnapshotNumber=${{ github.run_number }} -PgitRef=${{ github.ref }} + run: ./gradlew publishLinuxX64PublicationToMavenLocal :jni:jvm:linux:publishJvmPublicationToMavenLocal -PsnapshotNumber=${{ github.run_number }} -PgitRef=${{ github.ref }} - name: Publish Windows if: matrix.os == 'windows-latest' shell: msys2 {0} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6add186..e06cf05 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -101,7 +101,7 @@ jobs: - name: Check Linux if: matrix.os == 'ubuntu-latest' shell: bash - run: ./gradlew linuxTest + run: ./gradlew linuxX64Test - name: Check iOS if: matrix.os == 'macOS-latest' shell: bash diff --git a/build.gradle.kts b/build.gradle.kts index 537b2d9..cc30284 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,8 +3,8 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget import org.jetbrains.dokka.Platform plugins { - kotlin("multiplatform") version "1.8.21" - id("org.jetbrains.dokka") version "1.8.10" + kotlin("multiplatform") version "1.9.21" + id("org.jetbrains.dokka") version "1.9.10" `maven-publish` } @@ -16,13 +16,13 @@ buildscript { dependencies { classpath("com.android.tools.build:gradle:7.3.1") - classpath("org.jetbrains.dokka:dokka-gradle-plugin:1.8.10") + classpath("org.jetbrains.dokka:dokka-gradle-plugin:1.9.10") } } allprojects { group = "fr.acinq.secp256k1" - version = "0.11.0" + version = "0.13.0-SNAPSHOT" repositories { google() @@ -52,20 +52,22 @@ kotlin { } } - val nativeMain by sourceSets.creating { dependsOn(commonMain) } + val nativeMain by sourceSets.creating - linuxX64("linux") { + linuxX64 { secp256k1CInterop("host") - compilations["main"].defaultSourceSet.dependsOn(nativeMain) - // https://youtrack.jetbrains.com/issue/KT-39396 - compilations["main"].kotlinOptions.freeCompilerArgs += listOf("-include-binary", "$rootDir/native/build/linux/libsecp256k1.a") } - ios { + iosX64 { + secp256k1CInterop("ios") + } + + iosArm64 { + secp256k1CInterop("ios") + } + + iosSimulatorArm64 { secp256k1CInterop("ios") - compilations["main"].defaultSourceSet.dependsOn(nativeMain) - // https://youtrack.jetbrains.com/issue/KT-39396 - compilations["main"].kotlinOptions.freeCompilerArgs += listOf("-include-binary", "$rootDir/native/build/ios/libsecp256k1.a") } sourceSets.all { diff --git a/jni/android/src/main/java/fr/acinq/secp256k1/jni/NativeSecp256k1AndroidLoader.kt b/jni/android/src/main/java/fr/acinq/secp256k1/jni/NativeSecp256k1AndroidLoader.kt index 6c66508..cbb179b 100644 --- a/jni/android/src/main/java/fr/acinq/secp256k1/jni/NativeSecp256k1AndroidLoader.kt +++ b/jni/android/src/main/java/fr/acinq/secp256k1/jni/NativeSecp256k1AndroidLoader.kt @@ -6,11 +6,10 @@ import fr.acinq.secp256k1.NativeSecp256k1 import java.util.* public object NativeSecp256k1AndroidLoader { - @JvmStatic @Synchronized @Throws(Exception::class) - fun load(): Secp256k1 { + public fun load(): Secp256k1 { try { System.loadLibrary("secp256k1-jni") return NativeSecp256k1 @@ -27,5 +26,4 @@ public object NativeSecp256k1AndroidLoader { } } - } diff --git a/src/nativeInterop/cinterop/libsecp256k1.def b/src/nativeInterop/cinterop/libsecp256k1.def index 5063ce6..9dc3302 100644 --- a/src/nativeInterop/cinterop/libsecp256k1.def +++ b/src/nativeInterop/cinterop/libsecp256k1.def @@ -3,8 +3,10 @@ package = secp256k1 headers = secp256k1.h secp256k1_ecdh.h secp256k1_recovery.h secp256k1_extrakeys.h secp256k1_schnorrsig.h headerFilter = secp256k1/** secp256k1_ecdh.h secp256k1_recovery.h secp256k1_extrakeys.h secp256k1_schnorrsig.h secp256k1.h -libraryPaths.linux = c/secp256k1/build/linux/ +staticLibraries.linux = libsecp256k1.a +libraryPaths.linux = c/secp256k1/build/linux/ native/build/linux/ native/build/darwin/ linkerOpts.linux = -L/usr/lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -libraryPaths.ios = c/secp256k1/build/ios/ /usr/local/lib +staticLibraries.ios = libsecp256k1.a +libraryPaths.ios = c/secp256k1/build/ios/ /usr/local/lib native/build/ios/ linkerOpts.ios = -framework Security -framework Foundation diff --git a/src/nativeMain/kotlin/fr/acinq/secp256k1/Secp256k1Native.kt b/src/nativeMain/kotlin/fr/acinq/secp256k1/Secp256k1Native.kt index 7ffe516..9bae917 100644 --- a/src/nativeMain/kotlin/fr/acinq/secp256k1/Secp256k1Native.kt +++ b/src/nativeMain/kotlin/fr/acinq/secp256k1/Secp256k1Native.kt @@ -4,7 +4,7 @@ import kotlinx.cinterop.* import platform.posix.size_tVar import secp256k1.* -@OptIn(ExperimentalUnsignedTypes::class) +@OptIn(ExperimentalUnsignedTypes::class, ExperimentalForeignApi::class) public object Secp256k1Native : Secp256k1 { private val ctx: CPointer by lazy { @@ -232,7 +232,7 @@ public object Secp256k1Native : Secp256k1 { secp256k1_xonly_pubkey_parse(ctx, pubkey.ptr, nPub).requireSuccess("secp256k1_xonly_pubkey_parse() failed") val nData = toNat(data) val nSig = toNat(signature) - return secp256k1_schnorrsig_verify(ctx, nSig, nData, 32, pubkey.ptr) == 1 + return secp256k1_schnorrsig_verify(ctx, nSig, nData, 32u, pubkey.ptr) == 1 } } diff --git a/tests/build.gradle.kts b/tests/build.gradle.kts index a50d3e5..62f4070 100644 --- a/tests/build.gradle.kts +++ b/tests/build.gradle.kts @@ -36,14 +36,14 @@ kotlin { } if (includeAndroid) { - android { + androidTarget { compilations.all { kotlinOptions.jvmTarget = "1.8" } sourceSets["androidMain"].dependencies { implementation(project(":jni:android")) } - sourceSets["androidTest"].dependencies { + sourceSets["androidUnitTest"].dependencies { implementation(kotlin("test-junit")) implementation("androidx.test.ext:junit:1.1.2") implementation("androidx.test.espresso:espresso-core:3.3.0") @@ -51,17 +51,18 @@ kotlin { } } - linuxX64("linux") - - ios() + linuxX64() + iosX64() + iosArm64() + iosSimulatorArm64() } val includeAndroid = System.getProperty("includeAndroid")?.toBoolean() ?: true if (includeAndroid) { extensions.configure("android") { defaultConfig { - compileSdkVersion(30) - minSdkVersion(21) + compileSdk =30 + minSdk = 21 testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" }