[Gradle][MPP] Replace .kotlinSourceSetsIncludingDefault with .kotlinSourceSets
^KT-52726 Verification Pending ^KT-45412 Verification Pending
This commit is contained in:
committed by
Space
parent
f4eba62f8c
commit
67fc4f0ed6
+1
-9
@@ -17,20 +17,17 @@ import org.gradle.api.attributes.Attribute
|
||||
import org.gradle.api.attributes.Category
|
||||
import org.gradle.api.attributes.Usage
|
||||
import org.gradle.api.attributes.Usage.USAGE_ATTRIBUTE
|
||||
import org.gradle.api.file.ConfigurableFileCollection
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.gradle.api.internal.artifacts.ArtifactAttributes
|
||||
import org.gradle.api.plugins.BasePlugin
|
||||
import org.gradle.api.plugins.ExtensionAware
|
||||
import org.gradle.api.plugins.JavaBasePlugin
|
||||
import org.gradle.api.tasks.Delete
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.api.tasks.bundling.Jar
|
||||
import org.gradle.api.tasks.bundling.Zip
|
||||
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
||||
import org.gradle.language.jvm.tasks.ProcessResources
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||
import org.jetbrains.kotlin.gradle.internal.reorderPluginClasspathDependencies
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsCompilerAttribute
|
||||
@@ -39,7 +36,6 @@ import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
|
||||
import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
|
||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||
import org.jetbrains.kotlin.gradle.utils.*
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
import java.util.concurrent.Callable
|
||||
import kotlin.reflect.KMutableProperty1
|
||||
import kotlin.reflect.full.memberProperties
|
||||
@@ -102,13 +98,9 @@ abstract class AbstractKotlinTargetConfigurator<KotlinTargetType : KotlinTarget>
|
||||
}
|
||||
|
||||
override fun configureSourceSet(target: KotlinTargetType) {
|
||||
val project = target.project
|
||||
|
||||
target.compilations.all { compilation ->
|
||||
if (createDefaultSourceSets) {
|
||||
project.kotlinExtension.sourceSets.maybeCreate(compilation.defaultSourceSetName).also { sourceSet ->
|
||||
compilation.source(sourceSet) // also adds dependencies, requires the configurations for target and source set to exist at this point
|
||||
}
|
||||
compilation.source(compilation.defaultSourceSet) // also adds dependencies, requires the configurations for target and source set to exist at this point
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -375,5 +375,5 @@ internal fun requestedDependencies(
|
||||
private val KotlinMultiplatformExtension.platformCompilationSourceSets: Set<KotlinSourceSet>
|
||||
get() = targets.filterNot { it is KotlinMetadataTarget }
|
||||
.flatMap { target -> target.compilations }
|
||||
.flatMap { it.kotlinSourceSetsIncludingDefault }
|
||||
.flatMap { it.kotlinSourceSets }
|
||||
.toSet()
|
||||
|
||||
+3
-13
@@ -6,13 +6,11 @@
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.gradle.dsl.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
|
||||
import org.jetbrains.kotlin.gradle.utils.*
|
||||
import org.jetbrains.kotlin.gradle.utils.fileExtensionCasePermutations
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
import org.jetbrains.kotlin.tooling.core.closure
|
||||
import java.util.*
|
||||
import java.util.concurrent.Callable
|
||||
|
||||
internal fun KotlinCompilation<*>.isMain(): Boolean =
|
||||
@@ -21,14 +19,6 @@ internal fun KotlinCompilation<*>.isMain(): Boolean =
|
||||
internal fun KotlinCompilation<*>.isTest(): Boolean =
|
||||
name == KotlinCompilation.TEST_COMPILATION_NAME
|
||||
|
||||
/**
|
||||
* see https://youtrack.jetbrains.com/issue/KT-45412
|
||||
* Some implementations of [KotlinCompilation] are not including their [KotlinCompilation.defaultSourceSet] into [kotlinSourceSet]s
|
||||
* This helper function might disappear in the future, once the behaviour of those [KotlinCompilation] implementations is streamlined.
|
||||
* @return [KotlinCompilation.kotlinSourceSets] + [KotlinCompilation.defaultSourceSet]
|
||||
*/
|
||||
internal val KotlinCompilation<*>.kotlinSourceSetsIncludingDefault: Set<KotlinSourceSet> get() = kotlinSourceSets + defaultSourceSet
|
||||
|
||||
internal fun addCommonSourcesToKotlinCompileTask(
|
||||
project: Project,
|
||||
taskName: String,
|
||||
|
||||
+14
@@ -6,12 +6,26 @@
|
||||
@file:Suppress("PackageDirectoryMismatch") // Old package for compatibility
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
|
||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
|
||||
class KotlinJsCompilationFactory(
|
||||
override val target: KotlinOnlyTarget<KotlinJsCompilation>,
|
||||
) : KotlinCompilationFactory<KotlinJsCompilation> {
|
||||
override val itemClass: Class<KotlinJsCompilation>
|
||||
get() = KotlinJsCompilation::class.java
|
||||
|
||||
override fun defaultSourceSetName(compilationName: String): String {
|
||||
val classifier = if (target is KotlinJsTarget && target.irTarget != null)
|
||||
target.disambiguationClassifierInPlatform
|
||||
else target.disambiguationClassifier
|
||||
|
||||
return lowerCamelCaseName(
|
||||
classifier,
|
||||
compilationName
|
||||
)
|
||||
}
|
||||
|
||||
override fun create(name: String): KotlinJsCompilation = target.project.objects.newInstance(
|
||||
KotlinJsCompilation::class.java, JsCompilationDetails(target, name, getOrCreateDefaultSourceSet(name))
|
||||
)
|
||||
|
||||
+1
-3
@@ -7,18 +7,16 @@ package org.jetbrains.kotlin.gradle.targets.js.ir
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.JsIrCompilationDetails
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCompilationFactory
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.getOrCreateDefaultSourceSet
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
|
||||
class KotlinJsIrCompilationFactory(
|
||||
override val target: KotlinOnlyTarget<KotlinJsIrCompilation>
|
||||
override val target: KotlinJsIrTarget
|
||||
) : KotlinCompilationFactory<KotlinJsIrCompilation> {
|
||||
override val itemClass: Class<KotlinJsIrCompilation>
|
||||
get() = KotlinJsIrCompilation::class.java
|
||||
|
||||
override fun defaultSourceSetName(compilationName: String): String {
|
||||
val target = target as KotlinJsIrTarget
|
||||
return lowerCamelCaseName(
|
||||
if (target.mixedMode)
|
||||
target.disambiguationClassifierInPlatform
|
||||
|
||||
+3
-1
@@ -11,8 +11,8 @@ import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.hasKpmModel
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToKotlinOptions
|
||||
import org.jetbrains.kotlin.gradle.targets.metadata.KotlinMetadataTargetConfigurator
|
||||
import org.jetbrains.kotlin.gradle.targets.metadata.GradleKpmMetadataTargetConfigurator
|
||||
import org.jetbrains.kotlin.gradle.targets.metadata.KotlinMetadataTargetConfigurator
|
||||
|
||||
class KotlinMetadataTargetPreset(
|
||||
project: Project
|
||||
@@ -23,6 +23,8 @@ class KotlinMetadataTargetPreset(
|
||||
forTarget: KotlinMetadataTarget
|
||||
): KotlinCompilationFactory<AbstractKotlinCompilation<*>> =
|
||||
object : KotlinCompilationFactory<AbstractKotlinCompilation<*>> {
|
||||
override val target: KotlinTarget = forTarget
|
||||
|
||||
override val itemClass: Class<AbstractKotlinCompilation<*>>
|
||||
get() = AbstractKotlinCompilation::class.java
|
||||
|
||||
|
||||
+1
-2
@@ -24,7 +24,6 @@ import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinSharedNativeCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.kotlinSourceSetsIncludingDefault
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.withDependsOnClosure
|
||||
import org.jetbrains.kotlin.gradle.targets.native.internal.CInteropCommonizerTask.CInteropGist
|
||||
import org.jetbrains.kotlin.gradle.tasks.CInteropProcess
|
||||
@@ -242,7 +241,7 @@ private fun CInteropProcess.toGist(): CInteropGist {
|
||||
identifier = settings.identifier,
|
||||
konanTarget = konanTarget,
|
||||
// FIXME support cinterop with PM20
|
||||
sourceSets = project.provider { (settings.compilation as? KotlinCompilation<*>)?.kotlinSourceSetsIncludingDefault },
|
||||
sourceSets = project.provider { (settings.compilation as? KotlinCompilation<*>)?.kotlinSourceSets },
|
||||
libraryFile = outputFileProvider
|
||||
)
|
||||
}
|
||||
|
||||
+2
-15
@@ -6,29 +6,16 @@
|
||||
package org.jetbrains.kotlin.gradle.targets.native.internal
|
||||
|
||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinSharedNativeCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.kotlinSourceSetsIncludingDefault
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.withDependsOnClosure
|
||||
|
||||
internal fun KotlinSharedNativeCompilation.getImplicitlyDependingNativeCompilations(): Set<KotlinNativeCompilation> {
|
||||
val multiplatformExtension = project.multiplatformExtensionOrNull ?: return emptySet()
|
||||
val allParticipatingSourceSetsOfCompilation = allParticipatingSourceSets()
|
||||
val thisAllKotlinSourceSets = allKotlinSourceSets
|
||||
|
||||
return multiplatformExtension.targets
|
||||
.flatMap { target -> target.compilations }
|
||||
.filterIsInstance<KotlinNativeCompilation>()
|
||||
.filter { nativeCompilation -> nativeCompilation.allParticipatingSourceSets().containsAll(allParticipatingSourceSetsOfCompilation) }
|
||||
.filter { nativeCompilation -> nativeCompilation.allKotlinSourceSets.containsAll(thisAllKotlinSourceSets) }
|
||||
.toSet()
|
||||
}
|
||||
|
||||
/**
|
||||
* Some implementations of [KotlinCompilation] do not contain the default source set in
|
||||
* [KotlinCompilation.kotlinSourceSets] or [KotlinCompilation.allKotlinSourceSets]
|
||||
* see KT-45412
|
||||
*/
|
||||
private fun KotlinCompilation<*>.allParticipatingSourceSets(): Set<KotlinSourceSet> {
|
||||
return kotlinSourceSetsIncludingDefault.withDependsOnClosure
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user