From d69e1bc0a86548ed6bc8639a7c9d5f9d94b87d55 Mon Sep 17 00:00:00 2001 From: soywiz Date: Wed, 14 Jul 2021 08:43:06 +0200 Subject: [PATCH] Add support for linuxArm64 and linuxArm32Hfp targets --- atomicfu/build.gradle | 12 +++++++++++- gradle/interop-as-source-set-klib.gradle | 11 +++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/atomicfu/build.gradle b/atomicfu/build.gradle index 65adf892..e84c94a2 100644 --- a/atomicfu/build.gradle +++ b/atomicfu/build.gradle @@ -78,6 +78,8 @@ if (rootProject.ext.native_targets_enabled) { addNative(fromPreset(project.ext.ideaPreset, 'native')) } else { addTarget(presets.linuxX64) + addTarget(presets.linuxArm32Hfp) + addTarget(presets.linuxArm64) addTarget(presets.iosArm64) addTarget(presets.iosArm32) addTarget(presets.iosX64) @@ -127,7 +129,15 @@ if (rootProject.ext.native_targets_enabled) { apply from: "$rootDir/gradle/interop-as-source-set-klib.gradle" registerInteropAsSourceSetOutput( - kotlin.linuxX64().compilations["main"].cinterops["interop"], + kotlin.linuxX64(), + kotlin.sourceSets["nativeInterop"] + ) + registerInteropAsSourceSetOutput( + kotlin.linuxArm64(), + kotlin.sourceSets["nativeInterop"] + ) + registerInteropAsSourceSetOutput( + kotlin.linuxArm32Hfp(), kotlin.sourceSets["nativeInterop"] ) } diff --git a/gradle/interop-as-source-set-klib.gradle b/gradle/interop-as-source-set-klib.gradle index 62f2b776..178d63cf 100644 --- a/gradle/interop-as-source-set-klib.gradle +++ b/gradle/interop-as-source-set-klib.gradle @@ -2,16 +2,19 @@ * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. */ -project.ext.registerInteropAsSourceSetOutput = { interop, sourceSet -> +project.ext.registerInteropAsSourceSetOutput = { target, sourceSet -> afterEvaluate { + def interop = target.compilations["main"].cinterops["interop"] def cinteropTask = tasks.named(interop.interopProcessingTaskName) def cinteropKlib = cinteropTask.map { it.outputFile } def fakeCinteropCompilation = kotlin.targets["metadata"].compilations[sourceSet.name] def destination = fakeCinteropCompilation.compileKotlinTask.destinationDir - def tempDir = "$buildDir/tmp/${sourceSet.name}UnpackedInteropKlib" + def tempDir = "$buildDir/tmp/${target.name}${sourceSet.name}UnpackedInteropKlib" - def prepareKlibTaskProvider = tasks.register("prepare${sourceSet.name.capitalize()}InteropKlib", Sync) { + println("prepare${target.name}${sourceSet.name.capitalize()}InteropKlib") + + def prepareKlibTaskProvider = tasks.register("prepare${target.name}${sourceSet.name.capitalize()}InteropKlib", Sync) { from(files(zipTree(cinteropKlib).matching { exclude("targets/**", "default/targets/**") }).builtBy(cinteropTask)) @@ -33,7 +36,7 @@ project.ext.registerInteropAsSourceSetOutput = { interop, sourceSet -> } } - def copyCinteropTaskProvider = tasks.register("copy${sourceSet.name.capitalize()}CinteropKlib", Zip) { + def copyCinteropTaskProvider = tasks.register("copy${target.name}${sourceSet.name.capitalize()}CinteropKlib", Zip) { from(fileTree(tempDir).builtBy(prepareKlibTaskProvider)) destinationDirectory.set(destination) archiveFileName.set("${project.name}_${fakeCinteropCompilation.name}.klib")