[Gradle] Implement KotlinMultiplatformSourceSetSetupAction

KT-61634
This commit is contained in:
Sebastian Sellmair
2023-10-17 10:06:12 +02:00
committed by Space Team
parent 382482a26c
commit 77376f0d28
3 changed files with 19 additions and 17 deletions
@@ -10,11 +10,7 @@ import org.gradle.api.Project
import org.gradle.api.plugins.JavaBasePlugin
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
import org.jetbrains.kotlin.gradle.internal.customizeKotlinDependencies
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.hierarchy.setupDefaultKotlinHierarchy
import org.jetbrains.kotlin.gradle.plugin.launch
import org.jetbrains.kotlin.gradle.plugin.mpp.internal.runDeprecationDiagnostics
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetType
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetPreset
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinWasmTargetPreset
@@ -22,7 +18,6 @@ import org.jetbrains.kotlin.gradle.utils.checkGradleCompatibility
import org.jetbrains.kotlin.konan.target.HostManager
import org.jetbrains.kotlin.konan.target.KonanTarget.*
import org.jetbrains.kotlin.konan.target.presetName
import org.jetbrains.kotlin.statistics.metrics.StringMetrics
class KotlinMultiplatformPlugin : Plugin<Project> {
@@ -34,7 +29,6 @@ class KotlinMultiplatformPlugin : Plugin<Project> {
setupDefaultPresets(project)
customizeKotlinDependencies(project)
configureSourceSets(project)
}
fun setupDefaultPresets(project: Project) {
@@ -68,17 +62,6 @@ class KotlinMultiplatformPlugin : Plugin<Project> {
}
}
private fun configureSourceSets(project: Project) = with(project.multiplatformExtension) {
/* Create 'commonMain' and 'commonTest' SourceSets */
sourceSets.create(KotlinSourceSet.COMMON_MAIN_SOURCE_SET_NAME)
sourceSets.create(KotlinSourceSet.COMMON_TEST_SOURCE_SET_NAME)
project.launch {
project.setupDefaultKotlinHierarchy()
}
}
companion object {
const val METADATA_TARGET_NAME = "metadata"
@@ -36,6 +36,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.MultiplatformPublishingSetupAction
import org.jetbrains.kotlin.gradle.plugin.mpp.SyncLanguageSettingsWithKotlinExtensionSetupAction
import org.jetbrains.kotlin.gradle.plugin.mpp.UserDefinedAttributesSetupAction
import org.jetbrains.kotlin.gradle.plugin.mpp.apple.AddBuildListenerForXCodeSetupAction
import org.jetbrains.kotlin.gradle.plugin.sources.KotlinMultiplatformSourceSetSetupAction
import org.jetbrains.kotlin.gradle.plugin.sources.LanguageSettingsSetupAction
import org.jetbrains.kotlin.gradle.plugin.statistics.MultiplatformBuildStatsReportSetupAction
import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubpluginSetupAction
@@ -63,6 +64,7 @@ internal fun Project.registerKotlinPluginExtensions() {
}
if (isMultiplatform) {
register(project, KotlinMultiplatformSourceSetSetupAction)
register(project, MultiplatformBuildStatsReportSetupAction)
register(project, KotlinMetadataTargetSetupAction)
register(project, KotlinArtifactsExtensionSetupAction)
@@ -0,0 +1,17 @@
/*
* 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.sources
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
import org.jetbrains.kotlin.gradle.plugin.KotlinProjectSetupCoroutine
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.hierarchy.setupDefaultKotlinHierarchy
internal val KotlinMultiplatformSourceSetSetupAction = KotlinProjectSetupCoroutine {
multiplatformExtension.sourceSets.create(KotlinSourceSet.COMMON_MAIN_SOURCE_SET_NAME)
multiplatformExtension.sourceSets.create(KotlinSourceSet.COMMON_TEST_SOURCE_SET_NAME)
project.setupDefaultKotlinHierarchy()
}