From 9e55946754d8a218cc10c6291d1cccb07436187f Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Thu, 8 Sep 2022 18:13:06 +0200 Subject: [PATCH] Update implementations of KotlinCompilationData to use Compiler*Options ^KT-27301 In Progress --- .../plugin/mpp/pm20/GradleKpmJvmVariant.kt | 19 ++++++-- .../GradleKpmNativeVariantCompilationData.kt | 25 ++++++++++- .../mpp/pm20/KotlinMetadataCompilationData.kt | 43 +++++++++++++++---- 3 files changed, 73 insertions(+), 14 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmJvmVariant.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmJvmVariant.kt index 408404bbaa5..b9f901f2e78 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmJvmVariant.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmJvmVariant.kt @@ -6,9 +6,10 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 import org.gradle.api.artifacts.Configuration +import org.jetbrains.kotlin.gradle.dsl.CompilerJvmOptions +import org.jetbrains.kotlin.gradle.dsl.CompilerJvmOptionsDefault import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions -import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptionsImpl -import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType +import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.archivesName import org.jetbrains.kotlin.gradle.plugin.sources.kpm.FragmentMappedKotlinSourceSet @@ -41,8 +42,19 @@ abstract class GradleKpmJvmVariant @Inject constructor( class GradleKpmJvmVariantCompilationData(val variant: GradleKpmJvmVariant) : GradleKpmVariantCompilationDataInternal { override val owner: GradleKpmJvmVariant get() = variant + override val compilerOptions: HasCompilerOptions = + object : HasCompilerOptions { + override val options: CompilerJvmOptions = + variant.project.objects.newInstance(CompilerJvmOptionsDefault::class.java) + } + // TODO pull out to the variant - override val kotlinOptions: KotlinJvmOptions = KotlinJvmOptionsImpl() + @Suppress("DEPRECATION") + @Deprecated("Replaced with compilerOptions.options", replaceWith = ReplaceWith("compilerOptions.options")) + override val kotlinOptions: KotlinJvmOptions = object : KotlinJvmOptions { + override val options: CompilerJvmOptions + get() = compilerOptions.options + } } internal fun GradleKpmVariant.ownModuleName(): String { @@ -62,6 +74,7 @@ internal class KotlinMappedJvmCompilationFactory( return target.project.objects.newInstance( KotlinJvmCompilation::class.java, + @Suppress("DEPRECATION") VariantMappedCompilationDetailsWithRuntime( variant, target, getOrCreateDefaultSourceSet(name) as FragmentMappedKotlinSourceSet ) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmNativeVariantCompilationData.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmNativeVariantCompilationData.kt index a338ac697fb..a41ceda4fd4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmNativeVariantCompilationData.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmNativeVariantCompilationData.kt @@ -6,8 +6,12 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 import org.gradle.api.Project +import org.jetbrains.kotlin.gradle.dsl.CompilerCommonOptions +import org.jetbrains.kotlin.gradle.dsl.CompilerCommonOptionsDefault import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions -import org.jetbrains.kotlin.gradle.plugin.mpp.NativeCompileOptions +import org.jetbrains.kotlin.gradle.plugin.HasCompilerOptions +import org.jetbrains.kotlin.gradle.plugin.runOnceAfterEvaluated +import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToCompilerOptions import org.jetbrains.kotlin.konan.target.KonanTarget internal class GradleKpmNativeVariantCompilationData( @@ -25,5 +29,22 @@ internal class GradleKpmNativeVariantCompilationData( override val owner: GradleKpmNativeVariant get() = variant - override val kotlinOptions: KotlinCommonOptions = NativeCompileOptions(variant.languageSettings) + override val compilerOptions: HasCompilerOptions = + object : HasCompilerOptions { + override val options: CompilerCommonOptions = + project.objects.newInstance(CompilerCommonOptionsDefault::class.java) + .apply { + useK2.finalizeValue() + project.runOnceAfterEvaluated("apply Kotlin native properties from language settings") { + applyLanguageSettingsToCompilerOptions(variant.languageSettings, this) + } + } + } + + @Suppress("DEPRECATION") + @Deprecated("Replaced with compilerOptions.options", replaceWith = ReplaceWith("compilerOptions.options")) + override val kotlinOptions: KotlinCommonOptions = object : KotlinCommonOptions { + override val options: CompilerCommonOptions + get() = compilerOptions.options + } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinMetadataCompilationData.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinMetadataCompilationData.kt index 53a76f096b3..468d666cc26 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinMetadataCompilationData.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinMetadataCompilationData.kt @@ -10,16 +10,12 @@ import org.gradle.api.Project import org.gradle.api.file.FileCollection import org.gradle.api.file.SourceDirectorySet import org.gradle.api.tasks.TaskProvider -import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions -import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformCommonOptions -import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformCommonOptionsImpl -import org.jetbrains.kotlin.gradle.dsl.topLevelExtension -import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationOutput -import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType -import org.jetbrains.kotlin.gradle.plugin.LanguageSettingsBuilder +import org.jetbrains.kotlin.gradle.dsl.* +import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.archivesName import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.disambiguateName +import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToCompilerOptions import org.jetbrains.kotlin.gradle.targets.metadata.ResolvedMetadataFilesProvider import org.jetbrains.kotlin.gradle.targets.metadata.createMetadataDependencyTransformationClasspath import org.jetbrains.kotlin.gradle.utils.getValue @@ -132,7 +128,19 @@ internal open class KotlinCommonFragmentMetadataCompilationDataImpl( mapTo(hashSetOf()) { it.platformType }.size > 1 } - override val kotlinOptions: KotlinMultiplatformCommonOptions = KotlinMultiplatformCommonOptionsImpl() + override val compilerOptions: HasCompilerOptions = + object : HasCompilerOptions { + override val options: CompilerMultiplatformCommonOptions = + project.objects.newInstance(CompilerMultiplatformCommonOptionsDefault::class.java) + } + + + @Suppress("DEPRECATION") + @Deprecated("Replaced with compilerOptions.options", replaceWith = ReplaceWith("compilerOptions.options")) + override val kotlinOptions: KotlinMultiplatformCommonOptions = object : KotlinMultiplatformCommonOptions { + override val options: CompilerMultiplatformCommonOptions + get() = compilerOptions.options + } } interface KotlinNativeFragmentMetadataCompilationData : @@ -169,7 +177,24 @@ internal open class KotlinNativeFragmentMetadataCompilationDataImpl( override val isActive: Boolean get() = fragment.isNativeShared() && fragment.containingVariants.count() > 1 - override val kotlinOptions: NativeCompileOptions = NativeCompileOptions(languageSettings) + override val compilerOptions: HasCompilerOptions = + object : HasCompilerOptions { + override val options: CompilerCommonOptions = + project.objects.newInstance(CompilerCommonOptionsDefault::class.java) + .apply { + useK2.finalizeValue() + project.runOnceAfterEvaluated("apply Kotlin native properties from language settings") { + applyLanguageSettingsToCompilerOptions(languageSettings, this) + } + } + } + + @Suppress("DEPRECATION") + @Deprecated("Replaced with compilerOptions.options", replaceWith = ReplaceWith("compilerOptions.options")) + override val kotlinOptions: KotlinCommonOptions = object : KotlinCommonOptions { + override val options: CompilerCommonOptions + get() = compilerOptions.options + } override val konanTarget: KonanTarget get() {