[Native] JDK toolchains in KonanToolRunner
Use JDK toolchains in KonanToolRunner to make build able to change JDK Use JDK 17 for MacOS aarch64 hosts
This commit is contained in:
@@ -3,6 +3,8 @@ import org.jetbrains.kotlin.gradle.plugin.konan.tasks.KonanCacheTask
|
|||||||
import org.jetbrains.kotlin.EndorsedLibraryInfo
|
import org.jetbrains.kotlin.EndorsedLibraryInfo
|
||||||
import org.jetbrains.kotlin.UtilsKt
|
import org.jetbrains.kotlin.UtilsKt
|
||||||
|
|
||||||
|
apply plugin: 'java'
|
||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
repositories {
|
repositories {
|
||||||
if (UtilsKt.getCacheRedirectorEnabled(project))
|
if (UtilsKt.getCacheRedirectorEnabled(project))
|
||||||
@@ -20,7 +22,7 @@ ext {
|
|||||||
|
|
||||||
Collection<EndorsedLibraryInfo> endorsedLibrariesList = ext.endorsedLibraries.values()
|
Collection<EndorsedLibraryInfo> endorsedLibrariesList = ext.endorsedLibraries.values()
|
||||||
|
|
||||||
task clean {
|
tasks.named("clean") {
|
||||||
doFirst {
|
doFirst {
|
||||||
delete buildDir
|
delete buildDir
|
||||||
}
|
}
|
||||||
|
|||||||
+26
-14
@@ -20,7 +20,11 @@ import org.gradle.api.Named
|
|||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
import org.gradle.api.Action
|
import org.gradle.api.Action
|
||||||
import org.gradle.process.JavaExecSpec
|
import org.gradle.api.plugins.JavaPluginExtension
|
||||||
|
import org.gradle.api.provider.Property
|
||||||
|
import org.gradle.jvm.toolchain.JavaLauncher
|
||||||
|
import org.gradle.jvm.toolchain.JavaToolchainService
|
||||||
|
import org.gradle.process.ExecSpec
|
||||||
import org.jetbrains.kotlin.gradle.plugin.konan.KonanPlugin.ProjectProperty.KONAN_HOME
|
import org.jetbrains.kotlin.gradle.plugin.konan.KonanPlugin.ProjectProperty.KONAN_HOME
|
||||||
import org.jetbrains.kotlin.konan.target.Family
|
import org.jetbrains.kotlin.konan.target.Family
|
||||||
import org.jetbrains.kotlin.konan.target.HostManager
|
import org.jetbrains.kotlin.konan.target.HostManager
|
||||||
@@ -97,21 +101,30 @@ internal abstract class KonanCliRunner(
|
|||||||
"Please change it to the compiler root directory and rerun the build.")
|
"Please change it to the compiler root directory and rerun the build.")
|
||||||
}
|
}
|
||||||
|
|
||||||
project.javaexec(object :Action<JavaExecSpec> {
|
val toolchain = project.extensions.getByType(JavaPluginExtension::class.java).toolchain
|
||||||
override fun execute(exec: JavaExecSpec) {
|
val launcher = project.extensions.getByType(JavaToolchainService::class.java).launcherFor(toolchain)
|
||||||
exec.main = mainClass
|
|
||||||
exec.classpath = classpath
|
project.exec(object : Action<ExecSpec> {
|
||||||
exec.jvmArgs(jvmArgs)
|
override fun execute(exec: ExecSpec) {
|
||||||
exec.systemProperties(
|
exec.executable = launcher.get().executablePath.toString()
|
||||||
System.getProperties().asSequence()
|
val properties = System.getProperties().asSequence()
|
||||||
.map { (k, v) -> k.toString() to v.toString() }
|
.map { (k, v) -> k.toString() to v.toString() }
|
||||||
.filter { (k, _) -> k !in this@KonanCliRunner.blacklistProperties }
|
.filter { (k, _) -> k !in this@KonanCliRunner.blacklistProperties }
|
||||||
|
.filter { (k, _) -> !k.startsWith("sun") && !k.startsWith("java") }
|
||||||
.escapeQuotesForWindows()
|
.escapeQuotesForWindows()
|
||||||
.toMap()
|
.toMap()
|
||||||
)
|
.toMutableMap()
|
||||||
exec.systemProperty("konan.home", project.kotlinNativeDist.absolutePath)
|
properties.put("konan.home", project.kotlinNativeDist.absolutePath)
|
||||||
exec.args(listOf(toolName) + transformArgs(args))
|
|
||||||
this@KonanCliRunner.blacklistEnvironment.forEach { environment.remove(it) }
|
exec.args(mutableListOf<String>().apply {
|
||||||
|
addAll(jvmArgs)
|
||||||
|
addAll(properties.entries.map { "-D${it.key}=${it.value}" })
|
||||||
|
add("-cp")
|
||||||
|
add(classpath.joinToString(separator = System.getProperty("path.separator")))
|
||||||
|
add(mainClass)
|
||||||
|
addAll(listOf(toolName) + transformArgs(args))
|
||||||
|
})
|
||||||
|
blacklistEnvironment.forEach { environment.remove(it) }
|
||||||
exec.environment(environment)
|
exec.environment(environment)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -138,8 +151,7 @@ internal class KonanCompilerRunner(
|
|||||||
additionalJvmArgs: List<String> = emptyList(),
|
additionalJvmArgs: List<String> = emptyList(),
|
||||||
val useArgFile: Boolean = true,
|
val useArgFile: Boolean = true,
|
||||||
konanHome: String = project.konanHome
|
konanHome: String = project.konanHome
|
||||||
) : KonanCliRunner("konanc", "Kotlin/Native compiler", project, additionalJvmArgs, konanHome)
|
) : KonanCliRunner("konanc", "Kotlin/Native compiler", project, additionalJvmArgs, konanHome) {
|
||||||
{
|
|
||||||
override fun transformArgs(args: List<String>): List<String> {
|
override fun transformArgs(args: List<String>): List<String> {
|
||||||
if (!useArgFile) {
|
if (!useArgFile) {
|
||||||
return args
|
return args
|
||||||
|
|||||||
Reference in New Issue
Block a user