diff --git a/libraries/tools/kotlin-gradle-plugin-api/api/kotlin-gradle-plugin-api.api b/libraries/tools/kotlin-gradle-plugin-api/api/kotlin-gradle-plugin-api.api index 59849309341..d86a33426f3 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/api/kotlin-gradle-plugin-api.api +++ b/libraries/tools/kotlin-gradle-plugin-api/api/kotlin-gradle-plugin-api.api @@ -971,6 +971,7 @@ public abstract interface class org/jetbrains/kotlin/gradle/plugin/KotlinHierarc } public final class org/jetbrains/kotlin/gradle/plugin/KotlinHierarchyTemplate$Templates { + public final fun getDefault ()Lorg/jetbrains/kotlin/gradle/plugin/KotlinHierarchyTemplate; } public final class org/jetbrains/kotlin/gradle/plugin/KotlinHierarchyTemplateKt { diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinHierarchyTemplate.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinHierarchyTemplate.kt index d3d4928761b..1bb11fac8dd 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinHierarchyTemplate.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinHierarchyTemplate.kt @@ -9,9 +9,54 @@ import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi - sealed interface KotlinHierarchyTemplate { - companion object Templates + companion object Templates { + /** + * Set's up a 'natural'/'default' hierarchy within [KotlinTarget]'s, inside the project. + * + * #### Example 1 + * + * ```kotlin + * kotlin { + * applyDefaultHierarchyTemplate() // <- position of this call is not relevant! + * + * iosX64() + * iosArm64() + * linuxX64() + * linuxArm64() + * } + * ``` + * + * Will create the following SourceSets: + * `[iosMain, iosTest, appleMain, appleTest, linuxMain, linuxTest, nativeMain, nativeTest] + * + * + * Hierarchy: + * ``` + * common + * | + * +-----------------+-------------------+ + * | | + * + * native ... + * + * | + * | + * | + * +----------------------+--------------------+-----------------------+ + * | | | | + * + * apple linux mingw androidNative + * + * | + * +-----------+------------+------------+ + * | | | | + * + * macos ios tvos watchos + * ``` + */ + val default get() = defaultKotlinHierarchyTemplate + } } /* @@ -20,7 +65,7 @@ EXPERIMENTAL API @ExperimentalKotlinGradlePluginApi fun KotlinHierarchyTemplate( - describe: KotlinHierarchyBuilder.Root.() -> Unit + describe: KotlinHierarchyBuilder.Root.() -> Unit, ): KotlinHierarchyTemplate { return KotlinHierarchyTemplateImpl(describe) } @@ -55,9 +100,60 @@ internal interface InternalKotlinHierarchyTemplate : KotlinHierarchyTemplate { @OptIn(ExperimentalKotlinGradlePluginApi::class) internal class KotlinHierarchyTemplateImpl( - private val describe: KotlinHierarchyBuilder.Root.() -> Unit + private val describe: KotlinHierarchyBuilder.Root.() -> Unit, ) : InternalKotlinHierarchyTemplate { override fun layout(builder: KotlinHierarchyBuilder.Root) { describe(builder) } } + +/* +Default Hierarchy Template Implementation + */ + +@OptIn(ExperimentalKotlinGradlePluginApi::class) +private val defaultKotlinHierarchyTemplate = KotlinHierarchyTemplate { + /* natural hierarchy is only applied to default 'main'/'test' compilations (by default) */ + withSourceSetTree(KotlinSourceSetTree.main, KotlinSourceSetTree.test) + + common { + /* All compilations shall be added to the common group by default */ + withCompilations { true } + + group("native") { + withNative() + + group("apple") { + withApple() + + group("ios") { + withIos() + } + + group("tvos") { + withTvos() + } + + group("watchos") { + withWatchos() + } + + group("macos") { + withMacos() + } + } + + group("linux") { + withLinux() + } + + group("mingw") { + withMingw() + } + + group("androidNative") { + withAndroidNative() + } + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeHierarchically/p1/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeHierarchically/p1/build.gradle.kts index 1ac1fa809a6..4c521dafea8 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeHierarchically/p1/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeHierarchically/p1/build.gradle.kts @@ -1,7 +1,7 @@ import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget -import org.jetbrains.kotlin.gradle.plugin.hierarchy.default +import org.jetbrains.kotlin.gradle.plugin.KotlinHierarchyTemplate plugins { kotlin("multiplatform") diff --git a/libraries/tools/kotlin-gradle-plugin/api/kotlin-gradle-plugin.api b/libraries/tools/kotlin-gradle-plugin/api/kotlin-gradle-plugin.api index 1c5cff89a57..d6ef1b8f7aa 100644 --- a/libraries/tools/kotlin-gradle-plugin/api/kotlin-gradle-plugin.api +++ b/libraries/tools/kotlin-gradle-plugin/api/kotlin-gradle-plugin.api @@ -61,7 +61,6 @@ public abstract class org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtensi public fun getNativeMain (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider; public fun getNativeTest (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider; public fun getPresets ()Lorg/gradle/api/NamedDomainObjectCollection; - public final fun getTargetHierarchy ()Lorg/jetbrains/kotlin/gradle/dsl/KotlinTargetHierarchyDsl; public final fun getTargets ()Lorg/gradle/api/NamedDomainObjectCollection; public final fun getTestableTargets ()Lorg/gradle/api/NamedDomainObjectCollection; public fun getTvosMain (Lorg/gradle/api/NamedDomainObjectContainer;)Lorg/gradle/api/NamedDomainObjectProvider; diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension.kt index 5484614ce7e..9cdcdd2d531 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension.kt @@ -13,7 +13,6 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.Stage.AfterFinal 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.plugin.hierarchy.default import javax.inject.Inject @Suppress("DEPRECATION") diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/hierarchy/defaultKotlinHierarchyTemplate.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/hierarchy/defaultKotlinHierarchyTemplate.kt deleted file mode 100644 index 444cb4f89d2..00000000000 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/hierarchy/defaultKotlinHierarchyTemplate.kt +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright 2010-2023 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.plugin.hierarchy - -import org.jetbrains.kotlin.gradle.plugin.KotlinHierarchyTemplate -import org.jetbrains.kotlin.gradle.plugin.KotlinHierarchyTemplate.Templates -import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetTree -import org.jetbrains.kotlin.gradle.plugin.KotlinTarget - - - -/** - * Set's up a 'natural'/'default' hierarchy within [KotlinTarget]'s, inside the project. - * - * #### Example 1 - * - * ```kotlin - * kotlin { - * applyDefaultHierarchyTemplate() // <- position of this call is not relevant! - * - * iosX64() - * iosArm64() - * linuxX64() - * linuxArm64() - * } - * ``` - * - * Will create the following SourceSets: - * `[iosMain, iosTest, appleMain, appleTest, linuxMain, linuxTest, nativeMain, nativeTest] - * - * - * Hierarchy: - * ``` - * common - * | - * +-----------------+-------------------+ - * | | - * - * native ... - * - * | - * | - * | - * +----------------------+--------------------+-----------------------+ - * | | | | - * - * apple linux mingw androidNative - * - * | - * +-----------+------------+------------+ - * | | | | - * - * macos ios tvos watchos - * ``` - */ -val Templates.default get() = defaultKotlinHierarchyTemplate - -private val defaultKotlinHierarchyTemplate = KotlinHierarchyTemplate { - /* natural hierarchy is only applied to default 'main'/'test' compilations (by default) */ - withSourceSetTree(KotlinSourceSetTree.main, KotlinSourceSetTree.test) - - common { - /* All compilations shall be added to the common group by default */ - withCompilations { true } - - group("native") { - withNative() - - group("apple") { - withApple() - - group("ios") { - withIos() - } - - group("tvos") { - withTvos() - } - - group("watchos") { - withWatchos() - } - - group("macos") { - withMacos() - } - } - - group("linux") { - withLinux() - } - - group("mingw") { - withMingw() - } - - group("androidNative") { - withAndroidNative() - } - } - } -} diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/KT55929MetadataConfigurationsTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/KT55929MetadataConfigurationsTest.kt index eaad31b2c11..a70f997dea2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/KT55929MetadataConfigurationsTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/KT55929MetadataConfigurationsTest.kt @@ -12,7 +12,6 @@ import org.gradle.kotlin.dsl.repositories import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension import org.jetbrains.kotlin.gradle.plugin.KotlinHierarchyTemplate import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType -import org.jetbrains.kotlin.gradle.plugin.hierarchy.default import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSet import org.jetbrains.kotlin.gradle.util.* import org.junit.Test diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/KotlinCompileTaskSourcesTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/KotlinCompileTaskSourcesTest.kt index 5966536e929..e66772038ca 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/KotlinCompileTaskSourcesTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/KotlinCompileTaskSourcesTest.kt @@ -11,7 +11,6 @@ import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension import org.jetbrains.kotlin.gradle.plugin.KotlinHierarchyTemplate import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCommonCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinSharedNativeCompilation -import org.jetbrains.kotlin.gradle.plugin.hierarchy.default import org.jetbrains.kotlin.gradle.tasks.KotlinCompileCommon import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile import org.jetbrains.kotlin.gradle.util.buildProjectWithMPP diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/DefaultHierarchySetupTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/DefaultHierarchySetupTest.kt index e9d48c17685..067348f413f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/DefaultHierarchySetupTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/DefaultHierarchySetupTest.kt @@ -12,7 +12,6 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformSourceSetConventionsIm import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_APPLY_DEFAULT_HIERARCHY_TEMPLATE -import org.jetbrains.kotlin.gradle.plugin.hierarchy.default import org.jetbrains.kotlin.gradle.util.assertNoDiagnostics import org.jetbrains.kotlin.gradle.util.buildProjectWithMPP import org.jetbrains.kotlin.gradle.util.runLifecycleAwareTest diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinAndroidTargetHierarchyDsl.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinAndroidTargetHierarchyDsl.kt index 833c6a1d966..c222c82e67d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinAndroidTargetHierarchyDsl.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinAndroidTargetHierarchyDsl.kt @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.gradle.plugin.awaitFinalValue import org.jetbrains.kotlin.gradle.plugin.currentKotlinPluginLifecycle import org.jetbrains.kotlin.gradle.plugin.kotlinPluginLifecycle import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTargetVariantDslImpl -import org.jetbrains.kotlin.gradle.plugin.hierarchy.default import org.jetbrains.kotlin.gradle.util.* import org.junit.Test import kotlin.test.assertEquals diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinHierarchyDslTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinHierarchyDslTest.kt index 99da5af3f48..f9b253f35b0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinHierarchyDslTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinHierarchyDslTest.kt @@ -13,7 +13,6 @@ import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension import org.jetbrains.kotlin.gradle.plugin.KotlinHierarchyTemplate import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.hierarchy.buildHierarchy -import org.jetbrains.kotlin.gradle.plugin.hierarchy.default import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.util.* import kotlin.test.*