[K/N] Remove more ext properties
This commit is contained in:
committed by
Space Team
parent
23710ac133
commit
adf5331ff0
@@ -57,6 +57,7 @@ void loadCommandLineProperties() {
|
|||||||
loadCommandLineProperties()
|
loadCommandLineProperties()
|
||||||
loadLocalProperties()
|
loadLocalProperties()
|
||||||
|
|
||||||
|
apply plugin: 'platform-manager'
|
||||||
apply plugin: 'konan'
|
apply plugin: 'konan'
|
||||||
apply plugin: 'kotlin'
|
apply plugin: 'kotlin'
|
||||||
apply plugin: 'kotlin.native.build-tools-conventions'
|
apply plugin: 'kotlin.native.build-tools-conventions'
|
||||||
@@ -71,7 +72,7 @@ configurations {
|
|||||||
|
|
||||||
ext.testOutputRoot = rootProject.file("test.output").absolutePath
|
ext.testOutputRoot = rootProject.file("test.output").absolutePath
|
||||||
|
|
||||||
ext.platformManager = project.project(":kotlin-native").platformManager
|
ext.platformManager = project.extensions.platformManager
|
||||||
ext.target = platformManager.targetManager(project.testTarget).target
|
ext.target = platformManager.targetManager(project.testTarget).target
|
||||||
|
|
||||||
ext.buildNumber = rootProject.property("kotlinVersion")
|
ext.buildNumber = rootProject.property("kotlinVersion")
|
||||||
|
|||||||
@@ -130,5 +130,9 @@ gradlePlugin {
|
|||||||
id = "native-dependencies"
|
id = "native-dependencies"
|
||||||
implementationClass = "org.jetbrains.kotlin.dependencies.NativeDependenciesPlugin"
|
implementationClass = "org.jetbrains.kotlin.dependencies.NativeDependenciesPlugin"
|
||||||
}
|
}
|
||||||
|
create("platformManager") {
|
||||||
|
id = "platform-manager"
|
||||||
|
implementationClass = "org.jetbrains.kotlin.PlatformManagerPlugin"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -170,7 +170,7 @@ class NamedNativeInteropConfig implements Named {
|
|||||||
this.project = project
|
this.project = project
|
||||||
this.flavor = flavor
|
this.flavor = flavor
|
||||||
|
|
||||||
def platformManager = project.project(":kotlin-native").ext.platformManager
|
def platformManager = project.extensions.platformManager
|
||||||
def targetManager = platformManager.targetManager(target)
|
def targetManager = platformManager.targetManager(target)
|
||||||
this.target = targetManager.targetName
|
this.target = targetManager.targetName
|
||||||
|
|
||||||
@@ -304,6 +304,7 @@ class NativeInteropPlugin implements Plugin<Project> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
void apply(Project prj) {
|
void apply(Project prj) {
|
||||||
|
prj.plugins.apply("platform-manager")
|
||||||
prj.plugins.apply("native-dependencies")
|
prj.plugins.apply("native-dependencies")
|
||||||
|
|
||||||
prj.extensions.add("kotlinNativeInterop", new NativeInteropExtension(prj))
|
prj.extensions.add("kotlinNativeInterop", new NativeInteropExtension(prj))
|
||||||
|
|||||||
@@ -161,12 +161,6 @@ abstract class ExecClang @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
@JvmStatic
|
|
||||||
fun create(project: Project): ExecClang = create(
|
|
||||||
project.objects,
|
|
||||||
project.project(":kotlin-native").findProperty("platformManager") as PlatformManager,
|
|
||||||
)
|
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun create(objects: ObjectFactory, platformManager: PlatformManager) =
|
fun create(objects: ObjectFactory, platformManager: PlatformManager) =
|
||||||
objects.newInstance(ExecClang::class.java, platformManager)
|
objects.newInstance(ExecClang::class.java, platformManager)
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ object PlatformInfo {
|
|||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun getTarget(project: Project): KonanTarget {
|
fun getTarget(project: Project): KonanTarget {
|
||||||
val platformManager = project.project(":kotlin-native").platformManager
|
val platformManager = project.platformManager
|
||||||
val targetName = project.project.testTarget.name
|
val targetName = project.project.testTarget.name
|
||||||
return platformManager.targetManager(targetName).target
|
return platformManager.targetManager(targetName).target
|
||||||
}
|
}
|
||||||
|
|||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin
|
||||||
|
|
||||||
|
import kotlinBuildProperties
|
||||||
|
import org.gradle.api.Plugin
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.jetbrains.kotlin.konan.target.*
|
||||||
|
|
||||||
|
open class PlatformManagerPlugin : Plugin<Project> {
|
||||||
|
override fun apply(project: Project) {
|
||||||
|
val konanDataDir = project.kotlinBuildProperties.getOrNull("konan.data.dir") as String?
|
||||||
|
val platformManager = PlatformManager(buildDistribution(project.project(":kotlin-native").projectDir.absolutePath, konanDataDir), false)
|
||||||
|
project.extensions.add("platformManager", platformManager)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,6 +12,7 @@ import org.gradle.api.file.FileCollection
|
|||||||
import org.gradle.api.plugins.ExtraPropertiesExtension
|
import org.gradle.api.plugins.ExtraPropertiesExtension
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
import org.gradle.api.tasks.TaskProvider
|
import org.gradle.api.tasks.TaskProvider
|
||||||
|
import org.gradle.kotlin.dsl.*
|
||||||
import org.jetbrains.kotlin.konan.target.*
|
import org.jetbrains.kotlin.konan.target.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
@@ -25,7 +26,7 @@ private const val KLIB_PROPERTY_COMPILER_VERSION = "compiler_version"
|
|||||||
//region Project properties.
|
//region Project properties.
|
||||||
|
|
||||||
val Project.platformManager
|
val Project.platformManager
|
||||||
get() = findProperty("platformManager") as PlatformManager
|
get() = extensions.getByType<PlatformManager>()
|
||||||
|
|
||||||
val Project.testTarget
|
val Project.testTarget
|
||||||
get() = findProperty("target") as? KonanTarget ?: HostManager.host
|
get() = findProperty("target") as? KonanTarget ?: HostManager.host
|
||||||
@@ -331,7 +332,7 @@ fun Project.buildStaticLibrary(cSources: Collection<File>, output: File, objDir:
|
|||||||
val platform = platformManager.platform(testTarget)
|
val platform = platformManager.platform(testTarget)
|
||||||
|
|
||||||
objDir.mkdirs()
|
objDir.mkdirs()
|
||||||
ExecClang.create(project).execClangForCompilerTests(testTarget) {
|
ExecClang.create(project.objects, project.platformManager).execClangForCompilerTests(testTarget) {
|
||||||
args = listOf("-c", *cSources.map { it.absolutePath }.toTypedArray())
|
args = listOf("-c", *cSources.map { it.absolutePath }.toTypedArray())
|
||||||
workingDir(objDir)
|
workingDir(objDir)
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-5
@@ -21,6 +21,7 @@ import org.gradle.api.tasks.TaskProvider
|
|||||||
import org.gradle.kotlin.dsl.*
|
import org.gradle.kotlin.dsl.*
|
||||||
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
||||||
import org.jetbrains.kotlin.ExecClang
|
import org.jetbrains.kotlin.ExecClang
|
||||||
|
import org.jetbrains.kotlin.PlatformManagerPlugin
|
||||||
import org.jetbrains.kotlin.cpp.*
|
import org.jetbrains.kotlin.cpp.*
|
||||||
import org.jetbrains.kotlin.dependencies.NativeDependenciesExtension
|
import org.jetbrains.kotlin.dependencies.NativeDependenciesExtension
|
||||||
import org.jetbrains.kotlin.dependencies.NativeDependenciesPlugin
|
import org.jetbrains.kotlin.dependencies.NativeDependenciesPlugin
|
||||||
@@ -29,6 +30,7 @@ import org.jetbrains.kotlin.konan.target.PlatformManager
|
|||||||
import org.jetbrains.kotlin.konan.target.SanitizerKind
|
import org.jetbrains.kotlin.konan.target.SanitizerKind
|
||||||
import org.jetbrains.kotlin.konan.target.TargetDomainObjectContainer
|
import org.jetbrains.kotlin.konan.target.TargetDomainObjectContainer
|
||||||
import org.jetbrains.kotlin.konan.target.TargetWithSanitizer
|
import org.jetbrains.kotlin.konan.target.TargetWithSanitizer
|
||||||
|
import org.jetbrains.kotlin.konan.target.enabledTargets
|
||||||
import org.jetbrains.kotlin.testing.native.GoogleTestExtension
|
import org.jetbrains.kotlin.testing.native.GoogleTestExtension
|
||||||
import org.jetbrains.kotlin.utils.capitalized
|
import org.jetbrains.kotlin.utils.capitalized
|
||||||
import java.time.Duration
|
import java.time.Duration
|
||||||
@@ -139,13 +141,10 @@ open class CompileToBitcodeExtension @Inject constructor(val project: Project) :
|
|||||||
"-Wno-unused-parameter", // False positives with polymorphic functions.
|
"-Wno-unused-parameter", // False positives with polymorphic functions.
|
||||||
)
|
)
|
||||||
|
|
||||||
private val targetList = with(project) {
|
|
||||||
provider { (rootProject.project(":kotlin-native").property("targetList") as? List<*>)?.filterIsInstance<String>() ?: emptyList() } // TODO: Can we make it better?
|
|
||||||
}
|
|
||||||
|
|
||||||
private val allTestsTasks by lazy {
|
private val allTestsTasks by lazy {
|
||||||
val name = project.name.capitalized
|
val name = project.name.capitalized
|
||||||
targetList.get().associateBy(keySelector = { it }, valueTransform = {
|
val platformManager = project.extensions.getByType<PlatformManager>()
|
||||||
|
enabledTargets(platformManager).associateBy(keySelector = { it.visibleName }, valueTransform = {
|
||||||
project.tasks.register("${it}${name}Tests") {
|
project.tasks.register("${it}${name}Tests") {
|
||||||
description = "Runs all $name tests for $it"
|
description = "Runs all $name tests for $it"
|
||||||
group = VERIFICATION_TASK_GROUP
|
group = VERIFICATION_TASK_GROUP
|
||||||
@@ -670,6 +669,7 @@ open class CompileToBitcodeExtension @Inject constructor(val project: Project) :
|
|||||||
*/
|
*/
|
||||||
open class CompileToBitcodePlugin : Plugin<Project> {
|
open class CompileToBitcodePlugin : Plugin<Project> {
|
||||||
override fun apply(project: Project) {
|
override fun apply(project: Project) {
|
||||||
|
project.apply<PlatformManagerPlugin>()
|
||||||
project.apply<CppConsumerPlugin>()
|
project.apply<CppConsumerPlugin>()
|
||||||
project.apply<CompilationDatabasePlugin>()
|
project.apply<CompilationDatabasePlugin>()
|
||||||
project.apply<GitClangFormatPlugin>()
|
project.apply<GitClangFormatPlugin>()
|
||||||
|
|||||||
+3
-1
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.cpp
|
|||||||
import org.gradle.api.Plugin
|
import org.gradle.api.Plugin
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.kotlin.dsl.*
|
import org.gradle.kotlin.dsl.*
|
||||||
|
import org.jetbrains.kotlin.PlatformManagerPlugin
|
||||||
import org.jetbrains.kotlin.dependencies.NativeDependenciesExtension
|
import org.jetbrains.kotlin.dependencies.NativeDependenciesExtension
|
||||||
import org.jetbrains.kotlin.dependencies.NativeDependenciesPlugin
|
import org.jetbrains.kotlin.dependencies.NativeDependenciesPlugin
|
||||||
|
|
||||||
@@ -16,6 +17,7 @@ import org.jetbrains.kotlin.dependencies.NativeDependenciesPlugin
|
|||||||
*/
|
*/
|
||||||
open class GitClangFormatPlugin : Plugin<Project> {
|
open class GitClangFormatPlugin : Plugin<Project> {
|
||||||
override fun apply(target: Project) {
|
override fun apply(target: Project) {
|
||||||
|
target.apply<PlatformManagerPlugin>()
|
||||||
target.apply<NativeDependenciesPlugin>()
|
target.apply<NativeDependenciesPlugin>()
|
||||||
val nativeDependencies = target.extensions.getByType<NativeDependenciesExtension>()
|
val nativeDependencies = target.extensions.getByType<NativeDependenciesExtension>()
|
||||||
|
|
||||||
@@ -35,4 +37,4 @@ open class GitClangFormatPlugin : Plugin<Project> {
|
|||||||
@JvmStatic
|
@JvmStatic
|
||||||
val TASK_GROUP = "development support"
|
val TASK_GROUP = "development support"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -61,4 +61,4 @@ abstract class NativeDependenciesDownloader : DefaultTask() {
|
|||||||
dependencyProcessor.showInfo = logger.isEnabled(LogLevel.INFO)
|
dependencyProcessor.showInfo = logger.isEnabled(LogLevel.INFO)
|
||||||
dependencyProcessor.run()
|
dependencyProcessor.run()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-1
@@ -13,6 +13,7 @@ import org.gradle.api.file.DirectoryProperty
|
|||||||
import org.gradle.api.logging.LogLevel
|
import org.gradle.api.logging.LogLevel
|
||||||
import org.gradle.api.provider.Property
|
import org.gradle.api.provider.Property
|
||||||
import org.gradle.kotlin.dsl.*
|
import org.gradle.kotlin.dsl.*
|
||||||
|
import org.jetbrains.kotlin.PlatformManagerPlugin
|
||||||
import org.jetbrains.kotlin.konan.properties.KonanPropertiesLoader
|
import org.jetbrains.kotlin.konan.properties.KonanPropertiesLoader
|
||||||
import org.jetbrains.kotlin.konan.target.PlatformManager
|
import org.jetbrains.kotlin.konan.target.PlatformManager
|
||||||
import org.jetbrains.kotlin.konan.target.TargetDomainObjectContainer
|
import org.jetbrains.kotlin.konan.target.TargetDomainObjectContainer
|
||||||
@@ -166,7 +167,8 @@ abstract class NativeDependenciesDownloaderExtension @Inject constructor(private
|
|||||||
*/
|
*/
|
||||||
open class NativeDependenciesDownloaderPlugin : Plugin<Project> {
|
open class NativeDependenciesDownloaderPlugin : Plugin<Project> {
|
||||||
override fun apply(project: Project) {
|
override fun apply(project: Project) {
|
||||||
|
project.apply<PlatformManagerPlugin>()
|
||||||
project.apply<NativeDependenciesBasePlugin>()
|
project.apply<NativeDependenciesBasePlugin>()
|
||||||
project.extensions.create<NativeDependenciesDownloaderExtension>("nativeDependenciesDownloader", project)
|
project.extensions.create<NativeDependenciesDownloaderExtension>("nativeDependenciesDownloader", project)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-1
@@ -12,6 +12,7 @@ import org.gradle.api.artifacts.Configuration
|
|||||||
import org.gradle.api.attributes.Usage
|
import org.gradle.api.attributes.Usage
|
||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
import org.gradle.kotlin.dsl.*
|
import org.gradle.kotlin.dsl.*
|
||||||
|
import org.jetbrains.kotlin.PlatformManagerPlugin
|
||||||
import org.jetbrains.kotlin.konan.target.*
|
import org.jetbrains.kotlin.konan.target.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.nio.file.Paths
|
import java.nio.file.Paths
|
||||||
@@ -137,7 +138,8 @@ abstract class NativeDependenciesExtension @Inject constructor(private val proje
|
|||||||
*/
|
*/
|
||||||
class NativeDependenciesPlugin : Plugin<Project> {
|
class NativeDependenciesPlugin : Plugin<Project> {
|
||||||
override fun apply(project: Project) {
|
override fun apply(project: Project) {
|
||||||
|
project.apply<PlatformManagerPlugin>()
|
||||||
project.apply<NativeDependenciesBasePlugin>()
|
project.apply<NativeDependenciesBasePlugin>()
|
||||||
project.extensions.create<NativeDependenciesExtension>("nativeDependencies", project)
|
project.extensions.create<NativeDependenciesExtension>("nativeDependencies", project)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,18 +52,7 @@ if (PlatformInfo.isMac()) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
apply plugin: "kotlin.native.build-tools-conventions"
|
apply plugin: "kotlin.native.build-tools-conventions"
|
||||||
|
apply plugin: "platform-manager"
|
||||||
ext {
|
|
||||||
distDir = UtilsKt.getKotlinNativeDist(project)
|
|
||||||
def konanDataDir = project.hasProperty('konan.data.dir') ? project.property('konan.data.dir').toString() : null
|
|
||||||
dependenciesDir = DependencyDirectories.INSTANCE.getDependenciesRoot(konanDataDir)
|
|
||||||
experimentalEnabled = project.hasProperty("org.jetbrains.kotlin.native.experimentalTargets")
|
|
||||||
platformManager = new PlatformManager(DistributionKt.buildDistribution(projectDir.absolutePath, konanDataDir),
|
|
||||||
ext.experimentalEnabled)
|
|
||||||
|
|
||||||
cacheableTargetNames = platformManager.hostPlatform.cacheableTargets
|
|
||||||
cacheableTargets = cacheableTargetNames.collect { platformManager.targetByName(it) }
|
|
||||||
}
|
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
repositories {
|
repositories {
|
||||||
@@ -72,20 +61,13 @@ allprojects {
|
|||||||
url project.bootstrapKotlinRepo
|
url project.bootstrapKotlinRepo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setupHostAndTarget()
|
|
||||||
setupClang(project)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void setupHostAndTarget() {
|
def platformManager = project.extensions.platformManager
|
||||||
ext.hostName = platformManager.hostName
|
def distDir = UtilsKt.getKotlinNativeDist(project)
|
||||||
ext.targetList = EnabledTargetsKt.enabledTargets(platformManager).collect { it.visibleName } as List
|
def hostName = PlatformInfo.hostName
|
||||||
ext.konanTargetList = EnabledTargetsKt.enabledTargets(platformManager) as List
|
def targetList = EnabledTargetsKt.enabledTargets(platformManager).collect { it.visibleName } as List
|
||||||
}
|
def cacheableTargetNames = platformManager.hostPlatform.cacheableTargets
|
||||||
|
|
||||||
void setupClang(Project project) {
|
|
||||||
project.extensions.platformManager = project.project(":kotlin-native").ext.platformManager
|
|
||||||
}
|
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
ftpAntTask
|
ftpAntTask
|
||||||
@@ -302,11 +284,7 @@ tasks.register("distCompiler", Copy) {
|
|||||||
tokens: [("llvm.${hostName}.dev".toString()): "\$llvm.${hostName}.${llvmVariant}".toString()]
|
tokens: [("llvm.${hostName}.dev".toString()): "\$llvm.${hostName}.${llvmVariant}".toString()]
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
if (experimentalEnabled) {
|
delete('konan/experimentalTargetsEnabled')
|
||||||
file('konan/experimentalTargetsEnabled').text = ""
|
|
||||||
} else {
|
|
||||||
delete('konan/experimentalTargetsEnabled')
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.register("distDef", Copy) {
|
tasks.register("distDef", Copy) {
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
* that can be found in the LICENSE file.
|
* that can be found in the LICENSE file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import java.io.File
|
|
||||||
import org.jetbrains.kotlin.konan.target.allTargetsWithSanitizers
|
import org.jetbrains.kotlin.konan.target.allTargetsWithSanitizers
|
||||||
|
import org.jetbrains.kotlin.konan.util.DependencyDirectories
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id("native-dependencies-downloader")
|
id("native-dependencies-downloader")
|
||||||
@@ -13,7 +13,7 @@ plugins {
|
|||||||
|
|
||||||
nativeDependenciesDownloader {
|
nativeDependenciesDownloader {
|
||||||
repositoryURL.set("https://cache-redirector.jetbrains.com/download.jetbrains.com/kotlin/native")
|
repositoryURL.set("https://cache-redirector.jetbrains.com/download.jetbrains.com/kotlin/native")
|
||||||
dependenciesDirectory.set(rootProject.project(":kotlin-native").property("dependenciesDir") as File)
|
dependenciesDirectory.set(DependencyDirectories.getDependenciesRoot(kotlinBuildProperties.konanDataDir))
|
||||||
|
|
||||||
allTargets {}
|
allTargets {}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,12 +5,13 @@
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.konan.tasks.KonanCacheTask
|
import org.jetbrains.kotlin.gradle.plugin.konan.tasks.KonanCacheTask
|
||||||
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanInteropTask
|
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanInteropTask
|
||||||
|
import org.jetbrains.kotlin.PlatformInfo
|
||||||
|
import org.jetbrains.kotlin.kotlinNativeDist
|
||||||
import org.jetbrains.kotlin.konan.target.*
|
import org.jetbrains.kotlin.konan.target.*
|
||||||
import org.jetbrains.kotlin.konan.util.*
|
import org.jetbrains.kotlin.konan.util.*
|
||||||
|
|
||||||
// These properties are used by the 'konan' plugin, thus we set them before applying it.
|
// These properties are used by the 'konan' plugin, thus we set them before applying it.
|
||||||
val distDir: File by project
|
val konanHome: String by extra(kotlinNativeDist.absolutePath)
|
||||||
val konanHome: String by extra(distDir.absolutePath)
|
|
||||||
val jvmArgs: String by extra(
|
val jvmArgs: String by extra(
|
||||||
mutableListOf<String>().apply {
|
mutableListOf<String>().apply {
|
||||||
addAll(HostManager.defaultJvmArgs)
|
addAll(HostManager.defaultJvmArgs)
|
||||||
@@ -22,6 +23,7 @@ extra["org.jetbrains.kotlin.native.home"] = konanHome
|
|||||||
extra["konan.jvmArgs"] = jvmArgs
|
extra["konan.jvmArgs"] = jvmArgs
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
|
id("platform-manager")
|
||||||
id("konan")
|
id("konan")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -40,11 +42,9 @@ if (HostManager.host == KonanTarget.MACOS_ARM64) {
|
|||||||
project.configureJvmToolchain(JdkMajorVersion.JDK_17_0)
|
project.configureJvmToolchain(JdkMajorVersion.JDK_17_0)
|
||||||
}
|
}
|
||||||
|
|
||||||
val konanTargetList: List<KonanTarget> by project
|
val cacheableTargetNames = platformManager.hostPlatform.cacheableTargets
|
||||||
val targetList: List<String> by project
|
|
||||||
val cacheableTargets: List<KonanTarget> by project
|
|
||||||
|
|
||||||
konanTargetList.forEach { target ->
|
enabledTargets(platformManager).forEach { target ->
|
||||||
val targetName = target.visibleName
|
val targetName = target.visibleName
|
||||||
val installTasks = mutableListOf<TaskProvider<out Task>>()
|
val installTasks = mutableListOf<TaskProvider<out Task>>()
|
||||||
val cacheTasks = mutableListOf<TaskProvider<out Task>>()
|
val cacheTasks = mutableListOf<TaskProvider<out Task>>()
|
||||||
@@ -84,7 +84,7 @@ konanTargetList.forEach { target ->
|
|||||||
}
|
}
|
||||||
installTasks.add(klibInstallTask)
|
installTasks.add(klibInstallTask)
|
||||||
|
|
||||||
if (target in cacheableTargets) {
|
if (target.name in cacheableTargetNames) {
|
||||||
val cacheTask = tasks.register("${libName}Cache", KonanCacheTask::class.java) {
|
val cacheTask = tasks.register("${libName}Cache", KonanCacheTask::class.java) {
|
||||||
notCompatibleWithConfigurationCache("project used in execution time")
|
notCompatibleWithConfigurationCache("project used in execution time")
|
||||||
this.target = targetName
|
this.target = targetName
|
||||||
@@ -112,7 +112,7 @@ konanTargetList.forEach { target ->
|
|||||||
dependsOn(installTasks)
|
dependsOn(installTasks)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (target in cacheableTargets) {
|
if (target.name in cacheableTargetNames) {
|
||||||
tasks.register("${targetName}Cache") {
|
tasks.register("${targetName}Cache") {
|
||||||
dependsOn(cacheTasks)
|
dependsOn(cacheTasks)
|
||||||
|
|
||||||
@@ -122,14 +122,12 @@ konanTargetList.forEach { target ->
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val hostName: String by project
|
|
||||||
|
|
||||||
val hostInstall by tasks.registering {
|
val hostInstall by tasks.registering {
|
||||||
dependsOn("${hostName}Install")
|
dependsOn("${PlatformInfo.hostName}Install")
|
||||||
}
|
}
|
||||||
|
|
||||||
val hostCache by tasks.registering {
|
val hostCache by tasks.registering {
|
||||||
dependsOn("${hostName}Cache")
|
dependsOn("${PlatformInfo.hostName}Cache")
|
||||||
}
|
}
|
||||||
|
|
||||||
val cache by tasks.registering {
|
val cache by tasks.registering {
|
||||||
|
|||||||
@@ -15,8 +15,7 @@ import org.jetbrains.kotlin.konan.file.File as KFile
|
|||||||
import org.jetbrains.kotlin.konan.target.Architecture as TargetArchitecture
|
import org.jetbrains.kotlin.konan.target.Architecture as TargetArchitecture
|
||||||
|
|
||||||
// These properties are used by the 'konan' plugin, thus we set them before applying it.
|
// These properties are used by the 'konan' plugin, thus we set them before applying it.
|
||||||
val distDir: File by project
|
val konanHome: String by extra(kotlinNativeDist.absolutePath)
|
||||||
val konanHome: String by extra(distDir.absolutePath)
|
|
||||||
extra["org.jetbrains.kotlin.native.home"] = konanHome
|
extra["org.jetbrains.kotlin.native.home"] = konanHome
|
||||||
|
|
||||||
val kotlinVersion: String by rootProject.extra
|
val kotlinVersion: String by rootProject.extra
|
||||||
@@ -36,8 +35,7 @@ googletest {
|
|||||||
refresh = project.hasProperty("refresh-gtest")
|
refresh = project.hasProperty("refresh-gtest")
|
||||||
}
|
}
|
||||||
|
|
||||||
val hostName: String by project
|
val targetList = enabledTargets(extensions.getByType<PlatformManager>())
|
||||||
val targetList: List<String> by project
|
|
||||||
|
|
||||||
bitcode {
|
bitcode {
|
||||||
allTargets {
|
allTargets {
|
||||||
@@ -519,15 +517,15 @@ dependencies {
|
|||||||
runtimeBitcode(project(":kotlin-native:runtime"))
|
runtimeBitcode(project(":kotlin-native:runtime"))
|
||||||
}
|
}
|
||||||
|
|
||||||
targetList.forEach { targetName ->
|
targetList.forEach { target ->
|
||||||
// TODO: replace with a more convenient user-facing task that can build for a specific target.
|
// TODO: replace with a more convenient user-facing task that can build for a specific target.
|
||||||
// like compileToBitcode with optional argument --target.
|
// like compileToBitcode with optional argument --target.
|
||||||
tasks.register("${targetName}Runtime") {
|
tasks.register("${target}Runtime") {
|
||||||
description = "Build all main runtime modules for $targetName"
|
description = "Build all main runtime modules for $target"
|
||||||
group = CompileToBitcodeExtension.BUILD_TASK_GROUP
|
group = CompileToBitcodeExtension.BUILD_TASK_GROUP
|
||||||
val dependencies = runtimeBitcode.incoming.artifactView {
|
val dependencies = runtimeBitcode.incoming.artifactView {
|
||||||
attributes {
|
attributes {
|
||||||
attribute(TargetWithSanitizer.TARGET_ATTRIBUTE, project.platformManager.targetByName(targetName).withSanitizer())
|
attribute(TargetWithSanitizer.TARGET_ATTRIBUTE, target.withSanitizer())
|
||||||
}
|
}
|
||||||
}.files
|
}.files
|
||||||
dependsOn(dependencies)
|
dependsOn(dependencies)
|
||||||
@@ -537,13 +535,13 @@ targetList.forEach { targetName ->
|
|||||||
val hostRuntime by tasks.registering {
|
val hostRuntime by tasks.registering {
|
||||||
description = "Build all main runtime modules for host"
|
description = "Build all main runtime modules for host"
|
||||||
group = CompileToBitcodeExtension.BUILD_TASK_GROUP
|
group = CompileToBitcodeExtension.BUILD_TASK_GROUP
|
||||||
dependsOn("${hostName}Runtime")
|
dependsOn("${PlatformInfo.hostName}Runtime")
|
||||||
}
|
}
|
||||||
|
|
||||||
val hostRuntimeTests by tasks.registering {
|
val hostRuntimeTests by tasks.registering {
|
||||||
description = "Runs all runtime tests for host"
|
description = "Runs all runtime tests for host"
|
||||||
group = CompileToBitcodeExtension.VERIFICATION_TASK_GROUP
|
group = CompileToBitcodeExtension.VERIFICATION_TASK_GROUP
|
||||||
dependsOn("${hostName}RuntimeTests")
|
dependsOn("${PlatformInfo.hostName}RuntimeTests")
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.named("assemble") {
|
tasks.named("assemble") {
|
||||||
@@ -551,7 +549,7 @@ tasks.named("assemble") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val hostAssemble by tasks.registering {
|
val hostAssemble by tasks.registering {
|
||||||
dependsOn("${hostName}Runtime")
|
dependsOn("${PlatformInfo.hostName}Runtime")
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.named("clean") {
|
tasks.named("clean") {
|
||||||
@@ -656,7 +654,7 @@ val stdlibTask = tasks.register<Copy>("nativeStdlib") {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val cacheableTargetNames: List<String> by project
|
val cacheableTargetNames = platformManager.hostPlatform.cacheableTargets
|
||||||
|
|
||||||
cacheableTargetNames.forEach { targetName ->
|
cacheableTargetNames.forEach { targetName ->
|
||||||
tasks.register("${targetName}StdlibCache", KonanCacheTask::class.java) {
|
tasks.register("${targetName}StdlibCache", KonanCacheTask::class.java) {
|
||||||
@@ -668,7 +666,7 @@ cacheableTargetNames.forEach { targetName ->
|
|||||||
|
|
||||||
dependsOn(":kotlin-native:${targetName}CrossDistRuntime")
|
dependsOn(":kotlin-native:${targetName}CrossDistRuntime")
|
||||||
// stdlib cache links in runtime modules from the K/N distribution.
|
// stdlib cache links in runtime modules from the K/N distribution.
|
||||||
inputs.dir("$distDir/konan/targets/$targetName/native")
|
inputs.dir("$kotlinNativeDist/konan/targets/$targetName/native")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -64,4 +64,7 @@ val KotlinBuildProperties.isSwiftExportPluginPublishingEnabled: Boolean
|
|||||||
get() = getBoolean("kotlin.native.swift-export.enabled", false)
|
get() = getBoolean("kotlin.native.swift-export.enabled", false)
|
||||||
|
|
||||||
val KotlinBuildProperties.limitTestTasksConcurrency: Boolean
|
val KotlinBuildProperties.limitTestTasksConcurrency: Boolean
|
||||||
get() = getBoolean("kotlin.build.limitTestTasksConcurrency", true)
|
get() = getBoolean("kotlin.build.limitTestTasksConcurrency", true)
|
||||||
|
|
||||||
|
val KotlinBuildProperties.konanDataDir: String?
|
||||||
|
get() = getOrNull("konan.data.dir") as String?
|
||||||
Reference in New Issue
Block a user