diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt index 0595cb8c319..eaa8a37de87 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt @@ -199,12 +199,18 @@ abstract class DefaultKotlinBasePlugin : KotlinBasePlugin { ) = with(project.dependencies.attributesSchema) { KotlinPlatformType.setupAttributesMatchingStrategy(this) KotlinUsages.setupAttributesMatchingStrategy(this, isKotlinGranularMetadata) - KotlinJsCompilerAttribute.setupAttributesMatchingStrategy(project.dependencies.attributesSchema) - KotlinWasmTargetAttribute.setupAttributesMatchingStrategy(project.dependencies.attributesSchema) ProjectLocalConfigurations.setupAttributesMatchingStrategy(this) - CInteropKlibLibraryElements.setupAttributesMatchingStrategy(this) - CommonizerTargetAttribute.setupAttributesMatchingStrategy(this) - CInteropCommonizerArtifactTypeAttribute.setupTransform(project) + + project.whenJsOrMppEnabled { + KotlinJsCompilerAttribute.setupAttributesMatchingStrategy(project.dependencies.attributesSchema) + KotlinWasmTargetAttribute.setupAttributesMatchingStrategy(project.dependencies.attributesSchema) + } + + project.whenMppEnabled { + CInteropKlibLibraryElements.setupAttributesMatchingStrategy(this) + CommonizerTargetAttribute.setupAttributesMatchingStrategy(this) + CInteropCommonizerArtifactTypeAttribute.setupTransform(project) + } } open fun whenBuildEvaluated(project: Project) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/whenKaptEnabled.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/whenKaptEnabled.kt deleted file mode 100644 index 8d4f9daecb5..00000000000 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/whenKaptEnabled.kt +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2010-2022 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.gradle.utils - -import org.gradle.api.Project - -internal fun Project.whenKaptEnabled(block: () -> Unit) { - var triggered = false - - fun trigger() { - if (triggered) return - triggered = true - block() - } - - pluginManager.withPlugin("kotlin-kapt") { trigger() } - pluginManager.withPlugin("org.jetbrains.kotlin.kapt") { trigger() } -} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/whenPluginEnabled.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/whenPluginEnabled.kt new file mode 100644 index 00000000000..26fdfdd0045 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/whenPluginEnabled.kt @@ -0,0 +1,40 @@ +/* + * Copyright 2010-2022 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.gradle.utils + +import org.gradle.api.Project + +internal fun Project.whenKaptEnabled(action: () -> Unit) = whenPluginsEnabled( + setOf("org.jetbrains.kotlin.kapt", "kotlin-kapt"), + action, +) + +internal fun Project.whenMppEnabled(action: () -> Unit) = whenPluginsEnabled( + setOf("org.jetbrains.kotlin.multiplatform", "kotlin-multiplatform"), + action, +) + +internal fun Project.whenJsOrMppEnabled(action: () -> Unit) = whenPluginsEnabled( + setOf("org.jetbrains.kotlin.js", "org.jetbrains.kotlin.multiplatform", "kotlin-multiplatform"), + action, +) + +private fun Project.whenPluginsEnabled( + pluginIds: Set, + action: () -> Unit, +) { + var triggered = false + + fun trigger() { + if (triggered) return + triggered = true + action() + } + + for (pluginId in pluginIds) { + pluginManager.withPlugin(pluginId) { trigger() } + } +} \ No newline at end of file