From 39e4ddd00645d112bf91e2d2393e4b693dd5cf72 Mon Sep 17 00:00:00 2001 From: Ugljesa Jovanovic Date: Sun, 31 May 2020 20:36:06 +0200 Subject: [PATCH] Add support for arm 64 --- buildSrc/src/main/kotlin/Utils.kt | 29 +++++++++++++++++-- multiplatform-crypto-api/build.gradle.kts | 9 ++++-- .../build.gradle.kts | 2 +- sodiumWrapper/configure | 10 ++++++- 4 files changed, 43 insertions(+), 7 deletions(-) diff --git a/buildSrc/src/main/kotlin/Utils.kt b/buildSrc/src/main/kotlin/Utils.kt index 4f1caea..71a7a7d 100644 --- a/buildSrc/src/main/kotlin/Utils.kt +++ b/buildSrc/src/main/kotlin/Utils.kt @@ -1,7 +1,11 @@ +import org.apache.tools.ant.taskdefs.condition.Os import org.gradle.api.NamedDomainObjectContainer +import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform +import org.gradle.nativeplatform.platform.internal.Architectures import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension import org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet +import java.lang.RuntimeException /** * Created by Ugljesa Jovanovic @@ -20,14 +24,35 @@ fun getHostOsName(): String { return "unknown" } +fun getHostArchitecture(): String { + val architecture =System.getProperty("os.arch") + DefaultNativePlatform.getCurrentArchitecture() + println("Arch: $architecture") + val resolvedArch = Architectures.forInput(architecture).name + println("Resolved arch: $resolvedArch") + return resolvedArch +} + fun KotlinMultiplatformExtension.isRunningInIdea(block : KotlinMultiplatformExtension.() -> Unit) { if (isInIdea()) { block(this) } } -fun KotlinMultiplatformExtension.runningOnLinux(block : KotlinMultiplatformExtension.() -> Unit) { - if (getHostOsName() == "linux") { +fun KotlinMultiplatformExtension.runningOnLinuxx86_64(block : KotlinMultiplatformExtension.() -> Unit) { + if (getHostOsName() == "linux" && getHostArchitecture() == "x86-64") { + block(this) + } +} + +fun KotlinMultiplatformExtension.runningOnLinuxxArm64(block : KotlinMultiplatformExtension.() -> Unit) { + if (getHostOsName() == "linux" && getHostArchitecture() == "arm-v8") { + block(this) + } +} + +fun KotlinMultiplatformExtension.runningOnLinuxxArm32(block : KotlinMultiplatformExtension.() -> Unit) { + if (getHostOsName() == "linux" && getHostArchitecture() == "arm-v7") { block(this) } } diff --git a/multiplatform-crypto-api/build.gradle.kts b/multiplatform-crypto-api/build.gradle.kts index c652786..bf15cb1 100644 --- a/multiplatform-crypto-api/build.gradle.kts +++ b/multiplatform-crypto-api/build.gradle.kts @@ -19,7 +19,6 @@ import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest import org.jetbrains.kotlin.gradle.targets.native.tasks.KotlinNativeTest -import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile plugins { kotlin(PluginsDeps.multiplatform) @@ -48,7 +47,7 @@ fun getHostOsName(): String { kotlin { val hostOsName = getHostOsName() - runningOnLinux { + runningOnLinuxx86_64 { jvm() js { compilations { @@ -88,6 +87,11 @@ kotlin { } } } + + + } + + runningOnLinuxxArm64 { //Not supported in coroutines at the moment linuxArm32Hfp() { binaries { @@ -102,7 +106,6 @@ kotlin { } } } - } runningOnMacos { diff --git a/multiplatform-crypto-delegated/build.gradle.kts b/multiplatform-crypto-delegated/build.gradle.kts index 94cf49e..9c00352 100644 --- a/multiplatform-crypto-delegated/build.gradle.kts +++ b/multiplatform-crypto-delegated/build.gradle.kts @@ -55,7 +55,7 @@ println("Idea active: $ideaActive") kotlin { val hostOsName = getHostOsName() - runningOnLinux { + runningOnLinuxx86_64 { jvm() js { browser { diff --git a/sodiumWrapper/configure b/sodiumWrapper/configure index 663eb0f..32465b5 100755 --- a/sodiumWrapper/configure +++ b/sodiumWrapper/configure @@ -20,6 +20,14 @@ if [ -z "$SYSROOT" ]; then export CC=$(find $KONAN/dependencies -wholename *${ARCH/_/-}/bin/*$GCC | head -n1) ;; + **Linux*aarch64**) + echo "Linux ARM env" + GCC=${GCC:-gcc} + GCC=gcc + export CC=$(find $KONAN/dependencies -wholename *${ARCH/_/-}/bin/*$GCC | head -n1) + ;; + + **Darwin*x86_64**) echo "Darwin env" GCC=${GCC:-clang} @@ -39,4 +47,4 @@ if [ -z "$SYSROOT" ]; then echo $CC fi -./configure --prefix=$PREFIX "$@" +./configure --prefix=$PREFIX "$@" \ No newline at end of file