[Gradle] Implement KotlinMultiplatformTargetPresetAction
KT-61634
This commit is contained in:
committed by
Space Team
parent
3817f37011
commit
90230dda60
-33
@@ -25,39 +25,6 @@ class KotlinMultiplatformPlugin : Plugin<Project> {
|
|||||||
runDeprecationDiagnostics(project)
|
runDeprecationDiagnostics(project)
|
||||||
|
|
||||||
project.plugins.apply(JavaBasePlugin::class.java)
|
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 {
|
companion object {
|
||||||
|
|||||||
+49
@@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+3
@@ -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.diagnostics.checkers.WasmSourceSetsNotFoundChecker
|
||||||
import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImportSetupAction
|
import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImportSetupAction
|
||||||
import org.jetbrains.kotlin.gradle.plugin.ide.IdeResolveDependenciesTaskSetupAction
|
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.GlobalProjectStructureMetadataStorageSetupAction
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformTargetPresetAction
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.MultiplatformPublishingSetupAction
|
import org.jetbrains.kotlin.gradle.plugin.mpp.MultiplatformPublishingSetupAction
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.SyncLanguageSettingsWithKotlinExtensionSetupAction
|
import org.jetbrains.kotlin.gradle.plugin.mpp.SyncLanguageSettingsWithKotlinExtensionSetupAction
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.UserDefinedAttributesSetupAction
|
import org.jetbrains.kotlin.gradle.plugin.mpp.UserDefinedAttributesSetupAction
|
||||||
@@ -66,6 +68,7 @@ internal fun Project.registerKotlinPluginExtensions() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isMultiplatform) {
|
if (isMultiplatform) {
|
||||||
|
register(project, KotlinMultiplatformTargetPresetAction)
|
||||||
register(project, KotlinMultiplatformSourceSetSetupAction)
|
register(project, KotlinMultiplatformSourceSetSetupAction)
|
||||||
register(project, MultiplatformBuildStatsReportSetupAction)
|
register(project, MultiplatformBuildStatsReportSetupAction)
|
||||||
register(project, KotlinMetadataTargetSetupAction)
|
register(project, KotlinMetadataTargetSetupAction)
|
||||||
|
|||||||
Reference in New Issue
Block a user