[Gradle] Implement KotlinMetadataTargetSetupAction

KT-61634
This commit is contained in:
Sebastian Sellmair
2023-10-17 10:02:35 +02:00
committed by Space Team
parent 0ccb98f579
commit 070b80a05f
3 changed files with 22 additions and 11 deletions
@@ -8,9 +8,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.plugins.JavaBasePlugin
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.targetFromPresetInternal
import org.jetbrains.kotlin.gradle.internal.customizeKotlinDependencies
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.hierarchy.setupDefaultKotlinHierarchy
@@ -34,21 +32,12 @@ class KotlinMultiplatformPlugin : Plugin<Project> {
project.plugins.apply(JavaBasePlugin::class.java)
val kotlinMultiplatformExtension = project.extensions.getByType(KotlinMultiplatformExtension::class.java)
setupDefaultPresets(project)
customizeKotlinDependencies(project)
configureSourceSets(project)
setupTargetsBuildStatsReport(project)
// set up metadata publishing
kotlinMultiplatformExtension.targetFromPresetInternal(
KotlinMetadataTargetPreset(project),
METADATA_TARGET_NAME
)
}
fun setupDefaultPresets(project: Project) {
with(project.multiplatformExtension.presets) {
add(KotlinJvmTargetPreset(project))
@@ -39,6 +39,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.apple.AddBuildListenerForXCodeSetu
import org.jetbrains.kotlin.gradle.plugin.sources.LanguageSettingsSetupAction
import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubpluginSetupAction
import org.jetbrains.kotlin.gradle.targets.js.npm.AddNpmDependencyExtensionProjectSetupAction
import org.jetbrains.kotlin.gradle.targets.metadata.KotlinMetadataTargetSetupAction
import org.jetbrains.kotlin.gradle.targets.native.CreateFatFrameworksSetupAction
import org.jetbrains.kotlin.gradle.targets.native.internal.CInteropCommonizedCInteropApiElementsConfigurationsSetupAction
import org.jetbrains.kotlin.gradle.targets.native.tasks.artifact.KotlinArtifactsExtensionSetupAction
@@ -61,6 +62,7 @@ internal fun Project.registerKotlinPluginExtensions() {
}
if (isMultiplatform) {
register(project, KotlinMetadataTargetSetupAction)
register(project, KotlinArtifactsExtensionSetupAction)
register(project, MultiplatformPublishingSetupAction)
register(project, LanguageSettingsSetupAction)
@@ -0,0 +1,20 @@
/*
* 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.targets.metadata
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.targetFromPresetInternal
import org.jetbrains.kotlin.gradle.plugin.KotlinProjectSetupAction
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTargetPreset
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin
internal val KotlinMetadataTargetSetupAction = KotlinProjectSetupAction {
/* Create metadata target */
multiplatformExtension.targetFromPresetInternal(
KotlinMetadataTargetPreset(project),
KotlinMultiplatformPlugin.METADATA_TARGET_NAME
)
}