[Gradle] Add multiplatformExtension.metadataTarget
This commit is contained in:
committed by
Space Team
parent
0230f809c4
commit
f01c8de216
+4
-2
@@ -9,16 +9,16 @@ import org.gradle.api.Action
|
||||
import org.gradle.api.InvalidUserCodeException
|
||||
import org.gradle.api.NamedDomainObjectCollection
|
||||
import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
|
||||
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
||||
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
|
||||
import org.jetbrains.kotlin.gradle.PRESETS_API_IS_DEPRECATED_MESSAGE
|
||||
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
|
||||
import org.jetbrains.kotlin.gradle.internal.syncCommonOptions
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.Stage.AfterFinaliseDsl
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnostic
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.hierarchy.KotlinHierarchyDslImpl
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
||||
import org.jetbrains.kotlin.gradle.targets.android.internal.InternalKotlinTargetPreset
|
||||
@@ -363,3 +363,5 @@ internal fun <T : KotlinTarget> KotlinTargetsContainerWithPresets.configureOrCre
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal val KotlinMultiplatformExtension.metadataTarget get() = metadata() as KotlinMetadataTarget
|
||||
+11
-7
@@ -7,7 +7,9 @@ package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.*
|
||||
import org.gradle.api.attributes.*
|
||||
import org.gradle.api.attributes.Attribute
|
||||
import org.gradle.api.attributes.AttributeContainer
|
||||
import org.gradle.api.attributes.Usage
|
||||
import org.gradle.api.capabilities.Capability
|
||||
import org.gradle.api.component.ComponentWithCoordinates
|
||||
import org.gradle.api.component.ComponentWithVariants
|
||||
@@ -18,18 +20,20 @@ import org.gradle.api.provider.SetProperty
|
||||
import org.gradle.api.publish.maven.MavenPublication
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.jvm.tasks.Jar
|
||||
import org.jetbrains.kotlin.gradle.dsl.metadataTarget
|
||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation.Companion.MAIN_COMPILATION_NAME
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.Stage.AfterFinaliseCompilations
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.ProjectLocalConfigurations
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
|
||||
import org.jetbrains.kotlin.gradle.utils.markResolvable
|
||||
import org.jetbrains.kotlin.gradle.plugin.await
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.DefaultKotlinUsageContext.PublishOnlyIf
|
||||
import org.jetbrains.kotlin.gradle.targets.metadata.*
|
||||
import org.jetbrains.kotlin.gradle.targets.metadata.COMMON_MAIN_ELEMENTS_CONFIGURATION_NAME
|
||||
import org.jetbrains.kotlin.gradle.targets.metadata.isCompatibilityMetadataVariantEnabled
|
||||
import org.jetbrains.kotlin.gradle.targets.metadata.isKotlinGranularMetadataEnabled
|
||||
import org.jetbrains.kotlin.gradle.utils.Future
|
||||
import org.jetbrains.kotlin.gradle.utils.future
|
||||
import org.jetbrains.kotlin.gradle.utils.markResolvable
|
||||
import org.jetbrains.kotlin.gradle.utils.setProperty
|
||||
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
|
||||
|
||||
@@ -41,7 +45,7 @@ abstract class KotlinSoftwareComponent(
|
||||
|
||||
override fun getName(): String = name
|
||||
|
||||
private val metadataTarget get() = project.multiplatformExtension.metadata() as KotlinMetadataTarget
|
||||
private val metadataTarget get() = project.multiplatformExtension.metadataTarget
|
||||
|
||||
private val _variants = project.future {
|
||||
AfterFinaliseCompilations.await()
|
||||
|
||||
+1
-1
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||
import org.jetbrains.kotlin.gradle.dsl.metadataTarget
|
||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.Stage.AfterEvaluateBuildscript
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||
@@ -62,7 +63,6 @@ internal suspend fun Project.collectSourceSetMetadataOutputs(): Map<SourceSetNam
|
||||
}
|
||||
|
||||
private suspend fun KotlinMultiplatformExtension.sourceSetsMetadataOutputs(): Map<KotlinSourceSet, FileCollection?> {
|
||||
val metadataTarget = metadata() as KotlinMetadataTarget
|
||||
return metadataTarget
|
||||
.awaitMetadataCompilationsCreated()
|
||||
// TODO: KT-62332/Stop-Creating-legacy-metadata-compilation-with-name-main
|
||||
|
||||
+2
-1
@@ -19,6 +19,7 @@ import org.gradle.api.tasks.bundling.Zip
|
||||
import org.jetbrains.kotlin.commonizer.SharedCommonizerTarget
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||
import org.jetbrains.kotlin.gradle.dsl.metadataTarget
|
||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
||||
@@ -482,7 +483,7 @@ internal suspend fun KotlinMetadataTarget.awaitMetadataCompilationsCreated(): Na
|
||||
}
|
||||
|
||||
internal suspend fun Project.findMetadataCompilation(sourceSet: KotlinSourceSet): KotlinMetadataCompilation<*>? {
|
||||
val metadataTarget = multiplatformExtension.metadata() as KotlinMetadataTarget
|
||||
val metadataTarget = multiplatformExtension.metadataTarget
|
||||
metadataTarget.awaitMetadataCompilationsCreated()
|
||||
return metadataTarget.compilations.findByName(sourceSet.name) as KotlinMetadataCompilation<*>?
|
||||
}
|
||||
|
||||
+2
-5
@@ -3,26 +3,23 @@ package org.jetbrains.kotlin.gradle.targets.native.internal
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.Configuration
|
||||
import org.gradle.api.attributes.Category
|
||||
import org.gradle.api.attributes.LibraryElements
|
||||
import org.gradle.api.attributes.Usage
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.jetbrains.kotlin.commonizer.CommonizerOutputFileLayout
|
||||
import org.jetbrains.kotlin.commonizer.SharedCommonizerTarget
|
||||
import org.jetbrains.kotlin.commonizer.identityString
|
||||
import org.jetbrains.kotlin.gradle.dsl.metadataTarget
|
||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
|
||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||
import org.jetbrains.kotlin.gradle.plugin.categoryByName
|
||||
import org.jetbrains.kotlin.gradle.plugin.launch
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.internal
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.resolvableMetadataConfiguration
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.internal
|
||||
import org.jetbrains.kotlin.gradle.targets.metadata.awaitMetadataCompilationsCreated
|
||||
import org.jetbrains.kotlin.gradle.targets.metadata.findMetadataCompilation
|
||||
import org.jetbrains.kotlin.gradle.targets.native.internal.CInteropKlibLibraryElements.cinteropKlibLibraryElements
|
||||
import org.jetbrains.kotlin.gradle.utils.markConsumable
|
||||
import org.jetbrains.kotlin.gradle.utils.markResolvable
|
||||
import org.jetbrains.kotlin.tooling.core.UnsafeApi
|
||||
@@ -71,7 +68,7 @@ internal fun Project.locateOrCreateCommonizedCInteropApiElementsConfiguration(co
|
||||
setupBasicCommonizedCInteropConfigurationAttributes(configuration, commonizerTarget)
|
||||
|
||||
launch {
|
||||
val metadataTarget = multiplatformExtension.metadata() as KotlinMetadataTarget
|
||||
val metadataTarget = multiplatformExtension.metadataTarget
|
||||
metadataTarget.awaitMetadataCompilationsCreated()
|
||||
.filter { compilation -> compilation.commonizerTarget.await() == commonizerTarget }
|
||||
.forEach { compilation -> configuration.extendsFrom(compilation.internal.configurations.apiConfiguration) }
|
||||
|
||||
+3
-3
@@ -8,9 +8,9 @@
|
||||
package org.jetbrains.kotlin.gradle.unitTests
|
||||
|
||||
import org.gradle.api.NamedDomainObjectContainer
|
||||
import org.jetbrains.kotlin.gradle.dsl.metadataTarget
|
||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTarget
|
||||
import org.jetbrains.kotlin.gradle.targets.metadata.awaitMetadataCompilationsCreated
|
||||
import org.jetbrains.kotlin.gradle.util.buildProjectWithMPP
|
||||
import org.jetbrains.kotlin.gradle.util.runLifecycleAwareTest
|
||||
@@ -29,7 +29,7 @@ class KotlinMetadataTargetCompilationsTest {
|
||||
kotlin.applyDefaultHierarchyTemplate()
|
||||
|
||||
project.runLifecycleAwareTest {
|
||||
val target = kotlin.metadata() as KotlinMetadataTarget
|
||||
val target = kotlin.metadataTarget
|
||||
val metadataCompilations = target.awaitMetadataCompilationsCreated()
|
||||
metadataCompilations.assertExists("commonMain")
|
||||
metadataCompilations.assertExists("nativeMain")
|
||||
@@ -49,7 +49,7 @@ class KotlinMetadataTargetCompilationsTest {
|
||||
kotlin.applyDefaultHierarchyTemplate()
|
||||
|
||||
project.runLifecycleAwareTest {
|
||||
val target = kotlin.metadata() as KotlinMetadataTarget
|
||||
val target = kotlin.metadataTarget
|
||||
val compilations = target.awaitMetadataCompilationsCreated()
|
||||
compilations.assertExistsNot("commonMain")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user