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