[Gradle] Move KotlinCompilationK2MultiplatformConfigurator into 'DefaultKotlinCompilationPreConfigure'

^KT-56210 Verification Pending
This commit is contained in:
Sebastian Sellmair
2023-02-27 13:51:35 +01:00
committed by Space Team
parent b90207edb9
commit a30abcb00c
5 changed files with 49 additions and 15 deletions
@@ -0,0 +1,12 @@
/*
* 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.plugin.mpp.compilationImpl
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory
internal val DefaultKotlinCompilationPostConfigure = KotlinCompilationImplFactory.PostConfigure.composite(
KotlinCompilationRegisterInSourceSetsConfigurator
)
@@ -0,0 +1,12 @@
/*
* 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.plugin.mpp.compilationImpl
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory
internal val DefaultKotlinCompilationPreConfigure = KotlinCompilationImplFactory.PreConfigure.composite(
KotlinCompilationLanguageVersionConfigurator, KotlinCompilationK2MultiplatformConfigurator
)
@@ -1,15 +1,15 @@
/*
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* 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.plugin.mpp.compilationImpl.factory
package org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl
import org.jetbrains.kotlin.gradle.plugin.mpp.DecoratedKotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.InternalKotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory
import org.jetbrains.kotlin.gradle.plugin.sources.internal
internal object DefaultKotlinCompilationPostConfigure : KotlinCompilationImplFactory.PostConfigure {
internal object KotlinCompilationRegisterInSourceSetsConfigurator : KotlinCompilationImplFactory.PostConfigure {
override fun configure(compilation: DecoratedKotlinCompilation<*>) {
/* Ensure proper tracking of compilations in the source sets */
compilation.allKotlinSourceSets.forAll { sourceSet ->
@@ -42,10 +42,7 @@ internal class KotlinCompilationImplFactory(
DefaultProcessResourcesTaskNameFactory,
private val preConfigureAction: PreConfigure =
PreConfigure.composite(
KotlinCompilationK2MultiplatformConfigurator,
KotlinCompilationLanguageVersionConfigurator
),
DefaultKotlinCompilationPreConfigure,
private val postConfigureAction: PostConfigure =
DefaultKotlinCompilationPostConfigure
@@ -125,11 +122,26 @@ internal class KotlinCompilationImplFactory(
return compilation
}
}
internal operator fun KotlinCompilationImplFactory.PreConfigure.plus(
other: KotlinCompilationImplFactory.PreConfigure
): KotlinCompilationImplFactory.PreConfigure {
val thisElements = if (this is CompositePreConfigure) this.elements else listOf(this)
val otherElements = if (other is CompositePreConfigure) other.elements else listOf(other)
return CompositePreConfigure(thisElements + otherElements)
}
internal operator fun KotlinCompilationImplFactory.PostConfigure.plus(
other: KotlinCompilationImplFactory.PostConfigure
): KotlinCompilationImplFactory.PostConfigure {
val thisElements = if (this is CompositePostConfigure) this.elements else listOf(this)
val otherElements = if (other is CompositePostConfigure) other.elements else listOf(other)
return CompositePostConfigure(thisElements + otherElements)
}
private class CompositePreConfigure(
private val elements: List<KotlinCompilationImplFactory.PreConfigure>
val elements: List<KotlinCompilationImplFactory.PreConfigure>
) : KotlinCompilationImplFactory.PreConfigure {
override fun configure(compilation: KotlinCompilationImpl) {
elements.forEach { element -> element.configure(compilation) }
@@ -137,13 +149,9 @@ private class CompositePreConfigure(
}
private class CompositePostConfigure(
private val elements: List<KotlinCompilationImplFactory.PostConfigure>
val elements: List<KotlinCompilationImplFactory.PostConfigure>
) : KotlinCompilationImplFactory.PostConfigure {
override fun configure(compilation: DecoratedKotlinCompilation<*>) {
elements.forEach { element -> element.configure(compilation) }
}
}
private object EmptyPreConfigure : KotlinCompilationImplFactory.PreConfigure {
override fun configure(compilation: KotlinCompilationImpl) = Unit
}
@@ -9,10 +9,12 @@ package org.jetbrains.kotlin.gradle.plugin.mpp
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
import org.jetbrains.kotlin.gradle.plugin.HasCompilerOptions
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationPreConfigure
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinJvmCompilationAssociator
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.JvmWithJavaCompilationDependencyConfigurationsFactory
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.JvmWithJavaCompilationTaskNamesContainerFactory
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.plus
import org.jetbrains.kotlin.gradle.utils.filesProvider
class KotlinWithJavaCompilationFactory<KotlinOptionsType : KotlinCommonOptions, CO : KotlinCommonCompilerOptions> internal constructor(
@@ -52,7 +54,7 @@ class KotlinWithJavaCompilationFactory<KotlinOptionsType : KotlinCommonOptions,
compilationTaskNamesContainerFactory = JvmWithJavaCompilationTaskNamesContainerFactory(javaSourceSet),
/* Use compile & runtime classpath from javaSourceSet by default */
preConfigureAction = { compilation ->
preConfigureAction = DefaultKotlinCompilationPreConfigure + { compilation ->
compilation.compileDependencyFiles = project.filesProvider { javaSourceSet.compileClasspath }
compilation.runtimeDependencyFiles = project.filesProvider { javaSourceSet.runtimeClasspath }
}