[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.Category
|
||||||
import org.gradle.api.attributes.Usage
|
import org.gradle.api.attributes.Usage
|
||||||
import org.gradle.api.attributes.Usage.USAGE_ATTRIBUTE
|
import org.gradle.api.attributes.Usage.USAGE_ATTRIBUTE
|
||||||
import org.gradle.api.file.ConfigurableFileCollection
|
|
||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
import org.gradle.api.internal.artifacts.ArtifactAttributes
|
import org.gradle.api.internal.artifacts.ArtifactAttributes
|
||||||
import org.gradle.api.plugins.BasePlugin
|
import org.gradle.api.plugins.BasePlugin
|
||||||
import org.gradle.api.plugins.ExtensionAware
|
import org.gradle.api.plugins.ExtensionAware
|
||||||
import org.gradle.api.plugins.JavaBasePlugin
|
import org.gradle.api.plugins.JavaBasePlugin
|
||||||
import org.gradle.api.tasks.Delete
|
|
||||||
import org.gradle.api.tasks.TaskProvider
|
import org.gradle.api.tasks.TaskProvider
|
||||||
import org.gradle.api.tasks.bundling.Jar
|
import org.gradle.api.tasks.bundling.Jar
|
||||||
import org.gradle.api.tasks.bundling.Zip
|
import org.gradle.api.tasks.bundling.Zip
|
||||||
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
||||||
import org.gradle.language.jvm.tasks.ProcessResources
|
import org.gradle.language.jvm.tasks.ProcessResources
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
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.internal.reorderPluginClasspathDependencies
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsCompilerAttribute
|
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.locateOrRegisterTask
|
||||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||||
import org.jetbrains.kotlin.gradle.utils.*
|
import org.jetbrains.kotlin.gradle.utils.*
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
|
||||||
import java.util.concurrent.Callable
|
import java.util.concurrent.Callable
|
||||||
import kotlin.reflect.KMutableProperty1
|
import kotlin.reflect.KMutableProperty1
|
||||||
import kotlin.reflect.full.memberProperties
|
import kotlin.reflect.full.memberProperties
|
||||||
@@ -102,13 +98,9 @@ abstract class AbstractKotlinTargetConfigurator<KotlinTargetType : KotlinTarget>
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun configureSourceSet(target: KotlinTargetType) {
|
override fun configureSourceSet(target: KotlinTargetType) {
|
||||||
val project = target.project
|
|
||||||
|
|
||||||
target.compilations.all { compilation ->
|
target.compilations.all { compilation ->
|
||||||
if (createDefaultSourceSets) {
|
if (createDefaultSourceSets) {
|
||||||
project.kotlinExtension.sourceSets.maybeCreate(compilation.defaultSourceSetName).also { sourceSet ->
|
compilation.source(compilation.defaultSourceSet) // also adds dependencies, requires the configurations for target and source set to exist at this point
|
||||||
compilation.source(sourceSet) // 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>
|
private val KotlinMultiplatformExtension.platformCompilationSourceSets: Set<KotlinSourceSet>
|
||||||
get() = targets.filterNot { it is KotlinMetadataTarget }
|
get() = targets.filterNot { it is KotlinMetadataTarget }
|
||||||
.flatMap { target -> target.compilations }
|
.flatMap { target -> target.compilations }
|
||||||
.flatMap { it.kotlinSourceSetsIncludingDefault }
|
.flatMap { it.kotlinSourceSets }
|
||||||
.toSet()
|
.toSet()
|
||||||
|
|||||||
+3
-13
@@ -6,13 +6,11 @@
|
|||||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||||
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.jetbrains.kotlin.gradle.dsl.*
|
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||||
import org.jetbrains.kotlin.gradle.plugin.*
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
|
|
||||||
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
|
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 org.jetbrains.kotlin.tooling.core.closure
|
||||||
import java.util.*
|
|
||||||
import java.util.concurrent.Callable
|
import java.util.concurrent.Callable
|
||||||
|
|
||||||
internal fun KotlinCompilation<*>.isMain(): Boolean =
|
internal fun KotlinCompilation<*>.isMain(): Boolean =
|
||||||
@@ -21,14 +19,6 @@ internal fun KotlinCompilation<*>.isMain(): Boolean =
|
|||||||
internal fun KotlinCompilation<*>.isTest(): Boolean =
|
internal fun KotlinCompilation<*>.isTest(): Boolean =
|
||||||
name == KotlinCompilation.TEST_COMPILATION_NAME
|
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(
|
internal fun addCommonSourcesToKotlinCompileTask(
|
||||||
project: Project,
|
project: Project,
|
||||||
taskName: String,
|
taskName: String,
|
||||||
|
|||||||
+14
@@ -6,12 +6,26 @@
|
|||||||
@file:Suppress("PackageDirectoryMismatch") // Old package for compatibility
|
@file:Suppress("PackageDirectoryMismatch") // Old package for compatibility
|
||||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
|
|
||||||
class KotlinJsCompilationFactory(
|
class KotlinJsCompilationFactory(
|
||||||
override val target: KotlinOnlyTarget<KotlinJsCompilation>,
|
override val target: KotlinOnlyTarget<KotlinJsCompilation>,
|
||||||
) : KotlinCompilationFactory<KotlinJsCompilation> {
|
) : KotlinCompilationFactory<KotlinJsCompilation> {
|
||||||
override val itemClass: Class<KotlinJsCompilation>
|
override val itemClass: Class<KotlinJsCompilation>
|
||||||
get() = KotlinJsCompilation::class.java
|
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(
|
override fun create(name: String): KotlinJsCompilation = target.project.objects.newInstance(
|
||||||
KotlinJsCompilation::class.java, JsCompilationDetails(target, name, getOrCreateDefaultSourceSet(name))
|
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.JsIrCompilationDetails
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCompilationFactory
|
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.plugin.mpp.getOrCreateDefaultSourceSet
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
|
|
||||||
class KotlinJsIrCompilationFactory(
|
class KotlinJsIrCompilationFactory(
|
||||||
override val target: KotlinOnlyTarget<KotlinJsIrCompilation>
|
override val target: KotlinJsIrTarget
|
||||||
) : KotlinCompilationFactory<KotlinJsIrCompilation> {
|
) : KotlinCompilationFactory<KotlinJsIrCompilation> {
|
||||||
override val itemClass: Class<KotlinJsIrCompilation>
|
override val itemClass: Class<KotlinJsIrCompilation>
|
||||||
get() = KotlinJsIrCompilation::class.java
|
get() = KotlinJsIrCompilation::class.java
|
||||||
|
|
||||||
override fun defaultSourceSetName(compilationName: String): String {
|
override fun defaultSourceSetName(compilationName: String): String {
|
||||||
val target = target as KotlinJsIrTarget
|
|
||||||
return lowerCamelCaseName(
|
return lowerCamelCaseName(
|
||||||
if (target.mixedMode)
|
if (target.mixedMode)
|
||||||
target.disambiguationClassifierInPlatform
|
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.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.hasKpmModel
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.hasKpmModel
|
||||||
import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToKotlinOptions
|
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.GradleKpmMetadataTargetConfigurator
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.metadata.KotlinMetadataTargetConfigurator
|
||||||
|
|
||||||
class KotlinMetadataTargetPreset(
|
class KotlinMetadataTargetPreset(
|
||||||
project: Project
|
project: Project
|
||||||
@@ -23,6 +23,8 @@ class KotlinMetadataTargetPreset(
|
|||||||
forTarget: KotlinMetadataTarget
|
forTarget: KotlinMetadataTarget
|
||||||
): KotlinCompilationFactory<AbstractKotlinCompilation<*>> =
|
): KotlinCompilationFactory<AbstractKotlinCompilation<*>> =
|
||||||
object : KotlinCompilationFactory<AbstractKotlinCompilation<*>> {
|
object : KotlinCompilationFactory<AbstractKotlinCompilation<*>> {
|
||||||
|
override val target: KotlinTarget = forTarget
|
||||||
|
|
||||||
override val itemClass: Class<AbstractKotlinCompilation<*>>
|
override val itemClass: Class<AbstractKotlinCompilation<*>>
|
||||||
get() = AbstractKotlinCompilation::class.java
|
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.KotlinCompilation
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinSharedNativeCompilation
|
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.plugin.sources.withDependsOnClosure
|
||||||
import org.jetbrains.kotlin.gradle.targets.native.internal.CInteropCommonizerTask.CInteropGist
|
import org.jetbrains.kotlin.gradle.targets.native.internal.CInteropCommonizerTask.CInteropGist
|
||||||
import org.jetbrains.kotlin.gradle.tasks.CInteropProcess
|
import org.jetbrains.kotlin.gradle.tasks.CInteropProcess
|
||||||
@@ -242,7 +241,7 @@ private fun CInteropProcess.toGist(): CInteropGist {
|
|||||||
identifier = settings.identifier,
|
identifier = settings.identifier,
|
||||||
konanTarget = konanTarget,
|
konanTarget = konanTarget,
|
||||||
// FIXME support cinterop with PM20
|
// FIXME support cinterop with PM20
|
||||||
sourceSets = project.provider { (settings.compilation as? KotlinCompilation<*>)?.kotlinSourceSetsIncludingDefault },
|
sourceSets = project.provider { (settings.compilation as? KotlinCompilation<*>)?.kotlinSourceSets },
|
||||||
libraryFile = outputFileProvider
|
libraryFile = outputFileProvider
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-15
@@ -6,29 +6,16 @@
|
|||||||
package org.jetbrains.kotlin.gradle.targets.native.internal
|
package org.jetbrains.kotlin.gradle.targets.native.internal
|
||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
|
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.KotlinNativeCompilation
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinSharedNativeCompilation
|
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> {
|
internal fun KotlinSharedNativeCompilation.getImplicitlyDependingNativeCompilations(): Set<KotlinNativeCompilation> {
|
||||||
val multiplatformExtension = project.multiplatformExtensionOrNull ?: return emptySet()
|
val multiplatformExtension = project.multiplatformExtensionOrNull ?: return emptySet()
|
||||||
val allParticipatingSourceSetsOfCompilation = allParticipatingSourceSets()
|
val thisAllKotlinSourceSets = allKotlinSourceSets
|
||||||
|
|
||||||
return multiplatformExtension.targets
|
return multiplatformExtension.targets
|
||||||
.flatMap { target -> target.compilations }
|
.flatMap { target -> target.compilations }
|
||||||
.filterIsInstance<KotlinNativeCompilation>()
|
.filterIsInstance<KotlinNativeCompilation>()
|
||||||
.filter { nativeCompilation -> nativeCompilation.allParticipatingSourceSets().containsAll(allParticipatingSourceSetsOfCompilation) }
|
.filter { nativeCompilation -> nativeCompilation.allKotlinSourceSets.containsAll(thisAllKotlinSourceSets) }
|
||||||
.toSet()
|
.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