diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/SourceSetVisibilityProvider.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/SourceSetVisibilityProvider.kt index baceebe7740..1c815fa8bc0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/SourceSetVisibilityProvider.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/SourceSetVisibilityProvider.kt @@ -38,9 +38,10 @@ private fun Project.collectAllPlatformCompilationData(): List.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) ) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationConfigurationsContainer.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationConfigurationsContainer.kt index 8389969071c..5e8257f5ebf 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationConfigurationsContainer.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationConfigurationsContainer.kt @@ -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 diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/KotlinCompilationDependencyConfigurationsFactories.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/KotlinCompilationDependencyConfigurationsFactories.kt index 0799c89f54c..4729a9432f1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/KotlinCompilationDependencyConfigurationsFactories.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/KotlinCompilationDependencyConfigurationsFactories.kt @@ -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 ) } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeCompilation.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeCompilation.kt index 539e527cfb3..0b0d4d4f094 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeCompilation.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeCompilation.kt @@ -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(