From 90230dda604ebe369b6fd3d6c9a2971fe49c2372 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Wed, 18 Oct 2023 11:45:19 +0200 Subject: [PATCH] [Gradle] Implement KotlinMultiplatformTargetPresetAction KT-61634 --- .../plugin/mpp/KotlinMultiplatformPlugin.kt | 33 ------------- ...linMultiplatformTargetPresetSetupAction.kt | 49 +++++++++++++++++++ .../plugin/registerKotlinPluginExtensions.kt | 3 ++ 3 files changed, 52 insertions(+), 33 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformTargetPresetSetupAction.kt diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt index cab2251044a..76220feb7d4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt @@ -25,39 +25,6 @@ class KotlinMultiplatformPlugin : Plugin { runDeprecationDiagnostics(project) project.plugins.apply(JavaBasePlugin::class.java) - - setupDefaultPresets(project) - } - - fun setupDefaultPresets(project: Project) { - with(project.multiplatformExtension.presets) { - add(KotlinJvmTargetPreset(project)) - add(KotlinJsIrTargetPreset(project)) - add(KotlinWasmTargetPreset(project, KotlinWasmTargetType.JS)) - add(KotlinWasmTargetPreset(project, KotlinWasmTargetType.WASI)) - add(project.objects.newInstance(KotlinAndroidTargetPreset::class.java, project)) - add(KotlinJvmWithJavaTargetPreset(project)) - - // Note: modifying these sets should also be reflected in the DSL code generator, see 'presetEntries.kt' - val nativeTargetsWithHostTests = setOf(LINUX_X64, MACOS_X64, MACOS_ARM64, MINGW_X64) - val nativeTargetsWithSimulatorTests = - setOf(IOS_X64, IOS_SIMULATOR_ARM64, WATCHOS_X86, WATCHOS_X64, WATCHOS_SIMULATOR_ARM64, TVOS_X64, TVOS_SIMULATOR_ARM64) - - HostManager().targets - .forEach { (_, konanTarget) -> - val targetToAdd = when (konanTarget) { - in nativeTargetsWithHostTests -> - KotlinNativeTargetWithHostTestsPreset(konanTarget.presetName, project, konanTarget) - - in nativeTargetsWithSimulatorTests -> - KotlinNativeTargetWithSimulatorTestsPreset(konanTarget.presetName, project, konanTarget) - - else -> KotlinNativeTargetPreset(konanTarget.presetName, project, konanTarget) - } - - add(targetToAdd) - } - } } companion object { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformTargetPresetSetupAction.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformTargetPresetSetupAction.kt new file mode 100644 index 00000000000..3e91004fed7 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformTargetPresetSetupAction.kt @@ -0,0 +1,49 @@ +/* + * 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.mpp + +import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension +import org.jetbrains.kotlin.gradle.plugin.KotlinProjectSetupAction +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 +import org.jetbrains.kotlin.konan.target.HostManager +import org.jetbrains.kotlin.konan.target.KonanTarget.* +import org.jetbrains.kotlin.konan.target.presetName + +internal val KotlinMultiplatformTargetPresetAction = KotlinProjectSetupAction { + @Suppress("DEPRECATION") + with(project.multiplatformExtension.presets) { + add(KotlinJvmTargetPreset(project)) + add(KotlinJsIrTargetPreset(project)) + add(KotlinWasmTargetPreset(project, KotlinWasmTargetType.JS)) + add(KotlinWasmTargetPreset(project, KotlinWasmTargetType.WASI)) + add(project.objects.newInstance(KotlinAndroidTargetPreset::class.java, project)) + add(KotlinJvmWithJavaTargetPreset(project)) + + // Note: modifying these sets should also be reflected in the DSL code generator, see 'presetEntries.kt' + val nativeTargetsWithHostTests = setOf(LINUX_X64, MACOS_X64, MACOS_ARM64, MINGW_X64) + val nativeTargetsWithSimulatorTests = setOf( + IOS_X64, IOS_SIMULATOR_ARM64, + WATCHOS_X86, WATCHOS_X64, WATCHOS_SIMULATOR_ARM64, + TVOS_X64, TVOS_SIMULATOR_ARM64 + ) + + HostManager().targets.forEach { (_, konanTarget) -> + val targetToAdd = when (konanTarget) { + in nativeTargetsWithHostTests -> + KotlinNativeTargetWithHostTestsPreset(konanTarget.presetName, project, konanTarget) + + in nativeTargetsWithSimulatorTests -> + KotlinNativeTargetWithSimulatorTestsPreset(konanTarget.presetName, project, konanTarget) + + else -> KotlinNativeTargetPreset(konanTarget.presetName, project, konanTarget) + } + + add(targetToAdd) + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/registerKotlinPluginExtensions.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/registerKotlinPluginExtensions.kt index 46deb969cdc..d33bb99789a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/registerKotlinPluginExtensions.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/registerKotlinPluginExtensions.kt @@ -32,7 +32,9 @@ import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.UnusedSourceSetsC import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.WasmSourceSetsNotFoundChecker import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImportSetupAction import org.jetbrains.kotlin.gradle.plugin.ide.IdeResolveDependenciesTaskSetupAction +import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.plugin.mpp.GlobalProjectStructureMetadataStorageSetupAction +import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformTargetPresetAction import org.jetbrains.kotlin.gradle.plugin.mpp.MultiplatformPublishingSetupAction import org.jetbrains.kotlin.gradle.plugin.mpp.SyncLanguageSettingsWithKotlinExtensionSetupAction import org.jetbrains.kotlin.gradle.plugin.mpp.UserDefinedAttributesSetupAction @@ -66,6 +68,7 @@ internal fun Project.registerKotlinPluginExtensions() { } if (isMultiplatform) { + register(project, KotlinMultiplatformTargetPresetAction) register(project, KotlinMultiplatformSourceSetSetupAction) register(project, MultiplatformBuildStatsReportSetupAction) register(project, KotlinMetadataTargetSetupAction)