[Gradle] Move hostSpecificMetadataConfiguration to configuration container
Previously it was declared on KotlinNativeCompilation with extra NativeCompilationDependencyConfigurationsContainer interface. But it is not necessary, and hostSpecificMetadataConfiguration can be placed directly to KotlinCompilationConfigurationsContainer and guarded and created on demand via `withHostSpecificMetadata` flag on a factory method. ^KT-49933
This commit is contained in:
committed by
Space Team
parent
e36338b091
commit
d5936a52f0
+4
-3
@@ -38,9 +38,10 @@ private fun Project.collectAllPlatformCompilationData(): List<SourceSetVisibilit
|
||||
|
||||
private fun KotlinCompilation<*>.toPlatformCompilationData() = SourceSetVisibilityProvider.PlatformCompilationData(
|
||||
allSourceSets = allKotlinSourceSets.map { it.name }.toSet(),
|
||||
resolvedDependenciesConfiguration = LazyResolvedConfiguration(project.configurations.getByName(compileDependencyConfigurationName)),
|
||||
hostSpecificMetadataConfiguration = (this as? KotlinNativeCompilation)
|
||||
?.hostSpecificMetadataConfiguration
|
||||
resolvedDependenciesConfiguration = LazyResolvedConfiguration(internal.configurations.compileDependencyConfiguration),
|
||||
hostSpecificMetadataConfiguration = internal
|
||||
.configurations
|
||||
.hostSpecificMetadataConfiguration
|
||||
?.let(::LazyResolvedConfiguration)
|
||||
)
|
||||
|
||||
|
||||
+2
@@ -21,6 +21,7 @@ interface KotlinCompilationConfigurationsContainer {
|
||||
val runtimeOnlyConfiguration: Configuration
|
||||
val compileDependencyConfiguration: Configuration
|
||||
val runtimeDependencyConfiguration: Configuration?
|
||||
val hostSpecificMetadataConfiguration: Configuration?
|
||||
val pluginConfiguration: Configuration
|
||||
}
|
||||
|
||||
@@ -33,6 +34,7 @@ internal class DefaultKotlinCompilationConfigurationsContainer(
|
||||
override val runtimeOnlyConfiguration: Configuration,
|
||||
override val compileDependencyConfiguration: Configuration,
|
||||
override val runtimeDependencyConfiguration: Configuration?,
|
||||
override val hostSpecificMetadataConfiguration: Configuration?,
|
||||
override val pluginConfiguration: Configuration
|
||||
) : KotlinCompilationConfigurationsContainer
|
||||
|
||||
|
||||
+18
-26
@@ -39,39 +39,17 @@ internal sealed class DefaultKotlinCompilationDependencyConfigurationsFactory :
|
||||
internal object NativeKotlinCompilationDependencyConfigurationsFactory :
|
||||
KotlinCompilationImplFactory.KotlinCompilationDependencyConfigurationsFactory {
|
||||
|
||||
override fun create(target: KotlinTarget, compilationName: String): NativeCompilationDependencyConfigurationsContainer {
|
||||
override fun create(target: KotlinTarget, compilationName: String): KotlinCompilationConfigurationsContainer {
|
||||
val naming = ConfigurationNaming.Default(target, compilationName)
|
||||
val baseContainer = KotlinCompilationDependencyConfigurationsContainer(
|
||||
return KotlinCompilationDependencyConfigurationsContainer(
|
||||
target = target,
|
||||
compilationName = compilationName,
|
||||
naming = naming,
|
||||
withRuntime = false,
|
||||
withHostSpecificMetadata = true,
|
||||
compileClasspathConfigurationName = naming.name("compileKlibraries")
|
||||
)
|
||||
|
||||
val compilationCoordinates = "${target.disambiguationClassifier}/$compilationName"
|
||||
val project = target.project
|
||||
val hostSpecificMetadataConfiguration: Configuration = project
|
||||
.configurations
|
||||
.maybeCreate(naming.name(compilation, METADATA_CONFIGURATION_NAME_SUFFIX))
|
||||
.apply {
|
||||
markResolvable()
|
||||
isVisible = false
|
||||
description = "Host-specific Metadata dependencies for $compilationCoordinates"
|
||||
extendsFrom(baseContainer.compileDependencyConfiguration)
|
||||
copyAttributes(from = baseContainer.compileDependencyConfiguration.attributes, to = attributes)
|
||||
attributes {
|
||||
it.attribute(Usage.USAGE_ATTRIBUTE, project.usageByName(KotlinUsages.KOTLIN_METADATA))
|
||||
}
|
||||
}
|
||||
|
||||
return NativeCompilationDependencyConfigurationsContainer(baseContainer, hostSpecificMetadataConfiguration)
|
||||
}
|
||||
|
||||
class NativeCompilationDependencyConfigurationsContainer(
|
||||
baseContainer: KotlinCompilationConfigurationsContainer,
|
||||
val hostSpecificMetadataConfiguration: Configuration?
|
||||
) : KotlinCompilationConfigurationsContainer by baseContainer
|
||||
}
|
||||
|
||||
internal object JsKotlinCompilationDependencyConfigurationsFactory :
|
||||
@@ -138,7 +116,7 @@ private const val compileClasspath = "compileClasspath"
|
||||
private const val runtimeClasspath = "runtimeClasspath"
|
||||
|
||||
private fun KotlinCompilationDependencyConfigurationsContainer(
|
||||
target: KotlinTarget, compilationName: String, withRuntime: Boolean,
|
||||
target: KotlinTarget, compilationName: String, withRuntime: Boolean, withHostSpecificMetadata: Boolean = false,
|
||||
naming: ConfigurationNaming = ConfigurationNaming.Default(target, compilationName),
|
||||
apiConfigurationName: String = naming.name(compilation, API),
|
||||
implementationConfigurationName: String = naming.name(compilation, IMPLEMENTATION),
|
||||
@@ -146,6 +124,7 @@ private fun KotlinCompilationDependencyConfigurationsContainer(
|
||||
runtimeOnlyConfigurationName: String = naming.name(compilation, RUNTIME_ONLY),
|
||||
compileClasspathConfigurationName: String = naming.name(compileClasspath),
|
||||
runtimeClasspathConfigurationName: String = naming.name(runtimeClasspath),
|
||||
withHostSpecificMetadataConfigurationName: String = naming.name(compilation, METADATA_CONFIGURATION_NAME_SUFFIX),
|
||||
pluginConfigurationName: String = lowerCamelCaseName(
|
||||
PLUGIN_CLASSPATH_CONFIGURATION_NAME,
|
||||
target.disambiguationClassifier,
|
||||
@@ -240,6 +219,18 @@ private fun KotlinCompilationDependencyConfigurationsContainer(
|
||||
description = "Runtime classpath of $compilationCoordinates."
|
||||
} else null
|
||||
|
||||
val hostSpecificMetadataConfiguration =
|
||||
if (withHostSpecificMetadata) target.project.configurations.maybeCreate(withHostSpecificMetadataConfigurationName).apply {
|
||||
markResolvable()
|
||||
isVisible = false
|
||||
description = "Host-specific Metadata dependencies for $compilationCoordinates"
|
||||
extendsFrom(compileDependencyConfiguration)
|
||||
copyAttributes(from = compileDependencyConfiguration.attributes, to = attributes)
|
||||
attributes {
|
||||
it.attribute(Usage.USAGE_ATTRIBUTE, target.project.usageByName(KotlinUsages.KOTLIN_METADATA))
|
||||
}
|
||||
} else null
|
||||
|
||||
val pluginConfiguration = target.project.configurations.maybeCreate(pluginConfigurationName).apply {
|
||||
addGradlePluginMetadataAttributes(target.project)
|
||||
|
||||
@@ -263,6 +254,7 @@ private fun KotlinCompilationDependencyConfigurationsContainer(
|
||||
runtimeOnlyConfiguration = runtimeOnlyConfiguration,
|
||||
compileDependencyConfiguration = compileDependencyConfiguration,
|
||||
runtimeDependencyConfiguration = runtimeDependencyConfiguration,
|
||||
hostSpecificMetadataConfiguration = hostSpecificMetadataConfiguration,
|
||||
pluginConfiguration = pluginConfiguration
|
||||
)
|
||||
}
|
||||
-5
@@ -14,7 +14,6 @@ import org.gradle.api.tasks.TaskProvider
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationImpl
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.NativeKotlinCompilationDependencyConfigurationsFactory.NativeCompilationDependencyConfigurationsContainer
|
||||
import org.jetbrains.kotlin.gradle.targets.native.NativeCompilerOptions
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
@@ -70,10 +69,6 @@ open class KotlinNativeCompilation @Inject internal constructor(
|
||||
val binariesTaskName: String
|
||||
get() = lowerCamelCaseName(target.disambiguationClassifier, compilation.compilationName, "binaries")
|
||||
|
||||
internal val hostSpecificMetadataConfiguration: Configuration? get() {
|
||||
val container = compilation.configurations as? NativeCompilationDependencyConfigurationsContainer
|
||||
return container?.hostSpecificMetadataConfiguration
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinSharedNativeCompilation @Inject internal constructor(
|
||||
|
||||
Reference in New Issue
Block a user