[Gradle][Minor] Rename KotlinCompilationProjection to KotlinCompilationInfo

^KT-54312 Verification Pending
This commit is contained in:
Sebastian Sellmair
2022-10-27 08:54:19 +02:00
committed by Space Team
parent f148390e14
commit 331294c747
26 changed files with 138 additions and 138 deletions
@@ -27,7 +27,7 @@ internal open class Kotlin2JsPlugin(
project: Project,
compilation: KotlinCompilation<*>
): KotlinSourceSetProcessor<*> =
Kotlin2JsSourceSetProcessor(tasksProvider, KotlinCompilationProjection(compilation))
Kotlin2JsSourceSetProcessor(tasksProvider, KotlinCompilationInfo(compilation))
override fun apply(project: Project) {
@Suppress("UNCHECKED_CAST")
@@ -17,35 +17,35 @@ import java.io.File
internal class Kotlin2JsSourceSetProcessor(
tasksProvider: KotlinTasksProvider,
kotlinCompilation: KotlinCompilationProjection
kotlinCompilation: KotlinCompilationInfo
) : KotlinSourceSetProcessor<Kotlin2JsCompile>(
tasksProvider,
taskDescription = "Compiles the Kotlin sources in $kotlinCompilation to JavaScript.",
kotlinCompilation = kotlinCompilation
) {
override fun doRegisterTask(project: Project, taskName: String): TaskProvider<out Kotlin2JsCompile> {
val configAction = Kotlin2JsCompileConfig(compilationProjection)
val configAction = Kotlin2JsCompileConfig(compilationInfo)
applyStandardTaskConfiguration(configAction)
return tasksProvider.registerKotlinJSTask(
project,
taskName,
compilationProjection.compilerOptions.options as KotlinJsCompilerOptions,
compilationInfo.compilerOptions.options as KotlinJsCompilerOptions,
configAction
)
}
override fun doTargetSpecificProcessing() {
project.tasks.named(compilationProjection.compileAllTaskName).configure {
project.tasks.named(compilationInfo.compileAllTaskName).configure {
it.dependsOn(kotlinTask)
}
compilationProjection.tcsOrNull?.compilation?.run { this as? KotlinWithJavaCompilation<*, *> }?.javaSourceSet?.clearJavaSrcDirs()
compilationInfo.tcsOrNull?.compilation?.run { this as? KotlinWithJavaCompilation<*, *> }?.javaSourceSet?.clearJavaSrcDirs()
project.whenEvaluated {
val subpluginEnvironment: SubpluginEnvironment = SubpluginEnvironment.loadSubplugins(project)
/* Not supported in KPM */
compilationProjection.tcsOrNull?.compilation?.let { compilation ->
compilationInfo.tcsOrNull?.compilation?.let { compilation ->
subpluginEnvironment.addSubpluginOptions(project, compilation)
}
}
@@ -22,32 +22,32 @@ import org.jetbrains.kotlin.gradle.utils.whenKaptEnabled
internal class Kotlin2JvmSourceSetProcessor(
tasksProvider: KotlinTasksProvider,
kotlinCompilation: KotlinCompilationProjection
kotlinCompilation: KotlinCompilationInfo
) : KotlinSourceSetProcessor<KotlinCompile>(
tasksProvider, "Compiles the $kotlinCompilation.", kotlinCompilation
) {
override fun doRegisterTask(project: Project, taskName: String): TaskProvider<out KotlinCompile> {
val configAction = KotlinCompileConfig(compilationProjection)
val configAction = KotlinCompileConfig(compilationInfo)
applyStandardTaskConfiguration(configAction)
return tasksProvider.registerKotlinJVMTask(
project,
taskName,
compilationProjection.compilerOptions.options as KotlinJvmCompilerOptions,
compilationInfo.compilerOptions.options as KotlinJvmCompilerOptions,
configAction
)
}
override fun doTargetSpecificProcessing() {
project.whenKaptEnabled {
Kapt3GradleSubplugin.createAptConfigurationIfNeeded(project, compilationProjection.compilationName)
Kapt3GradleSubplugin.createAptConfigurationIfNeeded(project, compilationInfo.compilationName)
}
ScriptingGradleSubplugin.configureForSourceSet(project, compilationProjection.compilationName)
ScriptingGradleSubplugin.configureForSourceSet(project, compilationInfo.compilationName)
project.whenEvaluated {
val subpluginEnvironment = SubpluginEnvironment.loadSubplugins(project)
/* Not supported in KPM yet */
compilationProjection.tcsOrNull?.compilation?.let { compilation ->
compilationInfo.tcsOrNull?.compilation?.let { compilation ->
subpluginEnvironment.addSubpluginOptions(project, compilation)
}
@@ -23,7 +23,7 @@ internal open class KotlinCommonPlugin(
project: Project,
compilation: KotlinCompilation<*>
): KotlinSourceSetProcessor<*> =
KotlinCommonSourceSetProcessor(KotlinCompilationProjection(compilation), tasksProvider)
KotlinCommonSourceSetProcessor(KotlinCompilationInfo(compilation), tasksProvider)
override fun apply(project: Project) {
@Suppress("UNCHECKED_CAST")
@@ -16,16 +16,16 @@ import org.jetbrains.kotlin.gradle.tasks.dependsOn
import org.jetbrains.kotlin.gradle.tasks.locateTask
internal class KotlinCommonSourceSetProcessor(
compilation: KotlinCompilationProjection,
compilation: KotlinCompilationInfo,
tasksProvider: KotlinTasksProvider
) : KotlinSourceSetProcessor<KotlinCompileCommon>(
tasksProvider, taskDescription = "Compiles the kotlin sources in $compilation to Metadata.", kotlinCompilation = compilation
) {
override fun doTargetSpecificProcessing() {
project.tasks.named(compilationProjection.compileAllTaskName).dependsOn(kotlinTask)
project.tasks.named(compilationInfo.compileAllTaskName).dependsOn(kotlinTask)
// can be missing (e.g. in case of tests)
if (compilationProjection.isMain) {
compilationProjection.tcsOrNull?.compilation?.target?.let { target ->
if (compilationInfo.isMain) {
compilationInfo.tcsOrNull?.compilation?.target?.let { target ->
project.locateTask<Task>(target.artifactsTaskName)?.dependsOn(kotlinTask)
}
}
@@ -33,19 +33,19 @@ internal class KotlinCommonSourceSetProcessor(
project.whenEvaluated {
val subpluginEnvironment: SubpluginEnvironment = SubpluginEnvironment.loadSubplugins(project)
/* Not supported in KPM yet */
compilationProjection.tcsOrNull?.compilation?.let { compilation ->
compilationInfo.tcsOrNull?.compilation?.let { compilation ->
subpluginEnvironment.addSubpluginOptions(project, compilation)
}
}
}
override fun doRegisterTask(project: Project, taskName: String): TaskProvider<out KotlinCompileCommon> {
val configAction = KotlinCompileCommonConfig(compilationProjection)
val configAction = KotlinCompileCommonConfig(compilationInfo)
applyStandardTaskConfiguration(configAction)
return tasksProvider.registerKotlinCommonTask(
project,
taskName,
compilationProjection.compilerOptions.options as KotlinMultiplatformCommonCompilerOptions,
compilationInfo.compilerOptions.options as KotlinMultiplatformCommonCompilerOptions,
configAction
)
}
@@ -13,12 +13,12 @@ import org.gradle.api.file.FileCollection
import org.gradle.api.file.SourceDirectorySet
import org.jetbrains.kotlin.gradle.plugin.mpp.internal
import org.jetbrains.kotlin.gradle.plugin.mpp.isMain
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmCompilationData
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule
import org.jetbrains.kotlin.gradle.utils.filesProvider
import org.jetbrains.kotlin.project.model.LanguageSettings
internal sealed class KotlinCompilationProjection {
internal sealed class KotlinCompilationInfo {
abstract val origin: Any
abstract val project: Project
abstract val platformType: KotlinPlatformType
@@ -35,7 +35,7 @@ internal sealed class KotlinCompilationProjection {
abstract val compileDependencyFiles: FileCollection
abstract val sources: List<SourceDirectorySet>
class TCS(val compilation: KotlinCompilation<*>) : KotlinCompilationProjection() {
class TCS(val compilation: KotlinCompilation<*>) : KotlinCompilationInfo() {
override val origin: KotlinCompilation<*> = compilation
@@ -83,7 +83,7 @@ internal sealed class KotlinCompilationProjection {
get() = origin.allKotlinSourceSets.map { it.kotlin }
}
class KPM(val compilationData: GradleKpmCompilationData<*>) : KotlinCompilationProjection() {
class KPM(val compilationData: GradleKpmCompilationData<*>) : KotlinCompilationInfo() {
override val origin: GradleKpmCompilationData<*> = compilationData
@@ -99,7 +99,6 @@ internal sealed class KotlinCompilationProjection {
override val compilationName: String
get() = origin.compilationPurpose
override val moduleName: String
get() = origin.moduleName
@@ -133,18 +132,18 @@ internal sealed class KotlinCompilationProjection {
}
}
internal fun KotlinCompilationProjection(compilation: KotlinCompilation<*>): KotlinCompilationProjection.TCS {
return KotlinCompilationProjection.TCS(compilation)
internal fun KotlinCompilationInfo(compilation: KotlinCompilation<*>): KotlinCompilationInfo.TCS {
return KotlinCompilationInfo.TCS(compilation)
}
internal val KotlinCompilationProjection.tcsOrNull: KotlinCompilationProjection.TCS?
internal val KotlinCompilationInfo.tcsOrNull: KotlinCompilationInfo.TCS?
get() = when (this) {
is KotlinCompilationProjection.KPM -> null
is KotlinCompilationProjection.TCS -> this
is KotlinCompilationInfo.KPM -> null
is KotlinCompilationInfo.TCS -> this
}
internal val KotlinCompilationProjection.kpmOrNull: KotlinCompilationProjection.KPM?
internal val KotlinCompilationInfo.kpmOrNull: KotlinCompilationInfo.KPM?
get() = when (this) {
is KotlinCompilationProjection.KPM -> this
is KotlinCompilationProjection.TCS -> null
is KotlinCompilationInfo.KPM -> this
is KotlinCompilationInfo.TCS -> null
}
@@ -14,14 +14,14 @@ import org.jetbrains.kotlin.gradle.dsl.topLevelExtension
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompileTool
abstract class KotlinCompilationProcessor<out T : AbstractKotlinCompileTool<*>> internal constructor(
internal val compilationProjection: KotlinCompilationProjection
internal val compilationInfo: KotlinCompilationInfo
) {
abstract val kotlinTask: TaskProvider<out T>
abstract fun run()
protected val project: Project
get() = compilationProjection.project
get() = compilationInfo.project
protected val defaultKotlinDestinationDir: Provider<Directory>
get() {
@@ -30,7 +30,7 @@ abstract class KotlinCompilationProcessor<out T : AbstractKotlinCompileTool<*>>
if (kotlinExt is KotlinSingleJavaTargetExtension)
"" // In single-target projects, don't add the target name part to this path
else
compilationProjection.targetDisambiguationClassifier?.let { "$it/" }.orEmpty()
return project.layout.buildDirectory.dir("classes/kotlin/$targetSubDirectory${compilationProjection.compilationName}")
compilationInfo.targetDisambiguationClassifier?.let { "$it/" }.orEmpty()
return project.layout.buildDirectory.dir("classes/kotlin/$targetSubDirectory${compilationInfo.compilationName}")
}
}
@@ -17,28 +17,28 @@ import org.jetbrains.kotlin.gradle.tasks.configuration.KotlinJsIrLinkConfig
internal class KotlinJsIrSourceSetProcessor(
tasksProvider: KotlinTasksProvider,
kotlinCompilation: KotlinCompilationProjection
kotlinCompilation: KotlinCompilationInfo
) : KotlinSourceSetProcessor<Kotlin2JsCompile>(
tasksProvider, taskDescription = "Compiles the Kotlin sources in $kotlinCompilation to JavaScript.",
kotlinCompilation = kotlinCompilation
) {
override fun doRegisterTask(project: Project, taskName: String): TaskProvider<out Kotlin2JsCompile> {
val configAction = Kotlin2JsCompileConfig(compilationProjection)
val configAction = Kotlin2JsCompileConfig(compilationInfo)
applyStandardTaskConfiguration(configAction)
return tasksProvider.registerKotlinJSTask(
project,
taskName,
compilationProjection.compilerOptions.options as KotlinJsCompilerOptions,
compilationInfo.compilerOptions.options as KotlinJsCompilerOptions,
configAction
)
}
override fun doTargetSpecificProcessing() {
project.tasks.named(compilationProjection.compileAllTaskName).configure {
project.tasks.named(compilationInfo.compileAllTaskName).configure {
it.dependsOn(kotlinTask)
}
val compilation = compilationProjection.tcsOrNull?.compilation as KotlinJsIrCompilation
val compilation = compilationInfo.tcsOrNull?.compilation as KotlinJsIrCompilation
compilation.binaries
.withType(JsIrBinary::class.java)
@@ -46,7 +46,7 @@ internal class KotlinJsIrSourceSetProcessor(
val configAction = KotlinJsIrLinkConfig(binary)
configAction.configureTask {
it.description = taskDescription
it.libraries.from({ compilationProjection.compileDependencyFiles })
it.libraries.from({ compilationInfo.compileDependencyFiles })
}
configAction.configureTask { task ->
task.modeProperty.set(binary.mode)
@@ -59,7 +59,7 @@ internal class KotlinJsIrSourceSetProcessor(
project.whenEvaluated {
val subpluginEnvironment: SubpluginEnvironment = SubpluginEnvironment.loadSubplugins(project)
/* Not supported in KPM, yet */
compilationProjection.tcsOrNull?.compilation?.let { compilation ->
compilationInfo.tcsOrNull?.compilation?.let { compilation ->
subpluginEnvironment.addSubpluginOptions(project, compilation)
}
@@ -38,7 +38,7 @@ internal open class KotlinJvmPlugin(
}
override fun buildSourceSetProcessor(project: Project, compilation: KotlinCompilation<*>) =
Kotlin2JvmSourceSetProcessor(tasksProvider, KotlinCompilationProjection(compilation))
Kotlin2JvmSourceSetProcessor(tasksProvider, KotlinCompilationInfo(compilation))
override fun apply(project: Project) {
@Suppress("UNCHECKED_CAST")
@@ -26,7 +26,7 @@ import java.util.concurrent.Callable
internal abstract class KotlinSourceSetProcessor<T : AbstractKotlinCompile<*>>(
val tasksProvider: KotlinTasksProvider,
val taskDescription: String,
kotlinCompilation: KotlinCompilationProjection
kotlinCompilation: KotlinCompilationInfo
) : KotlinCompilationProcessor<T>(kotlinCompilation) {
protected abstract fun doTargetSpecificProcessing()
protected val logger = Logging.getLogger(this.javaClass)!!
@@ -36,7 +36,7 @@ internal abstract class KotlinSourceSetProcessor<T : AbstractKotlinCompile<*>>(
override val kotlinTask: TaskProvider<out T> = prepareKotlinCompileTask()
protected val javaSourceSet: SourceSet?
get() = when (val compilation = compilationProjection.safeAs<KotlinCompilationProjection.TCS>()?.origin) {
get() = when (val compilation = compilationInfo.safeAs<KotlinCompilationInfo.TCS>()?.origin) {
is KotlinWithJavaCompilation<*, *> -> compilation.javaSourceSet
is KotlinJvmCompilation -> if (compilation.target.withJavaEnabled) {
project.gradle.variantImplementationFactory<JavaSourceSetsAccessor.JavaSourceSetsAccessorVariantFactory>()
@@ -49,15 +49,15 @@ internal abstract class KotlinSourceSetProcessor<T : AbstractKotlinCompile<*>>(
}
private fun prepareKotlinCompileTask(): TaskProvider<out T> =
doRegisterTask(project, compilationProjection.compileKotlinTaskName).also { task ->
compilationProjection.classesDirs.from(task.flatMap { it.destinationDirectory })
doRegisterTask(project, compilationInfo.compileKotlinTaskName).also { task ->
compilationInfo.classesDirs.from(task.flatMap { it.destinationDirectory })
}
override fun run() {
addKotlinDirectoriesToJavaSourceSet()
doTargetSpecificProcessing()
if (compilationProjection.tcsOrNull?.compilation is KotlinWithJavaCompilation<*, *>) {
if (compilationInfo.tcsOrNull?.compilation is KotlinWithJavaCompilation<*, *>) {
createAdditionalClassesTaskForIdeRunner()
}
}
@@ -67,7 +67,7 @@ internal abstract class KotlinSourceSetProcessor<T : AbstractKotlinCompile<*>>(
// Try to avoid duplicate Java sources in allSource; run lazily to allow changing the directory set:
val kotlinSrcDirsToAdd = Callable {
compilationProjection.sources.map { filterOutJavaSrcDirsIfPossible(it) }
compilationInfo.sources.map { filterOutJavaSrcDirsIfPossible(it) }
}
java.allJava.srcDirs(kotlinSrcDirsToAdd)
@@ -82,7 +82,7 @@ internal abstract class KotlinSourceSetProcessor<T : AbstractKotlinCompile<*>>(
}
private fun createAdditionalClassesTaskForIdeRunner() {
val kotlinCompilation = compilationProjection.tcsOrNull?.compilation ?: return
val kotlinCompilation = compilationInfo.tcsOrNull?.compilation ?: return
open class IDEClassesTask : DefaultTask()
// Workaround: as per KT-26641, when there's a Kotlin compilation with a Java source set, we create another task
@@ -106,7 +106,7 @@ internal abstract class KotlinSourceSetProcessor<T : AbstractKotlinCompile<*>>(
} else {
it.destinationDirectory.convention(defaultKotlinDestinationDir)
}
it.libraries.from({ compilationProjection.compileDependencyFiles })
it.libraries.from({ compilationInfo.compileDependencyFiles })
}
}
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
import org.gradle.api.Project
import org.gradle.api.tasks.TaskProvider
import org.jetbrains.kotlin.gradle.plugin.Kotlin2JvmSourceSetProcessor
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationProjection
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationInfo
import org.jetbrains.kotlin.gradle.plugin.KotlinNativeTargetConfigurator
import org.jetbrains.kotlin.gradle.plugin.mpp.addCommonSourcesToKotlinCompileTask
import org.jetbrains.kotlin.gradle.plugin.mpp.addSourcesToKotlinCompileTask
@@ -31,7 +31,7 @@ open class GradleKpmCompilationTaskConfigurator(
variant: GradleKpmVariant,
compilationData: GradleKpmCompilationData<*>
): TaskProvider<out KotlinCompile> {
Kotlin2JvmSourceSetProcessor(KotlinTasksProvider(), KotlinCompilationProjection.KPM(compilationData)).run()
Kotlin2JvmSourceSetProcessor(KotlinTasksProvider(), KotlinCompilationInfo.KPM(compilationData)).run()
val allSources = getSourcesForFragmentCompilation(variant)
val commonSources = getCommonSourcesForFragmentCompilation(variant)
@@ -52,7 +52,7 @@ open class GradleKpmCompilationTaskConfigurator(
configure: KotlinNativeCompile.() -> Unit
): TaskProvider<KotlinNativeCompile> {
val compileTask = KotlinNativeTargetConfigurator.createKlibCompilationTask(
KotlinCompilationProjection.KPM(compilationData), compilationData.konanTarget
KotlinCompilationInfo.KPM(compilationData), compilationData.konanTarget
)
val allSources = getSourcesForFragmentCompilation(fragment)
@@ -218,7 +218,7 @@ private class GradleKpmMetadataCompilationTasksConfigurator(project: Project) :
fragment: GradleKpmFragment,
compilationData: GradleKpmCommonFragmentMetadataCompilationData
) {
KotlinCommonSourceSetProcessor(KotlinCompilationProjection.KPM(compilationData), KotlinTasksProvider()).run()
KotlinCommonSourceSetProcessor(KotlinCompilationInfo.KPM(compilationData), KotlinTasksProvider()).run()
val allSources = getSourcesForFragmentCompilation(fragment)
val commonSources = getCommonSourcesForFragmentCompilation(fragment)
@@ -224,7 +224,7 @@ internal class AndroidProjectHandler(
val defaultSourceSet = project.kotlinExtension.sourceSets.maybeCreate(compilation.defaultSourceSetName)
val configAction = KotlinCompileConfig(KotlinCompilationProjection(compilation))
val configAction = KotlinCompileConfig(KotlinCompilationInfo(compilation))
configAction.configureTask { task ->
task.useModuleDetection.value(true).disallowChanges()
// store kotlin classes in separate directory. They will serve as class-path to java compiler
@@ -54,7 +54,7 @@ open class KotlinJsTargetConfigurator :
override fun buildCompilationProcessor(compilation: KotlinJsCompilation): KotlinSourceSetProcessor<*> {
val tasksProvider = KotlinTasksProvider()
return Kotlin2JsSourceSetProcessor(tasksProvider, KotlinCompilationProjection(compilation))
return Kotlin2JsSourceSetProcessor(tasksProvider, KotlinCompilationInfo(compilation))
}
override fun configureCompilationDefaults(target: KotlinJsTarget) {
@@ -56,7 +56,7 @@ open class KotlinJsIrTargetConfigurator() :
override fun buildCompilationProcessor(compilation: KotlinJsIrCompilation): KotlinSourceSetProcessor<*> {
val tasksProvider = KotlinTasksProvider()
return KotlinJsIrSourceSetProcessor(tasksProvider, KotlinCompilationProjection(compilation))
return KotlinJsIrSourceSetProcessor(tasksProvider, KotlinCompilationInfo(compilation))
}
override fun createArchiveTasks(target: KotlinJsIrTarget): TaskProvider<out Zip> {
@@ -72,6 +72,6 @@ open class KotlinJvmTargetConfigurator :
override fun buildCompilationProcessor(compilation: KotlinJvmCompilation): KotlinSourceSetProcessor<*> {
val tasksProvider = KotlinTasksProvider()
return Kotlin2JvmSourceSetProcessor(tasksProvider, KotlinCompilationProjection(compilation))
return Kotlin2JvmSourceSetProcessor(tasksProvider, KotlinCompilationInfo(compilation))
}
}
@@ -53,7 +53,7 @@ class KotlinJvmWithJavaTargetPreset(
}
AbstractKotlinPlugin.configureTarget(target) { compilation ->
Kotlin2JvmSourceSetProcessor(KotlinTasksProvider(), KotlinCompilationProjection(compilation))
Kotlin2JvmSourceSetProcessor(KotlinTasksProvider(), KotlinCompilationInfo(compilation))
}
target.compilations.getByName("test").run {
@@ -117,7 +117,7 @@ class KotlinMetadataTargetConfigurator :
override fun buildCompilationProcessor(compilation: KotlinCompilation<*>): KotlinCompilationProcessor<*> = when (compilation) {
is KotlinCommonCompilation -> {
val tasksProvider = KotlinTasksProvider()
KotlinCommonSourceSetProcessor(KotlinCompilationProjection(compilation), tasksProvider)
KotlinCommonSourceSetProcessor(KotlinCompilationInfo(compilation), tasksProvider)
}
is KotlinSharedNativeCompilation -> NativeSharedCompilationProcessor(compilation)
@@ -488,10 +488,10 @@ class KotlinMetadataTargetConfigurator :
internal class NativeSharedCompilationProcessor(
private val compilation: KotlinSharedNativeCompilation
) : KotlinCompilationProcessor<KotlinNativeCompile>(KotlinCompilationProjection(compilation)) {
) : KotlinCompilationProcessor<KotlinNativeCompile>(KotlinCompilationInfo(compilation)) {
override val kotlinTask: TaskProvider<out KotlinNativeCompile> =
KotlinNativeTargetConfigurator.createKlibCompilationTask(compilationProjection, compilation.konanTarget)
KotlinNativeTargetConfigurator.createKlibCompilationTask(compilationInfo, compilation.konanTarget)
override fun run() = Unit
}
@@ -26,7 +26,7 @@ import org.gradle.api.tasks.Exec
import org.gradle.api.tasks.TaskProvider
import org.gradle.language.base.plugins.LifecycleBasePlugin
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation.Companion.TEST_COMPILATION_NAME
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationProjection.KPM
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationInfo.KPM
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.KOTLIN_NATIVE_IGNORE_INCORRECT_DEPENDENCIES
import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.gradle.plugin.mpp.apple.registerEmbedAndSignAppleFrameworkTask
@@ -209,7 +209,7 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotl
compilation: KotlinNativeCompilation,
cinterops: NamedDomainObjectCollection<DefaultCInteropSettings>
) {
val compilationProjection = KotlinCompilationProjection(compilation)
val compilationInfo = KotlinCompilationInfo(compilation)
cinterops.all { interop ->
val params = CInteropProcess.Params(
@@ -225,7 +225,7 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotl
)
val interopTask = registerTask<CInteropProcess>(interop.interopProcessingTaskName, listOf(params)) {
it.destinationDir = provider { klibOutputDirectory(compilationProjection).resolve("cinterop") }
it.destinationDir = provider { klibOutputDirectory(compilationInfo).resolve("cinterop") }
it.group = INTEROP_GROUP
it.description = "Generates Kotlin/Native interop library '${interop.name}' " +
"for compilation '${compilation.compilationName}'" +
@@ -250,7 +250,7 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotl
// Add the interop library in publication.
createKlibArtifact(
compilationProjection = compilationProjection,
compilationInfo = compilationInfo,
konanTarget = konanTarget,
artifactFile = interopTask.map { it.outputFile },
classifier = "cinterop-${interop.name}",
@@ -294,7 +294,7 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotl
it.group = BasePlugin.BUILD_GROUP
it.description = "Assembles outputs for target '${target.name}'."
}
target.compilations.all { createKlibCompilationTask(KotlinCompilationProjection(it), it.konanTarget) }
target.compilations.all { createKlibCompilationTask(KotlinCompilationInfo(it), it.konanTarget) }
val apiElements = configurations.getByName(target.apiElementsConfigurationName)
@@ -473,52 +473,52 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotl
const val RUN_GROUP = "run"
internal fun createKlibCompilationTask(
compilationProjection: KotlinCompilationProjection,
compilationInfo: KotlinCompilationInfo,
konanTarget: KonanTarget
): TaskProvider<KotlinNativeCompile> {
val project = compilationProjection.project
val project = compilationInfo.project
val compileTaskProvider = project.registerTask<KotlinNativeCompile>(
compilationProjection.compileKotlinTaskName,
listOf(compilationProjection)
compilationInfo.compileKotlinTaskName,
listOf(compilationInfo)
) {
it.group = BasePlugin.BUILD_GROUP
it.description = "Compiles a klibrary from the '${compilationProjection.compilationName}' " +
"compilation for target '${compilationProjection.platformType.name}'."
it.description = "Compiles a klibrary from the '${compilationInfo.compilationName}' " +
"compilation for target '${compilationInfo.platformType.name}'."
it.enabled = konanTarget.enabledOnCurrentHost
it.destinationDirectory.set(project.klibOutputDirectory(compilationProjection).resolve("klib"))
it.destinationDirectory.set(project.klibOutputDirectory(compilationInfo).resolve("klib"))
}
compilationProjection.classesDirs.from(compileTaskProvider.map { it.outputFile })
compilationInfo.classesDirs.from(compileTaskProvider.map { it.outputFile })
project.project.tasks.named(compilationProjection.compileAllTaskName).dependsOn(compileTaskProvider)
project.project.tasks.named(compilationInfo.compileAllTaskName).dependsOn(compileTaskProvider)
if (compilationProjection.isMain) {
if (compilationProjection is KotlinCompilationProjection.TCS && compilationProjection.compilation is KotlinNativeCompilation) {
project.project.tasks.named(compilationProjection.compilation.target.artifactsTaskName).dependsOn(compileTaskProvider)
if (compilationInfo.isMain) {
if (compilationInfo is KotlinCompilationInfo.TCS && compilationInfo.compilation is KotlinNativeCompilation) {
project.project.tasks.named(compilationInfo.compilation.target.artifactsTaskName).dependsOn(compileTaskProvider)
}
project.project.tasks.named(LifecycleBasePlugin.ASSEMBLE_TASK_NAME).dependsOn(compileTaskProvider)
}
val shouldAddCompileOutputsToElements =
(compilationProjection is KPM && compilationProjection.compilationData.owner is GradleKpmVariant) ||
compilationProjection.isMain
(compilationInfo is KPM && compilationInfo.compilationData.owner is GradleKpmVariant) ||
compilationInfo.isMain
if (shouldAddCompileOutputsToElements) {
createRegularKlibArtifact(compilationProjection, konanTarget, compileTaskProvider)
createRegularKlibArtifact(compilationInfo, konanTarget, compileTaskProvider)
}
if (compilationProjection is KotlinCompilationProjection.TCS && compilationProjection.compilation is AbstractKotlinNativeCompilation) {
if (compilationInfo is KotlinCompilationInfo.TCS && compilationInfo.compilation is AbstractKotlinNativeCompilation) {
// FIXME: support compiler plugins for PM20
addCompilerPlugins(compilationProjection.compilation)
addCompilerPlugins(compilationInfo.compilation)
}
return compileTaskProvider
}
private fun Project.klibOutputDirectory(
compilation: KotlinCompilationProjection
compilation: KotlinCompilationInfo
): File {
val targetSubDirectory = compilation.targetDisambiguationClassifier?.let { "$it/" }.orEmpty()
return buildDir.resolve("classes/kotlin/$targetSubDirectory${compilation.compilationName}")
@@ -539,27 +539,27 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotl
}
internal fun createRegularKlibArtifact(
compilation: KotlinCompilationProjection,
compilation: KotlinCompilationInfo,
konanTarget: KonanTarget,
compileTask: TaskProvider<out KotlinNativeCompile>
) = createKlibArtifact(compilation, konanTarget, compileTask.map { it.outputFile.get() }, null, compileTask)
private fun createKlibArtifact(
compilationProjection: KotlinCompilationProjection,
compilationInfo: KotlinCompilationInfo,
konanTarget: KonanTarget,
artifactFile: Provider<File>,
classifier: String?,
producingTask: TaskProvider<*>,
copy: Boolean = false
) {
val project = compilationProjection.project
val project = compilationInfo.project
if (!konanTarget.enabledOnCurrentHost) {
return
}
val apiElementsName = when (compilationProjection) {
is KPM -> (compilationProjection.compilationData.owner as GradleKpmVariant).apiElementsConfiguration.name
is KotlinCompilationProjection.TCS -> compilationProjection.compilation.target.apiElementsConfigurationName
val apiElementsName = when (compilationInfo) {
is KPM -> (compilationInfo.compilationData.owner as GradleKpmVariant).apiElementsConfiguration.name
is KotlinCompilationInfo.TCS -> compilationInfo.compilation.target.apiElementsConfigurationName
}
val apiElements = project.configurations.getByName(apiElementsName)
@@ -568,8 +568,8 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotl
// TODO: Someone remove this HACK PLEASE!
val realArtifactFile = if (copy) {
realProducingTask = project.project.registerTask<Copy>("copy${producingTask.name.capitalize()}") {
val targetSubDirectory = compilationProjection.targetDisambiguationClassifier?.let { "$it/" }.orEmpty()
it.destinationDir = project.project.buildDir.resolve("libs/$targetSubDirectory${compilationProjection.compilationName}")
val targetSubDirectory = compilationInfo.targetDisambiguationClassifier?.let { "$it/" }.orEmpty()
it.destinationDir = project.project.buildDir.resolve("libs/$targetSubDirectory${compilationInfo.compilationName}")
it.from(artifactFile)
it.dependsOn(producingTask)
}
@@ -581,7 +581,7 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotl
with(apiElements) {
val klibArtifact = project.project.artifacts.add(apiElements.name, realArtifactFile) { artifact ->
artifact.name = compilationProjection.compilationName
artifact.name = compilationInfo.compilationName
artifact.extension = "klib"
artifact.type = "klib"
artifact.classifier = classifier
@@ -30,7 +30,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinCompile
import org.jetbrains.kotlin.gradle.internal.ensureParentDirsCreated
import org.jetbrains.kotlin.gradle.internal.isInIdeaSync
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationProjection
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationInfo
import org.jetbrains.kotlin.gradle.plugin.cocoapods.asValidFrameworkName
import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmMetadataCompilationData
@@ -142,7 +142,7 @@ abstract class AbstractKotlinNativeCompile<
protected abstract val projectLayout: ProjectLayout
@get:Internal
internal abstract val compilation: KotlinCompilationProjection
internal abstract val compilation: KotlinCompilationInfo
// region inputs/outputs
@get:Input
@@ -160,8 +160,8 @@ abstract class AbstractKotlinNativeCompile<
@get:Internal
protected val konanTarget by project.provider {
when (val compilation = compilation) {
is KotlinCompilationProjection.KPM -> (compilation.compilationData as GradleKpmNativeCompilationData<*>).konanTarget
is KotlinCompilationProjection.TCS -> (compilation.compilation as AbstractKotlinNativeCompilation).konanTarget
is KotlinCompilationInfo.KPM -> (compilation.compilationData as GradleKpmNativeCompilationData<*>).konanTarget
is KotlinCompilationInfo.TCS -> (compilation.compilation as AbstractKotlinNativeCompilation).konanTarget
}
}
@@ -315,7 +315,7 @@ abstract class KotlinNativeCompile
internal constructor(
@get:Internal
@Transient // can't be serialized for Gradle configuration cache
final override val compilation: KotlinCompilationProjection,
final override val compilation: KotlinCompilationInfo,
private val objectFactory: ObjectFactory,
private val providerFactory: ProviderFactory,
private val execOperations: ExecOperations
@@ -455,8 +455,8 @@ internal constructor(
}
private val isMetadataCompilation: Boolean = when (compilation) {
is KotlinCompilationProjection.KPM -> compilation.compilationData is GradleKpmMetadataCompilationData<*>
is KotlinCompilationProjection.TCS -> compilation.compilation is KotlinMetadataCompilation<*>
is KotlinCompilationInfo.KPM -> compilation.compilationData is GradleKpmMetadataCompilationData<*>
is KotlinCompilationInfo.TCS -> compilation.compilation is KotlinMetadataCompilation<*>
}
private fun createSharedCompilationDataOrNull(): SharedCompilationData? {
@@ -85,12 +85,14 @@ internal abstract class AbstractKotlinCompileConfig<TASK : AbstractKotlinCompile
protected fun getClasspathSnapshotDir(task: TASK): Provider<Directory> =
getKotlinBuildDir(task).map { it.dir("classpath-snapshot") }
constructor(compilationProjection: KotlinCompilationProjection) : this(
compilationProjection.project, compilationProjection.project.topLevelExtension, compilationProjection.project.provider { compilationProjection.languageSettings }
constructor(compilationInfo: KotlinCompilationInfo) : this(
compilationInfo.project,
compilationInfo.project.topLevelExtension,
compilationInfo.project.provider { compilationInfo.languageSettings }
) {
configureTask { task ->
task.friendPaths.from({ compilationProjection.friendPaths })
compilationProjection.tcsOrNull?.compilation?.let { compilation ->
task.friendPaths.from({ compilationInfo.friendPaths })
compilationInfo.tcsOrNull?.compilation?.let { compilation ->
task.friendSourceSets
.value(providers.provider { compilation.associateWithClosure.map { it.name } })
.disallowChanges()
@@ -98,13 +100,13 @@ internal abstract class AbstractKotlinCompileConfig<TASK : AbstractKotlinCompile
compilation.internal.configurations.pluginConfiguration
)
}
task.moduleName.set(providers.provider { compilationProjection.moduleName })
task.moduleName.set(providers.provider { compilationInfo.moduleName })
@Suppress("DEPRECATION")
task.ownModuleName.set(project.provider { compilationProjection.moduleName })
task.sourceSetName.value(providers.provider { compilationProjection.compilationName })
task.ownModuleName.set(project.provider { compilationInfo.moduleName })
task.sourceSetName.value(providers.provider { compilationInfo.compilationName })
task.multiPlatformEnabled.value(
providers.provider {
compilationProjection.project.plugins.any {
compilationInfo.project.plugins.any {
it is KotlinPlatformPluginBase ||
it is AbstractKotlinMultiplatformPluginWrapper ||
it is AbstractKotlinPm20PluginWrapper
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin.Companion.KAPT_
import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin.Companion.isIncludeCompileClasspath
import org.jetbrains.kotlin.gradle.plugin.KaptExtension
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationProjection
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationInfo
import org.jetbrains.kotlin.gradle.tasks.CompilerPluginOptions
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompilerArgumentsProvider
@@ -34,7 +34,7 @@ internal class KaptGenerateStubsConfig : BaseKotlinCompileConfig<KaptGenerateStu
compilation: KotlinCompilation<*>,
kotlinTaskProvider: TaskProvider<KotlinCompile>,
kaptClassesDir: File
) : super(KotlinCompilationProjection(compilation)) {
) : super(KotlinCompilationInfo(compilation)) {
configureFromExtension(project.extensions.getByType(KaptExtension::class.java))
configureTask { task ->
val kotlinCompileTask = kotlinTaskProvider.get()
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.gradle.tasks.configuration
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationProjection
import org.jetbrains.kotlin.gradle.targets.js.ir.*
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
import org.jetbrains.kotlin.gradle.utils.klibModuleName
@@ -14,7 +13,7 @@ import java.io.File
internal typealias Kotlin2JsCompileConfig = BaseKotlin2JsCompileConfig<Kotlin2JsCompile>
internal open class BaseKotlin2JsCompileConfig<TASK : Kotlin2JsCompile>(
compilation: KotlinCompilationProjection
compilation: KotlinCompilationInfo
) : AbstractKotlinCompileConfig<TASK>(compilation) {
init {
@@ -69,7 +68,7 @@ internal open class BaseKotlin2JsCompileConfig<TASK : Kotlin2JsCompile>(
protected open fun configureAdditionalFreeCompilerArguments(
task: TASK,
compilation: KotlinCompilationProjection
compilation: KotlinCompilationInfo
) {
task.enhancedFreeCompilerArgs.value(
task.compilerOptions.freeCompilerArgs.map { freeArgs ->
@@ -81,7 +80,7 @@ internal open class BaseKotlin2JsCompileConfig<TASK : Kotlin2JsCompile>(
}
protected fun MutableList<String>.commonJsAdditionalCompilerFlags(
compilation: KotlinCompilationProjection
compilation: KotlinCompilationInfo
) {
if (contains(DISABLE_PRE_IR) &&
!contains(PRODUCE_UNZIPPED_KLIB) &&
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.gradle.tasks.configuration
import org.gradle.api.Project
import org.gradle.api.provider.Provider
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationProjection
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationInfo
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCommonCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmAbstractFragmentMetadataCompilationData
@@ -17,14 +17,14 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompileCommon
import java.io.File
internal class KotlinCompileCommonConfig(
private val compilationProjection: KotlinCompilationProjection,
) : AbstractKotlinCompileConfig<KotlinCompileCommon>(compilationProjection) {
private val compilationInfo: KotlinCompilationInfo,
) : AbstractKotlinCompileConfig<KotlinCompileCommon>(compilationInfo) {
init {
configureTask { task ->
task.expectActualLinker.value(
providers.provider {
(compilationProjection.origin as? KotlinCommonCompilation)?.isKlibCompilation == true ||
compilationProjection.origin is GradleKpmMetadataCompilationData<*>
(compilationInfo.origin as? KotlinCommonCompilation)?.isKlibCompilation == true ||
compilationInfo.origin is GradleKpmMetadataCompilationData<*>
}
).disallowChanges()
task.refinesMetadataPaths.from(getRefinesMetadataPaths(project)).disallowChanges()
@@ -33,17 +33,17 @@ internal class KotlinCompileCommonConfig(
private fun getRefinesMetadataPaths(project: Project): Provider<Iterable<File>> {
return project.provider {
when (compilationProjection) {
is KotlinCompilationProjection.TCS -> {
val defaultKotlinSourceSet: KotlinSourceSet = compilationProjection.compilation.defaultSourceSet
val metadataTarget = compilationProjection.compilation.target
when (compilationInfo) {
is KotlinCompilationInfo.TCS -> {
val defaultKotlinSourceSet: KotlinSourceSet = compilationInfo.compilation.defaultSourceSet
val metadataTarget = compilationInfo.compilation.target
defaultKotlinSourceSet.internal.dependsOnClosure
.mapNotNull { sourceSet -> metadataTarget.compilations.findByName(sourceSet.name)?.output?.classesDirs }
.flatten()
}
is KotlinCompilationProjection.KPM -> {
val compilationData = compilationProjection.compilationData as GradleKpmAbstractFragmentMetadataCompilationData<*>
is KotlinCompilationInfo.KPM -> {
val compilationData = compilationInfo.compilationData as GradleKpmAbstractFragmentMetadataCompilationData<*>
val fragment = compilationData.fragment
project.files(
fragment.refinesClosure.minus(fragment).map {
@@ -10,7 +10,7 @@ import org.gradle.api.attributes.Attribute
import org.gradle.api.provider.Provider
import org.jetbrains.kotlin.gradle.dsl.KotlinTopLevelExtension
import org.jetbrains.kotlin.gradle.internal.transforms.ClasspathEntrySnapshotTransform
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationProjection
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationInfo
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinWithJavaCompilation
@@ -60,8 +60,8 @@ internal open class BaseKotlinCompileConfig<TASK : KotlinCompile> : AbstractKotl
}
}
constructor(compilationProjection: KotlinCompilationProjection) : super(compilationProjection) {
val javaTaskProvider = when (val compilation = compilationProjection.tcsOrNull?.compilation) {
constructor(compilationInfo: KotlinCompilationInfo) : super(compilationInfo) {
val javaTaskProvider = when (val compilation = compilationInfo.tcsOrNull?.compilation) {
is KotlinJvmCompilation -> compilation.compileJavaTaskProvider
is KotlinJvmAndroidCompilation -> compilation.compileJavaTaskProvider
is KotlinWithJavaCompilation<*, *> -> compilation.compileJavaTaskProvider
@@ -79,7 +79,7 @@ internal open class BaseKotlinCompileConfig<TASK : KotlinCompile> : AbstractKotl
@Suppress("DEPRECATION")
task.ownModuleName.value(
providers.provider {
task.parentKotlinOptions.orNull?.moduleName ?: compilationProjection.moduleName
task.parentKotlinOptions.orNull?.moduleName ?: compilationInfo.moduleName
})
}
}
@@ -6,7 +6,7 @@
package org.jetbrains.kotlin.gradle.tasks.configuration
import org.gradle.api.InvalidUserDataException
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationProjection
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationInfo
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode
import org.jetbrains.kotlin.gradle.targets.js.ir.*
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
internal open class KotlinJsIrLinkConfig(
private val binary: JsIrBinary
) : BaseKotlin2JsCompileConfig<KotlinJsIrLink>(KotlinCompilationProjection(binary.compilation)) {
) : BaseKotlin2JsCompileConfig<KotlinJsIrLink>(KotlinCompilationInfo(binary.compilation)) {
private val compilation
get() = binary.compilation
@@ -49,7 +49,7 @@ internal open class KotlinJsIrLinkConfig(
override fun configureAdditionalFreeCompilerArguments(
task: KotlinJsIrLink,
compilation: KotlinCompilationProjection
compilation: KotlinCompilationInfo
) {
task.enhancedFreeCompilerArgs.value(
task.compilerOptions.freeCompilerArgs.zip(task.modeProperty) { freeArgs, mode ->
@@ -85,7 +85,7 @@ internal open class KotlinJsIrLinkConfig(
}
private fun MutableList<String>.configureOptions(
compilation: KotlinCompilationProjection,
compilation: KotlinCompilationInfo,
vararg additionalCompilerArgs: String
) {
additionalCompilerArgs.forEach { arg ->