Update implementations of KotlinCompilationData to use Compiler*Options

^KT-27301 In Progress
This commit is contained in:
Yahor Berdnikau
2022-09-08 18:13:06 +02:00
parent cb6ba1487b
commit 9e55946754
3 changed files with 73 additions and 14 deletions
@@ -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<KotlinJvmOptions> {
override val owner: GradleKpmJvmVariant get() = variant
override val compilerOptions: HasCompilerOptions<CompilerJvmOptions> =
object : HasCompilerOptions<CompilerJvmOptions> {
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<KotlinJvmOptions>(
variant, target, getOrCreateDefaultSourceSet(name) as FragmentMappedKotlinSourceSet
)
@@ -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<CompilerCommonOptions> =
object : HasCompilerOptions<CompilerCommonOptions> {
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
}
}
@@ -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<CompilerMultiplatformCommonOptions> =
object : HasCompilerOptions<CompilerMultiplatformCommonOptions> {
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<CompilerCommonOptions> =
object : HasCompilerOptions<CompilerCommonOptions> {
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() {