[MPP] Deprecate preset APIs
^KT-59321
This commit is contained in:
committed by
Space Team
parent
a580d4e5aa
commit
969deb639c
+5
@@ -1,3 +1,8 @@
|
||||
public final class org/jetbrains/kotlin/gradle/DeprecatedTargetPresetApiKt {
|
||||
public static final field PRESETS_API_IS_DEPRECATED_MESSAGE Ljava/lang/String;
|
||||
public static final field PRESETS_DEPRECATION_MESSAGE_SUFFIX Ljava/lang/String;
|
||||
}
|
||||
|
||||
public abstract interface annotation class org/jetbrains/kotlin/gradle/ExperimentalKotlinGradlePluginApi : java/lang/annotation/Annotation {
|
||||
}
|
||||
|
||||
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* 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
|
||||
|
||||
const val PRESETS_DEPRECATION_MESSAGE_SUFFIX =
|
||||
"API is deprecated and will be removed in future releases. Learn how to configure targets at: https://kotl.in/target-configuration"
|
||||
const val PRESETS_API_IS_DEPRECATED_MESSAGE = "The presets $PRESETS_DEPRECATION_MESSAGE_SUFFIX"
|
||||
|
||||
@RequiresOptIn(
|
||||
message = PRESETS_API_IS_DEPRECATED_MESSAGE,
|
||||
level = RequiresOptIn.Level.WARNING
|
||||
)
|
||||
@InternalKotlinGradlePluginApi
|
||||
annotation class DeprecatedTargetPresetApi
|
||||
+11
-1
@@ -10,11 +10,13 @@ package org.jetbrains.kotlin.gradle.plugin
|
||||
import org.gradle.api.Action
|
||||
import org.gradle.api.Named
|
||||
import org.gradle.api.NamedDomainObjectContainer
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.attributes.AttributeContainer
|
||||
import org.gradle.api.attributes.HasAttributes
|
||||
import org.gradle.api.component.SoftwareComponent
|
||||
import org.gradle.api.publish.maven.MavenPublication
|
||||
import org.jetbrains.kotlin.gradle.PRESETS_API_IS_DEPRECATED_MESSAGE
|
||||
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
|
||||
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptionsDeprecated
|
||||
import org.jetbrains.kotlin.tooling.core.HasMutableExtras
|
||||
|
||||
@@ -52,8 +54,16 @@ interface KotlinTarget : Named, HasAttributes, HasProject, HasMutableExtras {
|
||||
fun attributes(configure: AttributeContainer.() -> Unit) = attributes.configure()
|
||||
fun attributes(configure: Action<AttributeContainer>) = attributes { configure.execute(this) }
|
||||
|
||||
@OptIn(DeprecatedTargetPresetApi::class, InternalKotlinGradlePluginApi::class)
|
||||
@Deprecated(
|
||||
PRESETS_API_IS_DEPRECATED_MESSAGE,
|
||||
level = DeprecationLevel.WARNING,
|
||||
)
|
||||
val preset: KotlinTargetPreset<out KotlinTarget>?
|
||||
|
||||
@InternalKotlinGradlePluginApi
|
||||
fun warnAboutCreationOfTargetFromPreset()
|
||||
|
||||
override fun getName(): String = targetName
|
||||
}
|
||||
|
||||
|
||||
+9
@@ -6,7 +6,16 @@
|
||||
package org.jetbrains.kotlin.gradle.plugin
|
||||
|
||||
import org.gradle.api.Named
|
||||
import org.jetbrains.kotlin.gradle.PRESETS_DEPRECATION_MESSAGE_SUFFIX
|
||||
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
|
||||
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
|
||||
|
||||
@OptIn(InternalKotlinGradlePluginApi::class)
|
||||
@DeprecatedTargetPresetApi
|
||||
interface KotlinTargetPreset<T: KotlinTarget> : Named {
|
||||
@Deprecated(
|
||||
"The KotlinTargetPreset.createTarget() $PRESETS_DEPRECATION_MESSAGE_SUFFIX",
|
||||
level = DeprecationLevel.WARNING,
|
||||
)
|
||||
fun createTarget(name: String): T
|
||||
}
|
||||
+9
@@ -7,13 +7,22 @@ package org.jetbrains.kotlin.gradle.plugin
|
||||
|
||||
import org.gradle.api.NamedDomainObjectCollection
|
||||
import org.gradle.api.NamedDomainObjectContainer
|
||||
import org.jetbrains.kotlin.gradle.PRESETS_API_IS_DEPRECATED_MESSAGE
|
||||
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
|
||||
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
|
||||
|
||||
@KotlinTargetsDsl
|
||||
interface KotlinTargetsContainer {
|
||||
val targets: NamedDomainObjectCollection<KotlinTarget>
|
||||
}
|
||||
|
||||
@OptIn(InternalKotlinGradlePluginApi::class)
|
||||
@DeprecatedTargetPresetApi
|
||||
interface KotlinTargetsContainerWithPresets : KotlinTargetsContainer {
|
||||
@Deprecated(
|
||||
PRESETS_API_IS_DEPRECATED_MESSAGE,
|
||||
level = DeprecationLevel.WARNING,
|
||||
)
|
||||
val presets: NamedDomainObjectCollection<KotlinTargetPreset<*>>
|
||||
}
|
||||
|
||||
|
||||
+10
-1
@@ -3,10 +3,15 @@
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@file:OptIn(DeprecatedTargetPresetApi::class, InternalKotlinGradlePluginApi::class)
|
||||
@file:Suppress("DEPRECATION")
|
||||
|
||||
package org.jetbrains.kotlin.generators.gradle.dsl
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.gradle.api.Action
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetsContainerWithPresets
|
||||
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
|
||||
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
|
||||
import java.io.File
|
||||
|
||||
fun main() {
|
||||
@@ -89,6 +94,9 @@ private fun generatePresetFunctions(
|
||||
""
|
||||
}
|
||||
|
||||
// Suppress presets deprecation to prevent warnings inside kotlin-gradle-plugin
|
||||
val suppressPresetsDeprecation = "@Suppress(\"DEPRECATION\")"
|
||||
|
||||
val alsoBlockAfterConfiguration = if (presetEntry.alsoBlockAfterConfiguration != null) {
|
||||
"""
|
||||
.also {
|
||||
@@ -109,6 +117,7 @@ private fun generatePresetFunctions(
|
||||
): ${presetEntry.targetType.renderShort()} =
|
||||
$configureOrCreateFunctionName(
|
||||
name,
|
||||
${suppressPresetsDeprecation}
|
||||
$getPresetsExpression.getByName("$entityName") as ${presetEntry.presetType.renderShort()},
|
||||
configure
|
||||
)$alsoBlockAfterConfiguration
|
||||
|
||||
-1
@@ -9,7 +9,6 @@ import org.gradle.testkit.runner.BuildResult
|
||||
import org.jetbrains.kotlin.gradle.BaseGradleIT
|
||||
import org.jetbrains.kotlin.gradle.internals.VERBOSE_DIAGNOSTIC_SEPARATOR
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.ToolingDiagnosticFactory
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertNull
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@ kotlin {
|
||||
"org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi",
|
||||
"org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi",
|
||||
"org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi",
|
||||
"org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi",
|
||||
)
|
||||
)
|
||||
suppressWarnings = true
|
||||
|
||||
+106
-11
@@ -11,8 +11,12 @@ import org.gradle.api.NamedDomainObjectCollection
|
||||
import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
||||
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
|
||||
import org.jetbrains.kotlin.gradle.PRESETS_API_IS_DEPRECATED_MESSAGE
|
||||
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.Stage.AfterFinaliseDsl
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnostic
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.hierarchy.KotlinHierarchyDslImpl
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
||||
@@ -29,6 +33,10 @@ abstract class KotlinMultiplatformExtension
|
||||
KotlinTargetContainerWithNativeShortcuts,
|
||||
KotlinHierarchyDsl,
|
||||
KotlinMultiplatformSourceSetConventions by KotlinMultiplatformSourceSetConventionsImpl {
|
||||
@Deprecated(
|
||||
PRESETS_API_IS_DEPRECATED_MESSAGE,
|
||||
level = DeprecationLevel.WARNING,
|
||||
)
|
||||
override val presets: NamedDomainObjectCollection<KotlinTargetPreset<*>> = project.container(KotlinTargetPreset::class.java)
|
||||
|
||||
final override val targets: NamedDomainObjectCollection<KotlinTarget> = project.container(KotlinTarget::class.java)
|
||||
@@ -43,7 +51,8 @@ abstract class KotlinMultiplatformExtension
|
||||
private val presetExtension = project.objects.newInstance(
|
||||
DefaultTargetsFromPresetExtension::class.java,
|
||||
{ this },
|
||||
targets
|
||||
targets,
|
||||
project,
|
||||
)
|
||||
|
||||
fun targets(configure: Action<TargetsFromPresetExtension>) {
|
||||
@@ -147,42 +156,117 @@ abstract class KotlinMultiplatformExtension
|
||||
targets.all { it.withSourcesJar(publish) }
|
||||
}
|
||||
|
||||
private fun warnAboutTargetFromPresetDeprecation() {
|
||||
project.reportDiagnostic(KotlinToolingDiagnostics.TargetFromPreset())
|
||||
}
|
||||
|
||||
@DeprecatedTargetPresetApi
|
||||
@Deprecated(
|
||||
KotlinToolingDiagnostics.TargetFromPreset.DEPRECATION_MESSAGE,
|
||||
level = DeprecationLevel.WARNING
|
||||
)
|
||||
fun <T : KotlinTarget> targetFromPreset(
|
||||
preset: KotlinTargetPreset<T>,
|
||||
name: String = preset.name,
|
||||
configure: T.() -> Unit = { },
|
||||
): T = configureOrCreate(name, preset, configure)
|
||||
): T {
|
||||
warnAboutTargetFromPresetDeprecation()
|
||||
return targetFromPresetInternal(
|
||||
preset = preset,
|
||||
name = name,
|
||||
configure = configure,
|
||||
)
|
||||
}
|
||||
|
||||
@DeprecatedTargetPresetApi
|
||||
@Deprecated(
|
||||
KotlinToolingDiagnostics.TargetFromPreset.DEPRECATION_MESSAGE,
|
||||
level = DeprecationLevel.WARNING
|
||||
)
|
||||
fun <T : KotlinTarget> targetFromPreset(
|
||||
preset: KotlinTargetPreset<T>,
|
||||
name: String,
|
||||
configure: Action<T>,
|
||||
) = targetFromPreset(preset, name) { configure.execute(this) }
|
||||
): T {
|
||||
warnAboutTargetFromPresetDeprecation()
|
||||
return targetFromPresetInternal(
|
||||
preset = preset,
|
||||
name = name,
|
||||
configure = configure,
|
||||
)
|
||||
}
|
||||
|
||||
fun <T : KotlinTarget> targetFromPreset(preset: KotlinTargetPreset<T>) = targetFromPreset(preset, preset.name) { }
|
||||
fun <T : KotlinTarget> targetFromPreset(preset: KotlinTargetPreset<T>, name: String) = targetFromPreset(preset, name) { }
|
||||
fun <T : KotlinTarget> targetFromPreset(preset: KotlinTargetPreset<T>, configure: Action<T>) =
|
||||
targetFromPreset(preset, preset.name, configure)
|
||||
@DeprecatedTargetPresetApi
|
||||
@Deprecated(
|
||||
KotlinToolingDiagnostics.TargetFromPreset.DEPRECATION_MESSAGE,
|
||||
level = DeprecationLevel.WARNING
|
||||
)
|
||||
fun <T : KotlinTarget> targetFromPreset(preset: KotlinTargetPreset<T>): T {
|
||||
warnAboutTargetFromPresetDeprecation()
|
||||
return targetFromPresetInternal(
|
||||
preset = preset
|
||||
)
|
||||
}
|
||||
|
||||
@DeprecatedTargetPresetApi
|
||||
@Deprecated(
|
||||
KotlinToolingDiagnostics.TargetFromPreset.DEPRECATION_MESSAGE,
|
||||
level = DeprecationLevel.WARNING
|
||||
)
|
||||
fun <T : KotlinTarget> targetFromPreset(preset: KotlinTargetPreset<T>, name: String): T {
|
||||
warnAboutTargetFromPresetDeprecation()
|
||||
return targetFromPresetInternal(
|
||||
preset = preset,
|
||||
name = name
|
||||
)
|
||||
}
|
||||
|
||||
@DeprecatedTargetPresetApi
|
||||
@Deprecated(
|
||||
KotlinToolingDiagnostics.TargetFromPreset.DEPRECATION_MESSAGE,
|
||||
level = DeprecationLevel.WARNING
|
||||
)
|
||||
fun <T : KotlinTarget> targetFromPreset(preset: KotlinTargetPreset<T>, configure: Action<T>): T {
|
||||
warnAboutTargetFromPresetDeprecation()
|
||||
return targetFromPresetInternal(
|
||||
preset = preset,
|
||||
configure = configure
|
||||
)
|
||||
}
|
||||
|
||||
internal val rootSoftwareComponent: KotlinSoftwareComponent by lazy {
|
||||
KotlinSoftwareComponentWithCoordinatesAndPublication(project, "kotlin", targets)
|
||||
}
|
||||
}
|
||||
|
||||
@DeprecatedTargetPresetApi
|
||||
@KotlinGradlePluginDsl
|
||||
interface TargetsFromPresetExtension : NamedDomainObjectCollection<KotlinTarget> {
|
||||
|
||||
@Deprecated(
|
||||
KotlinToolingDiagnostics.FromPreset.DEPRECATION_MESSAGE,
|
||||
level = DeprecationLevel.WARNING,
|
||||
)
|
||||
fun <T : KotlinTarget> fromPreset(
|
||||
preset: KotlinTargetPreset<T>,
|
||||
name: String,
|
||||
configureAction: T.() -> Unit = {},
|
||||
): T
|
||||
|
||||
@Suppress("DeprecatedCallableAddReplaceWith", "DEPRECATION")
|
||||
@Deprecated(
|
||||
KotlinToolingDiagnostics.FromPreset.DEPRECATION_MESSAGE,
|
||||
level = DeprecationLevel.WARNING,
|
||||
)
|
||||
fun <T : KotlinTarget> fromPreset(
|
||||
preset: KotlinTargetPreset<T>,
|
||||
name: String,
|
||||
): T = fromPreset(preset, name, {})
|
||||
): T = fromPreset(preset, name) {}
|
||||
|
||||
@Deprecated(
|
||||
KotlinToolingDiagnostics.FromPreset.DEPRECATION_MESSAGE,
|
||||
level = DeprecationLevel.WARNING,
|
||||
)
|
||||
fun <T : KotlinTarget> fromPreset(
|
||||
preset: KotlinTargetPreset<T>,
|
||||
name: String,
|
||||
@@ -190,18 +274,28 @@ interface TargetsFromPresetExtension : NamedDomainObjectCollection<KotlinTarget>
|
||||
): T
|
||||
}
|
||||
|
||||
@Suppress("OVERRIDE_DEPRECATION")
|
||||
internal abstract class DefaultTargetsFromPresetExtension @Inject constructor(
|
||||
private val targetsContainer: () -> KotlinTargetsContainerWithPresets,
|
||||
val targets: NamedDomainObjectCollection<KotlinTarget>,
|
||||
val project: Project,
|
||||
) : TargetsFromPresetExtension,
|
||||
NamedDomainObjectCollection<KotlinTarget> by targets {
|
||||
|
||||
private fun warnAboutFromPresetDeprecation() {
|
||||
project.reportDiagnostic(KotlinToolingDiagnostics.FromPreset())
|
||||
}
|
||||
|
||||
override fun <T : KotlinTarget> fromPreset(
|
||||
preset: KotlinTargetPreset<T>,
|
||||
name: String,
|
||||
configureAction: T.() -> Unit,
|
||||
): T = targetsContainer().configureOrCreate(name, preset, configureAction)
|
||||
): T {
|
||||
warnAboutFromPresetDeprecation()
|
||||
return targetsContainer().configureOrCreate(name, preset, configureAction)
|
||||
}
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
override fun <T : KotlinTarget> fromPreset(
|
||||
preset: KotlinTargetPreset<T>,
|
||||
name: String,
|
||||
@@ -211,6 +305,7 @@ internal abstract class DefaultTargetsFromPresetExtension @Inject constructor(
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
private fun KotlinTarget.isProducedFromPreset(kotlinTargetPreset: KotlinTargetPreset<*>): Boolean =
|
||||
preset == kotlinTargetPreset
|
||||
|
||||
@@ -228,13 +323,14 @@ internal fun <T : KotlinTarget> KotlinTargetsContainerWithPresets.configureOrCre
|
||||
}
|
||||
|
||||
existingTarget == null -> {
|
||||
val newTarget = targetPreset.createTarget(targetName)
|
||||
val newTarget = targetPreset.createTargetInternal(targetName)
|
||||
targets.add(newTarget)
|
||||
configure(newTarget)
|
||||
return newTarget
|
||||
}
|
||||
|
||||
else -> {
|
||||
@Suppress("DEPRECATION")
|
||||
throw InvalidUserCodeException(
|
||||
"The target '$targetName' already exists, but it was not created with the '${targetPreset.name}' preset. " +
|
||||
"To configure it, access it by name in `kotlin.targets`" +
|
||||
@@ -244,4 +340,3 @@ internal fun <T : KotlinTarget> KotlinTargetsContainerWithPresets.configureOrCre
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* 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.KotlinTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetPreset
|
||||
import org.jetbrains.kotlin.gradle.targets.android.internal.internal
|
||||
|
||||
internal fun <T : KotlinTarget> KotlinMultiplatformExtension.targetFromPresetInternal(
|
||||
preset: KotlinTargetPreset<T>,
|
||||
name: String = preset.name,
|
||||
configure: T.() -> Unit = { },
|
||||
): T = configureOrCreate(name, preset.internal, configure)
|
||||
|
||||
internal fun <T : KotlinTarget> KotlinMultiplatformExtension.targetFromPresetInternal(
|
||||
preset: KotlinTargetPreset<T>,
|
||||
name: String,
|
||||
configure: Action<T>,
|
||||
) = targetFromPresetInternal(preset, name) { configure.execute(this) }
|
||||
|
||||
internal fun <T : KotlinTarget> KotlinMultiplatformExtension.targetFromPresetInternal(preset: KotlinTargetPreset<T>) =
|
||||
targetFromPresetInternal(preset, preset.name) { }
|
||||
|
||||
internal fun <T : KotlinTarget> KotlinMultiplatformExtension.targetFromPresetInternal(preset: KotlinTargetPreset<T>, name: String) =
|
||||
targetFromPresetInternal(preset, name) { }
|
||||
|
||||
internal fun <T : KotlinTarget> KotlinMultiplatformExtension.targetFromPresetInternal(preset: KotlinTargetPreset<T>, configure: Action<T>) =
|
||||
targetFromPresetInternal(preset, preset.name, configure)
|
||||
+3
-3
@@ -318,20 +318,20 @@ abstract class KotlinJsProjectExtension(project: Project) :
|
||||
.also {
|
||||
it.irPreset = null
|
||||
}
|
||||
.createTarget("js")
|
||||
.createTargetInternal("js")
|
||||
|
||||
KotlinJsCompilerType.IR -> irPreset
|
||||
.also {
|
||||
it.mixedMode = false
|
||||
}
|
||||
.createTarget("js")
|
||||
.createTargetInternal("js")
|
||||
|
||||
KotlinJsCompilerType.BOTH -> legacyPreset
|
||||
.also {
|
||||
irPreset.mixedMode = true
|
||||
it.irPreset = irPreset
|
||||
}
|
||||
.createTarget(
|
||||
.createTargetInternal(
|
||||
lowerCamelCaseName(
|
||||
"js",
|
||||
LEGACY.lowerName
|
||||
|
||||
+2
-1
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.dsl
|
||||
import org.gradle.api.Action
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJsProjectExtension.Companion.warnAboutDeprecatedCompiler
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.targets.android.internal.InternalKotlinTargetPreset
|
||||
import org.jetbrains.kotlin.gradle.targets.js.calculateJsCompilerType
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
@@ -100,7 +101,7 @@ private fun KotlinTargetContainerWithJsPresetFunctions.jsInternal(
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
@Suppress("UNCHECKED_CAST", "DEPRECATION")
|
||||
return configureOrCreate(
|
||||
targetName,
|
||||
presets.getByName(
|
||||
|
||||
+30
@@ -27,6 +27,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinJvmTarget =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("jvm") as KotlinJvmTargetPreset,
|
||||
configure
|
||||
)
|
||||
@@ -42,6 +43,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinAndroidTarget =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("android") as KotlinAndroidTargetPreset,
|
||||
configure
|
||||
)
|
||||
@@ -59,6 +61,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinAndroidTarget =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("android") as KotlinAndroidTargetPreset,
|
||||
configure
|
||||
).also {
|
||||
@@ -93,6 +96,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTarget =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("androidNativeX64") as KotlinNativeTargetPreset,
|
||||
configure
|
||||
)
|
||||
@@ -108,6 +112,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTarget =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("androidNativeX86") as KotlinNativeTargetPreset,
|
||||
configure
|
||||
)
|
||||
@@ -123,6 +128,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTarget =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("androidNativeArm32") as KotlinNativeTargetPreset,
|
||||
configure
|
||||
)
|
||||
@@ -138,6 +144,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTarget =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("androidNativeArm64") as KotlinNativeTargetPreset,
|
||||
configure
|
||||
)
|
||||
@@ -155,6 +162,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTarget =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("iosArm32") as KotlinNativeTargetPreset,
|
||||
configure
|
||||
)
|
||||
@@ -182,6 +190,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTarget =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("iosArm64") as KotlinNativeTargetPreset,
|
||||
configure
|
||||
)
|
||||
@@ -197,6 +206,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTargetWithSimulatorTests =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("iosX64") as KotlinNativeTargetWithSimulatorTestsPreset,
|
||||
configure
|
||||
)
|
||||
@@ -212,6 +222,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTargetWithSimulatorTests =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("iosSimulatorArm64") as KotlinNativeTargetWithSimulatorTestsPreset,
|
||||
configure
|
||||
)
|
||||
@@ -227,6 +238,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTarget =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("watchosArm32") as KotlinNativeTargetPreset,
|
||||
configure
|
||||
)
|
||||
@@ -242,6 +254,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTarget =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("watchosArm64") as KotlinNativeTargetPreset,
|
||||
configure
|
||||
)
|
||||
@@ -259,6 +272,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTargetWithSimulatorTests =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("watchosX86") as KotlinNativeTargetWithSimulatorTestsPreset,
|
||||
configure
|
||||
)
|
||||
@@ -286,6 +300,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTargetWithSimulatorTests =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("watchosX64") as KotlinNativeTargetWithSimulatorTestsPreset,
|
||||
configure
|
||||
)
|
||||
@@ -301,6 +316,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTargetWithSimulatorTests =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("watchosSimulatorArm64") as KotlinNativeTargetWithSimulatorTestsPreset,
|
||||
configure
|
||||
)
|
||||
@@ -316,6 +332,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTarget =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("watchosDeviceArm64") as KotlinNativeTargetPreset,
|
||||
configure
|
||||
)
|
||||
@@ -331,6 +348,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTarget =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("tvosArm64") as KotlinNativeTargetPreset,
|
||||
configure
|
||||
)
|
||||
@@ -346,6 +364,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTargetWithSimulatorTests =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("tvosX64") as KotlinNativeTargetWithSimulatorTestsPreset,
|
||||
configure
|
||||
)
|
||||
@@ -361,6 +380,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTargetWithSimulatorTests =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("tvosSimulatorArm64") as KotlinNativeTargetWithSimulatorTestsPreset,
|
||||
configure
|
||||
)
|
||||
@@ -376,6 +396,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTargetWithHostTests =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("linuxX64") as KotlinNativeTargetWithHostTestsPreset,
|
||||
configure
|
||||
)
|
||||
@@ -393,6 +414,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTarget =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("mingwX86") as KotlinNativeTargetPreset,
|
||||
configure
|
||||
)
|
||||
@@ -420,6 +442,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTargetWithHostTests =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("mingwX64") as KotlinNativeTargetWithHostTestsPreset,
|
||||
configure
|
||||
)
|
||||
@@ -435,6 +458,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTargetWithHostTests =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("macosX64") as KotlinNativeTargetWithHostTestsPreset,
|
||||
configure
|
||||
)
|
||||
@@ -450,6 +474,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTargetWithHostTests =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("macosArm64") as KotlinNativeTargetWithHostTestsPreset,
|
||||
configure
|
||||
)
|
||||
@@ -465,6 +490,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTarget =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("linuxArm64") as KotlinNativeTargetPreset,
|
||||
configure
|
||||
)
|
||||
@@ -482,6 +508,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTarget =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("linuxArm32Hfp") as KotlinNativeTargetPreset,
|
||||
configure
|
||||
)
|
||||
@@ -511,6 +538,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTarget =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("linuxMips32") as KotlinNativeTargetPreset,
|
||||
configure
|
||||
)
|
||||
@@ -540,6 +568,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTarget =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("linuxMipsel32") as KotlinNativeTargetPreset,
|
||||
configure
|
||||
)
|
||||
@@ -569,6 +598,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP
|
||||
): KotlinNativeTarget =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("wasm32") as KotlinNativeTargetPreset,
|
||||
configure
|
||||
)
|
||||
|
||||
+1
@@ -20,6 +20,7 @@ interface KotlinTargetContainerWithWasmPresetFunctions : KotlinTargetContainerWi
|
||||
): KotlinJsTargetDsl =
|
||||
configureOrCreate(
|
||||
name,
|
||||
@Suppress("DEPRECATION")
|
||||
presets.getByName("wasm") as KotlinWasmTargetPreset,
|
||||
configure
|
||||
)
|
||||
|
||||
+18
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.plugin.diagnostics
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
|
||||
import org.jetbrains.kotlin.gradle.PRESETS_DEPRECATION_MESSAGE_SUFFIX
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention.isRegisteredByKotlinSourceSetConventionAt
|
||||
import org.jetbrains.kotlin.gradle.dsl.NativeTargetShortcutTrace
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||
@@ -536,6 +537,23 @@ object KotlinToolingDiagnostics {
|
||||
)
|
||||
}
|
||||
|
||||
private val presetsDeprecationSeverity = ToolingDiagnostic.Severity.WARNING
|
||||
|
||||
object TargetFromPreset : ToolingDiagnosticFactory(presetsDeprecationSeverity) {
|
||||
const val DEPRECATION_MESSAGE = "The targetFromPreset() $PRESETS_DEPRECATION_MESSAGE_SUFFIX"
|
||||
operator fun invoke() = build(DEPRECATION_MESSAGE)
|
||||
}
|
||||
|
||||
object FromPreset : ToolingDiagnosticFactory(presetsDeprecationSeverity) {
|
||||
const val DEPRECATION_MESSAGE = "The fromPreset() $PRESETS_DEPRECATION_MESSAGE_SUFFIX"
|
||||
operator fun invoke() = build(DEPRECATION_MESSAGE)
|
||||
}
|
||||
|
||||
object CreateTarget : ToolingDiagnosticFactory(presetsDeprecationSeverity) {
|
||||
const val DEPRECATION_MESSAGE = "The KotlinTargetPreset.createTarget() $PRESETS_DEPRECATION_MESSAGE_SUFFIX"
|
||||
operator fun invoke() = build(DEPRECATION_MESSAGE)
|
||||
}
|
||||
|
||||
object JvmWithJavaIsIncompatibleWithAndroid : ToolingDiagnosticFactory(FATAL) {
|
||||
operator fun invoke(androidPluginId: String, trace: Throwable?) = build(
|
||||
"""
|
||||
|
||||
+5
-1
@@ -20,7 +20,10 @@ internal object KotlinTargetAlreadyDeclaredChecker : KotlinGradleProjectChecker
|
||||
val targets = multiplatformExtension?.awaitTargets() ?: return
|
||||
val duplicatedTargets = targets
|
||||
.filter { it !is KotlinMetadataTarget }
|
||||
.groupBy { it.preset?.name }
|
||||
.groupBy {
|
||||
@Suppress("DEPRECATION")
|
||||
it.preset?.name
|
||||
}
|
||||
.filterValues { it.size > 1 }
|
||||
|
||||
for (targetsGroup in duplicatedTargets.values) {
|
||||
@@ -36,6 +39,7 @@ internal object KotlinTargetAlreadyDeclaredChecker : KotlinGradleProjectChecker
|
||||
/**
|
||||
* DSL names are taken from [org.jetbrains.kotlin.gradle.dsl.KotlinTargetContainerWithPresetFunctions]
|
||||
*/
|
||||
@Suppress("DEPRECATION")
|
||||
private val KotlinTarget.targetDslFunctionName
|
||||
get() = when (preset) {
|
||||
is KotlinJsIrTargetPreset -> "js"
|
||||
|
||||
+11
@@ -18,6 +18,8 @@ import org.gradle.api.internal.component.UsageContext
|
||||
import org.gradle.api.internal.project.ProjectInternal
|
||||
import org.gradle.api.publish.maven.MavenPublication
|
||||
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
|
||||
import org.jetbrains.kotlin.gradle.PRESETS_API_IS_DEPRECATED_MESSAGE
|
||||
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
@@ -179,8 +181,17 @@ abstract class AbstractKotlinTarget(
|
||||
publicationConfigureActions.all { action -> action.execute(publication) }
|
||||
}
|
||||
|
||||
@OptIn(DeprecatedTargetPresetApi::class)
|
||||
@Deprecated(
|
||||
PRESETS_API_IS_DEPRECATED_MESSAGE,
|
||||
level = DeprecationLevel.WARNING,
|
||||
)
|
||||
override var preset: KotlinTargetPreset<out KotlinTarget>? = null
|
||||
internal set
|
||||
|
||||
override fun warnAboutCreationOfTargetFromPreset() {
|
||||
project.reportDiagnostic(KotlinToolingDiagnostics.CreateTarget())
|
||||
}
|
||||
}
|
||||
|
||||
private val publishedConfigurationNameSuffix = "-published"
|
||||
|
||||
+3
-4
@@ -9,9 +9,8 @@ import org.gradle.api.Plugin
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.plugins.JavaBasePlugin
|
||||
import org.gradle.util.GradleVersion
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||
import org.jetbrains.kotlin.gradle.dsl.*
|
||||
import org.jetbrains.kotlin.gradle.dsl.explicitApiModeAsCompilerArg
|
||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
|
||||
import org.jetbrains.kotlin.gradle.internal.customizeKotlinDependencies
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
@@ -33,7 +32,6 @@ import org.jetbrains.kotlin.gradle.targets.native.createFatFrameworks
|
||||
import org.jetbrains.kotlin.gradle.targets.native.tasks.artifact.registerKotlinArtifactsExtension
|
||||
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompileTool
|
||||
import org.jetbrains.kotlin.gradle.utils.checkGradleCompatibility
|
||||
import org.jetbrains.kotlin.gradle.utils.runProjectConfigurationHealthCheck
|
||||
import org.jetbrains.kotlin.konan.target.HostManager
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget.*
|
||||
import org.jetbrains.kotlin.konan.target.presetName
|
||||
@@ -55,7 +53,7 @@ class KotlinMultiplatformPlugin : Plugin<Project> {
|
||||
setupTargetsBuildStatsReport(project)
|
||||
|
||||
// set up metadata publishing
|
||||
kotlinMultiplatformExtension.targetFromPreset(
|
||||
kotlinMultiplatformExtension.targetFromPresetInternal(
|
||||
KotlinMetadataTargetPreset(project),
|
||||
METADATA_TARGET_NAME
|
||||
)
|
||||
@@ -128,6 +126,7 @@ class KotlinMultiplatformPlugin : Plugin<Project> {
|
||||
}
|
||||
|
||||
fun setupDefaultPresets(project: Project) {
|
||||
@Suppress("DEPRECATION")
|
||||
with(project.multiplatformExtension.presets) {
|
||||
add(KotlinJvmTargetPreset(project))
|
||||
add(KotlinJsTargetPreset(project).apply { irPreset = null })
|
||||
|
||||
+2
@@ -48,6 +48,8 @@ internal class ExternalKotlinTargetImpl internal constructor(
|
||||
|
||||
override val preset: Nothing? = null
|
||||
|
||||
override fun warnAboutCreationOfTargetFromPreset() {}
|
||||
|
||||
internal val logger: Logger = Logging.getLogger("${ExternalKotlinTargetImpl::class.qualifiedName}: $name")
|
||||
|
||||
override val useDisambiguationClassifierAsSourceSetNamePrefix: Boolean = true
|
||||
|
||||
+5
-5
@@ -6,11 +6,10 @@
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetPreset
|
||||
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
|
||||
@DeprecatedTargetPresetApi
|
||||
abstract class KotlinOnlyTargetPreset<R : KotlinOnlyTarget<T>, T : KotlinCompilation<*>>(
|
||||
protected val project: Project,
|
||||
) : KotlinTargetPreset<R> {
|
||||
@@ -28,12 +27,13 @@ abstract class KotlinOnlyTargetPreset<R : KotlinOnlyTarget<T>, T : KotlinCompila
|
||||
|
||||
abstract protected fun instantiateTarget(name: String): R
|
||||
|
||||
override fun createTarget(name: String): R {
|
||||
override fun createTargetInternal(name: String): R {
|
||||
val result = instantiateTarget(name).apply {
|
||||
targetName = name
|
||||
disambiguationClassifier = provideTargetDisambiguationClassifier(this@apply)
|
||||
useDisambiguationClassifierAsSourceSetNamePrefix = useDisambiguationClassifierAsSourceSetNamePrefix()
|
||||
overrideDisambiguationClassifierOnIdeImport = overrideDisambiguationClassifierOnIdeImport(name)
|
||||
@Suppress("DEPRECATION")
|
||||
preset = this@KotlinOnlyTargetPreset
|
||||
|
||||
val compilationFactory = createCompilationFactory(this)
|
||||
|
||||
+5
-1
@@ -7,22 +7,25 @@
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPlugin.Companion.dynamicallyApplyWhenAndroidPluginIsApplied
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetPreset
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics.AndroidGradlePluginIsMissing
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnostic
|
||||
import org.jetbrains.kotlin.gradle.utils.findAppliedAndroidPluginIdOrNull
|
||||
import org.jetbrains.kotlin.gradle.targets.android.internal.InternalKotlinTargetPreset
|
||||
|
||||
import javax.inject.Inject
|
||||
|
||||
@DeprecatedTargetPresetApi
|
||||
abstract class KotlinAndroidTargetPreset @Inject constructor(
|
||||
private val project: Project
|
||||
) : KotlinTargetPreset<KotlinAndroidTarget> {
|
||||
|
||||
override fun getName(): String = PRESET_NAME
|
||||
|
||||
override fun createTarget(name: String): KotlinAndroidTarget {
|
||||
override fun createTargetInternal(name: String): KotlinAndroidTarget {
|
||||
|
||||
/*
|
||||
Android Gradle Plugin is required:
|
||||
@@ -35,6 +38,7 @@ abstract class KotlinAndroidTargetPreset @Inject constructor(
|
||||
project.findAppliedAndroidPluginIdOrNull() ?: project.reportDiagnostic(AndroidGradlePluginIsMissing(Throwable()))
|
||||
|
||||
return project.objects.newInstance(KotlinAndroidTarget::class.java, name, project).apply {
|
||||
@Suppress("DEPRECATION")
|
||||
preset = this@KotlinAndroidTargetPreset
|
||||
project.dynamicallyApplyWhenAndroidPluginIsApplied({ this })
|
||||
}
|
||||
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* 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.android.internal
|
||||
|
||||
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetPreset
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnostic
|
||||
|
||||
internal interface InternalKotlinTargetPreset<T : KotlinTarget> : KotlinTargetPreset<T> {
|
||||
fun createTargetInternal(name: String): T
|
||||
|
||||
override fun createTarget(name: String): T {
|
||||
val target = createTargetInternal(name)
|
||||
target.project.reportDiagnostic(KotlinToolingDiagnostics.CreateTarget())
|
||||
return target
|
||||
}
|
||||
}
|
||||
|
||||
internal val <T : KotlinTarget> KotlinTargetPreset<T>.internal: InternalKotlinTargetPreset<T>
|
||||
get() = this as InternalKotlinTargetPreset
|
||||
+3
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.gradle.targets.js.ir
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCompilationFactory
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget
|
||||
@@ -16,6 +17,7 @@ import org.jetbrains.kotlin.gradle.utils.runProjectConfigurationHealthCheckWhenE
|
||||
import org.jetbrains.kotlin.statistics.metrics.StringMetrics
|
||||
import org.jetbrains.kotlin.util.capitalizeDecapitalize.decapitalizeAsciiOnly
|
||||
|
||||
@DeprecatedTargetPresetApi
|
||||
open class KotlinJsIrTargetPreset(
|
||||
project: Project
|
||||
) : KotlinOnlyTargetPreset<KotlinJsIrTarget, KotlinJsIrCompilation>(
|
||||
@@ -65,6 +67,7 @@ open class KotlinJsIrTargetPreset(
|
||||
}
|
||||
}
|
||||
|
||||
@DeprecatedTargetPresetApi
|
||||
class KotlinJsIrSingleTargetPreset(
|
||||
project: Project
|
||||
) : KotlinJsIrTargetPreset(
|
||||
|
||||
+3
-4
@@ -6,14 +6,13 @@
|
||||
package org.jetbrains.kotlin.gradle.targets.js.ir
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCompilationFactory
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTargetPreset
|
||||
import org.jetbrains.kotlin.gradle.utils.runProjectConfigurationHealthCheckWhenEvaluated
|
||||
|
||||
@DeprecatedTargetPresetApi
|
||||
class KotlinWasmTargetPreset(
|
||||
project: Project,
|
||||
) : KotlinOnlyTargetPreset<KotlinJsIrTarget, KotlinJsIrCompilation>(project) {
|
||||
|
||||
+2
@@ -7,11 +7,13 @@
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
|
||||
import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
|
||||
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTargetConfigurator
|
||||
|
||||
@DeprecatedTargetPresetApi
|
||||
class KotlinJvmTargetPreset(
|
||||
project: Project
|
||||
) : KotlinOnlyTargetPreset<KotlinJvmTarget, KotlinJvmCompilation>(
|
||||
|
||||
+3
-1
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.plugins.JavaPlugin
|
||||
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptions
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptionsDefault
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
|
||||
@@ -17,13 +18,14 @@ import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnostic
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
||||
import org.jetbrains.kotlin.gradle.utils.configureExperimentalTryK2
|
||||
|
||||
@DeprecatedTargetPresetApi
|
||||
class KotlinJvmWithJavaTargetPreset(
|
||||
private val project: Project
|
||||
) : KotlinTargetPreset<KotlinWithJavaTarget<KotlinJvmOptions, KotlinJvmCompilerOptions>> {
|
||||
|
||||
override fun getName(): String = PRESET_NAME
|
||||
|
||||
override fun createTarget(name: String): KotlinWithJavaTarget<KotlinJvmOptions, KotlinJvmCompilerOptions> {
|
||||
override fun createTargetInternal(name: String): KotlinWithJavaTarget<KotlinJvmOptions, KotlinJvmCompilerOptions> {
|
||||
project.reportDiagnostic(KotlinToolingDiagnostics.DeprecatedJvmWithJavaPresetDiagnostic())
|
||||
|
||||
project.plugins.apply(JavaPlugin::class.java)
|
||||
|
||||
+4
-2
@@ -7,11 +7,13 @@
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
|
||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToCompilerOptions
|
||||
import org.jetbrains.kotlin.gradle.targets.metadata.KotlinMetadataTargetConfigurator
|
||||
|
||||
@DeprecatedTargetPresetApi
|
||||
class KotlinMetadataTargetPreset(
|
||||
project: Project
|
||||
) : KotlinOnlyTargetPreset<KotlinMetadataTarget, KotlinCompilation<*>>(project) {
|
||||
@@ -49,8 +51,8 @@ class KotlinMetadataTargetPreset(
|
||||
return project.objects.newInstance(KotlinMetadataTarget::class.java, project)
|
||||
}
|
||||
|
||||
override fun createTarget(name: String): KotlinMetadataTarget =
|
||||
super.createTarget(name).apply {
|
||||
override fun createTargetInternal(name: String): KotlinMetadataTarget =
|
||||
super.createTargetInternal(name).apply {
|
||||
val mainCompilation = compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME)
|
||||
val commonMainSourceSet = project.kotlinExtension.sourceSets.getByName(KotlinSourceSet.COMMON_MAIN_SOURCE_SET_NAME)
|
||||
|
||||
|
||||
+7
-1
@@ -10,6 +10,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.compilerRunner.konanHome
|
||||
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.targets.native.internal.*
|
||||
import org.jetbrains.kotlin.gradle.utils.SingleActionPerProject
|
||||
@@ -17,6 +18,7 @@ import org.jetbrains.kotlin.gradle.utils.setupNativeCompiler
|
||||
import org.jetbrains.kotlin.konan.target.HostManager
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
|
||||
@DeprecatedTargetPresetApi
|
||||
abstract class AbstractKotlinNativeTargetPreset<T : KotlinNativeTarget>(
|
||||
private val name: String,
|
||||
val project: Project,
|
||||
@@ -39,12 +41,13 @@ abstract class AbstractKotlinNativeTargetPreset<T : KotlinNativeTarget>(
|
||||
|
||||
protected abstract fun instantiateTarget(name: String): T
|
||||
|
||||
override fun createTarget(name: String): T {
|
||||
override fun createTargetInternal(name: String): T {
|
||||
project.setupNativeCompiler(konanTarget)
|
||||
|
||||
val result = instantiateTarget(name).apply {
|
||||
targetName = name
|
||||
disambiguationClassifier = name
|
||||
@Suppress("DEPRECATION")
|
||||
preset = this@AbstractKotlinNativeTargetPreset
|
||||
|
||||
val compilationFactory = KotlinNativeCompilationFactory(this)
|
||||
@@ -73,6 +76,7 @@ abstract class AbstractKotlinNativeTargetPreset<T : KotlinNativeTarget>(
|
||||
|
||||
}
|
||||
|
||||
@DeprecatedTargetPresetApi
|
||||
open class KotlinNativeTargetPreset(name: String, project: Project, konanTarget: KonanTarget) :
|
||||
AbstractKotlinNativeTargetPreset<KotlinNativeTarget>(name, project, konanTarget) {
|
||||
|
||||
@@ -84,6 +88,7 @@ open class KotlinNativeTargetPreset(name: String, project: Project, konanTarget:
|
||||
}
|
||||
}
|
||||
|
||||
@DeprecatedTargetPresetApi
|
||||
open class KotlinNativeTargetWithHostTestsPreset(name: String, project: Project, konanTarget: KonanTarget) :
|
||||
AbstractKotlinNativeTargetPreset<KotlinNativeTargetWithHostTests>(name, project, konanTarget) {
|
||||
|
||||
@@ -94,6 +99,7 @@ open class KotlinNativeTargetWithHostTestsPreset(name: String, project: Project,
|
||||
project.objects.newInstance(KotlinNativeTargetWithHostTests::class.java, project, konanTarget)
|
||||
}
|
||||
|
||||
@DeprecatedTargetPresetApi
|
||||
open class KotlinNativeTargetWithSimulatorTestsPreset(name: String, project: Project, konanTarget: KonanTarget) :
|
||||
AbstractKotlinNativeTargetPreset<KotlinNativeTargetWithSimulatorTests>(name, project, konanTarget) {
|
||||
|
||||
|
||||
+1
@@ -519,6 +519,7 @@ class ConfigurationsTest : MultiplatformExtensionTest() {
|
||||
extensions.asMap.keys,
|
||||
kotlin.sourceSets.names,
|
||||
kotlin.targets.names,
|
||||
@Suppress("DEPRECATION")
|
||||
kotlin.presets.names,
|
||||
).flatten()
|
||||
}
|
||||
|
||||
+1
@@ -24,6 +24,7 @@ class KotlinHierarchyBuilderTest {
|
||||
fun `test - interface offers functions for known presets`() {
|
||||
val kotlinTargetHierarchyBuilderInterface = KotlinHierarchyBuilder::class.java
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
buildProjectWithMPP().multiplatformExtension.presets
|
||||
|
||||
// JS targets are special and therefore are only handled manually using `withJs()`
|
||||
|
||||
+3
-1
@@ -5,6 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests
|
||||
|
||||
import org.jetbrains.kotlin.gradle.dsl.targetFromPresetInternal
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmWithJavaTargetPreset
|
||||
import org.jetbrains.kotlin.gradle.util.androidLibrary
|
||||
import org.jetbrains.kotlin.gradle.util.checkDiagnosticsWithMppProject
|
||||
@@ -45,7 +46,8 @@ class MppDiagnosticsFunctionalTest {
|
||||
fun testDeprecatedJvmWithJavaPreset() {
|
||||
checkDiagnosticsWithMppProject("deprecatedJvmWithJavaPreset") {
|
||||
kotlin {
|
||||
targetFromPreset(presets.getByName(KotlinJvmWithJavaTargetPreset.PRESET_NAME))
|
||||
@Suppress("DEPRECATION")
|
||||
targetFromPresetInternal(presets.getByName(KotlinJvmWithJavaTargetPreset.PRESET_NAME))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -63,4 +63,4 @@ class TargetPresetDeprecationTest {
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user