From 04d01e381fda893fb9a482325033061fe394dc3f Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Mon, 21 Aug 2023 14:15:28 +0000 Subject: [PATCH] Native: disable running cinterop in Gradle process when building K/N Building Kotlin/Native itself involves running cinterop in the Gradle daemon process to reduce build time. But this optimization appears to be incorrect when reusing Gradle daemon for subsequent builds. This commit disables the optimization by default, keeping enabling it possible using `kotlin.native.allowRunningCinteropInProcess=true` project property. For more details see ^KT-61300 --- .../kotlin/gradle/plugin/konan/KonanToolRunner.kt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/kotlin-native/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanToolRunner.kt b/kotlin-native/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanToolRunner.kt index a0eaa9efceb..ef213bb02cd 100644 --- a/kotlin-native/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanToolRunner.kt +++ b/kotlin-native/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanToolRunner.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.gradle.plugin.konan +import kotlinBuildProperties import org.gradle.api.Project import org.jetbrains.kotlin.gradle.plugin.konan.KonanPlugin.ProjectProperty.KONAN_HOME import org.jetbrains.kotlin.konan.target.HostManager @@ -51,7 +52,7 @@ internal abstract class KonanCliRunner( final override val mainClass get() = "org.jetbrains.kotlin.cli.utilities.MainKt" final override val daemonEntryPoint get() = "daemonMain" - final override val mustRunViaExec get() = false.also { System.setProperty(runFromDaemonPropertyName, "true") } + override val mustRunViaExec get() = false.also { System.setProperty(runFromDaemonPropertyName, "true") } final override val execSystemPropertiesBlacklist: Set get() = super.execSystemPropertiesBlacklist + runFromDaemonPropertyName @@ -136,12 +137,19 @@ internal class CliToolConfig(konanHome: String, target: String) : AbstractToolCo /** Kotlin/Native C-interop tool runner */ internal class KonanCliInteropRunner( - project: Project, + private val project: Project, additionalJvmArgs: List = emptyList(), konanHome: String = project.konanHome ) : KonanCliRunner("cinterop", project, additionalJvmArgs, konanHome) { private val projectDir = project.projectDir.toString() + override val mustRunViaExec: Boolean + get() = if (project.kotlinBuildProperties.getBoolean("kotlin.native.allowRunningCinteropInProcess")) { + super.mustRunViaExec + } else { + true + } + override fun transformArgs(args: List): List { return super.transformArgs(args) + listOf("-Xproject-dir", projectDir) }