Update build for macos M1 (#77)
This commit is contained in:
parent
94bb2d67cf
commit
6fedb1577c
@ -27,6 +27,7 @@ android {
|
|||||||
|
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
cmake {
|
cmake {
|
||||||
|
version = "3.22.1"
|
||||||
path("src/main/CMakeLists.txt")
|
path("src/main/CMakeLists.txt")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,8 +12,12 @@ dependencies {
|
|||||||
val copyJni by tasks.creating(Sync::class) {
|
val copyJni by tasks.creating(Sync::class) {
|
||||||
onlyIf { org.gradle.internal.os.OperatingSystem.current().isMacOsX }
|
onlyIf { org.gradle.internal.os.OperatingSystem.current().isMacOsX }
|
||||||
dependsOn(":jni:jvm:buildNativeHost")
|
dependsOn(":jni:jvm:buildNativeHost")
|
||||||
|
val arch = when (System.getProperty("os.arch")) {
|
||||||
|
"aarch64" -> "aarch64"
|
||||||
|
else -> "x86_64"
|
||||||
|
}
|
||||||
from(rootDir.resolve("jni/jvm/build/darwin/libsecp256k1-jni.dylib"))
|
from(rootDir.resolve("jni/jvm/build/darwin/libsecp256k1-jni.dylib"))
|
||||||
into(buildDir.resolve("jniResources/fr/acinq/secp256k1/jni/native/darwin-x86_64"))
|
into(buildDir.resolve("jniResources/fr/acinq/secp256k1/jni/native/darwin-$arch"))
|
||||||
}
|
}
|
||||||
|
|
||||||
(tasks["processResources"] as ProcessResources).apply {
|
(tasks["processResources"] as ProcessResources).apply {
|
||||||
|
@ -16,7 +16,7 @@ if [ "$TARGET" == "mingw" ]; then
|
|||||||
elif [ "$TARGET" == "linux" ]; then
|
elif [ "$TARGET" == "linux" ]; then
|
||||||
CONF_OPTS="CFLAGS=-fPIC"
|
CONF_OPTS="CFLAGS=-fPIC"
|
||||||
elif [ "$TARGET" == "darwin" ]; then
|
elif [ "$TARGET" == "darwin" ]; then
|
||||||
CONF_OPTS="--host=x86_64-w64-darwin"
|
CONF_OPTS=""
|
||||||
else
|
else
|
||||||
echo "Unknown TARGET=$TARGET"
|
echo "Unknown TARGET=$TARGET"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -27,7 +27,9 @@ You must edit `secp256k1-kmp-staging-upload.sh` and add your sonatype credential
|
|||||||
## Adding custom JNI bindings
|
## Adding custom JNI bindings
|
||||||
|
|
||||||
Github CI currently generates JNI bindings for Windows x64, Linux x64 and iOS x64. But it is possible to add custom bindings to JNI packages before
|
Github CI currently generates JNI bindings for Windows x64, Linux x64 and iOS x64. But it is possible to add custom bindings to JNI packages before
|
||||||
they are published to maven central. This is how we add linux arm64 bindings:
|
they are published to maven central.
|
||||||
|
|
||||||
|
This is how we add linux arm64 bindings:
|
||||||
- compile JNI bindings for Linux Arm64 (on a Linux Arm64 machine, cross-compilation is not supported)
|
- compile JNI bindings for Linux Arm64 (on a Linux Arm64 machine, cross-compilation is not supported)
|
||||||
- git clone --recursive https://github.com/ACINQ/secp256k1-kmp.git
|
- git clone --recursive https://github.com/ACINQ/secp256k1-kmp.git
|
||||||
- cd secp256k1-kmp
|
- cd secp256k1-kmp
|
||||||
@ -37,6 +39,19 @@ they are published to maven central. This is how we add linux arm64 bindings:
|
|||||||
- JNI library is: jni/jvm/build/linux/libsecp256k1-jni.so
|
- JNI library is: jni/jvm/build/linux/libsecp256k1-jni.so
|
||||||
- copy libsecp256k1-jni.so to fr/acinq/secp256k1/jni/native/linux-aarch64/libsecp256k1-jni.so
|
- copy libsecp256k1-jni.so to fr/acinq/secp256k1/jni/native/linux-aarch64/libsecp256k1-jni.so
|
||||||
- run `secp256k1-kmp-add-linuxarm64.sh` and specify either `release` or `snapshot` and the `VERSION` environment variable, for example:
|
- run `secp256k1-kmp-add-linuxarm64.sh` and specify either `release` or `snapshot` and the `VERSION` environment variable, for example:
|
||||||
- VERSION=0.6.4-SNAPSHOT ./secp256k1-kmp-add-linuxarm64.sh snapshot
|
- VERSION=0.9.0-SNAPSHOT ./secp256k1-kmp-add-linuxarm64.sh snapshot
|
||||||
- VERSION=0.6.3 ./secp256k1-kmp-add-linuxarm64.sh release
|
- VERSION=0.9.0 ./secp256k1-kmp-add-linuxarm64.sh release
|
||||||
|
|
||||||
|
This is how we add macos arm64 (M1/M2) bindings:
|
||||||
|
- compile JNI bindings for macos Arm64 (on a macos Arm64 machine, cross-compilation is not supported)
|
||||||
|
- git clone --recursive https://github.com/ACINQ/secp256k1-kmp.git
|
||||||
|
- cd secp256k1-kmp
|
||||||
|
- TARGET=darwin ./native/build.sh
|
||||||
|
- mkdir -p jni/jvm/build/darwin
|
||||||
|
- TARGET=darwin ./jni/jvm/build.sh
|
||||||
|
- JNI library is: jni/jvm/build/darwin/libsecp256k1-jni.dylib
|
||||||
|
- copy libsecp256k1-jni.dylib to fr/acinq/secp256k1/jni/native/darwin-aarch64/libsecp256k1-jni.dylib
|
||||||
|
- run `secp256k1-kmp-add-darwinaarch64.sh` and specify either `release` or `snapshot` and the `VERSION` environment variable, for example:
|
||||||
|
- VERSION=0.9.0-SNAPSHOT ./secp256k1-kmp-add-darwinaarch64.sh snapshot
|
||||||
|
- VERSION=0.9.0 ./secp256k1-kmp-add-darwinaarch64.sh release
|
||||||
|
|
||||||
|
17
publishing/secp256k1-kmp-add-darwinaarch64.sh
Executable file
17
publishing/secp256k1-kmp-add-darwinaarch64.sh
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/bash -x
|
||||||
|
|
||||||
|
if [ $# -eq 0 ]
|
||||||
|
then
|
||||||
|
echo "specify either snapshot or release"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# add aarch64 (ARM64) library to the darwin jar
|
||||||
|
if [ -e fr/acinq/secp256k1/jni/native/darwin-aarch64/libsecp256k1-jni.dylib ]
|
||||||
|
then
|
||||||
|
jar -uf $1/fr/acinq/secp256k1/secp256k1-kmp-jni-jvm-darwin/$VERSION/secp256k1-kmp-jni-jvm-darwin-$VERSION.jar fr || exit
|
||||||
|
else
|
||||||
|
libsecp256k1-jni.dylib for arch64 is missing
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
GROUP_ID=fr.acinq.secp256k1
|
GROUP_ID=fr.acinq.secp256k1
|
||||||
ARTIFACT_ID_BASE=secp256k1-kmp
|
ARTIFACT_ID_BASE=secp256k1-kmp
|
||||||
VERSION=0.6.3-SNAPSHOT
|
VERSION=0.9.0-SNAPSHOT
|
||||||
|
|
||||||
cd snapshot
|
cd snapshot
|
||||||
pushd .
|
pushd .
|
||||||
|
Loading…
x
Reference in New Issue
Block a user