[Gradle] Implement InternalKotlinTargetPreset

^KT-59321 In Progress
This commit is contained in:
Sebastian Sellmair
2023-07-28 10:26:14 +02:00
committed by Space Team
parent 969deb639c
commit db5655d6ce
10 changed files with 31 additions and 18 deletions
@@ -61,9 +61,6 @@ interface KotlinTarget : Named, HasAttributes, HasProject, HasMutableExtras {
)
val preset: KotlinTargetPreset<out KotlinTarget>?
@InternalKotlinGradlePluginApi
fun warnAboutCreationOfTargetFromPreset()
override fun getName(): String = targetName
}
@@ -20,6 +20,8 @@ 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.*
import org.jetbrains.kotlin.gradle.targets.android.internal.InternalKotlinTargetPreset
import org.jetbrains.kotlin.gradle.targets.android.internal.internal
import javax.inject.Inject
@Suppress("DEPRECATION")
@@ -292,7 +294,7 @@ internal abstract class DefaultTargetsFromPresetExtension @Inject constructor(
configureAction: T.() -> Unit,
): T {
warnAboutFromPresetDeprecation()
return targetsContainer().configureOrCreate(name, preset, configureAction)
return targetsContainer().configureOrCreate(name, preset.internal, configureAction)
}
@Suppress("DEPRECATION")
@@ -311,7 +313,7 @@ private fun KotlinTarget.isProducedFromPreset(kotlinTargetPreset: KotlinTargetPr
internal fun <T : KotlinTarget> KotlinTargetsContainerWithPresets.configureOrCreate(
targetName: String,
targetPreset: KotlinTargetPreset<T>,
targetPreset: InternalKotlinTargetPreset<T>,
configure: T.() -> Unit,
): T {
val existingTarget = targets.findByName(targetName)
@@ -109,7 +109,7 @@ private fun KotlinTargetContainerWithJsPresetFunctions.jsInternal(
"js",
if (compilerOrDefault == KotlinJsCompilerType.LEGACY) null else compilerOrDefault.lowerName
)
) as KotlinTargetPreset<KotlinJsTargetDsl>,
) as InternalKotlinTargetPreset<KotlinJsTargetDsl>,
configure
).also { target ->
warnAboutDeprecatedCompiler(target.project, compilerOrDefault)
@@ -188,10 +188,6 @@ abstract class AbstractKotlinTarget(
)
override var preset: KotlinTargetPreset<out KotlinTarget>? = null
internal set
override fun warnAboutCreationOfTargetFromPreset() {
project.reportDiagnostic(KotlinToolingDiagnostics.CreateTarget())
}
}
private val publishedConfigurationNameSuffix = "-published"
@@ -48,8 +48,6 @@ 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
@@ -8,11 +8,12 @@ package org.jetbrains.kotlin.gradle.plugin.mpp
import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.targets.android.internal.InternalKotlinTargetPreset
@DeprecatedTargetPresetApi
abstract class KotlinOnlyTargetPreset<R : KotlinOnlyTarget<T>, T : KotlinCompilation<*>>(
protected val project: Project,
) : KotlinTargetPreset<R> {
) : InternalKotlinTargetPreset<R> {
protected abstract fun createKotlinTargetConfigurator(): AbstractKotlinTargetConfigurator<R>
@@ -9,8 +9,6 @@ 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
@@ -21,7 +19,7 @@ import javax.inject.Inject
@DeprecatedTargetPresetApi
abstract class KotlinAndroidTargetPreset @Inject constructor(
private val project: Project
) : KotlinTargetPreset<KotlinAndroidTarget> {
) : InternalKotlinTargetPreset<KotlinAndroidTarget> {
override fun getName(): String = PRESET_NAME
@@ -15,13 +15,14 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnostic
import org.jetbrains.kotlin.gradle.targets.android.internal.InternalKotlinTargetPreset
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>> {
) : InternalKotlinTargetPreset<KotlinWithJavaTarget<KotlinJvmOptions, KotlinJvmCompilerOptions>> {
override fun getName(): String = PRESET_NAME
@@ -12,6 +12,7 @@ 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.android.internal.InternalKotlinTargetPreset
import org.jetbrains.kotlin.gradle.targets.native.internal.*
import org.jetbrains.kotlin.gradle.utils.SingleActionPerProject
import org.jetbrains.kotlin.gradle.utils.setupNativeCompiler
@@ -23,7 +24,7 @@ abstract class AbstractKotlinNativeTargetPreset<T : KotlinNativeTarget>(
private val name: String,
val project: Project,
val konanTarget: KonanTarget
) : KotlinTargetPreset<T> {
) : InternalKotlinTargetPreset<T> {
init {
// This is required to obtain Kotlin/Native home in IDE plugin:
@@ -0,0 +1,19 @@
/*
* 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.unitTests
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetPreset
import org.jetbrains.kotlin.gradle.targets.android.internal.InternalKotlinTargetPreset
import org.jetbrains.kotlin.gradle.util.assertAllImplementationsAlsoImplement
import org.junit.Test
@Suppress("FunctionName")
class InternalKotlinTargetPresetTest {
@Test
fun `test - all implementations of KotlinTargetPreset - implement InternalKotlinTargetPreset`() {
assertAllImplementationsAlsoImplement(KotlinTargetPreset::class, InternalKotlinTargetPreset::class)
}
}