[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()
|
||||
loadLocalProperties()
|
||||
|
||||
apply plugin: 'platform-manager'
|
||||
apply plugin: 'konan'
|
||||
apply plugin: 'kotlin'
|
||||
apply plugin: 'kotlin.native.build-tools-conventions'
|
||||
@@ -71,7 +72,7 @@ configurations {
|
||||
|
||||
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.buildNumber = rootProject.property("kotlinVersion")
|
||||
|
||||
@@ -130,5 +130,9 @@ gradlePlugin {
|
||||
id = "native-dependencies"
|
||||
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.flavor = flavor
|
||||
|
||||
def platformManager = project.project(":kotlin-native").ext.platformManager
|
||||
def platformManager = project.extensions.platformManager
|
||||
def targetManager = platformManager.targetManager(target)
|
||||
this.target = targetManager.targetName
|
||||
|
||||
@@ -304,6 +304,7 @@ class NativeInteropPlugin implements Plugin<Project> {
|
||||
|
||||
@Override
|
||||
void apply(Project prj) {
|
||||
prj.plugins.apply("platform-manager")
|
||||
prj.plugins.apply("native-dependencies")
|
||||
|
||||
prj.extensions.add("kotlinNativeInterop", new NativeInteropExtension(prj))
|
||||
|
||||
@@ -161,12 +161,6 @@ abstract class ExecClang @Inject constructor(
|
||||
}
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun create(project: Project): ExecClang = create(
|
||||
project.objects,
|
||||
project.project(":kotlin-native").findProperty("platformManager") as PlatformManager,
|
||||
)
|
||||
|
||||
@JvmStatic
|
||||
fun create(objects: ObjectFactory, platformManager: PlatformManager) =
|
||||
objects.newInstance(ExecClang::class.java, platformManager)
|
||||
|
||||
@@ -32,7 +32,7 @@ object PlatformInfo {
|
||||
|
||||
@JvmStatic
|
||||
fun getTarget(project: Project): KonanTarget {
|
||||
val platformManager = project.project(":kotlin-native").platformManager
|
||||
val platformManager = project.platformManager
|
||||
val targetName = project.project.testTarget.name
|
||||
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.provider.Provider
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.kotlin.dsl.*
|
||||
import org.jetbrains.kotlin.konan.target.*
|
||||
import java.io.File
|
||||
import java.nio.file.Path
|
||||
@@ -25,7 +26,7 @@ private const val KLIB_PROPERTY_COMPILER_VERSION = "compiler_version"
|
||||
//region Project properties.
|
||||
|
||||
val Project.platformManager
|
||||
get() = findProperty("platformManager") as PlatformManager
|
||||
get() = extensions.getByType<PlatformManager>()
|
||||
|
||||
val Project.testTarget
|
||||
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)
|
||||
|
||||
objDir.mkdirs()
|
||||
ExecClang.create(project).execClangForCompilerTests(testTarget) {
|
||||
ExecClang.create(project.objects, project.platformManager).execClangForCompilerTests(testTarget) {
|
||||
args = listOf("-c", *cSources.map { it.absolutePath }.toTypedArray())
|
||||
workingDir(objDir)
|
||||
}
|
||||
|
||||
+5
-5
@@ -21,6 +21,7 @@ import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.kotlin.dsl.*
|
||||
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
||||
import org.jetbrains.kotlin.ExecClang
|
||||
import org.jetbrains.kotlin.PlatformManagerPlugin
|
||||
import org.jetbrains.kotlin.cpp.*
|
||||
import org.jetbrains.kotlin.dependencies.NativeDependenciesExtension
|
||||
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.TargetDomainObjectContainer
|
||||
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.utils.capitalized
|
||||
import java.time.Duration
|
||||
@@ -139,13 +141,10 @@ open class CompileToBitcodeExtension @Inject constructor(val project: Project) :
|
||||
"-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 {
|
||||
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") {
|
||||
description = "Runs all $name tests for $it"
|
||||
group = VERIFICATION_TASK_GROUP
|
||||
@@ -670,6 +669,7 @@ open class CompileToBitcodeExtension @Inject constructor(val project: Project) :
|
||||
*/
|
||||
open class CompileToBitcodePlugin : Plugin<Project> {
|
||||
override fun apply(project: Project) {
|
||||
project.apply<PlatformManagerPlugin>()
|
||||
project.apply<CppConsumerPlugin>()
|
||||
project.apply<CompilationDatabasePlugin>()
|
||||
project.apply<GitClangFormatPlugin>()
|
||||
|
||||
+3
-1
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.cpp
|
||||
import org.gradle.api.Plugin
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.kotlin.dsl.*
|
||||
import org.jetbrains.kotlin.PlatformManagerPlugin
|
||||
import org.jetbrains.kotlin.dependencies.NativeDependenciesExtension
|
||||
import org.jetbrains.kotlin.dependencies.NativeDependenciesPlugin
|
||||
|
||||
@@ -16,6 +17,7 @@ import org.jetbrains.kotlin.dependencies.NativeDependenciesPlugin
|
||||
*/
|
||||
open class GitClangFormatPlugin : Plugin<Project> {
|
||||
override fun apply(target: Project) {
|
||||
target.apply<PlatformManagerPlugin>()
|
||||
target.apply<NativeDependenciesPlugin>()
|
||||
val nativeDependencies = target.extensions.getByType<NativeDependenciesExtension>()
|
||||
|
||||
@@ -35,4 +37,4 @@ open class GitClangFormatPlugin : Plugin<Project> {
|
||||
@JvmStatic
|
||||
val TASK_GROUP = "development support"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -61,4 +61,4 @@ abstract class NativeDependenciesDownloader : DefaultTask() {
|
||||
dependencyProcessor.showInfo = logger.isEnabled(LogLevel.INFO)
|
||||
dependencyProcessor.run()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+3
-1
@@ -13,6 +13,7 @@ import org.gradle.api.file.DirectoryProperty
|
||||
import org.gradle.api.logging.LogLevel
|
||||
import org.gradle.api.provider.Property
|
||||
import org.gradle.kotlin.dsl.*
|
||||
import org.jetbrains.kotlin.PlatformManagerPlugin
|
||||
import org.jetbrains.kotlin.konan.properties.KonanPropertiesLoader
|
||||
import org.jetbrains.kotlin.konan.target.PlatformManager
|
||||
import org.jetbrains.kotlin.konan.target.TargetDomainObjectContainer
|
||||
@@ -166,7 +167,8 @@ abstract class NativeDependenciesDownloaderExtension @Inject constructor(private
|
||||
*/
|
||||
open class NativeDependenciesDownloaderPlugin : Plugin<Project> {
|
||||
override fun apply(project: Project) {
|
||||
project.apply<PlatformManagerPlugin>()
|
||||
project.apply<NativeDependenciesBasePlugin>()
|
||||
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.file.FileCollection
|
||||
import org.gradle.kotlin.dsl.*
|
||||
import org.jetbrains.kotlin.PlatformManagerPlugin
|
||||
import org.jetbrains.kotlin.konan.target.*
|
||||
import java.io.File
|
||||
import java.nio.file.Paths
|
||||
@@ -137,7 +138,8 @@ abstract class NativeDependenciesExtension @Inject constructor(private val proje
|
||||
*/
|
||||
class NativeDependenciesPlugin : Plugin<Project> {
|
||||
override fun apply(project: Project) {
|
||||
project.apply<PlatformManagerPlugin>()
|
||||
project.apply<NativeDependenciesBasePlugin>()
|
||||
project.extensions.create<NativeDependenciesExtension>("nativeDependencies", project)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,18 +52,7 @@ if (PlatformInfo.isMac()) {
|
||||
}
|
||||
|
||||
apply plugin: "kotlin.native.build-tools-conventions"
|
||||
|
||||
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) }
|
||||
}
|
||||
apply plugin: "platform-manager"
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
@@ -72,20 +61,13 @@ allprojects {
|
||||
url project.bootstrapKotlinRepo
|
||||
}
|
||||
}
|
||||
|
||||
setupHostAndTarget()
|
||||
setupClang(project)
|
||||
}
|
||||
|
||||
void setupHostAndTarget() {
|
||||
ext.hostName = platformManager.hostName
|
||||
ext.targetList = EnabledTargetsKt.enabledTargets(platformManager).collect { it.visibleName } as List
|
||||
ext.konanTargetList = EnabledTargetsKt.enabledTargets(platformManager) as List
|
||||
}
|
||||
|
||||
void setupClang(Project project) {
|
||||
project.extensions.platformManager = project.project(":kotlin-native").ext.platformManager
|
||||
}
|
||||
def platformManager = project.extensions.platformManager
|
||||
def distDir = UtilsKt.getKotlinNativeDist(project)
|
||||
def hostName = PlatformInfo.hostName
|
||||
def targetList = EnabledTargetsKt.enabledTargets(platformManager).collect { it.visibleName } as List
|
||||
def cacheableTargetNames = platformManager.hostPlatform.cacheableTargets
|
||||
|
||||
configurations {
|
||||
ftpAntTask
|
||||
@@ -302,11 +284,7 @@ tasks.register("distCompiler", Copy) {
|
||||
tokens: [("llvm.${hostName}.dev".toString()): "\$llvm.${hostName}.${llvmVariant}".toString()]
|
||||
)
|
||||
}
|
||||
if (experimentalEnabled) {
|
||||
file('konan/experimentalTargetsEnabled').text = ""
|
||||
} else {
|
||||
delete('konan/experimentalTargetsEnabled')
|
||||
}
|
||||
delete('konan/experimentalTargetsEnabled')
|
||||
}
|
||||
|
||||
tasks.register("distDef", Copy) {
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
* that can be found in the LICENSE file.
|
||||
*/
|
||||
|
||||
import java.io.File
|
||||
import org.jetbrains.kotlin.konan.target.allTargetsWithSanitizers
|
||||
import org.jetbrains.kotlin.konan.util.DependencyDirectories
|
||||
|
||||
plugins {
|
||||
id("native-dependencies-downloader")
|
||||
@@ -13,7 +13,7 @@ plugins {
|
||||
|
||||
nativeDependenciesDownloader {
|
||||
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 {}
|
||||
}
|
||||
|
||||
@@ -5,12 +5,13 @@
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.konan.tasks.KonanCacheTask
|
||||
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.util.*
|
||||
|
||||
// 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(distDir.absolutePath)
|
||||
val konanHome: String by extra(kotlinNativeDist.absolutePath)
|
||||
val jvmArgs: String by extra(
|
||||
mutableListOf<String>().apply {
|
||||
addAll(HostManager.defaultJvmArgs)
|
||||
@@ -22,6 +23,7 @@ extra["org.jetbrains.kotlin.native.home"] = konanHome
|
||||
extra["konan.jvmArgs"] = jvmArgs
|
||||
|
||||
plugins {
|
||||
id("platform-manager")
|
||||
id("konan")
|
||||
}
|
||||
|
||||
@@ -40,11 +42,9 @@ if (HostManager.host == KonanTarget.MACOS_ARM64) {
|
||||
project.configureJvmToolchain(JdkMajorVersion.JDK_17_0)
|
||||
}
|
||||
|
||||
val konanTargetList: List<KonanTarget> by project
|
||||
val targetList: List<String> by project
|
||||
val cacheableTargets: List<KonanTarget> by project
|
||||
val cacheableTargetNames = platformManager.hostPlatform.cacheableTargets
|
||||
|
||||
konanTargetList.forEach { target ->
|
||||
enabledTargets(platformManager).forEach { target ->
|
||||
val targetName = target.visibleName
|
||||
val installTasks = mutableListOf<TaskProvider<out Task>>()
|
||||
val cacheTasks = mutableListOf<TaskProvider<out Task>>()
|
||||
@@ -84,7 +84,7 @@ konanTargetList.forEach { target ->
|
||||
}
|
||||
installTasks.add(klibInstallTask)
|
||||
|
||||
if (target in cacheableTargets) {
|
||||
if (target.name in cacheableTargetNames) {
|
||||
val cacheTask = tasks.register("${libName}Cache", KonanCacheTask::class.java) {
|
||||
notCompatibleWithConfigurationCache("project used in execution time")
|
||||
this.target = targetName
|
||||
@@ -112,7 +112,7 @@ konanTargetList.forEach { target ->
|
||||
dependsOn(installTasks)
|
||||
}
|
||||
|
||||
if (target in cacheableTargets) {
|
||||
if (target.name in cacheableTargetNames) {
|
||||
tasks.register("${targetName}Cache") {
|
||||
dependsOn(cacheTasks)
|
||||
|
||||
@@ -122,14 +122,12 @@ konanTargetList.forEach { target ->
|
||||
}
|
||||
}
|
||||
|
||||
val hostName: String by project
|
||||
|
||||
val hostInstall by tasks.registering {
|
||||
dependsOn("${hostName}Install")
|
||||
dependsOn("${PlatformInfo.hostName}Install")
|
||||
}
|
||||
|
||||
val hostCache by tasks.registering {
|
||||
dependsOn("${hostName}Cache")
|
||||
dependsOn("${PlatformInfo.hostName}Cache")
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
// 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(distDir.absolutePath)
|
||||
val konanHome: String by extra(kotlinNativeDist.absolutePath)
|
||||
extra["org.jetbrains.kotlin.native.home"] = konanHome
|
||||
|
||||
val kotlinVersion: String by rootProject.extra
|
||||
@@ -36,8 +35,7 @@ googletest {
|
||||
refresh = project.hasProperty("refresh-gtest")
|
||||
}
|
||||
|
||||
val hostName: String by project
|
||||
val targetList: List<String> by project
|
||||
val targetList = enabledTargets(extensions.getByType<PlatformManager>())
|
||||
|
||||
bitcode {
|
||||
allTargets {
|
||||
@@ -519,15 +517,15 @@ dependencies {
|
||||
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.
|
||||
// like compileToBitcode with optional argument --target.
|
||||
tasks.register("${targetName}Runtime") {
|
||||
description = "Build all main runtime modules for $targetName"
|
||||
tasks.register("${target}Runtime") {
|
||||
description = "Build all main runtime modules for $target"
|
||||
group = CompileToBitcodeExtension.BUILD_TASK_GROUP
|
||||
val dependencies = runtimeBitcode.incoming.artifactView {
|
||||
attributes {
|
||||
attribute(TargetWithSanitizer.TARGET_ATTRIBUTE, project.platformManager.targetByName(targetName).withSanitizer())
|
||||
attribute(TargetWithSanitizer.TARGET_ATTRIBUTE, target.withSanitizer())
|
||||
}
|
||||
}.files
|
||||
dependsOn(dependencies)
|
||||
@@ -537,13 +535,13 @@ targetList.forEach { targetName ->
|
||||
val hostRuntime by tasks.registering {
|
||||
description = "Build all main runtime modules for host"
|
||||
group = CompileToBitcodeExtension.BUILD_TASK_GROUP
|
||||
dependsOn("${hostName}Runtime")
|
||||
dependsOn("${PlatformInfo.hostName}Runtime")
|
||||
}
|
||||
|
||||
val hostRuntimeTests by tasks.registering {
|
||||
description = "Runs all runtime tests for host"
|
||||
group = CompileToBitcodeExtension.VERIFICATION_TASK_GROUP
|
||||
dependsOn("${hostName}RuntimeTests")
|
||||
dependsOn("${PlatformInfo.hostName}RuntimeTests")
|
||||
}
|
||||
|
||||
tasks.named("assemble") {
|
||||
@@ -551,7 +549,7 @@ tasks.named("assemble") {
|
||||
}
|
||||
|
||||
val hostAssemble by tasks.registering {
|
||||
dependsOn("${hostName}Runtime")
|
||||
dependsOn("${PlatformInfo.hostName}Runtime")
|
||||
}
|
||||
|
||||
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 ->
|
||||
tasks.register("${targetName}StdlibCache", KonanCacheTask::class.java) {
|
||||
@@ -668,7 +666,7 @@ cacheableTargetNames.forEach { targetName ->
|
||||
|
||||
dependsOn(":kotlin-native:${targetName}CrossDistRuntime")
|
||||
// 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)
|
||||
|
||||
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