[Native] Move JavaLauncher property from global scope to the KonanPlugin

This commit is contained in:
Pavel Punegov
2021-08-03 13:00:35 +03:00
committed by Space
parent 6bbfe0d503
commit 73bb6d5d34
@@ -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<JavaLauncher> = 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<JavaToolchainSpec> {
override fun execute(toolchainSpec: JavaToolchainSpec) {
toolchainSpec.languageVersion.set(JavaLanguageVersion.of(JdkMajorVersion.JDK_11.majorVersion))
}
}).get()
}
}
konanJvmLauncher
}
// region Useful extensions and functions ---------------------------------------
internal fun MutableList<String>.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<JavaLauncher> = 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<JavaToolchainSpec> {
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)