[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)
|
||||
|
||||
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 {
|
||||
|
||||
+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.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)
|
||||
|
||||
Reference in New Issue
Block a user