diff --git a/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/mppPresetFunctionsCodegen.kt b/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/mppPresetFunctionsCodegen.kt index 94351798943..5f261548ab1 100644 --- a/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/mppPresetFunctionsCodegen.kt +++ b/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/mppPresetFunctionsCodegen.kt @@ -19,7 +19,7 @@ private val presetsProperty = KotlinTargetsContainerWithPresets::presets.name private fun generateKotlinTargetContainerWithPresetFunctionsInterface() { // Generate KotlinMultiplatformExtension subclass with member functions for the presets: - val functions = nativePresetEntries.map { kotlinPreset -> + val functions = allPresetEntries.map { kotlinPreset -> // magic indent is needed to make the result look pretty val funPrefix = kotlinPreset.deprecation?.let { "\n $it\n @Suppress(\"DEPRECATION_ERROR\")\n " } ?: "" generatePresetFunctions(kotlinPreset, presetsProperty, "configureOrCreate", funPrefix) @@ -29,11 +29,11 @@ private fun generateKotlinTargetContainerWithPresetFunctionsInterface() { typeName(parentInterface.java.canonicalName) val className = - typeName("org.jetbrains.kotlin.gradle.dsl.KotlinTargetContainerWithNativePresetFunctions") + typeName("org.jetbrains.kotlin.gradle.dsl.KotlinTargetContainerWithPresetFunctions") val deprecatedMessageVal = typeName("org.jetbrains.kotlin.konan.target.DEPRECATED_TARGET_MESSAGE") - val imports = nativePresetEntries + val imports = allPresetEntries .flatMap { it.typeNames() } .plus(parentInterfaceName) .plus(deprecatedMessageVal) diff --git a/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/presetEntries.kt b/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/presetEntries.kt index fc6dde44a61..8cb17e2d781 100644 --- a/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/presetEntries.kt +++ b/libraries/tools/kotlin-gradle-plugin-dsl-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/dsl/presetEntries.kt @@ -36,6 +36,18 @@ internal object NativeFQNames { } } +internal val jvmPresetEntry = KotlinPresetEntry( + "jvm", + typeName("$MPP_PACKAGE.KotlinJvmTargetPreset"), + typeName("org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget") +) + +internal val androidPresetEntry = KotlinPresetEntry( + "android", + typeName("$MPP_PACKAGE.KotlinAndroidTargetPreset"), + typeName("$MPP_PACKAGE.KotlinAndroidTarget") +) + // Note: modifying these sets should also be reflected in the MPP plugin code, see 'setupDefaultPresets' private val nativeTargetsWithHostTests = setOf(KonanTarget.LINUX_X64, KonanTarget.MACOS_X64, KonanTarget.MACOS_ARM64, KonanTarget.MINGW_X64) @@ -67,3 +79,8 @@ internal val nativePresetEntries = HostManager().targets KotlinPresetEntry(target.presetName, typeName(presetType), typeName(targetType), deprecation) } + +internal val allPresetEntries = listOf( + jvmPresetEntry, + androidPresetEntry +) + nativePresetEntries diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension.kt index e054662e28a..4a44c867e1b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension.kt @@ -16,16 +16,11 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.plugin.mpp.targetHierarchy.KotlinTargetHierarchyDslImpl import javax.inject.Inject -interface KotlinTargetContainerWithPresetFunctions : - KotlinTargetContainerWithJvmPresetFunctions, - KotlinTargetContainerWithAndroidPresetFunctions, - KotlinTargetContainerWithNativePresetFunctions, - KotlinTargetContainerWithJsPresetFunctions, - KotlinTargetContainerWithWasmPresetFunctions - abstract class KotlinMultiplatformExtension(project: Project) : KotlinProjectExtension(project), KotlinTargetContainerWithPresetFunctions, + KotlinTargetContainerWithJsPresetFunctions, + KotlinTargetContainerWithWasmPresetFunctions, KotlinTargetContainerWithNativeShortcuts { override val presets: NamedDomainObjectCollection> = project.container(KotlinTargetPreset::class.java) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithAndroidPresetFunctions.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithAndroidPresetFunctions.kt deleted file mode 100644 index 07c4f761c4e..00000000000 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithAndroidPresetFunctions.kt +++ /dev/null @@ -1,55 +0,0 @@ -/* - * 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.dsl - -import org.gradle.api.Action -import org.jetbrains.kotlin.gradle.plugin.KotlinTargetsContainerWithPresets -import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget -import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTargetPreset - -private const val ANDROID_TARGET_MIGRATION_MESSAGE = "Please use androidTarget() instead. Learn more here: https://kotl.in/android-target-dsl" - -interface KotlinTargetContainerWithAndroidPresetFunctions : KotlinTargetsContainerWithPresets { - - fun androidTarget( - name: String = "android", - configure: KotlinAndroidTarget.() -> Unit = { } - ): KotlinAndroidTarget = - configureOrCreate( - name, - presets.getByName("android") as KotlinAndroidTargetPreset, - configure - ) - - fun androidTarget() = androidTarget("android") { } - fun androidTarget(name: String) = androidTarget(name) { } - fun androidTarget(name: String, configure: Action) = androidTarget(name) { configure.execute(this) } - fun androidTarget(configure: Action) = androidTarget { configure.execute(this) } - - @Deprecated(ANDROID_TARGET_MIGRATION_MESSAGE) - fun android( - name: String = "android", - configure: KotlinAndroidTarget.() -> Unit = { } - ): KotlinAndroidTarget = - configureOrCreateAndroidTargetAndReportDeprecation(name, configure) - - @Suppress("DEPRECATION") - @Deprecated(ANDROID_TARGET_MIGRATION_MESSAGE, replaceWith = ReplaceWith("androidTarget()")) - fun android() = android("android") { } - - @Suppress("DEPRECATION") - @Deprecated(ANDROID_TARGET_MIGRATION_MESSAGE, replaceWith = ReplaceWith("androidTarget(name)")) - fun android(name: String) = android(name) { } - - @Suppress("DEPRECATION") - @Deprecated(ANDROID_TARGET_MIGRATION_MESSAGE) - fun android(name: String, configure: Action) = android(name) { configure.execute(this) } - - @Suppress("DEPRECATION") - @Deprecated(ANDROID_TARGET_MIGRATION_MESSAGE) - fun android(configure: Action) = android { configure.execute(this) } - -} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithJsPresetFunctions.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithJsPresetFunctions.kt index e8d431c2bca..3a4deb153eb 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithJsPresetFunctions.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithJsPresetFunctions.kt @@ -14,7 +14,7 @@ import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName interface KotlinTargetContainerWithJsPresetFunctions : - KotlinTargetsContainerWithPresets, + KotlinTargetContainerWithPresetFunctions, KotlinJsCompilerTypeHolder { fun js( name: String = "js", diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithJvmPresetFunctions.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithJvmPresetFunctions.kt deleted file mode 100644 index 766330aa469..00000000000 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithJvmPresetFunctions.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * 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.dsl - -import org.gradle.api.Action -import org.jetbrains.kotlin.gradle.plugin.KotlinTargetsContainerWithPresets -import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmTargetPreset -import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget - -interface KotlinTargetContainerWithJvmPresetFunctions : KotlinTargetsContainerWithPresets { - - fun jvm( - name: String = "jvm", - configure: KotlinJvmTarget.() -> Unit = { } - ): KotlinJvmTarget = - configureOrCreate( - name, - presets.getByName("jvm") as KotlinJvmTargetPreset, - configure - ) - - fun jvm() = jvm("jvm") { } - fun jvm(name: String) = jvm(name) { } - fun jvm(name: String, configure: Action) = jvm(name) { configure.execute(this) } - fun jvm(configure: Action) = jvm { configure.execute(this) } - -} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithNativePresetFunctions.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithPresetFunctions.kt similarity index 93% rename from libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithNativePresetFunctions.kt rename to libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithPresetFunctions.kt index a21345be4fb..d8a1c7d926c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithNativePresetFunctions.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithPresetFunctions.kt @@ -2,17 +2,51 @@ package org.jetbrains.kotlin.gradle.dsl import org.gradle.api.Action import org.jetbrains.kotlin.gradle.plugin.KotlinTargetsContainerWithPresets +import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget +import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTargetPreset +import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmTargetPreset import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTargetPreset import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTargetWithHostTests import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTargetWithHostTestsPreset import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTargetWithSimulatorTests import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTargetWithSimulatorTestsPreset +import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget import org.jetbrains.kotlin.konan.target.DEPRECATED_TARGET_MESSAGE // DO NOT EDIT MANUALLY! Generated by org.jetbrains.kotlin.generators.gradle.dsl.MppPresetFunctionsCodegenKt -interface KotlinTargetContainerWithNativePresetFunctions : KotlinTargetsContainerWithPresets { +interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithPresets { + + fun jvm( + name: String = "jvm", + configure: KotlinJvmTarget.() -> Unit = { } + ): KotlinJvmTarget = + configureOrCreate( + name, + presets.getByName("jvm") as KotlinJvmTargetPreset, + configure + ) + + fun jvm() = jvm("jvm") { } + fun jvm(name: String) = jvm(name) { } + fun jvm(name: String, configure: Action) = jvm(name) { configure.execute(this) } + fun jvm(configure: Action) = jvm { configure.execute(this) } + + fun android( + name: String = "android", + configure: KotlinAndroidTarget.() -> Unit = { } + ): KotlinAndroidTarget = + configureOrCreate( + name, + presets.getByName("android") as KotlinAndroidTargetPreset, + configure + ) + + fun android() = android("android") { } + fun android(name: String) = android(name) { } + fun android(name: String, configure: Action) = android(name) { configure.execute(this) } + fun android(configure: Action) = android { configure.execute(this) } fun androidNativeX64( name: String = "androidNativeX64", diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithWasmPresetFunctions.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithWasmPresetFunctions.kt index af942e4c1fc..aab5f124a08 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithWasmPresetFunctions.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithWasmPresetFunctions.kt @@ -6,13 +6,12 @@ package org.jetbrains.kotlin.gradle.dsl import org.gradle.api.Action -import org.jetbrains.kotlin.gradle.plugin.KotlinTargetsContainerWithPresets import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinWasmTargetDsl import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinWasmTargetPreset -interface KotlinTargetContainerWithWasmPresetFunctions : KotlinTargetsContainerWithPresets { +interface KotlinTargetContainerWithWasmPresetFunctions : KotlinTargetContainerWithPresetFunctions { @ExperimentalWasmDsl fun wasm( name: String = "wasm",