From 73bb6d5d3410c7098bdbc158647cae49d822fd2f Mon Sep 17 00:00:00 2001 From: Pavel Punegov Date: Tue, 3 Aug 2021 13:00:35 +0300 Subject: [PATCH] [Native] Move JavaLauncher property from global scope to the KonanPlugin --- .../kotlin/gradle/plugin/konan/KonanPlugin.kt | 41 +++++++++---------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/kotlin-native/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanPlugin.kt b/kotlin-native/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanPlugin.kt index ef658b0fdc3..1fd5d59a065 100644 --- a/kotlin-native/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanPlugin.kt +++ b/kotlin-native/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanPlugin.kt @@ -174,26 +174,6 @@ internal fun Project.konanCompilerName(): String = internal fun Project.konanCompilerDownloadDir(): String = DependencyProcessor.localKonanDir.resolve(project.konanCompilerName()).absolutePath -private lateinit var konanJvmLauncher: JavaLauncher - -internal fun Project.getJavaLauncher(): Provider = providers.provider { - if (!::konanJvmLauncher.isInitialized) { - val toolchain = project.extensions.getByType(JavaPluginExtension::class.java).toolchain - val service = project.extensions.getByType(JavaToolchainService::class.java) - konanJvmLauncher = try { - service.launcherFor(toolchain).get() - } catch (ex: GradleException) { - // If the JDK that was set is not available get the JDK 11 as a default - service.launcherFor(object : Action { - override fun execute(toolchainSpec: JavaToolchainSpec) { - toolchainSpec.languageVersion.set(JavaLanguageVersion.of(JdkMajorVersion.JDK_11.majorVersion)) - } - }).get() - } - } - konanJvmLauncher -} - // region Useful extensions and functions --------------------------------------- internal fun MutableList.addArg(parameter: String, value: String) { @@ -353,6 +333,25 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR } } + private lateinit var konanJvmLauncher: JavaLauncher + + private fun getJavaLauncher(project: Project): Provider = project.providers.provider { + if (!::konanJvmLauncher.isInitialized) { + val toolchain = project.extensions.getByType(JavaPluginExtension::class.java).toolchain + val service = project.extensions.getByType(JavaToolchainService::class.java) + konanJvmLauncher = try { + service.launcherFor(toolchain).get() + } catch (ex: GradleException) { + // If the JDK that was set is not available get the JDK 11 as a default + service.launcherFor(object : Action { + override fun execute(toolchainSpec: JavaToolchainSpec) { + toolchainSpec.languageVersion.set(JavaLanguageVersion.of(JdkMajorVersion.JDK_11.majorVersion)) + } + }).get() + } + } + konanJvmLauncher + } override fun apply(project: ProjectInternal) { checkGradleVersion() @@ -367,7 +366,7 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR KonanArtifactContainer::class.java, project ) - project.setProperty(ProjectProperty.KONAN_JVM_LAUNCHER, project.getJavaLauncher()) + project.setProperty(ProjectProperty.KONAN_JVM_LAUNCHER, getJavaLauncher(project)) project.warnAboutDeprecatedProperty(ProjectProperty.KONAN_HOME)