Use KotlinCompilationTaskConfigurator for metadata compilation tasks
This commit is contained in:
+9
-6
@@ -18,15 +18,18 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
|||||||
import org.jetbrains.kotlin.gradle.tasks.withType
|
import org.jetbrains.kotlin.gradle.tasks.withType
|
||||||
|
|
||||||
open class KotlinCompilationTaskConfigurator(
|
open class KotlinCompilationTaskConfigurator(
|
||||||
private val project: Project
|
protected val project: Project
|
||||||
) {
|
) {
|
||||||
private val kotlinPluginVersion =
|
open val fragmentSourcesProvider: FragmentSourcesProvider = FragmentSourcesProvider()
|
||||||
project.getKotlinPluginVersion() ?: error("Kotlin plugin version not found; the Kotlin plugin must be applied to $project")
|
|
||||||
|
|
||||||
open val variantSourcesProvider: VariantSourcesProvider = VariantSourcesProvider()
|
open fun getSourcesForFragmentCompilation(fragment: KotlinGradleFragment) =
|
||||||
|
fragmentSourcesProvider.getSourcesFromRefinesClosure(fragment)
|
||||||
|
|
||||||
|
open fun getCommonSourcesForFragmentCompilation(fragment: KotlinGradleFragment) =
|
||||||
|
fragmentSourcesProvider.getCommonSourcesFromRefinesClosure(fragment)
|
||||||
|
|
||||||
fun createKotlinJvmCompilationTask(
|
fun createKotlinJvmCompilationTask(
|
||||||
variant: KotlinGradleVariant,
|
fragment: KotlinGradleFragment,
|
||||||
compilationData: KotlinCompilationData<*>
|
compilationData: KotlinCompilationData<*>
|
||||||
): TaskProvider<out KotlinCompile> {
|
): TaskProvider<out KotlinCompile> {
|
||||||
Kotlin2JvmSourceSetProcessor(KotlinTasksProvider(), compilationData, kotlinPluginVersion).run()
|
Kotlin2JvmSourceSetProcessor(KotlinTasksProvider(), compilationData, kotlinPluginVersion).run()
|
||||||
@@ -41,7 +44,7 @@ open class KotlinCompilationTaskConfigurator(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun createKotlinNativeCompilationTask(
|
fun createKotlinNativeCompilationTask(
|
||||||
variant: KotlinNativeVariant,
|
fragment: KotlinGradleFragment,
|
||||||
compilationData: KotlinNativeCompilationData<*>
|
compilationData: KotlinNativeCompilationData<*>
|
||||||
): TaskProvider<KotlinNativeCompile> {
|
): TaskProvider<KotlinNativeCompile> {
|
||||||
val compileTask = KotlinNativeTargetConfigurator.createKlibCompilationTask(compilationData)
|
val compileTask = KotlinNativeTargetConfigurator.createKlibCompilationTask(compilationData)
|
||||||
|
|||||||
+26
-28
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
|
|||||||
import org.gradle.api.DefaultTask
|
import org.gradle.api.DefaultTask
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.attributes.Usage
|
import org.gradle.api.attributes.Usage
|
||||||
|
import org.gradle.api.file.FileCollection
|
||||||
import org.gradle.api.tasks.TaskProvider
|
import org.gradle.api.tasks.TaskProvider
|
||||||
import org.gradle.jvm.tasks.Jar
|
import org.gradle.jvm.tasks.Jar
|
||||||
import org.jetbrains.kotlin.gradle.dsl.pm20Extension
|
import org.jetbrains.kotlin.gradle.dsl.pm20Extension
|
||||||
@@ -163,12 +164,7 @@ private fun createCommonMetadataCompilation(
|
|||||||
metadataCompilationRegistry,
|
metadataCompilationRegistry,
|
||||||
lazy { resolvedMetadataProviders(fragment) }
|
lazy { resolvedMetadataProviders(fragment) }
|
||||||
)
|
)
|
||||||
KotlinCommonSourceSetProcessor(
|
MetadataCompilationTasksConfigurator(project).createKotlinCommonCompilationTask(fragment, metadataCompilationData)
|
||||||
metadataCompilationData,
|
|
||||||
KotlinTasksProvider(),
|
|
||||||
project.getKotlinPluginVersion() ?: "undefined"
|
|
||||||
).run()
|
|
||||||
addSourcesToMetadataCompileTask(metadataCompilationData)
|
|
||||||
metadataCompilationRegistry.registerCommon(fragment, metadataCompilationData)
|
metadataCompilationRegistry.registerCommon(fragment, metadataCompilationData)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -189,37 +185,39 @@ private fun createNativeMetadataCompilation(
|
|||||||
metadataCompilationRegistry,
|
metadataCompilationRegistry,
|
||||||
lazy { resolvedMetadataProviders(fragment) }
|
lazy { resolvedMetadataProviders(fragment) }
|
||||||
)
|
)
|
||||||
NativeSharedCompilationProcessor(metadataCompilationData).run()
|
MetadataCompilationTasksConfigurator(project).createKotlinNativeCompilationTask(fragment, metadataCompilationData)
|
||||||
addSourcesToMetadataCompileTask(metadataCompilationData)
|
|
||||||
metadataCompilationRegistry.registerNative(fragment, metadataCompilationData)
|
metadataCompilationRegistry.registerNative(fragment, metadataCompilationData)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addSourcesToMetadataCompileTask(compilationData: AbstractKotlinFragmentMetadataCompilationData<*>) {
|
private class MetadataCompilationTasksConfigurator(project: Project) : KotlinCompilationTaskConfigurator(project) {
|
||||||
val sources = { compilationData.fragment.kotlinSourceRoots }
|
fun createKotlinCommonCompilationTask(
|
||||||
when (compilationData) {
|
fragment: KotlinGradleFragment,
|
||||||
// Note: this call is invalid for compilations that use Kotlin/Native compile tasks!
|
compilationData: KotlinCommonFragmentMetadataCompilationData
|
||||||
is KotlinCommonFragmentMetadataCompilationData -> addSourcesToKotlinCompileTask(
|
) {
|
||||||
compilationData.project,
|
KotlinCommonSourceSetProcessor(
|
||||||
compilationData.compileKotlinTaskName,
|
compilationData,
|
||||||
/*FIXME*/ emptyList(),
|
KotlinTasksProvider()
|
||||||
lazyOf(true),
|
).run()
|
||||||
sources
|
val allSources = getSourcesForFragmentCompilation(fragment)
|
||||||
)
|
val commonSources = getCommonSourcesForFragmentCompilation(fragment)
|
||||||
is KotlinNativeFragmentMetadataCompilationData -> addSourcesToKotlinNativeCompileTask(
|
|
||||||
compilationData.project,
|
addSourcesToKotlinCompileTask(project, compilationData.compileKotlinTaskName, emptyList()) { allSources }
|
||||||
compilationData.compileKotlinTaskName,
|
addCommonSourcesToKotlinCompileTask(project, compilationData.compileKotlinTaskName, emptyList()) { commonSources }
|
||||||
sources,
|
}
|
||||||
lazyOf(true)
|
|
||||||
)
|
override fun getSourcesForFragmentCompilation(fragment: KotlinGradleFragment): FileCollection {
|
||||||
else -> error("unexpected compilation data $compilationData")
|
return fragmentSourcesProvider.getFragmentOwnSources(fragment)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getCommonSourcesForFragmentCompilation(fragment: KotlinGradleFragment): FileCollection {
|
||||||
|
return fragmentSourcesProvider.getFragmentOwnSources(fragment)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun resolvedMetadataProviders(fragment: KotlinGradleFragment) =
|
private fun resolvedMetadataProviders(fragment: KotlinGradleFragment) =
|
||||||
fragment.refinesClosure.map {
|
fragment.refinesClosure.map {
|
||||||
FragmentResolvedMetadataProvider(
|
FragmentResolvedMetadataProvider(
|
||||||
fragment.project.tasks.withType<TransformKotlinGranularMetadataForFragment>()
|
fragment.project.tasks.withType<TransformKotlinGranularMetadataForFragment>().named(transformFragmentMetadataTaskName(it))
|
||||||
.named(transformFragmentMetadataTaskName(it))
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user