[kpm] Introduce Kpm* naming convention (1/2)
All Kpm owned entities shall be disambiguated by using the `Kpm` prefix E.g. MyEntity has to be called KpmMyEntity and a subclass is called KpmSpecialMyEntity
This commit is contained in:
committed by
Space
parent
49175f83aa
commit
71677ad455
+2
-2
@@ -39,7 +39,7 @@ interface KotlinCompilationData<T : KotlinCommonOptions> {
|
||||
}
|
||||
|
||||
interface KotlinVariantCompilationData<T : KotlinCommonOptions> : KotlinCompilationData<T> {
|
||||
override val owner: KotlinGradleVariant
|
||||
override val owner: KpmGradleVariant
|
||||
|
||||
override val project: Project get() = owner.containingModule.project
|
||||
|
||||
@@ -68,4 +68,4 @@ interface KotlinVariantCompilationData<T : KotlinCommonOptions> : KotlinCompilat
|
||||
get() = owner.platformType
|
||||
|
||||
override val ownModuleName: String
|
||||
}
|
||||
}
|
||||
|
||||
+15
-15
@@ -12,16 +12,16 @@ import org.gradle.api.Project
|
||||
import org.gradle.api.file.SourceDirectorySet
|
||||
import org.jetbrains.kotlin.gradle.plugin.HasKotlinDependencies
|
||||
import org.jetbrains.kotlin.gradle.plugin.LanguageSettingsBuilder
|
||||
import org.jetbrains.kotlin.project.model.KotlinModuleFragment
|
||||
import org.jetbrains.kotlin.project.model.KpmFragment
|
||||
import org.jetbrains.kotlin.project.model.utils.variantsContainingFragment
|
||||
import org.jetbrains.kotlin.tooling.core.MutableExtras
|
||||
import org.jetbrains.kotlin.tooling.core.closure
|
||||
import org.jetbrains.kotlin.tooling.core.withClosure
|
||||
|
||||
interface KotlinGradleFragment : KotlinModuleFragment, HasKotlinDependencies, KotlinFragmentDependencyConfigurations, Named {
|
||||
interface KpmGradleFragment : KpmFragment, HasKotlinDependencies, KotlinFragmentDependencyConfigurations, Named {
|
||||
override val kotlinSourceRoots: SourceDirectorySet
|
||||
|
||||
override val containingModule: KotlinGradleModule
|
||||
override val containingModule: KpmGradleModule
|
||||
|
||||
override fun getName(): String = fragmentName
|
||||
|
||||
@@ -32,11 +32,17 @@ interface KotlinGradleFragment : KotlinModuleFragment, HasKotlinDependencies, Ko
|
||||
|
||||
val extras: MutableExtras
|
||||
|
||||
fun refines(other: KotlinGradleFragment)
|
||||
fun refines(other: KpmGradleFragment)
|
||||
|
||||
fun refines(other: NamedDomainObjectProvider<KotlinGradleFragment>)
|
||||
fun refines(other: NamedDomainObjectProvider<KpmGradleFragment>)
|
||||
|
||||
override val directRefinesDependencies: Iterable<KotlinGradleFragment>
|
||||
override val declaredRefinesDependencies: Iterable<KpmGradleFragment>
|
||||
|
||||
override val refinesClosure: Set<KpmGradleFragment>
|
||||
get() = this.closure { it.declaredRefinesDependencies }
|
||||
|
||||
override val withRefinesClosure: Set<KpmGradleFragment>
|
||||
get() = this.withClosure { it.declaredRefinesDependencies }
|
||||
|
||||
override fun dependencies(configureClosure: Closure<Any?>) =
|
||||
dependencies f@{ project.configure(this@f, configureClosure) }
|
||||
@@ -63,14 +69,8 @@ interface KotlinGradleFragment : KotlinModuleFragment, HasKotlinDependencies, Ko
|
||||
listOf(transitiveApiConfiguration.name, transitiveImplementationConfiguration.name)
|
||||
}
|
||||
|
||||
val KotlinGradleFragment.withRefinesClosure: Set<KotlinGradleFragment>
|
||||
get() = this.withClosure { it.directRefinesDependencies }
|
||||
|
||||
val KotlinGradleFragment.refinesClosure: Set<KotlinGradleFragment>
|
||||
get() = this.closure { it.directRefinesDependencies }
|
||||
|
||||
val KotlinGradleFragment.path: String
|
||||
val KpmGradleFragment.path: String
|
||||
get() = "${project.path}/${containingModule.name}/$fragmentName"
|
||||
|
||||
val KotlinGradleFragment.containingVariants: Set<KotlinGradleVariant>
|
||||
get() = containingModule.variantsContainingFragment(this).map { it as KotlinGradleVariant }.toSet()
|
||||
val KpmGradleFragment.containingVariants: Set<KpmGradleVariant>
|
||||
get() = containingModule.variantsContainingFragment(this).map { it as KpmGradleVariant }.toSet()
|
||||
|
||||
+9
-9
@@ -12,18 +12,18 @@ import org.gradle.api.NamedDomainObjectSet
|
||||
import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.gradle.plugin.HasKotlinDependencies
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler
|
||||
import org.jetbrains.kotlin.project.model.KotlinModule
|
||||
import org.jetbrains.kotlin.project.model.KotlinModuleIdentifier
|
||||
import org.jetbrains.kotlin.project.model.KpmModule
|
||||
import org.jetbrains.kotlin.project.model.KpmModuleIdentifier
|
||||
import org.jetbrains.kotlin.project.model.KpmCompilerPlugin
|
||||
|
||||
interface KotlinGradleModule : KotlinModule, Named, HasKotlinDependencies {
|
||||
interface KpmGradleModule : KpmModule, Named, HasKotlinDependencies {
|
||||
val project: Project
|
||||
val moduleClassifier: String?
|
||||
|
||||
override val fragments: ExtensiblePolymorphicDomainObjectContainer<KotlinGradleFragment>
|
||||
override val fragments: ExtensiblePolymorphicDomainObjectContainer<KpmGradleFragment>
|
||||
|
||||
// TODO DSL & build script model: find a way to create a flexible typed view on fragments?
|
||||
override val variants: NamedDomainObjectSet<KotlinGradleVariant>
|
||||
override val variants: NamedDomainObjectSet<KpmGradleVariant>
|
||||
|
||||
override val plugins: Set<KpmCompilerPlugin>
|
||||
|
||||
@@ -34,7 +34,7 @@ interface KotlinGradleModule : KotlinModule, Named, HasKotlinDependencies {
|
||||
fun makePublic()
|
||||
|
||||
companion object {
|
||||
val KotlinModuleIdentifier.moduleName get() = moduleClassifier ?: MAIN_MODULE_NAME
|
||||
val KpmModuleIdentifier.moduleName get() = moduleClassifier ?: MAIN_MODULE_NAME
|
||||
|
||||
const val MAIN_MODULE_NAME = "main"
|
||||
const val TEST_MODULE_NAME = "test"
|
||||
@@ -47,10 +47,10 @@ interface KotlinGradleModule : KotlinModule, Named, HasKotlinDependencies {
|
||||
|
||||
// DSL
|
||||
|
||||
val common: KotlinGradleFragment
|
||||
get() = fragments.getByName(KotlinGradleFragment.COMMON_FRAGMENT_NAME)
|
||||
val common: KpmGradleFragment
|
||||
get() = fragments.getByName(KpmGradleFragment.COMMON_FRAGMENT_NAME)
|
||||
|
||||
fun common(configure: KotlinGradleFragment.() -> Unit) =
|
||||
fun common(configure: KpmGradleFragment.() -> Unit) =
|
||||
common.configure()
|
||||
|
||||
override fun dependencies(configure: KotlinDependencyHandler.() -> Unit) =
|
||||
|
||||
+4
-4
@@ -11,9 +11,9 @@ import org.gradle.api.file.FileCollection
|
||||
import org.gradle.api.publish.maven.MavenPublication
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationOutput
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.project.model.KotlinModuleVariant
|
||||
import org.jetbrains.kotlin.project.model.KpmVariant
|
||||
|
||||
interface KotlinGradleVariant : KotlinGradleFragment, KotlinModuleVariant {
|
||||
interface KpmGradleVariant : KpmGradleFragment, KpmVariant {
|
||||
val platformType: KotlinPlatformType
|
||||
|
||||
// TODO generalize with KotlinCompilation?
|
||||
@@ -33,7 +33,7 @@ interface KotlinGradleVariant : KotlinGradleFragment, KotlinModuleVariant {
|
||||
val gradleVariantNames: Set<String>
|
||||
}
|
||||
|
||||
interface KotlinGradleVariantWithRuntime : KotlinGradleVariant {
|
||||
interface KpmGradleVariantWithRuntime : KpmGradleVariant {
|
||||
// TODO deduplicate with KotlinCompilation?
|
||||
val runtimeDependenciesConfiguration: Configuration
|
||||
|
||||
@@ -45,7 +45,7 @@ interface KotlinGradleVariantWithRuntime : KotlinGradleVariant {
|
||||
val runtimeElementsConfiguration: Configuration
|
||||
}
|
||||
|
||||
interface KotlinNativeVariant : KotlinGradleVariant {
|
||||
interface KpmNativeVariant : KpmGradleVariant {
|
||||
override val platformType: KotlinPlatformType
|
||||
get() = KotlinPlatformType.native
|
||||
|
||||
|
||||
+4
-4
@@ -17,8 +17,8 @@ import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.deserialize
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.serialize
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPm20PluginWrapper
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinIosX64Variant
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinLinuxX64Variant
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmIosX64Variant
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmLinuxX64Variant
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.jvm
|
||||
import org.jetbrains.kotlin.tooling.core.extrasKeyOf
|
||||
@@ -49,8 +49,8 @@ class BackwardsCompatibilityDeserializationTest {
|
||||
kotlinExtension.mainAndTest {
|
||||
jvm
|
||||
val native = fragments.create("native")
|
||||
val linux = fragments.create<KotlinLinuxX64Variant>("linuxX64")
|
||||
val ios = fragments.create<KotlinIosX64Variant>("iosX64")
|
||||
val linux = fragments.create<KpmLinuxX64Variant>("linuxX64")
|
||||
val ios = fragments.create<KpmIosX64Variant>("iosX64")
|
||||
native.refines(common)
|
||||
linux.refines(native)
|
||||
ios.refines(native)
|
||||
|
||||
+3
-3
@@ -6,7 +6,7 @@
|
||||
package org.jetbrains.kotlin.gradle
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule
|
||||
import org.jetbrains.kotlin.gradle.tooling.BuildKotlinToolingMetadataTask
|
||||
import org.jetbrains.kotlin.gradle.tooling.BuildKotlinToolingMetadataTask.Companion.taskNameForKotlinModule
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
@@ -29,7 +29,7 @@ class KotlinToolingMetadataMppIT : BaseGradleIT() {
|
||||
|
||||
private val buildKotlinToolingMetadataTaskName get() =
|
||||
if (isKpmModelMappingEnabled) {
|
||||
taskNameForKotlinModule(KotlinGradleModule.MAIN_MODULE_NAME)
|
||||
taskNameForKotlinModule(KpmGradleModule.MAIN_MODULE_NAME)
|
||||
} else {
|
||||
BuildKotlinToolingMetadataTask.defaultTaskName
|
||||
}
|
||||
@@ -122,7 +122,7 @@ class KotlinToolingMetadataMppIT : BaseGradleIT() {
|
||||
|
||||
with(transformProjectWithPluginsDsl("kpm-multi-module-published")) {
|
||||
val expectedMetadataByModule = mapOf<String, KotlinToolingMetadata.() -> Unit>(
|
||||
KotlinGradleModule.MAIN_MODULE_NAME to {
|
||||
KpmGradleModule.MAIN_MODULE_NAME to {
|
||||
val nativeTarget = projectTargets.single { it.platformType == KotlinPlatformType.native.name }
|
||||
assertEquals(KonanTarget.LINUX_X64.name, nativeTarget.extras.native?.konanTarget)
|
||||
},
|
||||
|
||||
+3
-3
@@ -17,12 +17,12 @@ kotlin {
|
||||
// feel free to add more modules, variants and fragments
|
||||
mainAndTest {
|
||||
jvm
|
||||
val linuxX64 by fragments.creating(KotlinLinuxX64Variant::class)
|
||||
val linuxX64 by fragments.creating(KpmLinuxX64Variant::class)
|
||||
}
|
||||
|
||||
val secondaryModule by modules.creating {
|
||||
jvm
|
||||
val linuxArm64 by fragments.creating(KotlinLinuxArm64Variant::class)
|
||||
val linuxArm64 by fragments.creating(KpmLinuxArm64Variant::class)
|
||||
|
||||
makePublic()
|
||||
}
|
||||
@@ -34,7 +34,7 @@ kotlin {
|
||||
|
||||
val integrationTest by modules.creating {
|
||||
jvm
|
||||
val linuxX64 by fragments.creating(KotlinLinuxX64Variant::class)
|
||||
val linuxX64 by fragments.creating(KpmLinuxX64Variant::class)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -33,9 +33,9 @@ class KpmPluginWithTransientPluginOptions(
|
||||
)
|
||||
)
|
||||
|
||||
override fun forMetadataCompilation(fragment: KotlinModuleFragment) = pluginData()
|
||||
override fun forNativeMetadataCompilation(fragment: KotlinModuleFragment) = pluginData()
|
||||
override fun forPlatformCompilation(variant: KotlinModuleVariant) = pluginData()
|
||||
override fun forMetadataCompilation(fragment: KpmFragment) = pluginData()
|
||||
override fun forNativeMetadataCompilation(fragment: KpmFragment) = pluginData()
|
||||
override fun forPlatformCompilation(variant: KpmVariant) = pluginData()
|
||||
}
|
||||
|
||||
class GradleKpmPluginWithTransientPluginOptions : GradleKpmCompilerPlugin {
|
||||
|
||||
+2
-2
@@ -6,13 +6,13 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.android
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment
|
||||
import org.jetbrains.kotlin.tooling.core.extrasKeyOf
|
||||
import java.io.File
|
||||
import java.io.Serializable
|
||||
|
||||
internal val androidDslKey = extrasKeyOf<AndroidDsl>()
|
||||
val KotlinGradleFragment.androidDsl: AndroidDsl? get() = this.extras[androidDslKey]
|
||||
val KpmGradleFragment.androidDsl: AndroidDsl? get() = this.extras[androidDslKey]
|
||||
|
||||
class AndroidDsl : Serializable {
|
||||
var compileSdk = 0
|
||||
|
||||
+4
-4
@@ -20,8 +20,8 @@ import org.jetbrains.kotlin.gradle.kpm.external.createExternalJvmVariant
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
|
||||
|
||||
fun KotlinGradleModule.createKotlinAndroidVariant(androidVariant: BaseVariant) {
|
||||
val androidOutgoingArtifacts = FragmentArtifacts<KotlinJvmVariant> {
|
||||
fun KpmGradleModule.createKotlinAndroidVariant(androidVariant: BaseVariant) {
|
||||
val androidOutgoingArtifacts = FragmentArtifacts<KpmJvmVariant> {
|
||||
variants.create("classes") { variant ->
|
||||
variant.attributes.attribute(AndroidArtifacts.ARTIFACT_TYPE, AndroidArtifacts.ArtifactType.CLASSES_JAR.type)
|
||||
variant.artifact(project.provider { fragment.compilationOutputs.classesDirs.singleFile }) {
|
||||
@@ -37,7 +37,7 @@ fun KotlinGradleModule.createKotlinAndroidVariant(androidVariant: BaseVariant) {
|
||||
}
|
||||
}
|
||||
|
||||
val androidElementsAttributes = FragmentAttributes<KotlinJvmVariant> {
|
||||
val androidElementsAttributes = FragmentAttributes<KpmJvmVariant> {
|
||||
attribute(BuildTypeAttr.ATTRIBUTE, project.objects.named(androidVariant.buildType.name))
|
||||
attribute(TARGET_JVM_ENVIRONMENT_ATTRIBUTE, project.objects.named(TargetJvmEnvironment.ANDROID))
|
||||
}
|
||||
@@ -46,7 +46,7 @@ fun KotlinGradleModule.createKotlinAndroidVariant(androidVariant: BaseVariant) {
|
||||
"android${androidVariant.buildType.name.replaceFirstChar { it.uppercase() }}", KotlinJvmVariantConfig(
|
||||
/* Only swap out configuration that is used. Default setup shall still be applied */
|
||||
compileDependencies = (DefaultKotlinCompileDependenciesDefinition +
|
||||
FragmentAttributes<KotlinGradleFragment> {
|
||||
FragmentAttributes<KpmGradleFragment> {
|
||||
namedAttribute(TARGET_JVM_ENVIRONMENT_ATTRIBUTE, TargetJvmEnvironment.ANDROID)
|
||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.androidJvm)
|
||||
})
|
||||
|
||||
+4
-4
@@ -5,10 +5,10 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.android
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragmentInternal
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragmentInternal
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule
|
||||
|
||||
val KotlinGradleModule.androidCommon: KotlinGradleFragmentInternal
|
||||
val KpmGradleModule.androidCommon: KpmGradleFragmentInternal
|
||||
get() = (fragments.findByName("androidCommon") ?: fragments.create("androidCommon") { fragment ->
|
||||
fragment.refines(common)
|
||||
}) as KotlinGradleFragmentInternal
|
||||
}) as KpmGradleFragmentInternal
|
||||
|
||||
+2
-2
@@ -5,12 +5,12 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.android
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension
|
||||
|
||||
val KotlinPm20ProjectExtension.instrumentedTest
|
||||
get() = modules.maybeCreate("instrumentedTest")
|
||||
|
||||
fun KotlinPm20ProjectExtension.instrumentedTest(configure: KotlinGradleModule.() -> Unit) {
|
||||
fun KotlinPm20ProjectExtension.instrumentedTest(configure: KpmGradleModule.() -> Unit) {
|
||||
instrumentedTest.apply(configure)
|
||||
}
|
||||
|
||||
+1
-4
@@ -18,8 +18,6 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsSingleTargetPreset
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinWithJavaTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.DefaultKpmGradleProjectModelContainer
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleModuleFactory
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
||||
import org.jetbrains.kotlin.gradle.targets.js.calculateJsCompilerType
|
||||
@@ -27,7 +25,6 @@ import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl
|
||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrSingleTargetPreset
|
||||
import org.jetbrains.kotlin.gradle.tasks.CompileUsingKotlinDaemon
|
||||
import org.jetbrains.kotlin.gradle.tasks.withType
|
||||
import org.jetbrains.kotlin.gradle.utils.SingleWarningPerBuild
|
||||
import org.jetbrains.kotlin.gradle.utils.castIsolatedKotlinPluginClassLoaderAware
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
||||
@@ -304,4 +301,4 @@ enum class NativeCacheKind(val produce: String?, val outputKind: CompilerOutputK
|
||||
fun byCompilerArgument(argument: String): NativeCacheKind? =
|
||||
NativeCacheKind.values().firstOrNull { it.name.equals(argument, ignoreCase = true) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -22,8 +22,8 @@ import org.jetbrains.kotlin.gradle.execution.KotlinAggregateExecutionSource
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.hasKpmModel
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.kpmModules
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope
|
||||
@@ -134,8 +134,8 @@ internal fun configureStdlibDefaultDependency(project: Project) = with(project)
|
||||
private fun addStdlibToKpmProject(
|
||||
project: Project
|
||||
) {
|
||||
project.kpmModules.matching { it.name == KotlinGradleModule.MAIN_MODULE_NAME }.configureEach { main ->
|
||||
main.fragments.matching { it.name == KotlinGradleFragment.COMMON_FRAGMENT_NAME }.configureEach { common ->
|
||||
project.kpmModules.matching { it.name == KpmGradleModule.MAIN_MODULE_NAME }.configureEach { main ->
|
||||
main.fragments.matching { it.name == KpmGradleFragment.COMMON_FRAGMENT_NAME }.configureEach { common ->
|
||||
common.dependencies {
|
||||
api(project.kotlinDependency("kotlin-stdlib-common", project.topLevelExtension.coreLibrariesVersion))
|
||||
}
|
||||
|
||||
+3
-4
@@ -22,16 +22,15 @@ val KotlinPm20ProjectExtension.ideaKotlinProjectModelBuilder: IdeaKotlinProjectM
|
||||
get() = this.ideaKotlinProjectModelBuilder
|
||||
|
||||
@ExternalVariantApi
|
||||
fun KotlinGradleModule.createExternalJvmVariant(
|
||||
fun KpmGradleModule.createExternalJvmVariant(
|
||||
name: String,
|
||||
config: KotlinJvmVariantConfig
|
||||
): KotlinJvmVariant {
|
||||
): KpmJvmVariant {
|
||||
val variant = KotlinJvmVariantFactory(this, config).create(name)
|
||||
fragments.add(variant)
|
||||
return variant
|
||||
}
|
||||
|
||||
@ExternalVariantApi
|
||||
val KotlinGradleVariantInternal.compilationData
|
||||
val KpmGradleVariantInternal.compilationData
|
||||
get() = this.compilationData
|
||||
|
||||
|
||||
+6
-6
@@ -35,7 +35,7 @@ class IdeaKotlinPlatformDependencyResolutionDslHandle internal constructor(
|
||||
private val additionalDependencies = mutableListOf<IdeaKotlinDependencyResolver>()
|
||||
|
||||
@ExternalVariantPlatformDependencyResolutionDsl
|
||||
var platformResolutionAttributes: FragmentAttributes<KotlinGradleFragment>? = null
|
||||
var platformResolutionAttributes: FragmentAttributes<KpmGradleFragment>? = null
|
||||
|
||||
@ExternalVariantPlatformDependencyResolutionDsl
|
||||
class ArtifactViewDslHandle(
|
||||
@@ -43,10 +43,10 @@ class IdeaKotlinPlatformDependencyResolutionDslHandle internal constructor(
|
||||
var binaryType: String
|
||||
) {
|
||||
@ExternalVariantPlatformDependencyResolutionDsl
|
||||
var attributes: FragmentAttributes<KotlinGradleFragment> = FragmentAttributes { }
|
||||
var attributes: FragmentAttributes<KpmGradleFragment> = FragmentAttributes { }
|
||||
|
||||
@ExternalVariantPlatformDependencyResolutionDsl
|
||||
fun attributes(setAttributes: KotlinGradleFragmentConfigurationAttributesContext<KotlinGradleFragment>.() -> Unit) {
|
||||
fun attributes(setAttributes: KotlinGradleFragmentConfigurationAttributesContext<KpmGradleFragment>.() -> Unit) {
|
||||
attributes += FragmentAttributes(setAttributes)
|
||||
}
|
||||
}
|
||||
@@ -64,7 +64,7 @@ class IdeaKotlinPlatformDependencyResolutionDslHandle internal constructor(
|
||||
|
||||
@ExternalVariantPlatformDependencyResolutionDsl
|
||||
fun withPlatformResolutionAttributes(
|
||||
setAttributes: KotlinGradleFragmentConfigurationAttributesContext<KotlinGradleFragment>.() -> Unit
|
||||
setAttributes: KotlinGradleFragmentConfigurationAttributesContext<KpmGradleFragment>.() -> Unit
|
||||
) {
|
||||
val additionalAttributes = FragmentAttributes(setAttributes)
|
||||
this.platformResolutionAttributes = platformResolutionAttributes?.plus(additionalAttributes) ?: additionalAttributes
|
||||
@@ -76,7 +76,7 @@ class IdeaKotlinPlatformDependencyResolutionDslHandle internal constructor(
|
||||
}
|
||||
|
||||
@ExternalVariantPlatformDependencyResolutionDsl
|
||||
fun additionalDependencies(dependencyProvider: (KotlinGradleFragment) -> List<IdeaKotlinDependency>) {
|
||||
fun additionalDependencies(dependencyProvider: (KpmGradleFragment) -> List<IdeaKotlinDependency>) {
|
||||
this.additionalDependencies += IdeaKotlinDependencyResolver { fragment -> dependencyProvider(fragment).toSet() }
|
||||
}
|
||||
|
||||
@@ -130,7 +130,7 @@ class IdeaKotlinPlatformDependencyResolutionDslHandle internal constructor(
|
||||
return parentConstraint and this.constraint
|
||||
}
|
||||
|
||||
private fun buildPlatformResolutionAttributes(): FragmentAttributes<KotlinGradleFragment>? {
|
||||
private fun buildPlatformResolutionAttributes(): FragmentAttributes<KpmGradleFragment>? {
|
||||
val parentAttributes = parent?.buildPlatformResolutionAttributes() ?: return this.platformResolutionAttributes
|
||||
return parentAttributes + (this.platformResolutionAttributes ?: return parentAttributes)
|
||||
}
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.kpm.idea
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment
|
||||
|
||||
/**
|
||||
* An [IdeaKotlinDependencyEffect] is invoked last in the dependency resolution pipeline.
|
||||
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
* that the dependency resolution result is final.
|
||||
*/
|
||||
fun interface IdeaKotlinDependencyEffect {
|
||||
operator fun invoke(fragment: KotlinGradleFragment, dependencies: Set<IdeaKotlinDependency>)
|
||||
operator fun invoke(fragment: KpmGradleFragment, dependencies: Set<IdeaKotlinDependency>)
|
||||
}
|
||||
|
||||
fun IdeaKotlinDependencyResolver.withEffect(effect: IdeaKotlinDependencyEffect) = IdeaKotlinDependencyResolver { fragment ->
|
||||
|
||||
+2
-2
@@ -5,12 +5,12 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.kpm.idea
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.path
|
||||
|
||||
internal object IdeaKotlinDependencyLogger : IdeaKotlinDependencyEffect {
|
||||
override fun invoke(
|
||||
fragment: KotlinGradleFragment, dependencies: Set<IdeaKotlinDependency>
|
||||
fragment: KpmGradleFragment, dependencies: Set<IdeaKotlinDependency>
|
||||
) {
|
||||
val fragmentPathRegex = fragment.project.properties["idea.kotlin.log.dependencies"]?.toString() ?: return
|
||||
if (!fragment.path.matches(Regex(fragmentPathRegex))) return
|
||||
|
||||
+4
-4
@@ -5,13 +5,13 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.kpm.idea
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment
|
||||
|
||||
fun interface IdeaKotlinDependencyResolver {
|
||||
fun resolve(fragment: KotlinGradleFragment): Set<IdeaKotlinDependency>
|
||||
fun resolve(fragment: KpmGradleFragment): Set<IdeaKotlinDependency>
|
||||
|
||||
object Empty : IdeaKotlinDependencyResolver {
|
||||
override fun resolve(fragment: KotlinGradleFragment): Set<IdeaKotlinDependency> = emptySet()
|
||||
override fun resolve(fragment: KpmGradleFragment): Set<IdeaKotlinDependency> = emptySet()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ operator fun IdeaKotlinDependencyResolver.plus(
|
||||
private class CompositeIdeaKotlinDependencyResolver(
|
||||
val children: List<IdeaKotlinDependencyResolver>
|
||||
) : IdeaKotlinDependencyResolver {
|
||||
override fun resolve(fragment: KotlinGradleFragment): Set<IdeaKotlinDependency> {
|
||||
override fun resolve(fragment: KpmGradleFragment): Set<IdeaKotlinDependency> {
|
||||
return children.flatMap { child -> child.resolve(fragment) }.toSet()
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.kpm.idea
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment
|
||||
|
||||
/**
|
||||
* An [IdeaKotlinDependencyTransformer] will be invoked after all [IdeaKotlinDependencyResolver] finished.
|
||||
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
*/
|
||||
fun interface IdeaKotlinDependencyTransformer {
|
||||
fun transform(
|
||||
fragment: KotlinGradleFragment, dependencies: Set<IdeaKotlinDependency>
|
||||
fragment: KpmGradleFragment, dependencies: Set<IdeaKotlinDependency>
|
||||
): Set<IdeaKotlinDependency>
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ private class CompositeIdeaKotlinDependencyTransformer(
|
||||
val transformers: List<IdeaKotlinDependencyTransformer>
|
||||
) : IdeaKotlinDependencyTransformer {
|
||||
override fun transform(
|
||||
fragment: KotlinGradleFragment, dependencies: Set<IdeaKotlinDependency>
|
||||
fragment: KpmGradleFragment, dependencies: Set<IdeaKotlinDependency>
|
||||
): Set<IdeaKotlinDependency> {
|
||||
return transformers.fold(dependencies) { currentDependencies, transformer -> transformer.transform(fragment, currentDependencies) }
|
||||
}
|
||||
|
||||
+4
-4
@@ -8,12 +8,12 @@ package org.jetbrains.kotlin.gradle.kpm.idea
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
|
||||
import org.jetbrains.kotlin.tooling.core.emptyExtras
|
||||
|
||||
internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinFragment(fragment: KotlinGradleFragment): IdeaKotlinFragment {
|
||||
return if (fragment is KotlinGradleVariant) buildIdeaKotlinVariant(fragment)
|
||||
internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinFragment(fragment: KpmGradleFragment): IdeaKotlinFragment {
|
||||
return if (fragment is KpmGradleVariant) buildIdeaKotlinVariant(fragment)
|
||||
else buildIdeaKotlinFragment(fragment)
|
||||
}
|
||||
|
||||
private fun IdeaKotlinProjectModelBuildingContext.buildIdeaKotlinFragment(fragment: KotlinGradleFragment): IdeaKotlinFragment {
|
||||
private fun IdeaKotlinProjectModelBuildingContext.buildIdeaKotlinFragment(fragment: KpmGradleFragment): IdeaKotlinFragment {
|
||||
return IdeaKotlinFragmentImpl(
|
||||
coordinates = IdeaKotlinFragmentCoordinates(fragment),
|
||||
platforms = fragment.containingVariants.map { variant -> IdeaKotlinPlatform(variant) }.toSet(),
|
||||
@@ -25,7 +25,7 @@ private fun IdeaKotlinProjectModelBuildingContext.buildIdeaKotlinFragment(fragme
|
||||
)
|
||||
}
|
||||
|
||||
private fun IdeaKotlinProjectModelBuildingContext.buildIdeaKotlinVariant(variant: KotlinGradleVariant): IdeaKotlinVariant {
|
||||
private fun IdeaKotlinProjectModelBuildingContext.buildIdeaKotlinVariant(variant: KpmGradleVariant): IdeaKotlinVariant {
|
||||
return IdeaKotlinVariantImpl(
|
||||
fragment = buildIdeaKotlinFragment(variant),
|
||||
platform = IdeaKotlinPlatform(variant),
|
||||
|
||||
+2
-2
@@ -5,9 +5,9 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.kpm.idea
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment
|
||||
|
||||
internal fun IdeaKotlinFragmentCoordinates(fragment: KotlinGradleFragment): IdeaKotlinFragmentCoordinates {
|
||||
internal fun IdeaKotlinFragmentCoordinates(fragment: KpmGradleFragment): IdeaKotlinFragmentCoordinates {
|
||||
return IdeaKotlinFragmentCoordinatesImpl(
|
||||
module = IdeaKotlinModuleCoordinates(fragment.containingModule),
|
||||
fragmentName = fragment.name
|
||||
|
||||
+4
-4
@@ -8,22 +8,22 @@ package org.jetbrains.kotlin.gradle.kpm.idea
|
||||
import org.gradle.api.artifacts.component.ProjectComponentIdentifier
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.FragmentGranularMetadataResolverFactory
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleModule.Companion.moduleName
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule.Companion.moduleName
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.currentBuildId
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toModuleDependency
|
||||
|
||||
internal class IdeaKotlinGranularFragmentDependencyResolver(
|
||||
private val fragmentGranularMetadataResolverFactory: FragmentGranularMetadataResolverFactory
|
||||
) : IdeaKotlinDependencyResolver {
|
||||
override fun resolve(fragment: KotlinGradleFragment): Set<IdeaKotlinDependency> {
|
||||
override fun resolve(fragment: KpmGradleFragment): Set<IdeaKotlinDependency> {
|
||||
return fragmentGranularMetadataResolverFactory.getOrCreate(fragment).resolutions
|
||||
.filterIsInstance<ChooseVisibleSourceSets>()
|
||||
.flatMap { resolution -> resolve(fragment, resolution) }
|
||||
.toSet()
|
||||
}
|
||||
|
||||
private fun resolve(fragment: KotlinGradleFragment, resolution: ChooseVisibleSourceSets): Iterable<IdeaKotlinDependency> {
|
||||
private fun resolve(fragment: KpmGradleFragment, resolution: ChooseVisibleSourceSets): Iterable<IdeaKotlinDependency> {
|
||||
val gradleProjectIdentifier = resolution.dependency.id as? ProjectComponentIdentifier ?: return emptyList()
|
||||
val kotlinModuleIdentifier = resolution.dependency.toModuleDependency().moduleIdentifier
|
||||
return resolution.allVisibleSourceSetNames.map { visibleFragmentName ->
|
||||
|
||||
+4
-4
@@ -10,22 +10,22 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.Choos
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets.MetadataProvider.JarMetadataProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets.MetadataProvider.ProjectMetadataProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.FragmentGranularMetadataResolverFactory
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleModule.Companion.moduleName
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule.Companion.moduleName
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toModuleDependency
|
||||
import org.jetbrains.kotlin.gradle.utils.withTemporaryDirectory
|
||||
|
||||
internal class IdeaKotlinMetadataBinaryDependencyResolver(
|
||||
private val fragmentGranularMetadataResolverFactory: FragmentGranularMetadataResolverFactory
|
||||
) : IdeaKotlinDependencyResolver {
|
||||
override fun resolve(fragment: KotlinGradleFragment): Set<IdeaKotlinDependency> {
|
||||
override fun resolve(fragment: KpmGradleFragment): Set<IdeaKotlinDependency> {
|
||||
return fragmentGranularMetadataResolverFactory.getOrCreate(fragment).resolutions
|
||||
.filterIsInstance<ChooseVisibleSourceSets>()
|
||||
.flatMap { resolution -> resolve(fragment, resolution) }
|
||||
.toSet()
|
||||
}
|
||||
|
||||
private fun resolve(fragment: KotlinGradleFragment, resolution: ChooseVisibleSourceSets): Iterable<IdeaKotlinDependency> {
|
||||
private fun resolve(fragment: KpmGradleFragment, resolution: ChooseVisibleSourceSets): Iterable<IdeaKotlinDependency> {
|
||||
val gradleModuleIdentifier = resolution.dependency.id as? ModuleComponentIdentifier ?: return emptySet()
|
||||
val kotlinModuleIdentifier = resolution.dependency.toModuleDependency().moduleIdentifier
|
||||
|
||||
|
||||
+3
-3
@@ -5,18 +5,18 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.kpm.idea
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.path
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty
|
||||
|
||||
internal object IdeaKotlinMissingFileDependencyLogger : IdeaKotlinDependencyEffect {
|
||||
override fun invoke(fragment: KotlinGradleFragment, dependencies: Set<IdeaKotlinDependency>) {
|
||||
override fun invoke(fragment: KpmGradleFragment, dependencies: Set<IdeaKotlinDependency>) {
|
||||
dependencies.filterIsInstance<IdeaKotlinResolvedBinaryDependency>()
|
||||
.filter { !it.binaryFile.exists() }
|
||||
.ifNotEmpty { fragment.project.logger.warn(buildWarningMessage(fragment, this)) }
|
||||
}
|
||||
|
||||
private fun buildWarningMessage(fragment: KotlinGradleFragment, dependencies: List<IdeaKotlinResolvedBinaryDependency>) = buildString {
|
||||
private fun buildWarningMessage(fragment: KpmGradleFragment, dependencies: List<IdeaKotlinResolvedBinaryDependency>) = buildString {
|
||||
append("[WARNING] ${fragment.path}: Missing dependency files")
|
||||
dependencies.forEach { dependency ->
|
||||
appendLine(dependency.binaryFile)
|
||||
|
||||
+2
-2
@@ -5,9 +5,9 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.kpm.idea
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule
|
||||
|
||||
internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinModule(module: KotlinGradleModule): IdeaKotlinModule {
|
||||
internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinModule(module: KpmGradleModule): IdeaKotlinModule {
|
||||
return IdeaKotlinModuleImpl(
|
||||
coordinates = IdeaKotlinModuleCoordinates(module),
|
||||
fragments = module.fragments.toList().map { fragment -> IdeaKotlinFragment(fragment) }
|
||||
|
||||
+2
-2
@@ -5,10 +5,10 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.kpm.idea
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.currentBuildId
|
||||
|
||||
internal fun IdeaKotlinModuleCoordinates(module: KotlinGradleModule): IdeaKotlinModuleCoordinates {
|
||||
internal fun IdeaKotlinModuleCoordinates(module: KpmGradleModule): IdeaKotlinModuleCoordinates {
|
||||
return IdeaKotlinModuleCoordinatesImpl(
|
||||
buildId = module.project.currentBuildId().name,
|
||||
projectPath = module.project.path,
|
||||
|
||||
+4
-4
@@ -10,8 +10,8 @@ import org.jetbrains.kotlin.commonizer.KonanDistribution
|
||||
import org.jetbrains.kotlin.commonizer.platformLibsDir
|
||||
import org.jetbrains.kotlin.compilerRunner.konanHome
|
||||
import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinNativeVariantInternal
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmNativeVariantInternal
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.containingVariants
|
||||
import org.jetbrains.kotlin.library.ToolingSingleFileKlibResolveStrategy
|
||||
import org.jetbrains.kotlin.library.resolveSingleFileKlib
|
||||
@@ -20,9 +20,9 @@ import org.jetbrains.kotlin.library.uniqueName
|
||||
import java.io.File
|
||||
|
||||
internal class IdeaKotlinNativePlatformDependencyResolver : IdeaKotlinDependencyResolver {
|
||||
override fun resolve(fragment: KotlinGradleFragment): Set<IdeaKotlinDependency> {
|
||||
override fun resolve(fragment: KpmGradleFragment): Set<IdeaKotlinDependency> {
|
||||
val konanTargets = fragment.containingVariants
|
||||
.map { it as? KotlinNativeVariantInternal ?: return emptySet() }
|
||||
.map { it as? KpmNativeVariantInternal ?: return emptySet() }
|
||||
.map { it.konanTarget }
|
||||
.toSet()
|
||||
|
||||
|
||||
+2
-2
@@ -9,10 +9,10 @@ import org.jetbrains.kotlin.commonizer.KonanDistribution
|
||||
import org.jetbrains.kotlin.commonizer.stdlib
|
||||
import org.jetbrains.kotlin.compilerRunner.konanHome
|
||||
import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment
|
||||
|
||||
internal object IdeaKotlinNativeStdlibDependencyResolver : IdeaKotlinDependencyResolver {
|
||||
override fun resolve(fragment: KotlinGradleFragment): Set<IdeaKotlinDependency> {
|
||||
override fun resolve(fragment: KpmGradleFragment): Set<IdeaKotlinDependency> {
|
||||
return setOf(
|
||||
IdeaKotlinResolvedBinaryDependencyImpl(
|
||||
binaryType = IdeaKotlinDependency.CLASSPATH_BINARY_TYPE,
|
||||
|
||||
+2
-2
@@ -9,13 +9,13 @@ import org.gradle.api.artifacts.component.ModuleComponentIdentifier
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.KeepOriginalDependency
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.FragmentGranularMetadataResolverFactory
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.resolvableMetadataConfigurationName
|
||||
|
||||
internal class IdeaKotlinOriginalMetadataDependencyResolver(
|
||||
private val fragmentGranularMetadataResolverFactory: FragmentGranularMetadataResolverFactory
|
||||
) : IdeaKotlinDependencyResolver {
|
||||
override fun resolve(fragment: KotlinGradleFragment): Set<IdeaKotlinDependency> {
|
||||
override fun resolve(fragment: KpmGradleFragment): Set<IdeaKotlinDependency> {
|
||||
val dependencyIdentifiers = fragmentGranularMetadataResolverFactory.getOrCreate(fragment).resolutions
|
||||
.filterIsInstance<KeepOriginalDependency>()
|
||||
.mapNotNull { resolution -> resolution.dependency.id as? ModuleComponentIdentifier }
|
||||
|
||||
+3
-3
@@ -14,10 +14,10 @@ import org.jetbrains.kotlin.konan.target.HostManager
|
||||
|
||||
@Suppress("unused")
|
||||
/* Receiver acts as scope, or key to that function */
|
||||
internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinPlatform(variant: KotlinGradleVariant): IdeaKotlinPlatform {
|
||||
internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinPlatform(variant: KpmGradleVariant): IdeaKotlinPlatform {
|
||||
when (variant) {
|
||||
is KotlinJvmVariant -> return IdeaKotlinPlatform.jvm(variant.compilationData.kotlinOptions.jvmTarget ?: JvmTarget.DEFAULT.name)
|
||||
is KotlinNativeVariantInternal -> return IdeaKotlinPlatform.native(variant.konanTarget.name)
|
||||
is KpmJvmVariant -> return IdeaKotlinPlatform.jvm(variant.compilationData.kotlinOptions.jvmTarget ?: JvmTarget.DEFAULT.name)
|
||||
is KpmNativeVariantInternal -> return IdeaKotlinPlatform.native(variant.konanTarget.name)
|
||||
is LegacyMappedVariant -> when (val compilation = variant.compilation) {
|
||||
is KotlinJvmCompilation -> return IdeaKotlinPlatform.jvm(compilation.kotlinOptions.jvmTarget ?: JvmTarget.DEFAULT.name)
|
||||
is KotlinJvmAndroidCompilation -> return IdeaKotlinPlatform.jvm(compilation.kotlinOptions.jvmTarget ?: JvmTarget.DEFAULT.name)
|
||||
|
||||
+11
-11
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.FragmentAttributes
|
||||
* Resolves 'platform' binary dependencies for a given variant or fragment.
|
||||
* 'platform' binaries refer to actually linkable/executable artifacts (like .class files bundled as jar, or linkable native klibs)
|
||||
* This resolver is capable of resolving those artifacts even for non-variant "platform-like" fragments.
|
||||
* It will then use the [KotlinGradleFragment.transitiveApiConfiguration] and [KotlinGradleFragment.transitiveImplementationConfiguratione]'s
|
||||
* It will then use the [KpmGradleFragment.transitiveApiConfiguration] and [KpmGradleFragment.transitiveImplementationConfiguratione]'s
|
||||
* to resolve those binaries. See [IdeaKotlinPlatformDependencyResolver.ArtifactResolution.PlatformFragment]
|
||||
*/
|
||||
class IdeaKotlinPlatformDependencyResolver(
|
||||
@@ -30,28 +30,28 @@ class IdeaKotlinPlatformDependencyResolver(
|
||||
|
||||
sealed class ArtifactResolution {
|
||||
/**
|
||||
* Resolve the artifacts from a [KotlinGradleVariant] using its [KotlinGradleVariant.compileDependenciesConfiguration],
|
||||
* Resolve the artifacts from a [KpmGradleVariant] using its [KpmGradleVariant.compileDependenciesConfiguration],
|
||||
* which already knows how to resolve platform artifacts.
|
||||
* @param artifactViewAttributes: Additional attributes that will be used to create an [ArtifactView] for resolving the dependencies.
|
||||
*/
|
||||
data class Variant(
|
||||
internal val artifactViewAttributes: FragmentAttributes<KotlinGradleFragment> = FragmentAttributes { }
|
||||
internal val artifactViewAttributes: FragmentAttributes<KpmGradleFragment> = FragmentAttributes { }
|
||||
) : ArtifactResolution()
|
||||
|
||||
/**
|
||||
* Capable of resolving artifacts from a plain [KotlinGradleFragment] which does not have to implement [KotlinGradleVariant].
|
||||
* Capable of resolving artifacts from a plain [KpmGradleFragment] which does not have to implement [KpmGradleVariant].
|
||||
* Such fragments are called 'platform-like', since they still resolve the linkable platform dependencies.
|
||||
* @param platformResolutionAttributes: Attributes describing how to resolve platform artifacts in general.
|
||||
* @param artifactViewAttributes: Additional attributes that will be used to create an [ArtifactView] for
|
||||
* resolving the dependencies
|
||||
*/
|
||||
data class PlatformFragment(
|
||||
internal val platformResolutionAttributes: FragmentAttributes<KotlinGradleFragment>,
|
||||
internal val artifactViewAttributes: FragmentAttributes<KotlinGradleFragment> = FragmentAttributes { },
|
||||
internal val platformResolutionAttributes: FragmentAttributes<KpmGradleFragment>,
|
||||
internal val artifactViewAttributes: FragmentAttributes<KpmGradleFragment> = FragmentAttributes { },
|
||||
) : ArtifactResolution()
|
||||
}
|
||||
|
||||
override fun resolve(fragment: KotlinGradleFragment): Set<IdeaKotlinBinaryDependency> {
|
||||
override fun resolve(fragment: KpmGradleFragment): Set<IdeaKotlinBinaryDependency> {
|
||||
val artifacts = artifactResolution.createArtifactView(fragment)?.artifacts ?: return emptySet()
|
||||
|
||||
val unresolvedDependencies = artifacts.failures
|
||||
@@ -87,15 +87,15 @@ private val ComponentIdentifier.ideaKotlinBinaryCoordinates: IdeaKotlinBinaryCoo
|
||||
else -> null
|
||||
}
|
||||
|
||||
private fun ArtifactResolution.createArtifactView(fragment: KotlinGradleFragment): ArtifactView? {
|
||||
private fun ArtifactResolution.createArtifactView(fragment: KpmGradleFragment): ArtifactView? {
|
||||
return when (this) {
|
||||
is ArtifactResolution.Variant -> createVariantArtifactView(fragment)
|
||||
is ArtifactResolution.PlatformFragment -> createPlatformFragmentArtifactView(fragment)
|
||||
}
|
||||
}
|
||||
|
||||
private fun ArtifactResolution.Variant.createVariantArtifactView(fragment: KotlinGradleFragment): ArtifactView? {
|
||||
if (fragment !is KotlinGradleVariant) return null
|
||||
private fun ArtifactResolution.Variant.createVariantArtifactView(fragment: KpmGradleFragment): ArtifactView? {
|
||||
if (fragment !is KpmGradleVariant) return null
|
||||
return fragment.compileDependenciesConfiguration.incoming.artifactView { view ->
|
||||
view.isLenient = true
|
||||
view.componentFilter { id -> id !is ProjectComponentIdentifier }
|
||||
@@ -103,7 +103,7 @@ private fun ArtifactResolution.Variant.createVariantArtifactView(fragment: Kotli
|
||||
}
|
||||
}
|
||||
|
||||
private fun ArtifactResolution.PlatformFragment.createPlatformFragmentArtifactView(fragment: KotlinGradleFragment): ArtifactView {
|
||||
private fun ArtifactResolution.PlatformFragment.createPlatformFragmentArtifactView(fragment: KpmGradleFragment): ArtifactView {
|
||||
val fragmentCompileDependencies = fragment.project.configurations.detachedConfiguration()
|
||||
|
||||
fragmentCompileDependencies.dependencies.addAll(
|
||||
|
||||
+4
-4
@@ -7,10 +7,10 @@ import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinProjectModelBuilder.FragmentConstraint
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType.native
|
||||
import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.containingVariants
|
||||
import org.jetbrains.kotlin.project.model.KotlinModuleVariant
|
||||
import org.jetbrains.kotlin.project.model.KpmVariant
|
||||
import java.io.File
|
||||
|
||||
internal interface IdeaKotlinProjectModelBuildingContext {
|
||||
@@ -94,11 +94,11 @@ interface IdeaKotlinProjectModelBuilder {
|
||||
* Used for scoping [IdeaKotlinDependencyResolver], [IdeaKotlinDependencyTransformer] and [IdeaKotlinDependencyEffect]
|
||||
*/
|
||||
fun interface FragmentConstraint {
|
||||
operator fun invoke(fragment: KotlinGradleFragment): Boolean
|
||||
operator fun invoke(fragment: KpmGradleFragment): Boolean
|
||||
|
||||
companion object {
|
||||
val unconstrained = FragmentConstraint { true }
|
||||
val isVariant = FragmentConstraint { fragment -> fragment is KotlinModuleVariant }
|
||||
val isVariant = FragmentConstraint { fragment -> fragment is KpmVariant }
|
||||
val isNative = FragmentConstraint { fragment -> fragment.containingVariants.run { any() && all { it.platformType == native } } }
|
||||
}
|
||||
}
|
||||
|
||||
+3
-4
@@ -5,14 +5,13 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.kpm.idea
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.refinesClosure
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment
|
||||
|
||||
internal object IdeaKotlinRefinesDependencyResolver : IdeaKotlinDependencyResolver {
|
||||
override fun resolve(fragment: KotlinGradleFragment): Set<IdeaKotlinDependency> = fragment.refinesClosure
|
||||
override fun resolve(fragment: KpmGradleFragment): Set<IdeaKotlinDependency> = fragment.refinesClosure
|
||||
.map { refinesDependencyFragment -> createRefinesDependency(refinesDependencyFragment) }.toSet()
|
||||
|
||||
private fun createRefinesDependency(fragment: KotlinGradleFragment): IdeaKotlinDependency {
|
||||
private fun createRefinesDependency(fragment: KpmGradleFragment): IdeaKotlinDependency {
|
||||
return IdeaKotlinFragmentDependencyImpl(
|
||||
type = IdeaKotlinFragmentDependency.Type.Refines,
|
||||
coordinates = IdeaKotlinFragmentCoordinates(fragment)
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.kpm.idea
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.containingVariants
|
||||
|
||||
internal object IdeaKotlinSinglePlatformStdlibCommonFilter : IdeaKotlinDependencyTransformer {
|
||||
@@ -13,7 +13,7 @@ internal object IdeaKotlinSinglePlatformStdlibCommonFilter : IdeaKotlinDependenc
|
||||
private val stdlibCoordinatesModules = setOf("kotlin-stdlib-common", "kotlin-test-common", "kotlin-test-annotations-common")
|
||||
|
||||
override fun transform(
|
||||
fragment: KotlinGradleFragment,
|
||||
fragment: KpmGradleFragment,
|
||||
dependencies: Set<IdeaKotlinDependency>
|
||||
): Set<IdeaKotlinDependency> {
|
||||
val platforms = fragment.containingVariants.map { it.platformType }.toSet()
|
||||
|
||||
+4
-4
@@ -14,13 +14,13 @@ import org.gradle.api.component.Artifact
|
||||
import org.gradle.jvm.JvmLibrary
|
||||
import org.gradle.language.base.artifact.SourcesArtifact
|
||||
import org.gradle.language.java.artifact.JavadocArtifact
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleVariant
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleVariant
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.resolvableMetadataConfigurationName
|
||||
|
||||
internal class IdeaKotlinSourcesAndDocumentationResolver : IdeaKotlinDependencyResolver {
|
||||
override fun resolve(fragment: KotlinGradleFragment): Set<IdeaKotlinDependency> {
|
||||
if (fragment is KotlinGradleVariant) {
|
||||
override fun resolve(fragment: KpmGradleFragment): Set<IdeaKotlinDependency> {
|
||||
if (fragment is KpmGradleVariant) {
|
||||
return resolve(fragment.project, fragment.compileDependenciesConfiguration)
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -5,11 +5,11 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.kpm.idea
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleFragment
|
||||
|
||||
internal object IdeaKotlinUnusedSourcesAndDocumentationFilter : IdeaKotlinDependencyTransformer {
|
||||
override fun transform(
|
||||
fragment: KotlinGradleFragment, dependencies: Set<IdeaKotlinDependency>
|
||||
fragment: KpmGradleFragment, dependencies: Set<IdeaKotlinDependency>
|
||||
): Set<IdeaKotlinDependency> {
|
||||
val sourcesAndDocumentationDependencies = dependencies
|
||||
.filterIsInstance<IdeaKotlinResolvedBinaryDependency>()
|
||||
|
||||
+2
-2
@@ -432,7 +432,7 @@ internal open class MetadataMappedCompilationDetails<T : KotlinCommonOptions>(
|
||||
}
|
||||
|
||||
internal open class VariantMappedCompilationDetails<T : KotlinCommonOptions>(
|
||||
open val variant: KotlinGradleVariantInternal,
|
||||
open val variant: KpmGradleVariantInternal,
|
||||
override val target: KotlinTarget
|
||||
) : CompilationDetails<T> {
|
||||
|
||||
@@ -469,7 +469,7 @@ internal open class VariantMappedCompilationDetails<T : KotlinCommonOptions>(
|
||||
}
|
||||
|
||||
internal open class VariantMappedCompilationDetailsWithRuntime<T : KotlinCommonOptions>(
|
||||
override val variant: KotlinGradleVariantWithRuntimeInternal,
|
||||
override val variant: KpmGradleVariantWithRuntimeInternal,
|
||||
target: KotlinTarget
|
||||
) : VariantMappedCompilationDetails<T>(variant, target),
|
||||
CompilationDetailsWithRuntime<T> {
|
||||
|
||||
+2
-2
@@ -13,7 +13,7 @@ import org.gradle.api.artifacts.ProjectDependency
|
||||
import org.jetbrains.kotlin.gradle.plugin.HasKotlinDependencies
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.ComputedCapability
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependency
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.directoryNpmDependency
|
||||
@@ -74,7 +74,7 @@ class DefaultKotlinDependencyHandler(
|
||||
dependencyNotation: Any
|
||||
): Dependency? {
|
||||
val dependency = when (dependencyNotation) {
|
||||
is KotlinGradleModule -> project.dependencies.create(dependencyNotation.project).apply {
|
||||
is KpmGradleModule -> project.dependencies.create(dependencyNotation.project).apply {
|
||||
(this as ModuleDependency).capabilities {
|
||||
if (dependencyNotation.moduleClassifier != null) {
|
||||
it.requireCapability(ComputedCapability.fromModule(dependencyNotation))
|
||||
|
||||
+37
-37
@@ -26,33 +26,33 @@ import org.jetbrains.kotlin.gradle.utils.getOrPutRootProjectProperty
|
||||
import org.jetbrains.kotlin.project.model.*
|
||||
|
||||
class ProjectStructureMetadataModuleBuilder {
|
||||
private val modulesCache = mutableMapOf<KotlinModuleIdentifier, KotlinModule>()
|
||||
private val modulesCache = mutableMapOf<KpmModuleIdentifier, KpmModule>()
|
||||
|
||||
private fun buildModuleFromProjectStructureMetadata(
|
||||
component: ResolvedComponentResult,
|
||||
metadata: KotlinProjectStructureMetadata
|
||||
): KotlinModule {
|
||||
val moduleData = BasicKotlinModule(component.toSingleModuleIdentifier()).apply {
|
||||
): KpmModule {
|
||||
val moduleData = KpmBasicModule(component.toSingleModuleIdentifier()).apply {
|
||||
metadata.sourceSetNamesByVariantName.keys.forEach { variantName ->
|
||||
fragments.add(BasicKotlinModuleVariant(this@apply, variantName))
|
||||
fragments.add(KpmBasicVariant(this@apply, variantName))
|
||||
}
|
||||
fun fragment(sourceSetName: String): BasicKotlinModuleFragment {
|
||||
fun fragment(sourceSetName: String): KpmBasicFragment {
|
||||
if (fragments.none { it.fragmentName == sourceSetName })
|
||||
fragments.add(BasicKotlinModuleFragment(this@apply, sourceSetName))
|
||||
fragments.add(KpmBasicFragment(this@apply, sourceSetName))
|
||||
return fragmentByName(sourceSetName)
|
||||
}
|
||||
metadata.sourceSetNamesByVariantName.forEach { (variantName, sourceSets) ->
|
||||
val variant = fragmentByName(variantName)
|
||||
sourceSets.forEach { sourceSetName ->
|
||||
variant.directRefinesDependencies.add(fragment(sourceSetName))
|
||||
variant.declaredRefinesDependencies.add(fragment(sourceSetName))
|
||||
}
|
||||
}
|
||||
metadata.sourceSetModuleDependencies.forEach { (sourceSetName, dependencies) ->
|
||||
val fragment = fragment(sourceSetName)
|
||||
dependencies.forEach { dependency ->
|
||||
fragment.declaredModuleDependencies.add(
|
||||
KotlinModuleDependency(
|
||||
MavenModuleIdentifier(
|
||||
KpmModuleDependency(
|
||||
KpmMavenModuleIdentifier(
|
||||
dependency.groupId.orEmpty(),
|
||||
dependency.moduleId,
|
||||
null /* TODO */
|
||||
@@ -65,18 +65,18 @@ class ProjectStructureMetadataModuleBuilder {
|
||||
metadata.sourceSetsDependsOnRelation.forEach { (depending, dependencies) ->
|
||||
val dependingFragment = fragment(depending)
|
||||
dependencies.forEach { dependency ->
|
||||
dependingFragment.directRefinesDependencies.add(fragment(dependency))
|
||||
dependingFragment.declaredRefinesDependencies.add(fragment(dependency))
|
||||
}
|
||||
}
|
||||
}
|
||||
return ExternalImportedKotlinModule(
|
||||
return KpmExternalImportedModule(
|
||||
moduleData,
|
||||
metadata,
|
||||
moduleData.fragments.filterTo(mutableSetOf()) { it.fragmentName in metadata.hostSpecificSourceSets }
|
||||
)
|
||||
}
|
||||
|
||||
fun getModule(component: ResolvedComponentResult, projectStructureMetadata: KotlinProjectStructureMetadata): KotlinModule {
|
||||
fun getModule(component: ResolvedComponentResult, projectStructureMetadata: KotlinProjectStructureMetadata): KpmModule {
|
||||
val moduleId = component.toSingleModuleIdentifier()
|
||||
return modulesCache.getOrPut(moduleId) {
|
||||
buildModuleFromProjectStructureMetadata(
|
||||
@@ -123,7 +123,7 @@ private fun detectModules(targets: Iterable<KotlinTarget>, sourceSets: Iterable<
|
||||
class GradleProjectModuleBuilder(private val addInferredSourceSetVisibilityAsExplicit: Boolean) {
|
||||
private fun getModulesFromPm20Project(project: Project) = project.kpmModules.toList()
|
||||
|
||||
fun buildModulesFromProject(project: Project): List<KotlinModule> {
|
||||
fun buildModulesFromProject(project: Project): List<KpmModule> {
|
||||
if (project.hasKpmModel)
|
||||
return getModulesFromPm20Project(project)
|
||||
|
||||
@@ -144,19 +144,19 @@ class GradleProjectModuleBuilder(private val addInferredSourceSetVisibilityAsExp
|
||||
.flatMap { component -> (component as? KotlinVariant)?.usages.orEmpty() }
|
||||
}.groupBy { it.compilation }
|
||||
|
||||
val moduleByFragment = mutableMapOf<KotlinModuleFragment, KotlinModule>()
|
||||
val moduleByFragment = mutableMapOf<KpmFragment, KpmModule>()
|
||||
|
||||
val result = moduleCompilationCluster.entries.map { (classifier, compilationsToInclude) ->
|
||||
val sourceSetsToInclude = compilationsToInclude.flatMapTo(mutableSetOf()) { it.allKotlinSourceSets }
|
||||
|
||||
val moduleIdentifier = LocalModuleIdentifier(
|
||||
val moduleIdentifier = KpmLocalModuleIdentifier(
|
||||
project.currentBuildId().name,
|
||||
project.path,
|
||||
classifier.takeIf { it != KotlinCompilation.MAIN_COMPILATION_NAME }
|
||||
)
|
||||
|
||||
BasicKotlinModule(moduleIdentifier).apply {
|
||||
val variantToCompilation = mutableMapOf<BasicKotlinModuleFragment, KotlinCompilation<*>>()
|
||||
KpmBasicModule(moduleIdentifier).apply {
|
||||
val variantToCompilation = mutableMapOf<KpmBasicFragment, KotlinCompilation<*>>()
|
||||
|
||||
compilationsToInclude.forEach { compilation ->
|
||||
// A compilation may be exposed as more than one variant, so we collect all of its names
|
||||
@@ -165,7 +165,7 @@ class GradleProjectModuleBuilder(private val addInferredSourceSetVisibilityAsExp
|
||||
?: listOf(compilation.defaultSourceSetName)
|
||||
|
||||
variantNames.forEach { variantName ->
|
||||
val variant = BasicKotlinModuleVariant(this@apply, variantName, DefaultLanguageSettingsBuilder())
|
||||
val variant = KpmBasicVariant(this@apply, variantName, DefaultLanguageSettingsBuilder())
|
||||
moduleByFragment[variant] = this@apply
|
||||
variantToCompilation[variant] = compilation
|
||||
fragments.add(variant)
|
||||
@@ -181,8 +181,8 @@ class GradleProjectModuleBuilder(private val addInferredSourceSetVisibilityAsExp
|
||||
}
|
||||
// Once all fragments are created, add dependencies between them
|
||||
sourceSetsToInclude.forEach { sourceSet ->
|
||||
val existingVariant = fragments.filterIsInstance<BasicKotlinModuleVariant>().find { it.fragmentName == sourceSet.name }
|
||||
val fragment = existingVariant ?: BasicKotlinModuleFragment(this@apply, sourceSet.name, sourceSet.languageSettings).also { fragments.add(it) }
|
||||
val existingVariant = fragments.filterIsInstance<KpmBasicVariant>().find { it.fragmentName == sourceSet.name }
|
||||
val fragment = existingVariant ?: KpmBasicFragment(this@apply, sourceSet.name, sourceSet.languageSettings).also { fragments.add(it) }
|
||||
moduleByFragment[fragment] = this@apply
|
||||
fragment.kotlinSourceRoots = sourceSet.kotlin.sourceDirectories.toList()
|
||||
|
||||
@@ -197,7 +197,7 @@ class GradleProjectModuleBuilder(private val addInferredSourceSetVisibilityAsExp
|
||||
?: variantToCompilation.getValue(fragment).defaultSourceSet
|
||||
sourceSet.dependsOn.forEach { dependency ->
|
||||
val dependencyFragment = fragmentByName(dependency.name)
|
||||
fragment.directRefinesDependencies.add(dependencyFragment)
|
||||
fragment.declaredRefinesDependencies.add(dependencyFragment)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -210,7 +210,7 @@ class GradleProjectModuleBuilder(private val addInferredSourceSetVisibilityAsExp
|
||||
val variant = fragmentByName(compilation.defaultSourceSetName)
|
||||
compilation.associateWith.forEach { associate ->
|
||||
val associateVariant = fragmentByName(associate.defaultSourceSetName)
|
||||
variant.declaredModuleDependencies.add(KotlinModuleDependency(associateVariant.containingModule.moduleIdentifier))
|
||||
variant.declaredModuleDependencies.add(KpmModuleDependency(associateVariant.containingModule.moduleIdentifier))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -219,7 +219,7 @@ class GradleProjectModuleBuilder(private val addInferredSourceSetVisibilityAsExp
|
||||
val fragment = fragmentByName(sourceSet.name)
|
||||
getVisibleSourceSetsFromAssociateCompilations(project, sourceSet).forEach { dependency ->
|
||||
val dependencyFragment = fragmentByName(dependency.name)
|
||||
fragment.declaredModuleDependencies.add(KotlinModuleDependency(dependencyFragment.containingModule.moduleIdentifier))
|
||||
fragment.declaredModuleDependencies.add(KpmModuleDependency(dependencyFragment.containingModule.moduleIdentifier))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -238,44 +238,44 @@ class GradleProjectModuleBuilder(private val addInferredSourceSetVisibilityAsExp
|
||||
|
||||
internal fun Dependency.toModuleDependency(
|
||||
project: Project
|
||||
): KotlinModuleDependency {
|
||||
return KotlinModuleDependency(
|
||||
): KpmModuleDependency {
|
||||
return KpmModuleDependency(
|
||||
when (this) {
|
||||
is ProjectDependency ->
|
||||
LocalModuleIdentifier(
|
||||
KpmLocalModuleIdentifier(
|
||||
project.currentBuildId().name,
|
||||
dependencyProject.path,
|
||||
moduleClassifiersFromCapabilities(requestedCapabilities).single() // FIXME multiple capabilities
|
||||
)
|
||||
is ModuleDependency ->
|
||||
MavenModuleIdentifier(
|
||||
KpmMavenModuleIdentifier(
|
||||
group.orEmpty(),
|
||||
name,
|
||||
moduleClassifiersFromCapabilities(requestedCapabilities).single() // FIXME multiple capabilities
|
||||
)
|
||||
else -> MavenModuleIdentifier(group.orEmpty(), name, null)
|
||||
else -> KpmMavenModuleIdentifier(group.orEmpty(), name, null)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
private fun BasicKotlinModule.fragmentByName(name: String) =
|
||||
private fun KpmBasicModule.fragmentByName(name: String) =
|
||||
fragments.single { it.fragmentName == name }
|
||||
|
||||
class CachingModuleVariantResolver(private val actualResolver: ModuleVariantResolver) : ModuleVariantResolver {
|
||||
private val resultCacheByRequestingVariant: MutableMap<KotlinModuleVariant, MutableMap<KotlinModule, VariantResolution>> = mutableMapOf()
|
||||
private val resultCacheByRequestingVariant: MutableMap<org.jetbrains.kotlin.project.model.KpmVariant, MutableMap<KpmModule, VariantResolution>> = mutableMapOf()
|
||||
|
||||
override fun getChosenVariant(requestingVariant: KotlinModuleVariant, dependencyModule: KotlinModule): VariantResolution {
|
||||
override fun getChosenVariant(requestingVariant: org.jetbrains.kotlin.project.model.KpmVariant, dependencyModule: KpmModule): VariantResolution {
|
||||
val resultCache = resultCacheByRequestingVariant.getOrPut(requestingVariant) { mutableMapOf() }
|
||||
return resultCache.getOrPut(dependencyModule) { actualResolver.getChosenVariant(requestingVariant, dependencyModule) }
|
||||
}
|
||||
}
|
||||
|
||||
class GradleModuleVariantResolver : ModuleVariantResolver {
|
||||
override fun getChosenVariant(requestingVariant: KotlinModuleVariant, dependencyModule: KotlinModule): VariantResolution {
|
||||
override fun getChosenVariant(requestingVariant: org.jetbrains.kotlin.project.model.KpmVariant, dependencyModule: KpmModule): VariantResolution {
|
||||
// TODO maybe improve this behavior? Currently it contradicts dependency resolution in that it may return a chosen variant for an
|
||||
// unrequested dependency. This workaround is needed for synthetic modules which were not produced from module metadata, so maybe
|
||||
// those modules should be marked somehow
|
||||
if (dependencyModule is ExternalPlainKotlinModule) {
|
||||
if (dependencyModule is KpmExternalPlainModule) {
|
||||
return VariantResolution.fromMatchingVariants(
|
||||
requestingVariant,
|
||||
dependencyModule,
|
||||
@@ -283,7 +283,7 @@ class GradleModuleVariantResolver : ModuleVariantResolver {
|
||||
)
|
||||
}
|
||||
|
||||
if (requestingVariant !is KotlinGradleVariant) {
|
||||
if (requestingVariant !is KpmGradleVariant) {
|
||||
return VariantResolution.Unknown(requestingVariant, dependencyModule)
|
||||
}
|
||||
|
||||
@@ -300,7 +300,7 @@ class GradleModuleVariantResolver : ModuleVariantResolver {
|
||||
// FIXME check composite builds, it's likely that resolvedVariantProvider fails on them?
|
||||
val resolvedGradleVariantName = resolvedVariantProvider.getResolvedVariantName(dependencyModuleId, compileClasspath)
|
||||
val kotlinVariantName = when (dependencyModule) {
|
||||
is KotlinGradleModule -> {
|
||||
is KpmGradleModule -> {
|
||||
dependencyModule.variants.singleOrNull { resolvedGradleVariantName in it.gradleVariantNames }?.name
|
||||
?: return VariantResolution.Unknown(requestingVariant, dependencyModule)
|
||||
}
|
||||
@@ -315,10 +315,10 @@ class GradleModuleVariantResolver : ModuleVariantResolver {
|
||||
VariantResolution.VariantMatch(requestingVariant, dependencyModule, resultVariant)
|
||||
}
|
||||
|
||||
private fun getCompileDependenciesConfigurationForVariant(project: Project, requestingVariant: KotlinModuleVariant): Configuration =
|
||||
private fun getCompileDependenciesConfigurationForVariant(project: Project, requestingVariant: org.jetbrains.kotlin.project.model.KpmVariant): Configuration =
|
||||
when {
|
||||
project.hasKpmModel -> {
|
||||
(requestingVariant as KotlinGradleVariant).compileDependenciesConfiguration
|
||||
(requestingVariant as KpmGradleVariant).compileDependenciesConfiguration
|
||||
}
|
||||
else -> {
|
||||
val targets =
|
||||
|
||||
+4
-4
@@ -80,10 +80,10 @@ class KotlinMultiplatformPlugin : Plugin<Project> {
|
||||
setupKpmModulesPublication(project)
|
||||
registerDefaultVariantFactories(project)
|
||||
with(project.kpmModules) {
|
||||
create(KotlinGradleModule.MAIN_MODULE_NAME) {
|
||||
create(KpmGradleModule.MAIN_MODULE_NAME) {
|
||||
it.makePublic()
|
||||
}
|
||||
create(KotlinGradleModule.TEST_MODULE_NAME)
|
||||
create(KpmGradleModule.TEST_MODULE_NAME)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -282,7 +282,7 @@ internal fun applyUserDefinedAttributes(target: AbstractKotlinTarget) {
|
||||
private fun applyUserDefinedAttributesWithKpm(
|
||||
target: AbstractKotlinTarget,
|
||||
) {
|
||||
fun copyAttributesToVariant(variant: KotlinGradleVariant, from: AttributeContainer) {
|
||||
fun copyAttributesToVariant(variant: KpmGradleVariant, from: AttributeContainer) {
|
||||
variant.gradleVariantNames.forEach { configurationOrVariantName ->
|
||||
val configuration = variant.project.configurations.findByName(configurationOrVariantName)
|
||||
?: return@forEach
|
||||
@@ -307,7 +307,7 @@ private fun applyUserDefinedAttributesWithKpm(
|
||||
}
|
||||
|
||||
// Also handle the legacy-mapped variants, which are not accessible through the compilations in the loop above
|
||||
project.kpmModules.getByName(KotlinGradleModule.MAIN_MODULE_NAME).variants.withType(LegacyMappedVariant::class.java).all { variant ->
|
||||
project.kpmModules.getByName(KpmGradleModule.MAIN_MODULE_NAME).variants.withType(LegacyMappedVariant::class.java).all { variant ->
|
||||
val compilation = variant.compilation
|
||||
copyAttributesToVariant(variant, compilation.attributes)
|
||||
}
|
||||
|
||||
+3
-4
@@ -14,9 +14,8 @@ import org.gradle.api.tasks.Input
|
||||
import org.gradle.api.tasks.Internal
|
||||
import org.gradle.api.tasks.Nested
|
||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.hasKpmModel
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.withRefinesClosure
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.sourceSetDependencyConfigurationByScope
|
||||
import org.jetbrains.kotlin.gradle.targets.metadata.dependsOnClosureWithInterCompilationDependencies
|
||||
@@ -191,7 +190,7 @@ internal fun buildKotlinProjectStructureMetadata(project: Project): KotlinProjec
|
||||
)
|
||||
}
|
||||
|
||||
internal fun buildProjectStructureMetadata(module: KotlinGradleModule): KotlinProjectStructureMetadata {
|
||||
internal fun buildProjectStructureMetadata(module: KpmGradleModule): KotlinProjectStructureMetadata {
|
||||
val kotlinVariantToGradleVariantNames = module.variants.associate { it.name to it.gradleVariantNames }
|
||||
|
||||
fun <T> expandVariantKeys(map: Map<String, T>) =
|
||||
@@ -202,7 +201,7 @@ internal fun buildProjectStructureMetadata(module: KotlinGradleModule): KotlinPr
|
||||
val kotlinFragmentsPerKotlinVariant =
|
||||
module.variants.associate { variant -> variant.name to variant.withRefinesClosure.map { it.name }.toSet() }
|
||||
val fragmentRefinesRelation =
|
||||
module.fragments.associate { it.name to it.directRefinesDependencies.map { it.fragmentName }.toSet() }
|
||||
module.fragments.associate { it.name to it.declaredRefinesDependencies.map { it.fragmentName }.toSet() }
|
||||
|
||||
// FIXME: support native implementation-as-api-dependencies
|
||||
// FIXME: support dependencies on auxiliary modules
|
||||
|
||||
+6
-6
@@ -18,9 +18,9 @@ import org.jetbrains.kotlin.gradle.dsl.topLevelExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.ComputedCapability
|
||||
import org.jetbrains.kotlin.gradle.utils.getValue
|
||||
import org.jetbrains.kotlin.project.model.KotlinModuleIdentifier
|
||||
import org.jetbrains.kotlin.project.model.LocalModuleIdentifier
|
||||
import org.jetbrains.kotlin.project.model.MavenModuleIdentifier
|
||||
import org.jetbrains.kotlin.project.model.KpmModuleIdentifier
|
||||
import org.jetbrains.kotlin.project.model.KpmLocalModuleIdentifier
|
||||
import org.jetbrains.kotlin.project.model.KpmMavenModuleIdentifier
|
||||
|
||||
internal object ModuleIds {
|
||||
fun fromDependency(dependency: Dependency): ModuleDependencyIdentifier = when (dependency) {
|
||||
@@ -71,9 +71,9 @@ internal object ModuleIds {
|
||||
idOfRootModule(thisProject.project(projectPath))
|
||||
|
||||
// FIXME use capabilities to point to auxiliary modules
|
||||
fun lossyFromModuleIdentifier(thisProject: Project, moduleIdentifier: KotlinModuleIdentifier): ModuleDependencyIdentifier {
|
||||
fun lossyFromModuleIdentifier(thisProject: Project, moduleIdentifier: KpmModuleIdentifier): ModuleDependencyIdentifier {
|
||||
when (moduleIdentifier) {
|
||||
is LocalModuleIdentifier -> {
|
||||
is KpmLocalModuleIdentifier -> {
|
||||
check(moduleIdentifier.buildId == thisProject.currentBuildId().name)
|
||||
val dependencyProject = thisProject.project(moduleIdentifier.projectId)
|
||||
val topLevelExtension = dependencyProject.topLevelExtension
|
||||
@@ -101,7 +101,7 @@ internal object ModuleIds {
|
||||
)
|
||||
return ChangingModuleDependencyIdentifier({ coordinatesProvider.group }, { coordinatesProvider.name })
|
||||
}
|
||||
is MavenModuleIdentifier -> {
|
||||
is KpmMavenModuleIdentifier -> {
|
||||
return ModuleDependencyIdentifier(moduleIdentifier.group, moduleIdentifier.name)
|
||||
}
|
||||
else -> error("unexpected module identifier $moduleIdentifier")
|
||||
|
||||
+2
-2
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.gradle.dsl.topLevelExtensionOrNull
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.hasKpmModel
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.kpmModules
|
||||
import org.jetbrains.kotlin.project.model.KotlinModuleIdentifier
|
||||
import org.jetbrains.kotlin.project.model.KpmModuleIdentifier
|
||||
import java.io.File
|
||||
import java.io.InputStream
|
||||
import java.util.zip.ZipFile
|
||||
@@ -25,7 +25,7 @@ sealed class MppDependencyProjectStructureMetadataExtractor {
|
||||
}
|
||||
|
||||
internal class ProjectMppDependencyProjectStructureMetadataExtractor(
|
||||
val moduleIdentifier: KotlinModuleIdentifier,
|
||||
val moduleIdentifier: KpmModuleIdentifier,
|
||||
val dependencyProject: Project
|
||||
) : MppDependencyProjectStructureMetadataExtractor() {
|
||||
|
||||
|
||||
+3
-3
@@ -11,7 +11,7 @@ import org.gradle.api.artifacts.component.ProjectComponentIdentifier
|
||||
import org.gradle.api.artifacts.result.ResolvedComponentResult
|
||||
import org.gradle.api.artifacts.result.ResolvedDependencyResult
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toSingleModuleIdentifier
|
||||
import org.jetbrains.kotlin.project.model.KotlinModuleIdentifier
|
||||
import org.jetbrains.kotlin.project.model.KpmModuleIdentifier
|
||||
|
||||
internal fun MppDependencyProjectStructureMetadataExtractor.Factory.create(
|
||||
project: Project,
|
||||
@@ -36,7 +36,7 @@ internal fun MppDependencyProjectStructureMetadataExtractor.Factory.create(
|
||||
internal fun MppDependencyProjectStructureMetadataExtractor.Factory.create(
|
||||
project: Project,
|
||||
resolvedComponentResult: ResolvedComponentResult,
|
||||
moduleIdentifier: KotlinModuleIdentifier,
|
||||
moduleIdentifier: KpmModuleIdentifier,
|
||||
configuration: Configuration
|
||||
): MppDependencyProjectStructureMetadataExtractor? {
|
||||
return create(
|
||||
@@ -51,7 +51,7 @@ internal fun MppDependencyProjectStructureMetadataExtractor.Factory.create(
|
||||
|
||||
private fun MppDependencyProjectStructureMetadataExtractor.Factory.create(
|
||||
resolvedMppVariantsProvider: ResolvedMppVariantsProvider,
|
||||
moduleIdentifier: KotlinModuleIdentifier,
|
||||
moduleIdentifier: KpmModuleIdentifier,
|
||||
configuration: Configuration,
|
||||
resolveViaAvailableAt: Boolean,
|
||||
resolvedComponentResult: ResolvedComponentResult,
|
||||
|
||||
+3
-3
@@ -15,18 +15,18 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.hasKpmModel
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.kpmModules
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.metadataCompilationRegistryByModuleId
|
||||
import org.jetbrains.kotlin.gradle.targets.native.internal.*
|
||||
import org.jetbrains.kotlin.project.model.KotlinModuleIdentifier
|
||||
import org.jetbrains.kotlin.project.model.KpmModuleIdentifier
|
||||
|
||||
internal fun ProjectMetadataProvider(
|
||||
dependencyProject: Project,
|
||||
moduleIdentifier: KotlinModuleIdentifier
|
||||
moduleIdentifier: KpmModuleIdentifier
|
||||
): ProjectMetadataProvider {
|
||||
return ProjectMetadataProviderImpl(dependencyProject, moduleIdentifier)
|
||||
}
|
||||
|
||||
private class ProjectMetadataProviderImpl(
|
||||
private val dependencyProject: Project,
|
||||
private val moduleIdentifier: KotlinModuleIdentifier
|
||||
private val moduleIdentifier: KpmModuleIdentifier
|
||||
) : ProjectMetadataProvider() {
|
||||
override fun getSourceSetCompiledMetadata(sourceSetName: String): FileCollection {
|
||||
val projectExtension = dependencyProject.topLevelExtensionOrNull
|
||||
|
||||
+9
-9
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toModuleIdentifiers
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toSingleModuleIdentifier
|
||||
import org.jetbrains.kotlin.gradle.plugin.usageByName
|
||||
import org.jetbrains.kotlin.gradle.utils.getOrPut
|
||||
import org.jetbrains.kotlin.project.model.KotlinModuleIdentifier
|
||||
import org.jetbrains.kotlin.project.model.KpmModuleIdentifier
|
||||
import java.io.File
|
||||
|
||||
internal class ResolvedMppVariantsProvider private constructor(private val project: Project) {
|
||||
@@ -33,7 +33,7 @@ internal class ResolvedMppVariantsProvider private constructor(private val proje
|
||||
|
||||
/** Gets the name of the variant that the module specified by the [moduleIdentifier] resolved to in the given [configuration].
|
||||
* The [moduleIdentifier] may be either the root module or a platform-specific module, the result is the same for the two cases. */
|
||||
fun getResolvedVariantName(moduleIdentifier: KotlinModuleIdentifier, configuration: Configuration): String? =
|
||||
fun getResolvedVariantName(moduleIdentifier: KpmModuleIdentifier, configuration: Configuration): String? =
|
||||
getEntryForModule(moduleIdentifier).run {
|
||||
if (configuration !in resolvedVariantsByConfiguration) {
|
||||
resolveConfigurationAndSaveVariants(configuration, artifactResolutionMode = ArtifactResolutionMode.NONE)
|
||||
@@ -46,7 +46,7 @@ internal class ResolvedMppVariantsProvider private constructor(private val proje
|
||||
* module of a multiplatform project, not one of its platform-specific modules, as seen in the given [configuration].
|
||||
* If the [configuration] requests platform artifacts and not the common code metadata, then this function will resolve its
|
||||
* dependencies to metadata separately. */
|
||||
fun getHostSpecificMetadataArtifactByRootModule(rootModuleIdentifier: KotlinModuleIdentifier, configuration: Configuration): File? {
|
||||
fun getHostSpecificMetadataArtifactByRootModule(rootModuleIdentifier: KpmModuleIdentifier, configuration: Configuration): File? {
|
||||
val rootModuleEntry = getEntryForModule(rootModuleIdentifier)
|
||||
|
||||
val platformModuleEntry = rootModuleEntry.run {
|
||||
@@ -68,7 +68,7 @@ internal class ResolvedMppVariantsProvider private constructor(private val proje
|
||||
}
|
||||
|
||||
/** Gets the artifact of a particular MPP platform-specific [moduleIdentifier] as resolved in the [configuration]. */
|
||||
fun getResolvedArtifactByPlatformModule(moduleIdentifier: KotlinModuleIdentifier, configuration: Configuration): File? =
|
||||
fun getResolvedArtifactByPlatformModule(moduleIdentifier: KpmModuleIdentifier, configuration: Configuration): File? =
|
||||
getEntryForModule(moduleIdentifier).run {
|
||||
if (configuration !in resolvedArtifactByConfiguration) {
|
||||
resolveConfigurationAndSaveVariants(configuration, artifactResolutionMode = ArtifactResolutionMode.NORMAL)
|
||||
@@ -77,10 +77,10 @@ internal class ResolvedMppVariantsProvider private constructor(private val proje
|
||||
resolvedArtifactByConfiguration.getOrPut(configuration) { null }
|
||||
}
|
||||
|
||||
private fun getEntryForModule(moduleIdentifier: KotlinModuleIdentifier) =
|
||||
private fun getEntryForModule(moduleIdentifier: KpmModuleIdentifier) =
|
||||
entriesCache.getOrPut(moduleIdentifier, { ModuleEntry(moduleIdentifier) })
|
||||
|
||||
private val entriesCache: MutableMap<KotlinModuleIdentifier, ModuleEntry> = mutableMapOf()
|
||||
private val entriesCache: MutableMap<KpmModuleIdentifier, ModuleEntry> = mutableMapOf()
|
||||
|
||||
private val mppComponentsByConfiguration: MutableMap<Configuration, Set<ResolvedComponentResult>> = mutableMapOf()
|
||||
|
||||
@@ -211,12 +211,12 @@ internal class ResolvedMppVariantsProvider private constructor(private val proje
|
||||
*/
|
||||
private class ModuleEntry(
|
||||
@Suppress("unused") // simplify debugging
|
||||
val moduleIdentifier: KotlinModuleIdentifier
|
||||
val moduleIdentifier: KpmModuleIdentifier
|
||||
) {
|
||||
val dependenciesByConfiguration: MutableMap<Configuration, List<KotlinModuleIdentifier>> = HashMap()
|
||||
val dependenciesByConfiguration: MutableMap<Configuration, List<KpmModuleIdentifier>> = HashMap()
|
||||
val resolvedVariantsByConfiguration: MutableMap<Configuration, List<ResolvedVariantResult?>?> = HashMap()
|
||||
val resolvedArtifactByConfiguration: MutableMap<Configuration, File?> = HashMap()
|
||||
val resolvedMetadataArtifactByConfiguration: MutableMap<Configuration, File?> = HashMap()
|
||||
val chosenPlatformModuleByConfiguration: MutableMap<Configuration, ModuleEntry?> = HashMap()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+7
-7
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages.producerRuntimeUsage
|
||||
import org.jetbrains.kotlin.gradle.plugin.usageByName
|
||||
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
||||
|
||||
val KotlinFragmentPlatformAttributes = FragmentAttributes<KotlinGradleVariant> {
|
||||
val KotlinFragmentPlatformAttributes = FragmentAttributes<KpmGradleVariant> {
|
||||
if (isGradleVersionAtLeast(7, 0) && fragment.platformType == KotlinPlatformType.jvm) {
|
||||
namedAttribute(TARGET_JVM_ENVIRONMENT_ATTRIBUTE, TargetJvmEnvironment.STANDARD_JVM)
|
||||
}
|
||||
@@ -28,26 +28,26 @@ val KotlinFragmentPlatformAttributes = FragmentAttributes<KotlinGradleVariant> {
|
||||
attribute(KotlinPlatformType.attribute, fragment.platformType)
|
||||
}
|
||||
|
||||
val KotlinFragmentConsumerApiUsageAttribute = FragmentAttributes<KotlinGradleVariant> {
|
||||
val KotlinFragmentConsumerApiUsageAttribute = FragmentAttributes<KpmGradleVariant> {
|
||||
attribute(USAGE_ATTRIBUTE, consumerApiUsage(project, fragment.platformType))
|
||||
}
|
||||
|
||||
val KotlinFragmentProducerApiUsageAttribute = FragmentAttributes<KotlinGradleVariant> {
|
||||
val KotlinFragmentProducerApiUsageAttribute = FragmentAttributes<KpmGradleVariant> {
|
||||
attribute(USAGE_ATTRIBUTE, producerApiUsage(fragment.project, fragment.platformType))
|
||||
}
|
||||
|
||||
val KotlinFragmentConsumerRuntimeUsageAttribute = FragmentAttributes<KotlinGradleVariant> {
|
||||
val KotlinFragmentConsumerRuntimeUsageAttribute = FragmentAttributes<KpmGradleVariant> {
|
||||
attribute(USAGE_ATTRIBUTE, consumerRuntimeUsage(fragment.project, fragment.platformType))
|
||||
}
|
||||
|
||||
val KotlinFragmentProducerRuntimeUsageAttribute = FragmentAttributes<KotlinGradleVariant> {
|
||||
val KotlinFragmentProducerRuntimeUsageAttribute = FragmentAttributes<KpmGradleVariant> {
|
||||
attribute(USAGE_ATTRIBUTE, producerRuntimeUsage(fragment.project, fragment.platformType))
|
||||
}
|
||||
|
||||
val KotlinFragmentMetadataUsageAttribute = FragmentAttributes<KotlinGradleFragment> {
|
||||
val KotlinFragmentMetadataUsageAttribute = FragmentAttributes<KpmGradleFragment> {
|
||||
attribute(USAGE_ATTRIBUTE, fragment.project.usageByName(KotlinUsages.KOTLIN_METADATA))
|
||||
}
|
||||
|
||||
val KotlinFragmentKonanTargetAttribute = FragmentAttributes<KotlinNativeVariantInternal> {
|
||||
val KotlinFragmentKonanTargetAttribute = FragmentAttributes<KpmNativeVariantInternal> {
|
||||
attributes.attribute(KotlinNativeTarget.konanTargetAttribute, fragment.konanTarget.name)
|
||||
}
|
||||
|
||||
+26
-26
@@ -15,12 +15,12 @@ import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope
|
||||
import org.jetbrains.kotlin.project.model.*
|
||||
|
||||
internal fun resolvableMetadataConfiguration(
|
||||
module: KotlinGradleModule
|
||||
module: KpmGradleModule
|
||||
) = module.project.configurations.getByName(module.resolvableMetadataConfigurationName)
|
||||
|
||||
internal fun configurationToResolveMetadataDependencies(project: Project, requestingModule: KotlinModule): Configuration =
|
||||
internal fun configurationToResolveMetadataDependencies(project: Project, requestingModule: KpmModule): Configuration =
|
||||
when {
|
||||
project.hasKpmModel -> resolvableMetadataConfiguration(requestingModule as KotlinGradleModule)
|
||||
project.hasKpmModel -> resolvableMetadataConfiguration(requestingModule as KpmGradleModule)
|
||||
else -> resolvableMetadataConfiguration(
|
||||
project,
|
||||
project.kotlinExtension.sourceSets, // take dependencies from all source sets; TODO introduce consistency scopes?
|
||||
@@ -29,40 +29,40 @@ internal fun configurationToResolveMetadataDependencies(project: Project, reques
|
||||
}
|
||||
|
||||
|
||||
class GradleKotlinDependencyGraphResolver(
|
||||
private val moduleResolver: ModuleDependencyResolver
|
||||
) : KotlinDependencyGraphResolver {
|
||||
class KpmGradleDependencyGraphResolver(
|
||||
private val moduleResolver: KpmModuleDependencyResolver
|
||||
) : KpmDependencyGraphResolver {
|
||||
|
||||
private fun configurationToResolve(requestingModule: KotlinGradleModule): Configuration =
|
||||
private fun configurationToResolve(requestingModule: KpmGradleModule): Configuration =
|
||||
configurationToResolveMetadataDependencies(requestingModule.project, requestingModule)
|
||||
|
||||
override fun resolveDependencyGraph(requestingModule: KotlinModule): DependencyGraphResolution {
|
||||
if (requestingModule !is KotlinGradleModule)
|
||||
return DependencyGraphResolution.Unknown(requestingModule)
|
||||
override fun resolveDependencyGraph(requestingModule: KpmModule): KpmDependencyGraphResolution {
|
||||
if (requestingModule !is KpmGradleModule)
|
||||
return KpmDependencyGraphResolution.Unknown(requestingModule)
|
||||
return resolveAsGraph(requestingModule)
|
||||
}
|
||||
|
||||
private fun resolveAsGraph(requestingModule: KotlinGradleModule): GradleDependencyGraph {
|
||||
val nodeByModuleId = mutableMapOf<KotlinModuleIdentifier, GradleDependencyGraphNode>()
|
||||
private fun resolveAsGraph(requestingModule: KpmGradleModule): KpmGradleDependencyGraph {
|
||||
val nodeByModuleId = mutableMapOf<KpmModuleIdentifier, GradleDependencyGraphNode>()
|
||||
|
||||
fun getKotlinModuleFromComponentResult(component: ResolvedComponentResult): KotlinModule =
|
||||
fun getKotlinModuleFromComponentResult(component: ResolvedComponentResult): KpmModule =
|
||||
moduleResolver.resolveDependency(requestingModule, component.toModuleDependency())
|
||||
?: buildSyntheticPlainModule(
|
||||
component,
|
||||
component.variants.singleOrNull()?.displayName ?: "default",
|
||||
)
|
||||
|
||||
fun nodeFromModule(componentResult: ResolvedComponentResult, kotlinModule: KotlinModule): GradleDependencyGraphNode {
|
||||
val id = kotlinModule.moduleIdentifier
|
||||
fun nodeFromModule(componentResult: ResolvedComponentResult, kpmModule: KpmModule): GradleDependencyGraphNode {
|
||||
val id = kpmModule.moduleIdentifier
|
||||
return nodeByModuleId.getOrPut(id) {
|
||||
val metadataSourceComponent =
|
||||
(kotlinModule as? ExternalImportedKotlinModule)
|
||||
(kpmModule as? KpmExternalImportedModule)
|
||||
?.takeIf { it.hasLegacyMetadataModule }
|
||||
?.let { (componentResult.dependencies.singleOrNull() as? ResolvedDependencyResult)?.selected }
|
||||
?: componentResult
|
||||
|
||||
val dependenciesRequestedByModule =
|
||||
kotlinModule.fragments.flatMap { fragment -> fragment.declaredModuleDependencies.map { it.moduleIdentifier } }.toSet()
|
||||
kpmModule.fragments.flatMap { fragment -> fragment.declaredModuleDependencies.map { it.moduleIdentifier } }.toSet()
|
||||
|
||||
val resolvedComponentDependencies = metadataSourceComponent.dependencies
|
||||
.filterIsInstance<ResolvedDependencyResult>()
|
||||
@@ -72,7 +72,7 @@ class GradleKotlinDependencyGraphResolver(
|
||||
.flatMap { dependency -> dependency.requested.toModuleIdentifiers().map { id -> id to dependency.selected } }
|
||||
.toMap()
|
||||
|
||||
val fragmentDependencies = kotlinModule.fragments.associateWith { it.declaredModuleDependencies }
|
||||
val fragmentDependencies = kpmModule.fragments.associateWith { it.declaredModuleDependencies }
|
||||
|
||||
val nodeDependenciesMap = fragmentDependencies.mapValues { (_, deps) ->
|
||||
deps.mapNotNull { resolvedComponentDependencies[it.moduleIdentifier] }.map {
|
||||
@@ -82,7 +82,7 @@ class GradleKotlinDependencyGraphResolver(
|
||||
}
|
||||
|
||||
GradleDependencyGraphNode(
|
||||
kotlinModule,
|
||||
kpmModule,
|
||||
componentResult,
|
||||
metadataSourceComponent,
|
||||
nodeDependenciesMap
|
||||
@@ -90,7 +90,7 @@ class GradleKotlinDependencyGraphResolver(
|
||||
}
|
||||
}
|
||||
|
||||
return GradleDependencyGraph(
|
||||
return KpmGradleDependencyGraph(
|
||||
requestingModule,
|
||||
nodeFromModule(configurationToResolve(requestingModule).incoming.resolutionResult.root, requestingModule)
|
||||
)
|
||||
@@ -98,16 +98,16 @@ class GradleKotlinDependencyGraphResolver(
|
||||
}
|
||||
|
||||
class GradleDependencyGraphNode(
|
||||
override val module: KotlinModule,
|
||||
override val module: KpmModule,
|
||||
val selectedComponent: ResolvedComponentResult,
|
||||
/** If the Kotlin module description was provided by a different component, such as with legacy publishing layout using *-metadata
|
||||
* modules, then this property points to the other component. */
|
||||
val metadataSourceComponent: ResolvedComponentResult?,
|
||||
override val dependenciesByFragment: Map<KotlinModuleFragment, Iterable<GradleDependencyGraphNode>>
|
||||
) : DependencyGraphNode(module, dependenciesByFragment)
|
||||
override val dependenciesByFragment: Map<KpmFragment, Iterable<GradleDependencyGraphNode>>
|
||||
) : KpmDependencyGraphNode(module, dependenciesByFragment)
|
||||
|
||||
class GradleDependencyGraph(
|
||||
override val requestingModule: KotlinGradleModule,
|
||||
class KpmGradleDependencyGraph(
|
||||
override val requestingModule: KpmGradleModule,
|
||||
override val root: GradleDependencyGraphNode
|
||||
) : DependencyGraphResolution.DependencyGraph(requestingModule, root)
|
||||
) : KpmDependencyGraphResolution.KpmDependencyGraph(requestingModule, root)
|
||||
|
||||
|
||||
+46
-45
@@ -16,38 +16,39 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.DefaultLanguageSettingsBuilder
|
||||
import org.jetbrains.kotlin.gradle.utils.getOrPutRootProjectProperty
|
||||
import org.jetbrains.kotlin.project.model.*
|
||||
import org.jetbrains.kotlin.project.model.KpmVariant
|
||||
import java.util.*
|
||||
|
||||
class CachingModuleDependencyResolver(private val actualResolver: ModuleDependencyResolver) : ModuleDependencyResolver {
|
||||
private val cacheByRequestingModule = WeakHashMap<KotlinModule, MutableMap<KotlinModuleDependency, KotlinModule?>>()
|
||||
class KpmCachingModuleDependencyResolver(private val actualResolver: KpmModuleDependencyResolver) : KpmModuleDependencyResolver {
|
||||
private val cacheByRequestingModule = WeakHashMap<KpmModule, MutableMap<KpmModuleDependency, KpmModule?>>()
|
||||
|
||||
private fun cacheForRequestingModule(requestingModule: KotlinModule) =
|
||||
private fun cacheForRequestingModule(requestingModule: KpmModule) =
|
||||
cacheByRequestingModule.getOrPut(requestingModule) { mutableMapOf() }
|
||||
|
||||
override fun resolveDependency(requestingModule: KotlinModule, moduleDependency: KotlinModuleDependency): KotlinModule? =
|
||||
override fun resolveDependency(requestingModule: KpmModule, moduleDependency: KpmModuleDependency): KpmModule? =
|
||||
cacheForRequestingModule(requestingModule).getOrPut(moduleDependency) {
|
||||
actualResolver.resolveDependency(requestingModule, moduleDependency)
|
||||
}
|
||||
}
|
||||
|
||||
open class GradleComponentResultCachingResolver {
|
||||
private val cachedResultsByRequestingModule = mutableMapOf<KotlinGradleModule, Map<KotlinModuleIdentifier, ResolvedComponentResult>>()
|
||||
private val cachedResultsByRequestingModule = mutableMapOf<KpmGradleModule, Map<KpmModuleIdentifier, ResolvedComponentResult>>()
|
||||
|
||||
protected open fun configurationToResolve(requestingModule: KotlinGradleModule): Configuration =
|
||||
protected open fun configurationToResolve(requestingModule: KpmGradleModule): Configuration =
|
||||
configurationToResolveMetadataDependencies(requestingModule.project, requestingModule)
|
||||
|
||||
protected open fun resolveDependencies(module: KotlinGradleModule): Map<KotlinModuleIdentifier, ResolvedComponentResult> {
|
||||
protected open fun resolveDependencies(module: KpmGradleModule): Map<KpmModuleIdentifier, ResolvedComponentResult> {
|
||||
val allComponents = configurationToResolve(module).incoming.resolutionResult.allComponents
|
||||
// FIXME handle multi-component results
|
||||
return allComponents.flatMap { component -> component.toModuleIdentifiers().map { it to component } }.toMap()
|
||||
}
|
||||
|
||||
private fun getResultsForModule(module: KotlinGradleModule): Map<KotlinModuleIdentifier, ResolvedComponentResult> =
|
||||
private fun getResultsForModule(module: KpmGradleModule): Map<KpmModuleIdentifier, ResolvedComponentResult> =
|
||||
cachedResultsByRequestingModule.getOrPut(module) { resolveDependencies(module) }
|
||||
|
||||
fun resolveModuleDependencyAsComponentResult(
|
||||
requestingModule: KotlinGradleModule,
|
||||
moduleDependency: KotlinModuleDependency
|
||||
requestingModule: KpmGradleModule,
|
||||
moduleDependency: KpmModuleDependency
|
||||
): ResolvedComponentResult? =
|
||||
getResultsForModule(requestingModule)[moduleDependency.moduleIdentifier]
|
||||
|
||||
@@ -61,14 +62,14 @@ open class GradleComponentResultCachingResolver {
|
||||
}
|
||||
}
|
||||
|
||||
class GradleModuleDependencyResolver(
|
||||
class KpmGradleModuleDependencyResolver(
|
||||
private val gradleComponentResultResolver: GradleComponentResultCachingResolver,
|
||||
private val projectStructureMetadataModuleBuilder: ProjectStructureMetadataModuleBuilder,
|
||||
private val projectModuleBuilder: GradleProjectModuleBuilder
|
||||
) : ModuleDependencyResolver {
|
||||
) : KpmModuleDependencyResolver {
|
||||
|
||||
override fun resolveDependency(requestingModule: KotlinModule, moduleDependency: KotlinModuleDependency): KotlinModule? {
|
||||
require(requestingModule is KotlinGradleModule)
|
||||
override fun resolveDependency(requestingModule: KpmModule, moduleDependency: KpmModuleDependency): KpmModule? {
|
||||
require(requestingModule is KpmGradleModule)
|
||||
val project = requestingModule.project
|
||||
|
||||
val component = gradleComponentResultResolver.resolveModuleDependencyAsComponentResult(requestingModule, moduleDependency)
|
||||
@@ -97,14 +98,14 @@ class GradleModuleDependencyResolver(
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun getForCurrentBuild(project: Project): ModuleDependencyResolver {
|
||||
fun getForCurrentBuild(project: Project): KpmModuleDependencyResolver {
|
||||
val extraPropertyName = "org.jetbrains.kotlin.dependencyResolution.moduleResolver.${project.getKotlinPluginVersion()}"
|
||||
return project.getOrPutRootProjectProperty(extraPropertyName) {
|
||||
val componentResultResolver = GradleComponentResultCachingResolver.getForCurrentBuild(project)
|
||||
val metadataModuleBuilder = ProjectStructureMetadataModuleBuilder()
|
||||
val projectModuleBuilder = GradleProjectModuleBuilder(true)
|
||||
CachingModuleDependencyResolver(
|
||||
GradleModuleDependencyResolver(componentResultResolver, metadataModuleBuilder, projectModuleBuilder)
|
||||
KpmCachingModuleDependencyResolver(
|
||||
KpmGradleModuleDependencyResolver(componentResultResolver, metadataModuleBuilder, projectModuleBuilder)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -116,10 +117,10 @@ class GradleModuleDependencyResolver(
|
||||
internal fun buildSyntheticPlainModule(
|
||||
resolvedComponentResult: ResolvedComponentResult,
|
||||
singleVariantName: String,
|
||||
): ExternalPlainKotlinModule {
|
||||
): KpmExternalPlainModule {
|
||||
val moduleDependency = resolvedComponentResult.toModuleDependency()
|
||||
return ExternalPlainKotlinModule(BasicKotlinModule(moduleDependency.moduleIdentifier).apply {
|
||||
BasicKotlinModuleVariant(this@apply, singleVariantName, DefaultLanguageSettingsBuilder()).apply {
|
||||
return KpmExternalPlainModule(KpmBasicModule(moduleDependency.moduleIdentifier).apply {
|
||||
KpmBasicVariant(this@apply, singleVariantName, DefaultLanguageSettingsBuilder()).apply {
|
||||
fragments.add(this)
|
||||
this.declaredModuleDependencies.addAll(
|
||||
resolvedComponentResult.dependencies
|
||||
@@ -130,47 +131,47 @@ internal fun buildSyntheticPlainModule(
|
||||
})
|
||||
}
|
||||
|
||||
internal class ExternalPlainKotlinModule(private val moduleData: BasicKotlinModule) : KotlinModule by moduleData {
|
||||
internal class KpmExternalPlainModule(private val moduleData: KpmBasicModule) : KpmModule by moduleData {
|
||||
override fun toString(): String = "external plain $moduleData"
|
||||
|
||||
val singleVariant: KotlinModuleVariant
|
||||
val singleVariant: KpmVariant
|
||||
get() = moduleData.variants.singleOrNull()
|
||||
?: error("synthetic $moduleData was expected to have a single variant, got: ${moduleData.variants}")
|
||||
}
|
||||
|
||||
internal class ExternalImportedKotlinModule(
|
||||
private val moduleData: BasicKotlinModule,
|
||||
internal class KpmExternalImportedModule(
|
||||
private val moduleData: KpmBasicModule,
|
||||
val projectStructureMetadata: KotlinProjectStructureMetadata,
|
||||
val hostSpecificFragments: Set<KotlinModuleFragment>
|
||||
) : KotlinModule by moduleData {
|
||||
val hostSpecificFragments: Set<KpmFragment>
|
||||
) : KpmModule by moduleData {
|
||||
val hasLegacyMetadataModule = !projectStructureMetadata.isPublishedAsRoot
|
||||
|
||||
override fun toString(): String = "imported $moduleData"
|
||||
}
|
||||
|
||||
private fun ModuleComponentIdentifier.toSingleModuleIdentifier(classifier: String? = null): MavenModuleIdentifier =
|
||||
MavenModuleIdentifier(moduleIdentifier.group, moduleIdentifier.name, classifier)
|
||||
private fun ModuleComponentIdentifier.toSingleModuleIdentifier(classifier: String? = null): KpmMavenModuleIdentifier =
|
||||
KpmMavenModuleIdentifier(moduleIdentifier.group, moduleIdentifier.name, classifier)
|
||||
|
||||
internal fun ComponentIdentifier.matchesModule(module: KotlinModule): Boolean =
|
||||
internal fun ComponentIdentifier.matchesModule(module: KpmModule): Boolean =
|
||||
matchesModuleIdentifier(module.moduleIdentifier)
|
||||
|
||||
internal fun ResolvedComponentResult.toModuleIdentifiers(): List<KotlinModuleIdentifier> {
|
||||
internal fun ResolvedComponentResult.toModuleIdentifiers(): List<KpmModuleIdentifier> {
|
||||
val classifiers = moduleClassifiersFromCapabilities(variants.flatMap { it.capabilities })
|
||||
return classifiers.map { moduleClassifier -> toModuleIdentifier(moduleClassifier) }
|
||||
}
|
||||
|
||||
// FIXME this mapping doesn't have enough information to choose auxiliary modules
|
||||
internal fun ResolvedComponentResult.toSingleModuleIdentifier(): KotlinModuleIdentifier {
|
||||
internal fun ResolvedComponentResult.toSingleModuleIdentifier(): KpmModuleIdentifier {
|
||||
val classifiers = moduleClassifiersFromCapabilities(variants.flatMap { it.capabilities })
|
||||
val moduleClassifier = classifiers.single() // FIXME handle multiple capabilities
|
||||
return toModuleIdentifier(moduleClassifier)
|
||||
}
|
||||
|
||||
private fun ResolvedComponentResult.toModuleIdentifier(moduleClassifier: String?): KotlinModuleIdentifier {
|
||||
private fun ResolvedComponentResult.toModuleIdentifier(moduleClassifier: String?): KpmModuleIdentifier {
|
||||
return when (val id = id) {
|
||||
is ProjectComponentIdentifier -> LocalModuleIdentifier(id.build.name, id.projectPath, moduleClassifier)
|
||||
is ProjectComponentIdentifier -> KpmLocalModuleIdentifier(id.build.name, id.projectPath, moduleClassifier)
|
||||
is ModuleComponentIdentifier -> id.toSingleModuleIdentifier()
|
||||
else -> MavenModuleIdentifier(moduleVersion?.group.orEmpty(), moduleVersion?.name.orEmpty(), moduleClassifier)
|
||||
else -> KpmMavenModuleIdentifier(moduleVersion?.group.orEmpty(), moduleVersion?.name.orEmpty(), moduleClassifier)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -179,31 +180,31 @@ internal fun moduleClassifiersFromCapabilities(capabilities: Iterable<Capability
|
||||
return if (classifierCapabilities.none()) listOf(null) else classifierCapabilities.map { it.name.substringAfterLast("..") /*FIXME invent a more stable scheme*/ }
|
||||
}
|
||||
|
||||
internal fun ComponentSelector.toModuleIdentifiers(): Iterable<KotlinModuleIdentifier> {
|
||||
internal fun ComponentSelector.toModuleIdentifiers(): Iterable<KpmModuleIdentifier> {
|
||||
val moduleClassifiers = moduleClassifiersFromCapabilities(requestedCapabilities)
|
||||
return when (this) {
|
||||
is ProjectComponentSelector -> moduleClassifiers.map { LocalModuleIdentifier(buildName, projectPath, it) }
|
||||
is ModuleComponentSelector -> moduleClassifiers.map { MavenModuleIdentifier(moduleIdentifier.group, moduleIdentifier.name, it) }
|
||||
is ProjectComponentSelector -> moduleClassifiers.map { KpmLocalModuleIdentifier(buildName, projectPath, it) }
|
||||
is ModuleComponentSelector -> moduleClassifiers.map { KpmMavenModuleIdentifier(moduleIdentifier.group, moduleIdentifier.name, it) }
|
||||
else -> error("unexpected component selector")
|
||||
}
|
||||
}
|
||||
|
||||
internal fun ResolvedComponentResult.toModuleDependency(): KotlinModuleDependency = KotlinModuleDependency(toSingleModuleIdentifier())
|
||||
internal fun ComponentSelector.toModuleDependency(): KotlinModuleDependency {
|
||||
internal fun ResolvedComponentResult.toModuleDependency(): KpmModuleDependency = KpmModuleDependency(toSingleModuleIdentifier())
|
||||
internal fun ComponentSelector.toModuleDependency(): KpmModuleDependency {
|
||||
val moduleId = toModuleIdentifiers().single() // FIXME handle multiple
|
||||
return KotlinModuleDependency(moduleId)
|
||||
return KpmModuleDependency(moduleId)
|
||||
}
|
||||
|
||||
internal fun ComponentIdentifier.matchesModuleDependency(moduleDependency: KotlinModuleDependency) =
|
||||
internal fun ComponentIdentifier.matchesModuleDependency(moduleDependency: KpmModuleDependency) =
|
||||
matchesModuleIdentifier(moduleDependency.moduleIdentifier)
|
||||
|
||||
internal fun ComponentIdentifier.matchesModuleIdentifier(id: KotlinModuleIdentifier): Boolean =
|
||||
internal fun ComponentIdentifier.matchesModuleIdentifier(id: KpmModuleIdentifier): Boolean =
|
||||
when (id) {
|
||||
is LocalModuleIdentifier -> {
|
||||
is KpmLocalModuleIdentifier -> {
|
||||
val projectId = this as? ProjectComponentIdentifier
|
||||
projectId?.build?.name == id.buildId && projectId.projectPath == id.projectId
|
||||
}
|
||||
is MavenModuleIdentifier -> {
|
||||
is KpmMavenModuleIdentifier -> {
|
||||
val componentId = this as? ModuleComponentIdentifier
|
||||
componentId?.toSingleModuleIdentifier() == id
|
||||
}
|
||||
@@ -214,7 +215,7 @@ private fun getProjectStructureMetadata(
|
||||
project: Project,
|
||||
module: ResolvedComponentResult,
|
||||
configuration: Configuration,
|
||||
moduleIdentifier: KotlinModuleIdentifier? = null
|
||||
moduleIdentifier: KpmModuleIdentifier? = null
|
||||
): KotlinProjectStructureMetadata? {
|
||||
val extractor = if (moduleIdentifier != null)
|
||||
MppDependencyProjectStructureMetadataExtractor.create(project, module, moduleIdentifier, configuration)
|
||||
|
||||
+12
-12
@@ -15,7 +15,7 @@ import java.io.File
|
||||
import java.util.*
|
||||
|
||||
internal class FragmentGranularMetadataResolver(
|
||||
private val requestingFragment: KotlinGradleFragment,
|
||||
private val requestingFragment: KpmGradleFragment,
|
||||
private val refinesParentResolvers: Lazy<Iterable<FragmentGranularMetadataResolver>>
|
||||
) {
|
||||
val resolutions: Iterable<MetadataDependencyResolution> by lazy {
|
||||
@@ -25,14 +25,14 @@ internal class FragmentGranularMetadataResolver(
|
||||
private val project: Project
|
||||
get() = requestingFragment.containingModule.project
|
||||
|
||||
private val parentResultsByModuleIdentifier: Map<KotlinModuleIdentifier, List<MetadataDependencyResolution>> by lazy {
|
||||
private val parentResultsByModuleIdentifier: Map<KpmModuleIdentifier, List<MetadataDependencyResolution>> by lazy {
|
||||
refinesParentResolvers.value.flatMap { it.resolutions }.groupBy { it.dependency.toSingleModuleIdentifier() }
|
||||
}
|
||||
|
||||
private val moduleResolver = GradleModuleDependencyResolver.getForCurrentBuild(project)
|
||||
private val moduleResolver = KpmGradleModuleDependencyResolver.getForCurrentBuild(project)
|
||||
private val variantResolver = GradleModuleVariantResolver.getForCurrentBuild(project)
|
||||
private val fragmentResolver = DefaultModuleFragmentsResolver(variantResolver)
|
||||
private val dependencyGraphResolver = GradleKotlinDependencyGraphResolver(moduleResolver)
|
||||
private val dependencyGraphResolver = KpmGradleDependencyGraphResolver(moduleResolver)
|
||||
|
||||
private fun doResolveMetadataDependencies(): Iterable<MetadataDependencyResolution> {
|
||||
val configurationToResolve = configurationToResolveMetadataDependencies(project, requestingFragment.containingModule)
|
||||
@@ -44,10 +44,10 @@ internal class FragmentGranularMetadataResolver(
|
||||
|
||||
val dependencyGraph = dependencyGraphResolver.resolveDependencyGraph(requestingFragment.containingModule)
|
||||
|
||||
if (dependencyGraph is DependencyGraphResolution.Unknown)
|
||||
if (dependencyGraph is KpmDependencyGraphResolution.Unknown)
|
||||
error("unexpected failure in dependency graph resolution for $requestingFragment in $project")
|
||||
|
||||
dependencyGraph as GradleDependencyGraph // refactor the type hierarchy to avoid this downcast? FIXME?
|
||||
dependencyGraph as KpmGradleDependencyGraph // refactor the type hierarchy to avoid this downcast? FIXME?
|
||||
val fragmentsToInclude = requestingFragment.withRefinesClosure
|
||||
val requestedDependencies = dependencyGraph.root.dependenciesByFragment.filterKeys { it in fragmentsToInclude }.values.flatten()
|
||||
|
||||
@@ -74,7 +74,7 @@ internal class FragmentGranularMetadataResolver(
|
||||
val resolvedComponentResult = dependencyNode.selectedComponent
|
||||
val isResolvedAsProject = resolvedComponentResult.toProjectOrNull(project)
|
||||
val result = when (dependencyModule) {
|
||||
is ExternalPlainKotlinModule -> {
|
||||
is KpmExternalPlainModule -> {
|
||||
MetadataDependencyResolution.KeepOriginalDependency(resolvedComponentResult, isResolvedAsProject)
|
||||
}
|
||||
else -> run {
|
||||
@@ -96,7 +96,7 @@ internal class FragmentGranularMetadataResolver(
|
||||
"the presence of a proper Kotlin Module"
|
||||
)
|
||||
|
||||
val projectStructureMetadata = (dependencyModule as? ExternalImportedKotlinModule)?.projectStructureMetadata
|
||||
val projectStructureMetadata = (dependencyModule as? KpmExternalImportedModule)?.projectStructureMetadata
|
||||
?: checkNotNull(projectStructureMetadataExtractor.getProjectStructureMetadata())
|
||||
|
||||
|
||||
@@ -111,7 +111,7 @@ internal class FragmentGranularMetadataResolver(
|
||||
projectStructureMetadata = projectStructureMetadata,
|
||||
primaryArtifactFile = projectStructureMetadataExtractor.primaryArtifactFile,
|
||||
hostSpecificArtifactsBySourceSet = if (
|
||||
dependencyModule is ExternalImportedKotlinModule && chosenFragments != null
|
||||
dependencyModule is KpmExternalImportedModule && chosenFragments != null
|
||||
) resolveHostSpecificMetadataArtifacts(dependencyModule, chosenFragments) else emptyMap(),
|
||||
).asMetadataProvider()
|
||||
}
|
||||
@@ -140,14 +140,14 @@ internal class FragmentGranularMetadataResolver(
|
||||
return results
|
||||
}
|
||||
|
||||
private fun fragmentsNamesVisibleByParents(kotlinModuleIdentifier: KotlinModuleIdentifier): MutableSet<String> {
|
||||
private fun fragmentsNamesVisibleByParents(kotlinModuleIdentifier: KpmModuleIdentifier): MutableSet<String> {
|
||||
val parentResolutionsForDependency = parentResultsByModuleIdentifier[kotlinModuleIdentifier].orEmpty()
|
||||
return parentResolutionsForDependency.filterIsInstance<MetadataDependencyResolution.ChooseVisibleSourceSets>()
|
||||
.flatMapTo(mutableSetOf()) { it.allVisibleSourceSetNames }
|
||||
}
|
||||
|
||||
private fun resolveHostSpecificMetadataArtifacts(
|
||||
dependencyModule: ExternalImportedKotlinModule,
|
||||
dependencyModule: KpmExternalImportedModule,
|
||||
chosenFragments: FragmentResolution.ChosenFragments,
|
||||
): Map<String, File> {
|
||||
val visibleFragments = chosenFragments.visibleFragments
|
||||
@@ -161,7 +161,7 @@ internal class FragmentGranularMetadataResolver(
|
||||
// resolve the dependencies of that variant getting the host-specific metadata artifact
|
||||
relevantVariantResolution?.let { resolution ->
|
||||
val configurationResolvingPlatformVariant =
|
||||
(resolution.requestingVariant as KotlinGradleVariant).compileDependenciesConfiguration
|
||||
(resolution.requestingVariant as KpmGradleVariant).compileDependenciesConfiguration
|
||||
val hostSpecificArtifact = ResolvedMppVariantsProvider.get(project)
|
||||
.getHostSpecificMetadataArtifactByRootModule(
|
||||
dependencyModule.moduleIdentifier,
|
||||
|
||||
+2
-2
@@ -6,9 +6,9 @@
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
|
||||
|
||||
internal class FragmentGranularMetadataResolverFactory {
|
||||
private val resolvers = mutableMapOf<KotlinGradleFragment, FragmentGranularMetadataResolver>()
|
||||
private val resolvers = mutableMapOf<KpmGradleFragment, FragmentGranularMetadataResolver>()
|
||||
|
||||
fun getOrCreate(fragment: KotlinGradleFragment): FragmentGranularMetadataResolver = resolvers.getOrPut(fragment) {
|
||||
fun getOrCreate(fragment: KpmGradleFragment): FragmentGranularMetadataResolver = resolvers.getOrPut(fragment) {
|
||||
FragmentGranularMetadataResolver(fragment, lazy {
|
||||
fragment.refinesClosure.map { refinesFragment ->
|
||||
getOrCreate(refinesFragment)
|
||||
|
||||
+7
-7
@@ -13,30 +13,30 @@ import java.io.File
|
||||
typealias SourceRoots = Iterable<File>
|
||||
typealias SourceRootsProvider = Provider<out SourceRoots>
|
||||
typealias MultipleSourceRootsProvider = Provider<out Iterable<SourceRootsProvider>>
|
||||
typealias SourceRootsProvidersByFragment = Map<KotlinGradleFragment, SourceRootsProvider>
|
||||
typealias SourceRootsProvidersByFragment = Map<KpmGradleFragment, SourceRootsProvider>
|
||||
|
||||
/** Note: the API is [Provider]-based rather than FileCollection-based because FileCollection API erases the internal structure of the
|
||||
* file sets, and this internal structure is currently needed for correctly inferring Java source roots from the sources added to the
|
||||
* JVM compilations (it is important to pass sources in SourceDirectorySets) */
|
||||
open class FragmentSourcesProvider {
|
||||
protected open fun getSourcesFromFragmentsAsMap(
|
||||
fragments: Iterable<KotlinGradleFragment>
|
||||
fragments: Iterable<KpmGradleFragment>
|
||||
): SourceRootsProvidersByFragment =
|
||||
fragments.associateWith { it.project.provider { it.kotlinSourceRoots } }
|
||||
|
||||
open fun getFragmentOwnSources(fragment: KotlinGradleFragment): SourceRootsProvider =
|
||||
open fun getFragmentOwnSources(fragment: KpmGradleFragment): SourceRootsProvider =
|
||||
getSourcesFromFragmentsAsMap(listOf(fragment)).values.single()
|
||||
|
||||
open fun getAllFragmentSourcesAsMap(module: KotlinGradleModule): SourceRootsProvidersByFragment =
|
||||
open fun getAllFragmentSourcesAsMap(module: KpmGradleModule): SourceRootsProvidersByFragment =
|
||||
getSourcesFromFragmentsAsMap(module.fragments)
|
||||
|
||||
open fun getSourcesFromRefinesClosureAsMap(fragment: KotlinGradleFragment): SourceRootsProvidersByFragment =
|
||||
open fun getSourcesFromRefinesClosureAsMap(fragment: KpmGradleFragment): SourceRootsProvidersByFragment =
|
||||
getSourcesFromFragmentsAsMap(fragment.withRefinesClosure)
|
||||
|
||||
open fun getSourcesFromRefinesClosure(fragment: KotlinGradleFragment): MultipleSourceRootsProvider =
|
||||
open fun getSourcesFromRefinesClosure(fragment: KpmGradleFragment): MultipleSourceRootsProvider =
|
||||
fragment.project.provider { getSourcesFromRefinesClosureAsMap(fragment).values }
|
||||
|
||||
open fun getCommonSourcesFromRefinesClosure(fragment: KotlinGradleFragment): MultipleSourceRootsProvider {
|
||||
open fun getCommonSourcesFromRefinesClosure(fragment: KpmGradleFragment): MultipleSourceRootsProvider {
|
||||
val containingModule = fragment.containingModule
|
||||
val project = containingModule.project
|
||||
getSourcesFromRefinesClosureAsMap(fragment)
|
||||
|
||||
+3
-3
@@ -18,17 +18,17 @@ import org.jetbrains.kotlin.project.model.*
|
||||
import java.io.File
|
||||
|
||||
internal fun Project.compilerPluginProviderForMetadata(
|
||||
fragment: KotlinGradleFragment,
|
||||
fragment: KpmGradleFragment,
|
||||
compilationData: KotlinCommonFragmentMetadataCompilationData
|
||||
) = compilerPluginDataProvider(compilationData, fragment::metadataCompilationPluginData)
|
||||
|
||||
internal fun Project.compilerPluginProviderForNativeMetadata(
|
||||
fragment: KotlinGradleFragment,
|
||||
fragment: KpmGradleFragment,
|
||||
compilationData: KotlinNativeFragmentMetadataCompilationData
|
||||
) = compilerPluginDataProvider(compilationData, fragment::nativeMetadataCompilationPluginData)
|
||||
|
||||
internal fun Project.compilerPluginProviderForPlatformCompilation(
|
||||
variant: KotlinGradleVariant,
|
||||
variant: KpmGradleVariant,
|
||||
compilationData: KotlinCompilationData<*>
|
||||
) = compilerPluginDataProvider(compilationData, variant::platformCompilationPluginData)
|
||||
|
||||
|
||||
+23
-23
@@ -44,13 +44,13 @@ abstract class KotlinPm20GradlePlugin @Inject constructor(
|
||||
|
||||
private fun createDefaultModules(project: Project) {
|
||||
project.pm20Extension.apply {
|
||||
modules.create(KotlinGradleModule.MAIN_MODULE_NAME)
|
||||
modules.create(KotlinGradleModule.TEST_MODULE_NAME)
|
||||
modules.create(KpmGradleModule.MAIN_MODULE_NAME)
|
||||
modules.create(KpmGradleModule.TEST_MODULE_NAME)
|
||||
main { makePublic() }
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupPublicationForModule(module: KotlinGradleModule) {
|
||||
private fun setupPublicationForModule(module: KpmGradleModule) {
|
||||
val project = module.project
|
||||
|
||||
val metadataElements = project.configurations.getByName(metadataElementsConfigurationName(module))
|
||||
@@ -87,7 +87,7 @@ abstract class KotlinPm20GradlePlugin @Inject constructor(
|
||||
}
|
||||
}
|
||||
|
||||
fun rootPublicationComponentName(module: KotlinGradleModule) =
|
||||
fun rootPublicationComponentName(module: KpmGradleModule) =
|
||||
module.disambiguateName("root")
|
||||
|
||||
open class KotlinPm20ProjectExtension(project: Project) : KotlinTopLevelExtension(project) {
|
||||
@@ -96,53 +96,53 @@ open class KotlinPm20ProjectExtension(project: Project) : KotlinTopLevelExtensio
|
||||
|
||||
internal val ideaKotlinProjectModelBuilder by lazy { IdeaKotlinProjectModelBuilder.default(this) }
|
||||
|
||||
val modules: NamedDomainObjectContainer<KotlinGradleModule>
|
||||
val modules: NamedDomainObjectContainer<KpmGradleModule>
|
||||
get() = project.kpmModules
|
||||
|
||||
@Suppress("unused") // DSL function
|
||||
fun mainAndTest(configure: KotlinGradleModule.() -> Unit) {
|
||||
fun mainAndTest(configure: KpmGradleModule.() -> Unit) {
|
||||
main(configure)
|
||||
test(configure)
|
||||
}
|
||||
|
||||
val main: KotlinGradleModule
|
||||
get() = modules.getByName(KotlinGradleModule.MAIN_MODULE_NAME)
|
||||
val main: KpmGradleModule
|
||||
get() = modules.getByName(KpmGradleModule.MAIN_MODULE_NAME)
|
||||
|
||||
val test: KotlinGradleModule
|
||||
get() = modules.getByName(KotlinGradleModule.TEST_MODULE_NAME)
|
||||
val test: KpmGradleModule
|
||||
get() = modules.getByName(KpmGradleModule.TEST_MODULE_NAME)
|
||||
|
||||
fun main(configure: KotlinGradleModule.() -> Unit = { }) = main.apply(configure)
|
||||
fun test(configure: KotlinGradleModule.() -> Unit = { }) = test.apply(configure)
|
||||
fun main(configure: KpmGradleModule.() -> Unit = { }) = main.apply(configure)
|
||||
fun test(configure: KpmGradleModule.() -> Unit = { }) = test.apply(configure)
|
||||
|
||||
@PublishedApi
|
||||
@JvmName("isAllowCommonizer")
|
||||
internal fun isAllowCommonizerForIde(@Suppress("UNUSED_PARAMETER") project: Project): Boolean = false
|
||||
}
|
||||
|
||||
val KotlinGradleModule.jvm: KotlinJvmVariant
|
||||
get() = fragments.maybeCreate("jvm", KotlinJvmVariant::class.java)
|
||||
val KpmGradleModule.jvm: KpmJvmVariant
|
||||
get() = fragments.maybeCreate("jvm", KpmJvmVariant::class.java)
|
||||
|
||||
fun KotlinGradleModule.jvm(configure: KotlinJvmVariant.() -> Unit): KotlinJvmVariant = jvm.apply(configure)
|
||||
fun KpmGradleModule.jvm(configure: KpmJvmVariant.() -> Unit): KpmJvmVariant = jvm.apply(configure)
|
||||
|
||||
fun KotlinPm20ProjectExtension.jvm(configure: KotlinFragmentSlice<KotlinJvmVariant>.() -> Unit) {
|
||||
val getOrCreateVariant: KotlinGradleModule.() -> KotlinJvmVariant = { jvm }
|
||||
fun KotlinPm20ProjectExtension.jvm(configure: KotlinFragmentSlice<KpmJvmVariant>.() -> Unit) {
|
||||
val getOrCreateVariant: KpmGradleModule.() -> KpmJvmVariant = { jvm }
|
||||
mainAndTest { getOrCreateVariant(this) }
|
||||
val slice = KotlinFragmentSlice(this, getOrCreateVariant)
|
||||
configure(slice)
|
||||
}
|
||||
|
||||
open class KotlinFragmentSlice<T : KotlinGradleFragment>(
|
||||
open class KotlinFragmentSlice<T : KpmGradleFragment>(
|
||||
val pm20ProjectExtension: KotlinPm20ProjectExtension,
|
||||
val getOrCreateFragment: (KotlinGradleModule) -> T
|
||||
val getOrCreateFragment: (KpmGradleModule) -> T
|
||||
) {
|
||||
fun inMain(configure: T.() -> Unit) {
|
||||
pm20ProjectExtension.modules.getByName(KotlinGradleModule.MAIN_MODULE_NAME).apply {
|
||||
pm20ProjectExtension.modules.getByName(KpmGradleModule.MAIN_MODULE_NAME).apply {
|
||||
getOrCreateFragment(this).configure()
|
||||
}
|
||||
}
|
||||
|
||||
fun inTest(configure: T.() -> Unit) {
|
||||
pm20ProjectExtension.modules.getByName(KotlinGradleModule.TEST_MODULE_NAME).apply {
|
||||
pm20ProjectExtension.modules.getByName(KpmGradleModule.TEST_MODULE_NAME).apply {
|
||||
getOrCreateFragment(this).configure()
|
||||
}
|
||||
}
|
||||
@@ -161,11 +161,11 @@ open class KotlinFragmentSlice<T : KotlinGradleFragment>(
|
||||
pm20ProjectExtension.modules.getByName(moduleName).apply { getOrCreateFragment(this).configure() }
|
||||
}
|
||||
|
||||
fun inModule(module: NamedDomainObjectProvider<KotlinGradleModule>, configure: T.() -> Unit) {
|
||||
fun inModule(module: NamedDomainObjectProvider<KpmGradleModule>, configure: T.() -> Unit) {
|
||||
module.get().apply { inModule(this, configure) }
|
||||
}
|
||||
|
||||
fun inModule(module: KotlinGradleModule, configure: T.() -> Unit) {
|
||||
fun inModule(module: KpmGradleModule, configure: T.() -> Unit) {
|
||||
getOrCreateFragment(module).configure()
|
||||
}
|
||||
}
|
||||
|
||||
+10
-11
@@ -8,37 +8,36 @@
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.KotlinNameDisambiguation
|
||||
|
||||
typealias KotlinCommonFragmentFactory = KotlinGradleFragmentFactory<KotlinGradleFragmentInternal>
|
||||
typealias KotlinCommonFragmentFactory = KotlinGradleFragmentFactory<KpmGradleFragmentInternal>
|
||||
|
||||
fun KotlinCommonFragmentFactory(module: KotlinGradleModule): KotlinCommonFragmentFactory =
|
||||
fun KotlinCommonFragmentFactory(module: KpmGradleModule): KotlinCommonFragmentFactory =
|
||||
KotlinCommonFragmentFactory(KotlinCommonFragmentInstantiator(module))
|
||||
|
||||
fun KotlinCommonFragmentFactory(
|
||||
commonFragmentInstantiator: KotlinCommonFragmentInstantiator,
|
||||
commonFragmentConfigurator: KotlinCommonFragmentConfigurator = KotlinCommonFragmentConfigurator()
|
||||
): KotlinGradleFragmentFactory<KotlinGradleFragmentInternal> = KotlinGradleFragmentFactory(
|
||||
): KotlinGradleFragmentFactory<KpmGradleFragmentInternal> = KotlinGradleFragmentFactory(
|
||||
fragmentInstantiator = commonFragmentInstantiator,
|
||||
fragmentConfigurator = commonFragmentConfigurator
|
||||
)
|
||||
|
||||
class KotlinCommonFragmentInstantiator(
|
||||
private val module: KotlinGradleModule,
|
||||
private val module: KpmGradleModule,
|
||||
private val dependencyConfigurationsFactory: KotlinFragmentDependencyConfigurationsFactory =
|
||||
DefaultKotlinFragmentDependencyConfigurationsFactory
|
||||
) : KotlinGradleFragmentFactory.FragmentInstantiator<KotlinGradleFragmentInternal> {
|
||||
override fun create(name: String): KotlinGradleFragmentInternal {
|
||||
) : KotlinGradleFragmentFactory.FragmentInstantiator<KpmGradleFragmentInternal> {
|
||||
override fun create(name: String): KpmGradleFragmentInternal {
|
||||
val names = FragmentNameDisambiguation(module, name)
|
||||
return KotlinGradleFragmentInternal(module, name, dependencyConfigurationsFactory.create(module, names))
|
||||
return KpmGradleFragmentInternal(module, name, dependencyConfigurationsFactory.create(module, names))
|
||||
}
|
||||
}
|
||||
|
||||
class KotlinCommonFragmentConfigurator(
|
||||
private val sourceDirectoriesSetup: KotlinSourceDirectoriesConfigurator<KotlinGradleFragmentInternal> =
|
||||
private val sourceDirectoriesSetup: KotlinSourceDirectoriesConfigurator<KpmGradleFragmentInternal> =
|
||||
DefaultKotlinSourceDirectoriesConfigurator
|
||||
) : KotlinGradleFragmentFactory.FragmentConfigurator<KotlinGradleFragmentInternal> {
|
||||
override fun configure(fragment: KotlinGradleFragmentInternal) {
|
||||
) : KotlinGradleFragmentFactory.FragmentConfigurator<KpmGradleFragmentInternal> {
|
||||
override fun configure(fragment: KpmGradleFragmentInternal) {
|
||||
sourceDirectoriesSetup.configure(fragment)
|
||||
}
|
||||
}
|
||||
|
||||
+5
-5
@@ -7,20 +7,20 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
|
||||
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
|
||||
interface KotlinCompileTaskConfigurator<in T : KotlinGradleVariant> {
|
||||
interface KotlinCompileTaskConfigurator<in T : KpmGradleVariant> {
|
||||
fun registerCompileTasks(variant: T): TaskProvider<*>
|
||||
}
|
||||
|
||||
object KotlinJvmCompileTaskConfigurator : KotlinCompileTaskConfigurator<KotlinJvmVariant> {
|
||||
override fun registerCompileTasks(variant: KotlinJvmVariant): TaskProvider<*> {
|
||||
object KotlinJvmCompileTaskConfigurator : KotlinCompileTaskConfigurator<KpmJvmVariant> {
|
||||
override fun registerCompileTasks(variant: KpmJvmVariant): TaskProvider<*> {
|
||||
val compilationData = variant.compilationData
|
||||
LifecycleTasksManager(variant.project).registerClassesTask(compilationData)
|
||||
return KotlinCompilationTaskConfigurator(variant.project).createKotlinJvmCompilationTask(variant, compilationData)
|
||||
}
|
||||
}
|
||||
|
||||
object KotlinNativeCompileTaskConfigurator : KotlinCompileTaskConfigurator<KotlinNativeVariantInternal> {
|
||||
override fun registerCompileTasks(variant: KotlinNativeVariantInternal): TaskProvider<*> {
|
||||
object KotlinNativeCompileTaskConfigurator : KotlinCompileTaskConfigurator<KpmNativeVariantInternal> {
|
||||
override fun registerCompileTasks(variant: KpmNativeVariantInternal): TaskProvider<*> {
|
||||
val compilationData = variant.compilationData
|
||||
LifecycleTasksManager(variant.project).registerClassesTask(compilationData)
|
||||
return KotlinCompilationTaskConfigurator(variant.project).createKotlinNativeCompilationTask(variant, compilationData)
|
||||
|
||||
+9
-10
@@ -17,7 +17,6 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.disambiguateName
|
||||
import org.jetbrains.kotlin.gradle.utils.filesProvider
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
import org.jetbrains.kotlin.project.model.VariantResolution
|
||||
import org.jetbrains.kotlin.project.model.withRefinesClosure
|
||||
|
||||
interface KotlinVariantCompilationDataInternal<T : KotlinCommonOptions> : KotlinVariantCompilationData<T> {
|
||||
override val compileKotlinTaskName: String
|
||||
@@ -27,7 +26,7 @@ interface KotlinVariantCompilationDataInternal<T : KotlinCommonOptions> : Kotlin
|
||||
get() = owner.disambiguateName("classes")
|
||||
|
||||
override val kotlinSourceDirectoriesByFragmentName: Map<String, SourceDirectorySet>
|
||||
get() = owner.withRefinesClosure.filterIsInstance<KotlinGradleVariant>().associate { it.disambiguateName("") to it.kotlinSourceRoots }
|
||||
get() = owner.withRefinesClosure.filterIsInstance<KpmGradleVariant>().associate { it.disambiguateName("") to it.kotlinSourceRoots }
|
||||
|
||||
override val friendPaths: Iterable<FileCollection>
|
||||
get() {
|
||||
@@ -55,21 +54,21 @@ interface KotlinVariantCompilationDataInternal<T : KotlinCommonOptions> : Kotlin
|
||||
override val moduleName: String
|
||||
get() = // TODO accurate module names that don't rely on all variants having a main counterpart
|
||||
owner.containingModule.project.kpmModules
|
||||
.getByName(KotlinGradleModule.MAIN_MODULE_NAME).variants.findByName(owner.name)?.ownModuleName() ?: ownModuleName
|
||||
.getByName(KpmGradleModule.MAIN_MODULE_NAME).variants.findByName(owner.name)?.ownModuleName() ?: ownModuleName
|
||||
|
||||
override val ownModuleName: String
|
||||
get() = owner.ownModuleName()
|
||||
|
||||
private fun resolveFriendVariants(): Iterable<KotlinGradleVariant> {
|
||||
val moduleResolver = GradleModuleDependencyResolver.getForCurrentBuild(project)
|
||||
private fun resolveFriendVariants(): Iterable<KpmGradleVariant> {
|
||||
val moduleResolver = KpmGradleModuleDependencyResolver.getForCurrentBuild(project)
|
||||
val variantResolver = GradleModuleVariantResolver.getForCurrentBuild(project)
|
||||
val dependencyGraphResolver = GradleKotlinDependencyGraphResolver(moduleResolver)
|
||||
val dependencyGraphResolver = KpmGradleDependencyGraphResolver(moduleResolver)
|
||||
|
||||
val friendModules =
|
||||
((dependencyGraphResolver.resolveDependencyGraph(owner.containingModule) as? GradleDependencyGraph)
|
||||
((dependencyGraphResolver.resolveDependencyGraph(owner.containingModule) as? KpmGradleDependencyGraph)
|
||||
?: error("Failed to resolve dependencies of ${owner.containingModule}"))
|
||||
.allDependencyModules
|
||||
.filterIsInstance<KotlinGradleModule>()
|
||||
.filterIsInstance<KpmGradleModule>()
|
||||
.filter { dependencyModule ->
|
||||
// the module comes from the same Gradle project // todo: extend to other friends once supported
|
||||
dependencyModule.project == owner.containingModule.project
|
||||
@@ -79,11 +78,11 @@ interface KotlinVariantCompilationDataInternal<T : KotlinCommonOptions> : Kotlin
|
||||
.map { friendModule -> variantResolver.getChosenVariant(owner, friendModule) }
|
||||
// also, important to check that the owner variant really requests this module:
|
||||
.filterIsInstance<VariantResolution.VariantMatch>()
|
||||
.mapNotNull { variantMatch -> variantMatch.chosenVariant as? KotlinGradleVariant }
|
||||
.mapNotNull { variantMatch -> variantMatch.chosenVariant as? KpmGradleVariant }
|
||||
}
|
||||
}
|
||||
|
||||
fun KotlinCompilationData<*>.isMainCompilationData(): Boolean = when (this) {
|
||||
is KotlinCompilation<*> -> isMain()
|
||||
else -> compilationPurpose == KotlinGradleModule.MAIN_MODULE_NAME
|
||||
else -> compilationPurpose == KpmGradleModule.MAIN_MODULE_NAME
|
||||
}
|
||||
|
||||
+6
-6
@@ -20,14 +20,14 @@ open class KotlinCompilationTaskConfigurator(
|
||||
) {
|
||||
open val fragmentSourcesProvider: FragmentSourcesProvider = FragmentSourcesProvider()
|
||||
|
||||
open fun getSourcesForFragmentCompilation(fragment: KotlinGradleFragment): MultipleSourceRootsProvider =
|
||||
open fun getSourcesForFragmentCompilation(fragment: KpmGradleFragment): MultipleSourceRootsProvider =
|
||||
fragmentSourcesProvider.getSourcesFromRefinesClosure(fragment)
|
||||
|
||||
open fun getCommonSourcesForFragmentCompilation(fragment: KotlinGradleFragment): MultipleSourceRootsProvider =
|
||||
open fun getCommonSourcesForFragmentCompilation(fragment: KpmGradleFragment): MultipleSourceRootsProvider =
|
||||
fragmentSourcesProvider.getCommonSourcesFromRefinesClosure(fragment)
|
||||
|
||||
fun createKotlinJvmCompilationTask(
|
||||
variant: KotlinGradleVariant,
|
||||
variant: KpmGradleVariant,
|
||||
compilationData: KotlinCompilationData<*>
|
||||
): TaskProvider<out KotlinCompile> {
|
||||
Kotlin2JvmSourceSetProcessor(KotlinTasksProvider(), compilationData).run()
|
||||
@@ -46,7 +46,7 @@ open class KotlinCompilationTaskConfigurator(
|
||||
}
|
||||
|
||||
protected fun createKotlinNativeCompilationTask(
|
||||
fragment: KotlinGradleFragment,
|
||||
fragment: KpmGradleFragment,
|
||||
compilationData: KotlinNativeCompilationData<*>,
|
||||
configure: KotlinNativeCompile.() -> Unit
|
||||
): TaskProvider<KotlinNativeCompile> {
|
||||
@@ -65,9 +65,9 @@ open class KotlinCompilationTaskConfigurator(
|
||||
}
|
||||
|
||||
fun createKotlinNativeCompilationTask(
|
||||
variant: KotlinGradleVariant,
|
||||
variant: KpmGradleVariant,
|
||||
compilationData: KotlinNativeCompilationData<*>
|
||||
): TaskProvider<KotlinNativeCompile> = createKotlinNativeCompilationTask(variant, compilationData) {
|
||||
kotlinPluginData = project.compilerPluginProviderForPlatformCompilation(variant, compilationData)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.gradle.utils.dashSeparatedLowercaseName
|
||||
/**
|
||||
* Registers a [Jar] task with the variant's compilation outputs and attaches this artifact to the given configuration.
|
||||
*/
|
||||
val KotlinFragmentCompilationOutputsJarArtifact = FragmentArtifacts<KotlinGradleVariant> {
|
||||
val KotlinFragmentCompilationOutputsJarArtifact = FragmentArtifacts<KpmGradleVariant> {
|
||||
val jar = project.locateOrRegisterTask<Jar>(fragment.outputsJarTaskName) {
|
||||
it.from(fragment.compilationOutputs.allOutputs)
|
||||
it.archiveAppendix.set(dashSeparatedLowercaseName(fragment.name, fragment.containingModule.moduleClassifier))
|
||||
@@ -23,5 +23,5 @@ val KotlinFragmentCompilationOutputsJarArtifact = FragmentArtifacts<KotlinGradle
|
||||
fragment.project.artifacts.add(Dependency.ARCHIVES_CONFIGURATION, jar)
|
||||
}
|
||||
|
||||
internal val KotlinGradleVariant.outputsJarTaskName: String
|
||||
get() = FragmentNameDisambiguationOmittingMain(containingModule, name).disambiguateName("jar")
|
||||
internal val KpmGradleVariant.outputsJarTaskName: String
|
||||
get() = FragmentNameDisambiguationOmittingMain(containingModule, name).disambiguateName("jar")
|
||||
|
||||
+2
-2
@@ -8,12 +8,12 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.KotlinNameDisambiguation
|
||||
|
||||
interface KotlinFragmentDependencyConfigurationsFactory {
|
||||
fun create(module: KotlinGradleModule, names: KotlinNameDisambiguation): KotlinFragmentDependencyConfigurations
|
||||
fun create(module: KpmGradleModule, names: KotlinNameDisambiguation): KotlinFragmentDependencyConfigurations
|
||||
}
|
||||
|
||||
object DefaultKotlinFragmentDependencyConfigurationsFactory : KotlinFragmentDependencyConfigurationsFactory {
|
||||
|
||||
override fun create(module: KotlinGradleModule, names: KotlinNameDisambiguation): KotlinFragmentDependencyConfigurations {
|
||||
override fun create(module: KpmGradleModule, names: KotlinNameDisambiguation): KotlinFragmentDependencyConfigurations {
|
||||
val configurations = module.project.configurations
|
||||
val apiConfiguration = configurations.maybeCreate(names.disambiguateName("api"))
|
||||
val implementationConfiguration = configurations.maybeCreate(names.disambiguateName("implementation"))
|
||||
|
||||
+1
-2
@@ -11,14 +11,13 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.disambiguateName
|
||||
import org.jetbrains.kotlin.gradle.targets.metadata.filesWithUnpackedArchives
|
||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||
import org.jetbrains.kotlin.library.KLIB_FILE_EXTENSION
|
||||
import org.jetbrains.kotlin.project.model.withRefinesClosure
|
||||
|
||||
/**
|
||||
* Will register a 'hostSpecificMetadataJar' [Jar] task containing compilation outputs of host specific metadata.
|
||||
* Will add this jar artifact to the given configuration
|
||||
*/
|
||||
|
||||
val KotlinFragmentHostSpecificMetadataArtifact = FragmentArtifacts<KotlinNativeVariantInternal> artifacts@{
|
||||
val KotlinFragmentHostSpecificMetadataArtifact = FragmentArtifacts<KpmNativeVariantInternal> artifacts@{
|
||||
val hostSpecificMetadataElements = fragment.hostSpecificMetadataElementsConfiguration ?: return@artifacts
|
||||
|
||||
val hostSpecificMetadataJar = project.registerTask<Jar>(fragment.disambiguateName("hostSpecificMetadataJar")) { jar ->
|
||||
|
||||
+3
-3
@@ -9,13 +9,13 @@ import org.gradle.api.artifacts.Configuration
|
||||
import org.gradle.api.capabilities.Capability
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.ComputedCapability
|
||||
|
||||
val KotlinFragmentModuleCapability = FragmentCapabilities<KotlinGradleFragment> {
|
||||
val KotlinFragmentModuleCapability = FragmentCapabilities<KpmGradleFragment> {
|
||||
capability(fragment.containingModule.moduleCapability ?: return@FragmentCapabilities)
|
||||
}
|
||||
|
||||
internal fun setModuleCapability(configuration: Configuration, module: KotlinGradleModule) {
|
||||
internal fun setModuleCapability(configuration: Configuration, module: KpmGradleModule) {
|
||||
configuration.outgoing.capability(module.moduleCapability ?: return)
|
||||
}
|
||||
|
||||
internal val KotlinGradleModule.moduleCapability: Capability?
|
||||
internal val KpmGradleModule.moduleCapability: Capability?
|
||||
get() = if (moduleClassifier != null) ComputedCapability.fromModule(this) else null
|
||||
|
||||
+7
-7
@@ -14,15 +14,15 @@ import org.gradle.api.artifacts.ConfigurationVariant
|
||||
/* Internal abbreviation */
|
||||
internal typealias FragmentArtifacts<T> = KotlinGradleFragmentConfigurationArtifacts<T>
|
||||
|
||||
interface KotlinGradleFragmentConfigurationArtifacts<in T : KotlinGradleFragment> {
|
||||
interface KotlinGradleFragmentConfigurationArtifacts<in T : KpmGradleFragment> {
|
||||
fun addArtifacts(outgoing: ConfigurationPublications, fragment: T)
|
||||
|
||||
object None : KotlinGradleFragmentConfigurationArtifacts<KotlinGradleFragment> {
|
||||
override fun addArtifacts(outgoing: ConfigurationPublications, fragment: KotlinGradleFragment) = Unit
|
||||
object None : KotlinGradleFragmentConfigurationArtifacts<KpmGradleFragment> {
|
||||
override fun addArtifacts(outgoing: ConfigurationPublications, fragment: KpmGradleFragment) = Unit
|
||||
}
|
||||
}
|
||||
|
||||
class KotlinGradleFragmentConfigurationArtifactsContext<T : KotlinGradleFragment> internal constructor(
|
||||
class KotlinGradleFragmentConfigurationArtifactsContext<T : KpmGradleFragment> internal constructor(
|
||||
internal val outgoing: ConfigurationPublications,
|
||||
val fragment: T
|
||||
) {
|
||||
@@ -40,7 +40,7 @@ class KotlinGradleFragmentConfigurationArtifactsContext<T : KotlinGradleFragment
|
||||
}
|
||||
|
||||
@Suppress("FunctionName")
|
||||
fun <T : KotlinGradleFragment> FragmentArtifacts(
|
||||
fun <T : KpmGradleFragment> FragmentArtifacts(
|
||||
addArtifacts: KotlinGradleFragmentConfigurationArtifactsContext<T>.() -> Unit
|
||||
): KotlinGradleFragmentConfigurationArtifacts<T> {
|
||||
return object : KotlinGradleFragmentConfigurationArtifacts<T> {
|
||||
@@ -51,7 +51,7 @@ fun <T : KotlinGradleFragment> FragmentArtifacts(
|
||||
}
|
||||
}
|
||||
|
||||
operator fun <T : KotlinGradleFragment> FragmentArtifacts<T>.plus(other: FragmentArtifacts<T>): FragmentArtifacts<T> {
|
||||
operator fun <T : KpmGradleFragment> FragmentArtifacts<T>.plus(other: FragmentArtifacts<T>): FragmentArtifacts<T> {
|
||||
if (this === KotlinGradleFragmentConfigurationArtifacts.None) return other
|
||||
if (other === KotlinGradleFragmentConfigurationArtifacts.None) return this
|
||||
|
||||
@@ -70,7 +70,7 @@ operator fun <T : KotlinGradleFragment> FragmentArtifacts<T>.plus(other: Fragmen
|
||||
return CompositeFragmentArtifacts(listOf(this, other))
|
||||
}
|
||||
|
||||
internal class CompositeFragmentArtifacts<in T : KotlinGradleFragment>(val children: List<FragmentArtifacts<T>>) :
|
||||
internal class CompositeFragmentArtifacts<in T : KpmGradleFragment>(val children: List<FragmentArtifacts<T>>) :
|
||||
FragmentArtifacts<T> {
|
||||
|
||||
override fun addArtifacts(outgoing: ConfigurationPublications, fragment: T) {
|
||||
|
||||
+8
-8
@@ -13,16 +13,16 @@ import org.gradle.api.attributes.AttributeContainer
|
||||
/* Internal abbreviation */
|
||||
internal typealias FragmentAttributes<T> = KotlinGradleFragmentConfigurationAttributes<T>
|
||||
|
||||
interface KotlinGradleFragmentConfigurationAttributes<in T : KotlinGradleFragment> {
|
||||
interface KotlinGradleFragmentConfigurationAttributes<in T : KpmGradleFragment> {
|
||||
|
||||
fun setAttributes(attributes: AttributeContainer, fragment: T)
|
||||
|
||||
object None : FragmentAttributes<KotlinGradleFragment> {
|
||||
override fun setAttributes(attributes: AttributeContainer, fragment: KotlinGradleFragment) = Unit
|
||||
object None : FragmentAttributes<KpmGradleFragment> {
|
||||
override fun setAttributes(attributes: AttributeContainer, fragment: KpmGradleFragment) = Unit
|
||||
}
|
||||
}
|
||||
|
||||
class KotlinGradleFragmentConfigurationAttributesContext<T : KotlinGradleFragment> internal constructor(
|
||||
class KotlinGradleFragmentConfigurationAttributesContext<T : KpmGradleFragment> internal constructor(
|
||||
internal val attributes: AttributeContainer,
|
||||
val fragment: T,
|
||||
) : AttributeContainer by attributes {
|
||||
@@ -38,7 +38,7 @@ class KotlinGradleFragmentConfigurationAttributesContext<T : KotlinGradleFragmen
|
||||
}
|
||||
|
||||
@Suppress("FunctionName")
|
||||
fun <T : KotlinGradleFragment> FragmentAttributes(
|
||||
fun <T : KpmGradleFragment> FragmentAttributes(
|
||||
setAttributes: KotlinGradleFragmentConfigurationAttributesContext<T>.() -> Unit
|
||||
): KotlinGradleFragmentConfigurationAttributes<T> {
|
||||
return object : KotlinGradleFragmentConfigurationAttributes<T> {
|
||||
@@ -49,13 +49,13 @@ fun <T : KotlinGradleFragment> FragmentAttributes(
|
||||
}
|
||||
}
|
||||
|
||||
fun <T : KotlinGradleFragment> AttributeContainer.apply(
|
||||
fun <T : KpmGradleFragment> AttributeContainer.apply(
|
||||
attributes: KotlinGradleFragmentConfigurationAttributes<T>, fragment: T
|
||||
) {
|
||||
attributes.setAttributes(this, fragment)
|
||||
}
|
||||
|
||||
operator fun <T : KotlinGradleFragment> FragmentAttributes<T>.plus(other: FragmentAttributes<T>): FragmentAttributes<T> {
|
||||
operator fun <T : KpmGradleFragment> FragmentAttributes<T>.plus(other: FragmentAttributes<T>): FragmentAttributes<T> {
|
||||
if (this === KotlinGradleFragmentConfigurationAttributes.None) return other
|
||||
if (other === KotlinGradleFragmentConfigurationAttributes.None) return this
|
||||
|
||||
@@ -74,7 +74,7 @@ operator fun <T : KotlinGradleFragment> FragmentAttributes<T>.plus(other: Fragme
|
||||
return CompositeFragmentAttributes(listOf(this, other))
|
||||
}
|
||||
|
||||
internal class CompositeFragmentAttributes<in T : KotlinGradleFragment>(val children: List<FragmentAttributes<T>>) :
|
||||
internal class CompositeFragmentAttributes<in T : KpmGradleFragment>(val children: List<FragmentAttributes<T>>) :
|
||||
FragmentAttributes<T> {
|
||||
override fun setAttributes(attributes: AttributeContainer, fragment: T) {
|
||||
children.forEach { child -> child.setAttributes(attributes, fragment) }
|
||||
|
||||
+8
-8
@@ -16,19 +16,19 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragmentConfigura
|
||||
/* Internal abbreviation */
|
||||
internal typealias FragmentCapabilities<T> = KotlinGradleFragmentConfigurationCapabilities<T>
|
||||
|
||||
interface KotlinGradleFragmentConfigurationCapabilities<in T : KotlinGradleFragment> {
|
||||
interface KotlinGradleFragmentConfigurationCapabilities<in T : KpmGradleFragment> {
|
||||
interface CapabilitiesContainer {
|
||||
fun capability(notation: Any)
|
||||
}
|
||||
|
||||
fun setCapabilities(container: CapabilitiesContainer, fragment: T)
|
||||
|
||||
object None : KotlinGradleFragmentConfigurationCapabilities<KotlinGradleFragment> {
|
||||
override fun setCapabilities(container: CapabilitiesContainer, fragment: KotlinGradleFragment) = Unit
|
||||
object None : KotlinGradleFragmentConfigurationCapabilities<KpmGradleFragment> {
|
||||
override fun setCapabilities(container: CapabilitiesContainer, fragment: KpmGradleFragment) = Unit
|
||||
}
|
||||
}
|
||||
|
||||
fun <T : KotlinGradleFragment> KotlinGradleFragmentConfigurationCapabilities<T>.setCapabilities(
|
||||
fun <T : KpmGradleFragment> KotlinGradleFragmentConfigurationCapabilities<T>.setCapabilities(
|
||||
publications: ConfigurationPublications, fragment: T
|
||||
) = setCapabilities(CapabilitiesContainer(publications), fragment)
|
||||
|
||||
@@ -44,13 +44,13 @@ private class CapabilitiesContainerImpl(
|
||||
override fun capability(notation: Any) = publications.capability(notation)
|
||||
}
|
||||
|
||||
class KotlinGradleFragmentConfigurationCapabilitiesContext<T : KotlinGradleFragment> internal constructor(
|
||||
class KotlinGradleFragmentConfigurationCapabilitiesContext<T : KpmGradleFragment> internal constructor(
|
||||
internal val container: CapabilitiesContainer, val fragment: T
|
||||
) : CapabilitiesContainer by container {
|
||||
val project: Project get() = fragment.project
|
||||
}
|
||||
|
||||
fun <T : KotlinGradleFragment> FragmentCapabilities(
|
||||
fun <T : KpmGradleFragment> FragmentCapabilities(
|
||||
setCapabilities: KotlinGradleFragmentConfigurationCapabilitiesContext<T>.() -> Unit
|
||||
): KotlinGradleFragmentConfigurationCapabilities<T> = object : KotlinGradleFragmentConfigurationCapabilities<T> {
|
||||
override fun setCapabilities(container: CapabilitiesContainer, fragment: T) {
|
||||
@@ -59,7 +59,7 @@ fun <T : KotlinGradleFragment> FragmentCapabilities(
|
||||
}
|
||||
}
|
||||
|
||||
operator fun <T : KotlinGradleFragment> FragmentCapabilities<T>.plus(other: FragmentCapabilities<T>): FragmentCapabilities<T> {
|
||||
operator fun <T : KpmGradleFragment> FragmentCapabilities<T>.plus(other: FragmentCapabilities<T>): FragmentCapabilities<T> {
|
||||
if (this === KotlinGradleFragmentConfigurationCapabilities.None) return other
|
||||
if (other === KotlinGradleFragmentConfigurationCapabilities.None) return this
|
||||
|
||||
@@ -78,7 +78,7 @@ operator fun <T : KotlinGradleFragment> FragmentCapabilities<T>.plus(other: Frag
|
||||
return CompositeFragmentCapabilities(listOf(this, other))
|
||||
}
|
||||
|
||||
internal class CompositeFragmentCapabilities<in T : KotlinGradleFragment>(val children: List<FragmentCapabilities<T>>) :
|
||||
internal class CompositeFragmentCapabilities<in T : KpmGradleFragment>(val children: List<FragmentCapabilities<T>>) :
|
||||
FragmentCapabilities<T> {
|
||||
override fun setCapabilities(container: CapabilitiesContainer, fragment: T) {
|
||||
children.forEach { child -> child.setCapabilities(container, fragment) }
|
||||
|
||||
+8
-8
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.KotlinNameDisambiguation
|
||||
/* Internal abbreviation */
|
||||
internal typealias ConfigurationDefinition<T> = KotlinGradleFragmentConfigurationDefinition<T>
|
||||
|
||||
data class KotlinGradleFragmentConfigurationDefinition<in T : KotlinGradleFragment>(
|
||||
data class KotlinGradleFragmentConfigurationDefinition<in T : KpmGradleFragment>(
|
||||
val provider: KotlinGradleFragmentConfigurationProvider,
|
||||
val attributes: KotlinGradleFragmentConfigurationAttributes<T> = KotlinGradleFragmentConfigurationAttributes.None,
|
||||
val artifacts: KotlinGradleFragmentConfigurationArtifacts<T> = KotlinGradleFragmentConfigurationArtifacts.None,
|
||||
@@ -26,29 +26,29 @@ internal typealias ConfigurationContext = KotlinGradleFragmentConfigurationConte
|
||||
|
||||
interface KotlinGradleFragmentConfigurationContext : KotlinNameDisambiguation {
|
||||
val project: Project get() = module.project
|
||||
val module: KotlinGradleModule
|
||||
val module: KpmGradleModule
|
||||
val dependencies: KotlinFragmentDependencyConfigurations
|
||||
}
|
||||
|
||||
internal class KotlinGradleFragmentConfigurationContextImpl(
|
||||
override val module: KotlinGradleModule,
|
||||
override val module: KpmGradleModule,
|
||||
override val dependencies: KotlinFragmentDependencyConfigurations,
|
||||
names: KotlinNameDisambiguation
|
||||
) : KotlinGradleFragmentConfigurationContext, KotlinNameDisambiguation by names
|
||||
|
||||
fun <T : KotlinGradleFragment> KotlinGradleFragmentConfigurationDefinition<T>.withConfigurationProvider(
|
||||
fun <T : KpmGradleFragment> KotlinGradleFragmentConfigurationDefinition<T>.withConfigurationProvider(
|
||||
provider: KotlinGradleFragmentConfigurationContext.() -> Configuration
|
||||
) = copy(provider = ConfigurationProvider(provider))
|
||||
|
||||
operator fun <T : KotlinGradleFragment> KotlinGradleFragmentConfigurationDefinition<T>.plus(other: FragmentAttributes<T>):
|
||||
operator fun <T : KpmGradleFragment> KotlinGradleFragmentConfigurationDefinition<T>.plus(other: FragmentAttributes<T>):
|
||||
KotlinGradleFragmentConfigurationDefinition<T> = copy(attributes = attributes + other)
|
||||
|
||||
operator fun <T : KotlinGradleFragment> KotlinGradleFragmentConfigurationDefinition<T>.plus(other: FragmentArtifacts<T>):
|
||||
operator fun <T : KpmGradleFragment> KotlinGradleFragmentConfigurationDefinition<T>.plus(other: FragmentArtifacts<T>):
|
||||
KotlinGradleFragmentConfigurationDefinition<T> = copy(artifacts = artifacts + other)
|
||||
|
||||
operator fun <T : KotlinGradleFragment> KotlinGradleFragmentConfigurationDefinition<T>.plus(other: FragmentConfigurationRelation):
|
||||
operator fun <T : KpmGradleFragment> KotlinGradleFragmentConfigurationDefinition<T>.plus(other: FragmentConfigurationRelation):
|
||||
KotlinGradleFragmentConfigurationDefinition<T> = copy(relations = relations + other)
|
||||
|
||||
@AdvancedKotlinGradlePluginApi
|
||||
operator fun <T : KotlinGradleFragment> KotlinGradleFragmentConfigurationDefinition<T>.plus(other: FragmentCapabilities<T>):
|
||||
operator fun <T : KpmGradleFragment> KotlinGradleFragmentConfigurationDefinition<T>.plus(other: FragmentCapabilities<T>):
|
||||
KotlinGradleFragmentConfigurationDefinition<T> = copy(capabilities = capabilities + other)
|
||||
|
||||
+5
-5
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragmentFactory.F
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragmentFactory.FragmentInstantiator
|
||||
|
||||
/**
|
||||
* Factory used by [KotlinGradleModule] to polymorphic-ally create fragments/variants.
|
||||
* Factory used by [KpmGradleModule] to polymorphic-ally create fragments/variants.
|
||||
* Fragments are created in two stages with this factory:
|
||||
*
|
||||
* [FragmentInstantiator]:
|
||||
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragmentFactory.F
|
||||
* - Setting up additional Gradle tasks
|
||||
* - Setting up publication
|
||||
*/
|
||||
class KotlinGradleFragmentFactory<T : KotlinGradleFragment>(
|
||||
class KotlinGradleFragmentFactory<T : KpmGradleFragment>(
|
||||
private val fragmentInstantiator: FragmentInstantiator<T>,
|
||||
private val fragmentConfigurator: FragmentConfigurator<T>
|
||||
) : NamedDomainObjectFactory<T> {
|
||||
@@ -34,14 +34,14 @@ class KotlinGradleFragmentFactory<T : KotlinGradleFragment>(
|
||||
/**
|
||||
* @see KotlinGradleFragmentFactory
|
||||
*/
|
||||
interface FragmentInstantiator<out T : KotlinGradleFragment> {
|
||||
interface FragmentInstantiator<out T : KpmGradleFragment> {
|
||||
fun create(name: String): T
|
||||
}
|
||||
|
||||
/**
|
||||
* @see KotlinGradleFragmentFactory
|
||||
*/
|
||||
interface FragmentConfigurator<in T : KotlinGradleFragment> {
|
||||
interface FragmentConfigurator<in T : KpmGradleFragment> {
|
||||
fun configure(fragment: T)
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ class KotlinGradleFragmentFactory<T : KotlinGradleFragment>(
|
||||
}
|
||||
}
|
||||
|
||||
internal fun <T : KotlinGradleFragment> Configuration.configure(
|
||||
internal fun <T : KpmGradleFragment> Configuration.configure(
|
||||
definition: KotlinGradleFragmentConfigurationDefinition<T>, fragment: T
|
||||
) {
|
||||
definition.attributes.setAttributes(attributes, fragment)
|
||||
|
||||
+12
-12
@@ -20,16 +20,16 @@ import org.jetbrains.kotlin.gradle.plugin.sources.FragmentConsistencyChecker
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.FragmentConsistencyChecks
|
||||
import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation
|
||||
import org.jetbrains.kotlin.gradle.utils.runProjectConfigurationHealthCheckWhenEvaluated
|
||||
import org.jetbrains.kotlin.project.model.KotlinModuleDependency
|
||||
import org.jetbrains.kotlin.project.model.KpmModuleDependency
|
||||
import org.jetbrains.kotlin.tooling.core.MutableExtras
|
||||
import org.jetbrains.kotlin.tooling.core.mutableExtrasOf
|
||||
import javax.inject.Inject
|
||||
|
||||
open class KotlinGradleFragmentInternal @Inject constructor(
|
||||
final override val containingModule: KotlinGradleModule,
|
||||
open class KpmGradleFragmentInternal @Inject constructor(
|
||||
final override val containingModule: KpmGradleModule,
|
||||
final override val fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations
|
||||
) : KotlinGradleFragment,
|
||||
) : KpmGradleFragment,
|
||||
KotlinFragmentDependencyConfigurations by dependencyConfigurations {
|
||||
|
||||
final override fun getName(): String = fragmentName
|
||||
@@ -44,12 +44,12 @@ open class KotlinGradleFragmentInternal @Inject constructor(
|
||||
// FIXME check for consistency
|
||||
override val languageSettings: LanguageSettingsBuilder = DefaultLanguageSettingsBuilder()
|
||||
|
||||
override fun refines(other: KotlinGradleFragment) {
|
||||
override fun refines(other: KpmGradleFragment) {
|
||||
checkCanRefine(other)
|
||||
refines(containingModule.fragments.named(other.name))
|
||||
}
|
||||
|
||||
override fun refines(other: NamedDomainObjectProvider<KotlinGradleFragment>) {
|
||||
override fun refines(other: NamedDomainObjectProvider<KpmGradleFragment>) {
|
||||
_directRefinesDependencies.add(other)
|
||||
other.configure { checkCanRefine(it) }
|
||||
|
||||
@@ -66,11 +66,11 @@ open class KotlinGradleFragmentInternal @Inject constructor(
|
||||
)
|
||||
|
||||
project.runProjectConfigurationHealthCheckWhenEvaluated {
|
||||
kotlinGradleFragmentConsistencyChecker.runAllChecks(this@KotlinGradleFragmentInternal, other.get())
|
||||
kotlinGradleFragmentConsistencyChecker.runAllChecks(this@KpmGradleFragmentInternal, other.get())
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkCanRefine(other: KotlinGradleFragment) {
|
||||
private fun checkCanRefine(other: KpmGradleFragment) {
|
||||
check(containingModule == other.containingModule) {
|
||||
"Fragments can only refine each other within one module. Can't make $this refine $other"
|
||||
}
|
||||
@@ -82,15 +82,15 @@ open class KotlinGradleFragmentInternal @Inject constructor(
|
||||
override fun dependencies(configureClosure: Closure<Any?>) =
|
||||
dependencies f@{ ConfigureUtil.configure(configureClosure, this@f) }
|
||||
|
||||
private val _directRefinesDependencies = mutableSetOf<Provider<KotlinGradleFragment>>()
|
||||
private val _directRefinesDependencies = mutableSetOf<Provider<KpmGradleFragment>>()
|
||||
|
||||
override val directRefinesDependencies: Iterable<KotlinGradleFragment>
|
||||
override val declaredRefinesDependencies: Iterable<KpmGradleFragment>
|
||||
get() = _directRefinesDependencies.map { it.get() }.toSet()
|
||||
|
||||
// TODO: separate the declared module dependencies and exported module dependencies? we need this to keep implementation dependencies
|
||||
// out of the consumer's metadata compilations compile classpath; however, Native variants must expose implementation as API
|
||||
// anyway, so for now all fragments follow that behavior
|
||||
override val declaredModuleDependencies: Iterable<KotlinModuleDependency>
|
||||
override val declaredModuleDependencies: Iterable<KpmModuleDependency>
|
||||
get() = listOf(apiConfiguration, implementationConfiguration).flatMapTo(mutableSetOf()) { exportConfiguration ->
|
||||
exportConfiguration.allDependencies.map { dependency -> dependency.toModuleDependency(project) }
|
||||
}
|
||||
@@ -106,7 +106,7 @@ open class KotlinGradleFragmentInternal @Inject constructor(
|
||||
FragmentConsistencyChecker(
|
||||
unitsName = "fragments",
|
||||
name = { name },
|
||||
checks = FragmentConsistencyChecks<KotlinGradleFragment>(
|
||||
checks = FragmentConsistencyChecks<KpmGradleFragment>(
|
||||
unitName = "fragment",
|
||||
languageSettings = { languageSettings }
|
||||
).allChecks
|
||||
|
||||
+14
-14
@@ -15,26 +15,26 @@ import org.jetbrains.kotlin.project.model.*
|
||||
import org.jetbrains.kotlin.project.model.utils.variantsContainingFragment
|
||||
import javax.inject.Inject
|
||||
|
||||
open class KotlinGradleModuleInternal(
|
||||
open class KpmGradleModuleInternal(
|
||||
final override val project: Project,
|
||||
final override val moduleClassifier: String?
|
||||
) : KotlinGradleModule {
|
||||
) : KpmGradleModule {
|
||||
|
||||
@Inject
|
||||
constructor(project: Project, moduleName: CharSequence) : this(
|
||||
project,
|
||||
moduleName.takeIf { it != KotlinGradleModule.MAIN_MODULE_NAME }?.toString()
|
||||
moduleName.takeIf { it != KpmGradleModule.MAIN_MODULE_NAME }?.toString()
|
||||
)
|
||||
|
||||
override val moduleIdentifier: KotlinModuleIdentifier =
|
||||
LocalModuleIdentifier(project.currentBuildId().name, project.path, moduleClassifier)
|
||||
override val moduleIdentifier: KpmModuleIdentifier =
|
||||
KpmLocalModuleIdentifier(project.currentBuildId().name, project.path, moduleClassifier)
|
||||
|
||||
override val fragments: ExtensiblePolymorphicDomainObjectContainer<KotlinGradleFragment> =
|
||||
project.objects.polymorphicDomainObjectContainer(KotlinGradleFragment::class.java)
|
||||
override val fragments: ExtensiblePolymorphicDomainObjectContainer<KpmGradleFragment> =
|
||||
project.objects.polymorphicDomainObjectContainer(KpmGradleFragment::class.java)
|
||||
|
||||
// TODO DSL & build script model: find a way to create a flexible typed view on fragments?
|
||||
override val variants: NamedDomainObjectSet<KotlinGradleVariant> by lazy {
|
||||
fragments.withType(KotlinGradleVariant::class.java)
|
||||
override val variants: NamedDomainObjectSet<KpmGradleVariant> by lazy {
|
||||
fragments.withType(KpmGradleVariant::class.java)
|
||||
}
|
||||
|
||||
override val plugins: Set<KpmCompilerPlugin> by lazy {
|
||||
@@ -70,14 +70,14 @@ open class KotlinGradleModuleInternal(
|
||||
override fun toString(): String = "$moduleIdentifier (Gradle)"
|
||||
}
|
||||
|
||||
internal val KotlinGradleModule.resolvableMetadataConfigurationName: String
|
||||
internal val KpmGradleModule.resolvableMetadataConfigurationName: String
|
||||
get() = lowerCamelCaseName(name, "DependenciesMetadata")
|
||||
|
||||
internal val KotlinGradleModule.isMain
|
||||
internal val KpmGradleModule.isMain
|
||||
get() = moduleIdentifier.moduleClassifier == null
|
||||
|
||||
internal fun KotlinGradleModule.disambiguateName(simpleName: String) =
|
||||
internal fun KpmGradleModule.disambiguateName(simpleName: String) =
|
||||
lowerCamelCaseName(moduleClassifier, simpleName)
|
||||
|
||||
internal fun KotlinGradleModule.variantsContainingFragment(fragment: KotlinModuleFragment): Iterable<KotlinGradleVariant> =
|
||||
(this as KotlinModule).variantsContainingFragment(fragment).onEach { it as KotlinGradleVariant } as Iterable<KotlinGradleVariant>
|
||||
internal fun KpmGradleModule.variantsContainingFragment(fragment: KpmFragment): Iterable<KpmGradleVariant> =
|
||||
(this as KpmModule).variantsContainingFragment(fragment).onEach { it as KpmGradleVariant } as Iterable<KpmGradleVariant>
|
||||
|
||||
+14
-15
@@ -7,11 +7,10 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
|
||||
|
||||
import org.gradle.api.NamedDomainObjectFactory
|
||||
import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.gradle.dsl.pm20Extension
|
||||
|
||||
open class KotlinGradleModuleFactory(private val project: Project) : NamedDomainObjectFactory<KotlinGradleModule> {
|
||||
override fun create(name: String): KotlinGradleModule {
|
||||
val result = project.objects.newInstance(KotlinGradleModuleInternal::class.java, project, name)
|
||||
open class KotlinGradleModuleFactory(private val project: Project) : NamedDomainObjectFactory<KpmGradleModule> {
|
||||
override fun create(name: String): KpmGradleModule {
|
||||
val result = project.objects.newInstance(KpmGradleModuleInternal::class.java, project, name)
|
||||
registerFragmentFactory(result)
|
||||
registerDefaultCommonFragment(result)
|
||||
addDefaultDependencyOnMainModule(result)
|
||||
@@ -19,29 +18,29 @@ open class KotlinGradleModuleFactory(private val project: Project) : NamedDomain
|
||||
return result
|
||||
}
|
||||
|
||||
protected open fun registerDefaultCommonFragment(module: KotlinGradleModule) {
|
||||
module.fragments.register(KotlinGradleFragment.COMMON_FRAGMENT_NAME, KotlinGradleFragment::class.java)
|
||||
protected open fun registerDefaultCommonFragment(module: KpmGradleModule) {
|
||||
module.fragments.register(KpmGradleFragment.COMMON_FRAGMENT_NAME, KpmGradleFragment::class.java)
|
||||
}
|
||||
|
||||
protected open fun addDefaultRefinementDependencyOnCommon(module: KotlinGradleModule) {
|
||||
module.fragments.matching { it.name != KotlinGradleFragment.COMMON_FRAGMENT_NAME }.all {
|
||||
it.refines(module.fragments.named(KotlinGradleFragment.COMMON_FRAGMENT_NAME))
|
||||
protected open fun addDefaultRefinementDependencyOnCommon(module: KpmGradleModule) {
|
||||
module.fragments.matching { it.name != KpmGradleFragment.COMMON_FRAGMENT_NAME }.all {
|
||||
it.refines(module.fragments.named(KpmGradleFragment.COMMON_FRAGMENT_NAME))
|
||||
}
|
||||
}
|
||||
|
||||
protected open fun addDefaultDependencyOnMainModule(module: KotlinGradleModule) {
|
||||
if (module.name != KotlinGradleModule.MAIN_MODULE_NAME) {
|
||||
protected open fun addDefaultDependencyOnMainModule(module: KpmGradleModule) {
|
||||
if (module.name != KpmGradleModule.MAIN_MODULE_NAME) {
|
||||
module.fragments
|
||||
.matching { it.fragmentName == KotlinGradleFragment.COMMON_FRAGMENT_NAME }
|
||||
.matching { it.fragmentName == KpmGradleFragment.COMMON_FRAGMENT_NAME }
|
||||
.configureEach { commonFragment ->
|
||||
commonFragment.dependencies {
|
||||
api(module.project.kpmModules.getByName(KotlinGradleModule.MAIN_MODULE_NAME))
|
||||
api(module.project.kpmModules.getByName(KpmGradleModule.MAIN_MODULE_NAME))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected open fun registerFragmentFactory(module: KotlinGradleModule) {
|
||||
module.fragments.registerFactory(KotlinGradleFragment::class.java, KotlinCommonFragmentFactory(module))
|
||||
protected open fun registerFragmentFactory(module: KpmGradleModule) {
|
||||
module.fragments.registerFactory(KpmGradleFragment::class.java, KotlinCommonFragmentFactory(module))
|
||||
}
|
||||
}
|
||||
|
||||
+8
-8
@@ -13,15 +13,15 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.filterModuleName
|
||||
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
|
||||
|
||||
open class KotlinJvmVariant(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmJvmVariant(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependenciesConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
runtimeDependenciesConfiguration: Configuration,
|
||||
runtimeElementsConfiguration: Configuration
|
||||
) : KotlinGradlePublishedVariantWithRuntime(
|
||||
) : KpmGradlePublishedVariantWithRuntime(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
dependencyConfigurations = dependencyConfigurations,
|
||||
@@ -36,14 +36,14 @@ open class KotlinJvmVariant(
|
||||
get() = KotlinPlatformType.jvm
|
||||
}
|
||||
|
||||
class KotlinJvmVariantCompilationData(val variant: KotlinJvmVariant) : KotlinVariantCompilationDataInternal<KotlinJvmOptions> {
|
||||
override val owner: KotlinJvmVariant get() = variant
|
||||
class KotlinJvmVariantCompilationData(val variant: KpmJvmVariant) : KotlinVariantCompilationDataInternal<KotlinJvmOptions> {
|
||||
override val owner: KpmJvmVariant get() = variant
|
||||
|
||||
// TODO pull out to the variant
|
||||
override val kotlinOptions: KotlinJvmOptions = KotlinJvmOptionsImpl()
|
||||
}
|
||||
|
||||
internal fun KotlinGradleVariant.ownModuleName(): String {
|
||||
internal fun KpmGradleVariant.ownModuleName(): String {
|
||||
val project = containingModule.project
|
||||
val baseName = project.archivesName
|
||||
?: project.name
|
||||
@@ -56,10 +56,10 @@ internal class KotlinMappedJvmCompilationFactory(
|
||||
) : KotlinJvmCompilationFactory(target) {
|
||||
override fun create(name: String): KotlinJvmCompilation {
|
||||
val module = target.project.kpmModules.maybeCreate(name)
|
||||
val variant = module.fragments.create(target.name, KotlinJvmVariant::class.java)
|
||||
val variant = module.fragments.create(target.name, KpmJvmVariant::class.java)
|
||||
|
||||
return KotlinJvmCompilation(
|
||||
VariantMappedCompilationDetailsWithRuntime(variant, target),
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+16
-16
@@ -9,10 +9,10 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguationOmittingMain
|
||||
|
||||
typealias KotlinJvmVariantFactory = KotlinGradleFragmentFactory<KotlinJvmVariant>
|
||||
typealias KotlinJvmVariantFactory = KotlinGradleFragmentFactory<KpmJvmVariant>
|
||||
|
||||
fun KotlinJvmVariantFactory(
|
||||
module: KotlinGradleModule, config: KotlinJvmVariantConfig = KotlinJvmVariantConfig()
|
||||
module: KpmGradleModule, config: KotlinJvmVariantConfig = KotlinJvmVariantConfig()
|
||||
): KotlinJvmVariantFactory = KotlinJvmVariantFactory(
|
||||
KotlinJvmVariantInstantiator(module, config),
|
||||
KotlinJvmVariantConfigurator(config)
|
||||
@@ -22,43 +22,43 @@ data class KotlinJvmVariantConfig(
|
||||
val dependenciesConfigurationFactory: KotlinFragmentDependencyConfigurationsFactory
|
||||
= DefaultKotlinFragmentDependencyConfigurationsFactory,
|
||||
|
||||
val compileDependencies: KotlinGradleFragmentConfigurationDefinition<KotlinJvmVariant>
|
||||
val compileDependencies: KotlinGradleFragmentConfigurationDefinition<KpmJvmVariant>
|
||||
= DefaultKotlinCompileDependenciesDefinition,
|
||||
|
||||
val runtimeDependencies: KotlinGradleFragmentConfigurationDefinition<KotlinJvmVariant>
|
||||
val runtimeDependencies: KotlinGradleFragmentConfigurationDefinition<KpmJvmVariant>
|
||||
= DefaultKotlinRuntimeDependenciesDefinition,
|
||||
|
||||
val apiElements: KotlinGradleFragmentConfigurationDefinition<KotlinJvmVariant>
|
||||
val apiElements: KotlinGradleFragmentConfigurationDefinition<KpmJvmVariant>
|
||||
= DefaultKotlinApiElementsDefinition + KotlinFragmentCompilationOutputsJarArtifact,
|
||||
|
||||
val runtimeElements: KotlinGradleFragmentConfigurationDefinition<KotlinJvmVariant>
|
||||
val runtimeElements: KotlinGradleFragmentConfigurationDefinition<KpmJvmVariant>
|
||||
= DefaultKotlinRuntimeElementsDefinition,
|
||||
|
||||
val compileTaskConfigurator: KotlinCompileTaskConfigurator<KotlinJvmVariant>
|
||||
val compileTaskConfigurator: KotlinCompileTaskConfigurator<KpmJvmVariant>
|
||||
= KotlinJvmCompileTaskConfigurator,
|
||||
|
||||
val sourceArchiveTaskConfigurator: KotlinSourceArchiveTaskConfigurator<KotlinJvmVariant>
|
||||
val sourceArchiveTaskConfigurator: KotlinSourceArchiveTaskConfigurator<KpmJvmVariant>
|
||||
= DefaultKotlinSourceArchiveTaskConfigurator,
|
||||
|
||||
val sourceDirectoriesConfigurator: KotlinSourceDirectoriesConfigurator<KotlinJvmVariant>
|
||||
val sourceDirectoriesConfigurator: KotlinSourceDirectoriesConfigurator<KpmJvmVariant>
|
||||
= DefaultKotlinSourceDirectoriesConfigurator,
|
||||
|
||||
val publicationConfigurator: KotlinPublicationConfigurator<KotlinJvmVariant>
|
||||
val publicationConfigurator: KotlinPublicationConfigurator<KpmJvmVariant>
|
||||
= KotlinPublicationConfigurator.SingleVariantPublication
|
||||
)
|
||||
|
||||
class KotlinJvmVariantInstantiator internal constructor(
|
||||
private val module: KotlinGradleModule,
|
||||
private val module: KpmGradleModule,
|
||||
private val config: KotlinJvmVariantConfig
|
||||
) : KotlinGradleFragmentFactory.FragmentInstantiator<KotlinJvmVariant> {
|
||||
) : KotlinGradleFragmentFactory.FragmentInstantiator<KpmJvmVariant> {
|
||||
|
||||
override fun create(name: String): KotlinJvmVariant {
|
||||
override fun create(name: String): KpmJvmVariant {
|
||||
val names = FragmentNameDisambiguationOmittingMain(module, name)
|
||||
val context = KotlinGradleFragmentConfigurationContextImpl(
|
||||
module, config.dependenciesConfigurationFactory.create(module, names), names
|
||||
)
|
||||
|
||||
return KotlinJvmVariant(
|
||||
return KpmJvmVariant(
|
||||
containingModule = module,
|
||||
fragmentName = name,
|
||||
dependencyConfigurations = context.dependencies,
|
||||
@@ -80,9 +80,9 @@ class KotlinJvmVariantInstantiator internal constructor(
|
||||
|
||||
class KotlinJvmVariantConfigurator internal constructor(
|
||||
private val config: KotlinJvmVariantConfig
|
||||
) : KotlinGradleFragmentFactory.FragmentConfigurator<KotlinJvmVariant> {
|
||||
) : KotlinGradleFragmentFactory.FragmentConfigurator<KpmJvmVariant> {
|
||||
|
||||
override fun configure(fragment: KotlinJvmVariant) {
|
||||
override fun configure(fragment: KpmJvmVariant) {
|
||||
fragment.compileDependenciesConfiguration.configure(config.compileDependencies, fragment)
|
||||
fragment.runtimeDependenciesConfiguration.configure(config.runtimeDependencies, fragment)
|
||||
fragment.apiElementsConfiguration.configure(config.apiElements, fragment)
|
||||
|
||||
+14
-14
@@ -32,8 +32,8 @@ interface KotlinCommonFragmentMetadataCompilationData : KotlinMetadataCompilatio
|
||||
|
||||
internal abstract class AbstractKotlinFragmentMetadataCompilationData<T : KotlinCommonOptions>(
|
||||
final override val project: Project,
|
||||
val fragment: KotlinGradleFragment,
|
||||
private val module: KotlinGradleModule,
|
||||
val fragment: KpmGradleFragment,
|
||||
private val module: KpmGradleModule,
|
||||
private val compileAllTask: TaskProvider<DefaultTask>,
|
||||
val metadataCompilationRegistry: MetadataCompilationRegistry,
|
||||
private val resolvedMetadataFiles: Lazy<Iterable<ResolvedMetadataFilesProvider>>
|
||||
@@ -106,8 +106,8 @@ internal abstract class AbstractKotlinFragmentMetadataCompilationData<T : Kotlin
|
||||
|
||||
internal open class KotlinCommonFragmentMetadataCompilationDataImpl(
|
||||
project: Project,
|
||||
fragment: KotlinGradleFragment,
|
||||
module: KotlinGradleModule,
|
||||
fragment: KpmGradleFragment,
|
||||
module: KpmGradleModule,
|
||||
compileAllTask: TaskProvider<DefaultTask>,
|
||||
metadataCompilationRegistry: MetadataCompilationRegistry,
|
||||
resolvedMetadataFiles: Lazy<Iterable<ResolvedMetadataFilesProvider>>
|
||||
@@ -133,18 +133,18 @@ interface KotlinNativeFragmentMetadataCompilationData :
|
||||
KotlinMetadataCompilationData<KotlinCommonOptions>,
|
||||
KotlinNativeCompilationData<KotlinCommonOptions>
|
||||
|
||||
internal fun KotlinGradleFragment.isNativeShared(): Boolean =
|
||||
internal fun KpmGradleFragment.isNativeShared(): Boolean =
|
||||
containingVariants.run {
|
||||
any() && all { it.platformType == KotlinPlatformType.native }
|
||||
}
|
||||
|
||||
internal fun KotlinGradleFragment.isNativeHostSpecific(): Boolean =
|
||||
internal fun KpmGradleFragment.isNativeHostSpecific(): Boolean =
|
||||
this in getHostSpecificFragments(containingModule)
|
||||
|
||||
internal open class KotlinNativeFragmentMetadataCompilationDataImpl(
|
||||
project: Project,
|
||||
fragment: KotlinGradleFragment,
|
||||
module: KotlinGradleModule,
|
||||
fragment: KpmGradleFragment,
|
||||
module: KpmGradleModule,
|
||||
compileAllTask: TaskProvider<DefaultTask>,
|
||||
metadataCompilationRegistry: MetadataCompilationRegistry,
|
||||
resolvedMetadataFiles: Lazy<Iterable<ResolvedMetadataFilesProvider>>
|
||||
@@ -168,7 +168,7 @@ internal open class KotlinNativeFragmentMetadataCompilationDataImpl(
|
||||
override val konanTarget: KonanTarget
|
||||
get() {
|
||||
val nativeVariants =
|
||||
fragment.containingVariants.filterIsInstance<KotlinNativeVariantInternal>()
|
||||
fragment.containingVariants.filterIsInstance<KpmNativeVariantInternal>()
|
||||
return nativeVariants.firstOrNull { it.konanTarget.enabledOnCurrentHost }?.konanTarget
|
||||
?: nativeVariants.firstOrNull()?.konanTarget
|
||||
?: HostManager.host
|
||||
@@ -182,10 +182,10 @@ internal open class KotlinNativeFragmentMetadataCompilationDataImpl(
|
||||
// TODO think about more generic case: a fragment that can be compiled by an arbitrary compiler
|
||||
// what tasks should we create? should there be a generic task for that?
|
||||
internal class MetadataCompilationRegistry {
|
||||
private val commonCompilationDataPerFragment = LinkedHashMap<KotlinGradleFragment, KotlinCommonFragmentMetadataCompilationDataImpl>()
|
||||
private val nativeCompilationDataPerFragment = LinkedHashMap<KotlinGradleFragment, KotlinNativeFragmentMetadataCompilationDataImpl>()
|
||||
private val commonCompilationDataPerFragment = LinkedHashMap<KpmGradleFragment, KotlinCommonFragmentMetadataCompilationDataImpl>()
|
||||
private val nativeCompilationDataPerFragment = LinkedHashMap<KpmGradleFragment, KotlinNativeFragmentMetadataCompilationDataImpl>()
|
||||
|
||||
fun registerCommon(fragment: KotlinGradleFragment, compilationData: KotlinCommonFragmentMetadataCompilationDataImpl) {
|
||||
fun registerCommon(fragment: KpmGradleFragment, compilationData: KotlinCommonFragmentMetadataCompilationDataImpl) {
|
||||
commonCompilationDataPerFragment.compute(fragment) { _, existing ->
|
||||
existing?.let { error("common compilation data for fragment $fragment already registered") }
|
||||
compilationData
|
||||
@@ -193,7 +193,7 @@ internal class MetadataCompilationRegistry {
|
||||
withAllCommonCallbacks.forEach { it.invoke(compilationData) }
|
||||
}
|
||||
|
||||
fun registerNative(fragment: KotlinGradleFragment, compilationData: KotlinNativeFragmentMetadataCompilationDataImpl) {
|
||||
fun registerNative(fragment: KpmGradleFragment, compilationData: KotlinNativeFragmentMetadataCompilationDataImpl) {
|
||||
nativeCompilationDataPerFragment.compute(fragment) { _, existing ->
|
||||
existing?.let { error("native compilation data for fragment $fragment already registered") }
|
||||
compilationData
|
||||
@@ -201,7 +201,7 @@ internal class MetadataCompilationRegistry {
|
||||
withAllNativeCallbacks.forEach { it.invoke(compilationData) }
|
||||
}
|
||||
|
||||
fun getForFragmentOrNull(fragment: KotlinGradleFragment): AbstractKotlinFragmentMetadataCompilationData<*>? =
|
||||
fun getForFragmentOrNull(fragment: KpmGradleFragment): AbstractKotlinFragmentMetadataCompilationData<*>? =
|
||||
listOf(commonCompilationDataPerFragment.getValue(fragment), nativeCompilationDataPerFragment.getValue(fragment)).singleOrNull {
|
||||
it.isActive
|
||||
}
|
||||
|
||||
+11
-12
@@ -12,18 +12,17 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.NativeCompileOptions
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.publishedConfigurationName
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
import javax.inject.Inject
|
||||
|
||||
abstract class KotlinNativeVariantInternal(
|
||||
containingModule: KotlinGradleModule,
|
||||
abstract class KpmNativeVariantInternal(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
val konanTarget: KonanTarget,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
final override val hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariant,
|
||||
KotlinGradleVariantInternal(
|
||||
) : KpmNativeVariant,
|
||||
KpmGradleVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
dependencyConfigurations = dependencyConfigurations,
|
||||
@@ -44,11 +43,11 @@ abstract class KotlinNativeVariantInternal(
|
||||
override val compilationData by lazy { KotlinNativeVariantCompilationData(this) }
|
||||
}
|
||||
|
||||
class KotlinNativeVariantConstructor<T : KotlinNativeVariantInternal>(
|
||||
class KotlinNativeVariantConstructor<T : KpmNativeVariantInternal>(
|
||||
val konanTarget: KonanTarget,
|
||||
val variantClass: Class<T>,
|
||||
private val constructor: (
|
||||
containingModule: KotlinGradleModule,
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
@@ -57,7 +56,7 @@ class KotlinNativeVariantConstructor<T : KotlinNativeVariantInternal>(
|
||||
) -> T
|
||||
) {
|
||||
operator fun invoke(
|
||||
containingModule: KotlinGradleModule,
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
@@ -78,7 +77,7 @@ interface KotlinNativeCompilationData<T : KotlinCommonOptions> : KotlinCompilati
|
||||
}
|
||||
|
||||
internal class KotlinNativeVariantCompilationData(
|
||||
val variant: KotlinNativeVariantInternal
|
||||
val variant: KpmNativeVariantInternal
|
||||
) : KotlinVariantCompilationDataInternal<KotlinCommonOptions>, KotlinNativeCompilationData<KotlinCommonOptions> {
|
||||
override val konanTarget: KonanTarget
|
||||
get() = variant.konanTarget
|
||||
@@ -89,7 +88,7 @@ internal class KotlinNativeVariantCompilationData(
|
||||
override val project: Project
|
||||
get() = variant.containingModule.project
|
||||
|
||||
override val owner: KotlinNativeVariant
|
||||
override val owner: KpmNativeVariant
|
||||
get() = variant
|
||||
|
||||
override val kotlinOptions: KotlinCommonOptions = NativeCompileOptions { variant.languageSettings }
|
||||
@@ -97,7 +96,7 @@ internal class KotlinNativeVariantCompilationData(
|
||||
|
||||
internal class KotlinMappedNativeCompilationFactory(
|
||||
target: KotlinNativeTarget,
|
||||
private val variantClass: Class<out KotlinNativeVariantInternal>
|
||||
private val variantClass: Class<out KpmNativeVariantInternal>
|
||||
) : KotlinNativeCompilationFactory(target) {
|
||||
override fun create(name: String): KotlinNativeCompilation {
|
||||
val module = target.project.kpmModules.maybeCreate(name)
|
||||
@@ -108,4 +107,4 @@ internal class KotlinMappedNativeCompilationFactory(
|
||||
VariantMappedCompilationDetails(variant, target)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+7
-7
@@ -9,8 +9,8 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation
|
||||
|
||||
fun <T : KotlinNativeVariantInternal> KotlinNativeVariantFactory(
|
||||
module: KotlinGradleModule,
|
||||
fun <T : KpmNativeVariantInternal> KotlinNativeVariantFactory(
|
||||
module: KpmGradleModule,
|
||||
constructor: KotlinNativeVariantConstructor<T>,
|
||||
config: KotlinNativeVariantConfig<T> = KotlinNativeVariantConfig()
|
||||
) = KotlinGradleFragmentFactory(
|
||||
@@ -18,7 +18,7 @@ fun <T : KotlinNativeVariantInternal> KotlinNativeVariantFactory(
|
||||
fragmentConfigurator = KotlinNativeVariantConfigurator(config)
|
||||
)
|
||||
|
||||
data class KotlinNativeVariantConfig<T : KotlinNativeVariantInternal>(
|
||||
data class KotlinNativeVariantConfig<T : KpmNativeVariantInternal>(
|
||||
val dependenciesConfigurationFactory: KotlinFragmentDependencyConfigurationsFactory =
|
||||
DefaultKotlinFragmentDependencyConfigurationsFactory,
|
||||
|
||||
@@ -42,12 +42,12 @@ data class KotlinNativeVariantConfig<T : KotlinNativeVariantInternal>(
|
||||
val sourceDirectoriesConfigurator: KotlinSourceDirectoriesConfigurator<T> =
|
||||
DefaultKotlinSourceDirectoriesConfigurator,
|
||||
|
||||
val publicationConfigurator: KotlinPublicationConfigurator<KotlinNativeVariantInternal> =
|
||||
val publicationConfigurator: KotlinPublicationConfigurator<KpmNativeVariantInternal> =
|
||||
KotlinPublicationConfigurator.NativeVariantPublication
|
||||
)
|
||||
|
||||
class KotlinNativeVariantInstantiator<T : KotlinNativeVariantInternal>(
|
||||
private val module: KotlinGradleModule,
|
||||
class KotlinNativeVariantInstantiator<T : KpmNativeVariantInternal>(
|
||||
private val module: KpmGradleModule,
|
||||
private val kotlinNativeVariantConstructor: KotlinNativeVariantConstructor<T>,
|
||||
private val config: KotlinNativeVariantConfig<T>
|
||||
|
||||
@@ -76,7 +76,7 @@ class KotlinNativeVariantInstantiator<T : KotlinNativeVariantInternal>(
|
||||
}
|
||||
}
|
||||
|
||||
class KotlinNativeVariantConfigurator<T : KotlinNativeVariantInternal>(
|
||||
class KotlinNativeVariantConfigurator<T : KpmNativeVariantInternal>(
|
||||
private val config: KotlinNativeVariantConfig<T>
|
||||
) : KotlinGradleFragmentFactory.FragmentConfigurator<T> {
|
||||
|
||||
|
||||
+7
-7
@@ -5,20 +5,20 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
|
||||
|
||||
interface KotlinPublicationConfigurator<in T : KotlinGradleVariant> : KotlinGradleFragmentFactory.FragmentConfigurator<T> {
|
||||
interface KotlinPublicationConfigurator<in T : KpmGradleVariant> : KotlinGradleFragmentFactory.FragmentConfigurator<T> {
|
||||
|
||||
object NoPublication : KotlinPublicationConfigurator<KotlinGradleVariant> {
|
||||
override fun configure(fragment: KotlinGradleVariant) = Unit
|
||||
object NoPublication : KotlinPublicationConfigurator<KpmGradleVariant> {
|
||||
override fun configure(fragment: KpmGradleVariant) = Unit
|
||||
}
|
||||
|
||||
object SingleVariantPublication : KotlinPublicationConfigurator<KotlinGradlePublishedVariantWithRuntime> {
|
||||
override fun configure(fragment: KotlinGradlePublishedVariantWithRuntime) {
|
||||
object SingleVariantPublication : KotlinPublicationConfigurator<KpmGradlePublishedVariantWithRuntime> {
|
||||
override fun configure(fragment: KpmGradlePublishedVariantWithRuntime) {
|
||||
VariantPublishingConfigurator.get(fragment.project).configureSingleVariantPublication(fragment)
|
||||
}
|
||||
}
|
||||
|
||||
object NativeVariantPublication : KotlinPublicationConfigurator<KotlinNativeVariantInternal> {
|
||||
override fun configure(fragment: KotlinNativeVariantInternal) {
|
||||
object NativeVariantPublication : KotlinPublicationConfigurator<KpmNativeVariantInternal> {
|
||||
override fun configure(fragment: KpmNativeVariantInternal) {
|
||||
VariantPublishingConfigurator.get(fragment.project).configureNativeVariantPublication(fragment)
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -9,12 +9,12 @@ import org.gradle.api.tasks.TaskProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.unambiguousNameInProject
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.sourcesJarTaskNamed
|
||||
|
||||
interface KotlinSourceArchiveTaskConfigurator<in T : KotlinGradleVariant> {
|
||||
interface KotlinSourceArchiveTaskConfigurator<in T : KpmGradleVariant> {
|
||||
fun registerSourceArchiveTask(variant: T): TaskProvider<*>?
|
||||
}
|
||||
|
||||
object DefaultKotlinSourceArchiveTaskConfigurator : KotlinSourceArchiveTaskConfigurator<KotlinGradleVariant> {
|
||||
override fun registerSourceArchiveTask(variant: KotlinGradleVariant): TaskProvider<*> {
|
||||
object DefaultKotlinSourceArchiveTaskConfigurator : KotlinSourceArchiveTaskConfigurator<KpmGradleVariant> {
|
||||
override fun registerSourceArchiveTask(variant: KpmGradleVariant): TaskProvider<*> {
|
||||
return sourcesJarTaskNamed(
|
||||
taskName = variant.sourceArchiveTaskName,
|
||||
project = variant.project,
|
||||
|
||||
+5
-5
@@ -11,10 +11,10 @@ import org.jetbrains.kotlin.gradle.plugin.sources.kpm.FragmentMappedKotlinSource
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
import java.io.File
|
||||
|
||||
interface KotlinSourceDirectoriesConfigurator<in T : KotlinGradleFragment>: KotlinGradleFragmentFactory.FragmentConfigurator<T>
|
||||
interface KotlinSourceDirectoriesConfigurator<in T : KpmGradleFragment>: KotlinGradleFragmentFactory.FragmentConfigurator<T>
|
||||
|
||||
object DefaultKotlinSourceDirectoriesConfigurator : KotlinSourceDirectoriesConfigurator<KotlinGradleFragment> {
|
||||
override fun configure(fragment: KotlinGradleFragment) {
|
||||
object DefaultKotlinSourceDirectoriesConfigurator : KotlinSourceDirectoriesConfigurator<KpmGradleFragment> {
|
||||
override fun configure(fragment: KpmGradleFragment) {
|
||||
fragment.kotlinSourceRoots.srcDir(
|
||||
fragment.project.provider {
|
||||
defaultSourceFolder(
|
||||
@@ -25,7 +25,7 @@ object DefaultKotlinSourceDirectoriesConfigurator : KotlinSourceDirectoriesConfi
|
||||
)
|
||||
}
|
||||
|
||||
private fun fragmentDirectoryName(fragment: KotlinGradleFragment): String {
|
||||
private fun fragmentDirectoryName(fragment: KpmGradleFragment): String {
|
||||
val project = fragment.project
|
||||
val isModelMappingEnabled = project.multiplatformExtensionOrNull != null
|
||||
val kpmDefaultResult = lowerCamelCaseName(fragment.name, fragment.containingModule.name)
|
||||
@@ -40,7 +40,7 @@ object DefaultKotlinSourceDirectoriesConfigurator : KotlinSourceDirectoriesConfi
|
||||
}
|
||||
}
|
||||
|
||||
fun defaultSourceFolder(fragment: KotlinGradleFragment, type: String): File {
|
||||
fun defaultSourceFolder(fragment: KpmGradleFragment, type: String): File {
|
||||
val fragmentDirectoryName = fragmentDirectoryName(fragment)
|
||||
return fragment.project.file("src/$fragmentDirectoryName/$type")
|
||||
}
|
||||
|
||||
+158
-158
@@ -5,14 +5,14 @@ import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
import javax.inject.Inject
|
||||
|
||||
// DO NOT EDIT MANUALLY! Generated by org.jetbrains.kotlin.generators.gradle.dsl.KpmNativeVariantCodegenKt
|
||||
open class KotlinAndroidNativeX64Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmAndroidNativeX64Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.ANDROID_X64,
|
||||
@@ -23,19 +23,19 @@ open class KotlinAndroidNativeX64Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.ANDROID_X64, KotlinAndroidNativeX64Variant::class.java, ::KotlinAndroidNativeX64Variant
|
||||
KonanTarget.ANDROID_X64, KpmAndroidNativeX64Variant::class.java, ::KpmAndroidNativeX64Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinAndroidNativeX86Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmAndroidNativeX86Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.ANDROID_X86,
|
||||
@@ -46,19 +46,19 @@ open class KotlinAndroidNativeX86Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.ANDROID_X86, KotlinAndroidNativeX86Variant::class.java, ::KotlinAndroidNativeX86Variant
|
||||
KonanTarget.ANDROID_X86, KpmAndroidNativeX86Variant::class.java, ::KpmAndroidNativeX86Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinAndroidNativeArm32Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmAndroidNativeArm32Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.ANDROID_ARM32,
|
||||
@@ -69,19 +69,19 @@ open class KotlinAndroidNativeArm32Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.ANDROID_ARM32, KotlinAndroidNativeArm32Variant::class.java, ::KotlinAndroidNativeArm32Variant
|
||||
KonanTarget.ANDROID_ARM32, KpmAndroidNativeArm32Variant::class.java, ::KpmAndroidNativeArm32Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinAndroidNativeArm64Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmAndroidNativeArm64Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.ANDROID_ARM64,
|
||||
@@ -92,19 +92,19 @@ open class KotlinAndroidNativeArm64Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.ANDROID_ARM64, KotlinAndroidNativeArm64Variant::class.java, ::KotlinAndroidNativeArm64Variant
|
||||
KonanTarget.ANDROID_ARM64, KpmAndroidNativeArm64Variant::class.java, ::KpmAndroidNativeArm64Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinIosArm32Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmIosArm32Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.IOS_ARM32,
|
||||
@@ -115,19 +115,19 @@ open class KotlinIosArm32Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.IOS_ARM32, KotlinIosArm32Variant::class.java, ::KotlinIosArm32Variant
|
||||
KonanTarget.IOS_ARM32, KpmIosArm32Variant::class.java, ::KpmIosArm32Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinIosArm64Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmIosArm64Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.IOS_ARM64,
|
||||
@@ -138,19 +138,19 @@ open class KotlinIosArm64Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.IOS_ARM64, KotlinIosArm64Variant::class.java, ::KotlinIosArm64Variant
|
||||
KonanTarget.IOS_ARM64, KpmIosArm64Variant::class.java, ::KpmIosArm64Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinIosX64Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmIosX64Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.IOS_X64,
|
||||
@@ -161,19 +161,19 @@ open class KotlinIosX64Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.IOS_X64, KotlinIosX64Variant::class.java, ::KotlinIosX64Variant
|
||||
KonanTarget.IOS_X64, KpmIosX64Variant::class.java, ::KpmIosX64Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinIosSimulatorArm64Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmIosSimulatorArm64Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.IOS_SIMULATOR_ARM64,
|
||||
@@ -184,19 +184,19 @@ open class KotlinIosSimulatorArm64Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.IOS_SIMULATOR_ARM64, KotlinIosSimulatorArm64Variant::class.java, ::KotlinIosSimulatorArm64Variant
|
||||
KonanTarget.IOS_SIMULATOR_ARM64, KpmIosSimulatorArm64Variant::class.java, ::KpmIosSimulatorArm64Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinWatchosArm32Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmWatchosArm32Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.WATCHOS_ARM32,
|
||||
@@ -207,19 +207,19 @@ open class KotlinWatchosArm32Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.WATCHOS_ARM32, KotlinWatchosArm32Variant::class.java, ::KotlinWatchosArm32Variant
|
||||
KonanTarget.WATCHOS_ARM32, KpmWatchosArm32Variant::class.java, ::KpmWatchosArm32Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinWatchosArm64Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmWatchosArm64Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.WATCHOS_ARM64,
|
||||
@@ -230,19 +230,19 @@ open class KotlinWatchosArm64Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.WATCHOS_ARM64, KotlinWatchosArm64Variant::class.java, ::KotlinWatchosArm64Variant
|
||||
KonanTarget.WATCHOS_ARM64, KpmWatchosArm64Variant::class.java, ::KpmWatchosArm64Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinWatchosX86Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmWatchosX86Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.WATCHOS_X86,
|
||||
@@ -253,19 +253,19 @@ open class KotlinWatchosX86Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.WATCHOS_X86, KotlinWatchosX86Variant::class.java, ::KotlinWatchosX86Variant
|
||||
KonanTarget.WATCHOS_X86, KpmWatchosX86Variant::class.java, ::KpmWatchosX86Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinWatchosX64Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmWatchosX64Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.WATCHOS_X64,
|
||||
@@ -276,19 +276,19 @@ open class KotlinWatchosX64Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.WATCHOS_X64, KotlinWatchosX64Variant::class.java, ::KotlinWatchosX64Variant
|
||||
KonanTarget.WATCHOS_X64, KpmWatchosX64Variant::class.java, ::KpmWatchosX64Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinWatchosSimulatorArm64Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmWatchosSimulatorArm64Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.WATCHOS_SIMULATOR_ARM64,
|
||||
@@ -299,19 +299,19 @@ open class KotlinWatchosSimulatorArm64Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.WATCHOS_SIMULATOR_ARM64, KotlinWatchosSimulatorArm64Variant::class.java, ::KotlinWatchosSimulatorArm64Variant
|
||||
KonanTarget.WATCHOS_SIMULATOR_ARM64, KpmWatchosSimulatorArm64Variant::class.java, ::KpmWatchosSimulatorArm64Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinTvosArm64Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmTvosArm64Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.TVOS_ARM64,
|
||||
@@ -322,19 +322,19 @@ open class KotlinTvosArm64Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.TVOS_ARM64, KotlinTvosArm64Variant::class.java, ::KotlinTvosArm64Variant
|
||||
KonanTarget.TVOS_ARM64, KpmTvosArm64Variant::class.java, ::KpmTvosArm64Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinTvosX64Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmTvosX64Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.TVOS_X64,
|
||||
@@ -345,19 +345,19 @@ open class KotlinTvosX64Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.TVOS_X64, KotlinTvosX64Variant::class.java, ::KotlinTvosX64Variant
|
||||
KonanTarget.TVOS_X64, KpmTvosX64Variant::class.java, ::KpmTvosX64Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinTvosSimulatorArm64Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmTvosSimulatorArm64Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.TVOS_SIMULATOR_ARM64,
|
||||
@@ -368,19 +368,19 @@ open class KotlinTvosSimulatorArm64Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.TVOS_SIMULATOR_ARM64, KotlinTvosSimulatorArm64Variant::class.java, ::KotlinTvosSimulatorArm64Variant
|
||||
KonanTarget.TVOS_SIMULATOR_ARM64, KpmTvosSimulatorArm64Variant::class.java, ::KpmTvosSimulatorArm64Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinLinuxX64Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmLinuxX64Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.LINUX_X64,
|
||||
@@ -391,19 +391,19 @@ open class KotlinLinuxX64Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.LINUX_X64, KotlinLinuxX64Variant::class.java, ::KotlinLinuxX64Variant
|
||||
KonanTarget.LINUX_X64, KpmLinuxX64Variant::class.java, ::KpmLinuxX64Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinMingwX86Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmMingwX86Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.MINGW_X86,
|
||||
@@ -414,19 +414,19 @@ open class KotlinMingwX86Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.MINGW_X86, KotlinMingwX86Variant::class.java, ::KotlinMingwX86Variant
|
||||
KonanTarget.MINGW_X86, KpmMingwX86Variant::class.java, ::KpmMingwX86Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinMingwX64Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmMingwX64Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.MINGW_X64,
|
||||
@@ -437,19 +437,19 @@ open class KotlinMingwX64Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.MINGW_X64, KotlinMingwX64Variant::class.java, ::KotlinMingwX64Variant
|
||||
KonanTarget.MINGW_X64, KpmMingwX64Variant::class.java, ::KpmMingwX64Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinMacosX64Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmMacosX64Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.MACOS_X64,
|
||||
@@ -460,19 +460,19 @@ open class KotlinMacosX64Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.MACOS_X64, KotlinMacosX64Variant::class.java, ::KotlinMacosX64Variant
|
||||
KonanTarget.MACOS_X64, KpmMacosX64Variant::class.java, ::KpmMacosX64Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinMacosArm64Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmMacosArm64Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.MACOS_ARM64,
|
||||
@@ -483,19 +483,19 @@ open class KotlinMacosArm64Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.MACOS_ARM64, KotlinMacosArm64Variant::class.java, ::KotlinMacosArm64Variant
|
||||
KonanTarget.MACOS_ARM64, KpmMacosArm64Variant::class.java, ::KpmMacosArm64Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinLinuxArm64Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmLinuxArm64Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.LINUX_ARM64,
|
||||
@@ -506,19 +506,19 @@ open class KotlinLinuxArm64Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.LINUX_ARM64, KotlinLinuxArm64Variant::class.java, ::KotlinLinuxArm64Variant
|
||||
KonanTarget.LINUX_ARM64, KpmLinuxArm64Variant::class.java, ::KpmLinuxArm64Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinLinuxArm32HfpVariant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmLinuxArm32HfpVariant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.LINUX_ARM32_HFP,
|
||||
@@ -529,19 +529,19 @@ open class KotlinLinuxArm32HfpVariant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.LINUX_ARM32_HFP, KotlinLinuxArm32HfpVariant::class.java, ::KotlinLinuxArm32HfpVariant
|
||||
KonanTarget.LINUX_ARM32_HFP, KpmLinuxArm32HfpVariant::class.java, ::KpmLinuxArm32HfpVariant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinLinuxMips32Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmLinuxMips32Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.LINUX_MIPS32,
|
||||
@@ -552,19 +552,19 @@ open class KotlinLinuxMips32Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.LINUX_MIPS32, KotlinLinuxMips32Variant::class.java, ::KotlinLinuxMips32Variant
|
||||
KonanTarget.LINUX_MIPS32, KpmLinuxMips32Variant::class.java, ::KpmLinuxMips32Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinLinuxMipsel32Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmLinuxMipsel32Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.LINUX_MIPSEL32,
|
||||
@@ -575,19 +575,19 @@ open class KotlinLinuxMipsel32Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.LINUX_MIPSEL32, KotlinLinuxMipsel32Variant::class.java, ::KotlinLinuxMipsel32Variant
|
||||
KonanTarget.LINUX_MIPSEL32, KpmLinuxMipsel32Variant::class.java, ::KpmLinuxMipsel32Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinWasm32Variant @Inject constructor(
|
||||
containingModule: KotlinGradleModule,
|
||||
open class KpmWasm32Variant @Inject constructor(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
hostSpecificMetadataElementsConfiguration: Configuration?
|
||||
) : KotlinNativeVariantInternal(
|
||||
) : KpmNativeVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
konanTarget = KonanTarget.WASM32,
|
||||
@@ -598,66 +598,66 @@ open class KotlinWasm32Variant @Inject constructor(
|
||||
) {
|
||||
companion object {
|
||||
val constructor = KotlinNativeVariantConstructor(
|
||||
KonanTarget.WASM32, KotlinWasm32Variant::class.java, ::KotlinWasm32Variant
|
||||
KonanTarget.WASM32, KpmWasm32Variant::class.java, ::KpmWasm32Variant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
internal val allKpmNativeVariantConstructors = listOf(
|
||||
KotlinAndroidNativeX64Variant.constructor,
|
||||
KotlinAndroidNativeX86Variant.constructor,
|
||||
KotlinAndroidNativeArm32Variant.constructor,
|
||||
KotlinAndroidNativeArm64Variant.constructor,
|
||||
KotlinIosArm32Variant.constructor,
|
||||
KotlinIosArm64Variant.constructor,
|
||||
KotlinIosX64Variant.constructor,
|
||||
KotlinIosSimulatorArm64Variant.constructor,
|
||||
KotlinWatchosArm32Variant.constructor,
|
||||
KotlinWatchosArm64Variant.constructor,
|
||||
KotlinWatchosX86Variant.constructor,
|
||||
KotlinWatchosX64Variant.constructor,
|
||||
KotlinWatchosSimulatorArm64Variant.constructor,
|
||||
KotlinTvosArm64Variant.constructor,
|
||||
KotlinTvosX64Variant.constructor,
|
||||
KotlinTvosSimulatorArm64Variant.constructor,
|
||||
KotlinLinuxX64Variant.constructor,
|
||||
KotlinMingwX86Variant.constructor,
|
||||
KotlinMingwX64Variant.constructor,
|
||||
KotlinMacosX64Variant.constructor,
|
||||
KotlinMacosArm64Variant.constructor,
|
||||
KotlinLinuxArm64Variant.constructor,
|
||||
KotlinLinuxArm32HfpVariant.constructor,
|
||||
KotlinLinuxMips32Variant.constructor,
|
||||
KotlinLinuxMipsel32Variant.constructor,
|
||||
KotlinWasm32Variant.constructor
|
||||
KpmAndroidNativeX64Variant.constructor,
|
||||
KpmAndroidNativeX86Variant.constructor,
|
||||
KpmAndroidNativeArm32Variant.constructor,
|
||||
KpmAndroidNativeArm64Variant.constructor,
|
||||
KpmIosArm32Variant.constructor,
|
||||
KpmIosArm64Variant.constructor,
|
||||
KpmIosX64Variant.constructor,
|
||||
KpmIosSimulatorArm64Variant.constructor,
|
||||
KpmWatchosArm32Variant.constructor,
|
||||
KpmWatchosArm64Variant.constructor,
|
||||
KpmWatchosX86Variant.constructor,
|
||||
KpmWatchosX64Variant.constructor,
|
||||
KpmWatchosSimulatorArm64Variant.constructor,
|
||||
KpmTvosArm64Variant.constructor,
|
||||
KpmTvosX64Variant.constructor,
|
||||
KpmTvosSimulatorArm64Variant.constructor,
|
||||
KpmLinuxX64Variant.constructor,
|
||||
KpmMingwX86Variant.constructor,
|
||||
KpmMingwX64Variant.constructor,
|
||||
KpmMacosX64Variant.constructor,
|
||||
KpmMacosArm64Variant.constructor,
|
||||
KpmLinuxArm64Variant.constructor,
|
||||
KpmLinuxArm32HfpVariant.constructor,
|
||||
KpmLinuxMips32Variant.constructor,
|
||||
KpmLinuxMipsel32Variant.constructor,
|
||||
KpmWasm32Variant.constructor
|
||||
)
|
||||
|
||||
internal fun kpmNativeVariantClass(konanTarget: KonanTarget): Class<out KotlinNativeVariantInternal>? = when (konanTarget) {
|
||||
KonanTarget.ANDROID_X64 -> KotlinAndroidNativeX64Variant::class.java
|
||||
KonanTarget.ANDROID_X86 -> KotlinAndroidNativeX86Variant::class.java
|
||||
KonanTarget.ANDROID_ARM32 -> KotlinAndroidNativeArm32Variant::class.java
|
||||
KonanTarget.ANDROID_ARM64 -> KotlinAndroidNativeArm64Variant::class.java
|
||||
KonanTarget.IOS_ARM32 -> KotlinIosArm32Variant::class.java
|
||||
KonanTarget.IOS_ARM64 -> KotlinIosArm64Variant::class.java
|
||||
KonanTarget.IOS_X64 -> KotlinIosX64Variant::class.java
|
||||
KonanTarget.IOS_SIMULATOR_ARM64 -> KotlinIosSimulatorArm64Variant::class.java
|
||||
KonanTarget.WATCHOS_ARM32 -> KotlinWatchosArm32Variant::class.java
|
||||
KonanTarget.WATCHOS_ARM64 -> KotlinWatchosArm64Variant::class.java
|
||||
KonanTarget.WATCHOS_X86 -> KotlinWatchosX86Variant::class.java
|
||||
KonanTarget.WATCHOS_X64 -> KotlinWatchosX64Variant::class.java
|
||||
KonanTarget.WATCHOS_SIMULATOR_ARM64 -> KotlinWatchosSimulatorArm64Variant::class.java
|
||||
KonanTarget.TVOS_ARM64 -> KotlinTvosArm64Variant::class.java
|
||||
KonanTarget.TVOS_X64 -> KotlinTvosX64Variant::class.java
|
||||
KonanTarget.TVOS_SIMULATOR_ARM64 -> KotlinTvosSimulatorArm64Variant::class.java
|
||||
KonanTarget.LINUX_X64 -> KotlinLinuxX64Variant::class.java
|
||||
KonanTarget.MINGW_X86 -> KotlinMingwX86Variant::class.java
|
||||
KonanTarget.MINGW_X64 -> KotlinMingwX64Variant::class.java
|
||||
KonanTarget.MACOS_X64 -> KotlinMacosX64Variant::class.java
|
||||
KonanTarget.MACOS_ARM64 -> KotlinMacosArm64Variant::class.java
|
||||
KonanTarget.LINUX_ARM64 -> KotlinLinuxArm64Variant::class.java
|
||||
KonanTarget.LINUX_ARM32_HFP -> KotlinLinuxArm32HfpVariant::class.java
|
||||
KonanTarget.LINUX_MIPS32 -> KotlinLinuxMips32Variant::class.java
|
||||
KonanTarget.LINUX_MIPSEL32 -> KotlinLinuxMipsel32Variant::class.java
|
||||
KonanTarget.WASM32 -> KotlinWasm32Variant::class.java
|
||||
internal fun kpmNativeVariantClass(konanTarget: KonanTarget): Class<out KpmNativeVariantInternal>? = when (konanTarget) {
|
||||
KonanTarget.ANDROID_X64 -> KpmAndroidNativeX64Variant::class.java
|
||||
KonanTarget.ANDROID_X86 -> KpmAndroidNativeX86Variant::class.java
|
||||
KonanTarget.ANDROID_ARM32 -> KpmAndroidNativeArm32Variant::class.java
|
||||
KonanTarget.ANDROID_ARM64 -> KpmAndroidNativeArm64Variant::class.java
|
||||
KonanTarget.IOS_ARM32 -> KpmIosArm32Variant::class.java
|
||||
KonanTarget.IOS_ARM64 -> KpmIosArm64Variant::class.java
|
||||
KonanTarget.IOS_X64 -> KpmIosX64Variant::class.java
|
||||
KonanTarget.IOS_SIMULATOR_ARM64 -> KpmIosSimulatorArm64Variant::class.java
|
||||
KonanTarget.WATCHOS_ARM32 -> KpmWatchosArm32Variant::class.java
|
||||
KonanTarget.WATCHOS_ARM64 -> KpmWatchosArm64Variant::class.java
|
||||
KonanTarget.WATCHOS_X86 -> KpmWatchosX86Variant::class.java
|
||||
KonanTarget.WATCHOS_X64 -> KpmWatchosX64Variant::class.java
|
||||
KonanTarget.WATCHOS_SIMULATOR_ARM64 -> KpmWatchosSimulatorArm64Variant::class.java
|
||||
KonanTarget.TVOS_ARM64 -> KpmTvosArm64Variant::class.java
|
||||
KonanTarget.TVOS_X64 -> KpmTvosX64Variant::class.java
|
||||
KonanTarget.TVOS_SIMULATOR_ARM64 -> KpmTvosSimulatorArm64Variant::class.java
|
||||
KonanTarget.LINUX_X64 -> KpmLinuxX64Variant::class.java
|
||||
KonanTarget.MINGW_X86 -> KpmMingwX86Variant::class.java
|
||||
KonanTarget.MINGW_X64 -> KpmMingwX64Variant::class.java
|
||||
KonanTarget.MACOS_X64 -> KpmMacosX64Variant::class.java
|
||||
KonanTarget.MACOS_ARM64 -> KpmMacosArm64Variant::class.java
|
||||
KonanTarget.LINUX_ARM64 -> KpmLinuxArm64Variant::class.java
|
||||
KonanTarget.LINUX_ARM32_HFP -> KpmLinuxArm32HfpVariant::class.java
|
||||
KonanTarget.LINUX_MIPS32 -> KpmLinuxMips32Variant::class.java
|
||||
KonanTarget.LINUX_MIPSEL32 -> KpmLinuxMipsel32Variant::class.java
|
||||
KonanTarget.WASM32 -> KpmWasm32Variant::class.java
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
+10
-10
@@ -11,11 +11,11 @@ import org.gradle.api.publish.maven.MavenPublication
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
|
||||
import org.jetbrains.kotlin.gradle.dsl.topLevelExtensionOrNull
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||
import org.jetbrains.kotlin.project.model.KotlinModuleIdentifier
|
||||
import org.jetbrains.kotlin.project.model.KpmModuleIdentifier
|
||||
|
||||
internal interface KpmGradleProjectModelContainer {
|
||||
val modules: NamedDomainObjectContainer<KotlinGradleModule>
|
||||
val metadataCompilationRegistryByModuleId: MutableMap<KotlinModuleIdentifier, MetadataCompilationRegistry>
|
||||
val modules: NamedDomainObjectContainer<KpmGradleModule>
|
||||
val metadataCompilationRegistryByModuleId: MutableMap<KpmModuleIdentifier, MetadataCompilationRegistry>
|
||||
val rootPublication: MavenPublication?
|
||||
}
|
||||
|
||||
@@ -32,15 +32,15 @@ internal val Project.kpmModelContainerOrNull: KpmGradleProjectModelContainer?
|
||||
internal val Project.hasKpmModel: Boolean
|
||||
get() = kpmModelContainerOrNull != null
|
||||
|
||||
internal val Project.kpmModules: NamedDomainObjectContainer<KotlinGradleModule>
|
||||
internal val Project.kpmModules: NamedDomainObjectContainer<KpmGradleModule>
|
||||
get() = kpmModelContainer.modules
|
||||
|
||||
internal val Project.metadataCompilationRegistryByModuleId: MutableMap<KotlinModuleIdentifier, MetadataCompilationRegistry>
|
||||
internal val Project.metadataCompilationRegistryByModuleId: MutableMap<KpmModuleIdentifier, MetadataCompilationRegistry>
|
||||
get() = kpmModelContainer.metadataCompilationRegistryByModuleId
|
||||
|
||||
internal class DefaultKpmGradleProjectModelContainer(
|
||||
override val modules: NamedDomainObjectContainer<KotlinGradleModule>,
|
||||
override val metadataCompilationRegistryByModuleId: MutableMap<KotlinModuleIdentifier, MetadataCompilationRegistry>,
|
||||
override val modules: NamedDomainObjectContainer<KpmGradleModule>,
|
||||
override val metadataCompilationRegistryByModuleId: MutableMap<KpmModuleIdentifier, MetadataCompilationRegistry>,
|
||||
) : KpmGradleProjectModelContainer {
|
||||
override var rootPublication: MavenPublication? = null
|
||||
|
||||
@@ -49,10 +49,10 @@ internal class DefaultKpmGradleProjectModelContainer(
|
||||
return DefaultKpmGradleProjectModelContainer(createKpmModulesContainer(project), mutableMapOf())
|
||||
}
|
||||
|
||||
private fun createKpmModulesContainer(project: Project): NamedDomainObjectContainer<KotlinGradleModule> =
|
||||
private fun createKpmModulesContainer(project: Project): NamedDomainObjectContainer<KpmGradleModule> =
|
||||
project.objects.domainObjectContainer(
|
||||
KotlinGradleModule::class.java,
|
||||
KpmGradleModule::class.java,
|
||||
KotlinGradleModuleFactory(project)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+10
-11
@@ -25,20 +25,19 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.publishedConfigurationName
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.kpm.FragmentMappedKotlinSourceSet
|
||||
import org.jetbrains.kotlin.gradle.utils.filesProvider
|
||||
import org.jetbrains.kotlin.project.model.KotlinAttributeKey
|
||||
import org.jetbrains.kotlin.project.model.KotlinModuleDependency
|
||||
import org.jetbrains.kotlin.project.model.KotlinModuleFragment
|
||||
import org.jetbrains.kotlin.project.model.KpmModuleDependency
|
||||
import org.jetbrains.kotlin.tooling.core.MutableExtras
|
||||
import org.jetbrains.kotlin.tooling.core.mutableExtrasOf
|
||||
|
||||
internal open class LegacyMappedVariant(
|
||||
internal val compilation: KotlinCompilation<*>,
|
||||
) : KotlinGradleVariant {
|
||||
) : KpmGradleVariant {
|
||||
override fun toString(): String = "variant mapped to $compilation"
|
||||
|
||||
private val fragmentForDefaultSourceSet =
|
||||
(compilation.defaultSourceSet as FragmentMappedKotlinSourceSet).underlyingFragment
|
||||
|
||||
override val containingModule: KotlinGradleModule get() = fragmentForDefaultSourceSet.containingModule
|
||||
override val containingModule: KpmGradleModule get() = fragmentForDefaultSourceSet.containingModule
|
||||
|
||||
override val platformType: KotlinPlatformType
|
||||
get() = compilation.platformType
|
||||
@@ -90,11 +89,11 @@ internal open class LegacyMappedVariant(
|
||||
|
||||
override val extras: MutableExtras = mutableExtrasOf()
|
||||
|
||||
override fun refines(other: KotlinGradleFragment) {
|
||||
override fun refines(other: KpmGradleFragment) {
|
||||
fragmentForDefaultSourceSet.refines(other)
|
||||
}
|
||||
|
||||
override fun refines(other: NamedDomainObjectProvider<KotlinGradleFragment>) {
|
||||
override fun refines(other: NamedDomainObjectProvider<KpmGradleFragment>) {
|
||||
fragmentForDefaultSourceSet.refines(other)
|
||||
}
|
||||
|
||||
@@ -106,10 +105,10 @@ internal open class LegacyMappedVariant(
|
||||
override val fragmentName: String
|
||||
get() = fragmentForDefaultSourceSet.fragmentName + "Variant"
|
||||
|
||||
override val directRefinesDependencies: Iterable<KotlinGradleFragment>
|
||||
get() = fragmentForDefaultSourceSet.directRefinesDependencies
|
||||
override val declaredRefinesDependencies: Iterable<KpmGradleFragment>
|
||||
get() = fragmentForDefaultSourceSet.declaredRefinesDependencies
|
||||
|
||||
override val declaredModuleDependencies: Iterable<KotlinModuleDependency>
|
||||
override val declaredModuleDependencies: Iterable<KpmModuleDependency>
|
||||
get() = fragmentForDefaultSourceSet.declaredModuleDependencies
|
||||
|
||||
/** This configuration includes the dependencies from the refines-parents */
|
||||
@@ -151,7 +150,7 @@ internal open class LegacyMappedVariant(
|
||||
|
||||
internal class LegacyMappedVariantWithRuntime(private val compilationWithRuntime: KotlinCompilationToRunnableFiles<*>) :
|
||||
LegacyMappedVariant(compilationWithRuntime),
|
||||
KotlinGradleVariantWithRuntime {
|
||||
KpmGradleVariantWithRuntime {
|
||||
|
||||
override val runtimeDependenciesConfiguration: Configuration
|
||||
get() = project.configurations.getByName(compilationWithRuntime.runtimeDependencyConfigurationName)
|
||||
@@ -195,7 +194,7 @@ internal fun mapTargetCompilationsToKpmVariants(target: AbstractKotlinTarget, pu
|
||||
}
|
||||
|
||||
whenPublicationShouldRegister {
|
||||
val mainModule = target.project.kpmModules.getByName(KotlinGradleModule.MAIN_MODULE_NAME)
|
||||
val mainModule = target.project.kpmModules.getByName(KpmGradleModule.MAIN_MODULE_NAME)
|
||||
target.kotlinComponents.forEach { kotlinComponent ->
|
||||
val moduleHolder = DefaultSingleMavenPublishedModuleHolder(
|
||||
mainModule,
|
||||
|
||||
+3
-3
@@ -18,7 +18,7 @@ internal fun setupKpmModulesPublication(project: Project) {
|
||||
}
|
||||
}
|
||||
|
||||
internal fun setupPublicationForModule(module: KotlinGradleModule) {
|
||||
internal fun setupPublicationForModule(module: KpmGradleModule) {
|
||||
val project = module.project
|
||||
|
||||
val metadataElements = project.configurations.getByName(metadataElementsConfigurationName(module))
|
||||
@@ -50,7 +50,7 @@ internal fun setupPublicationForModule(module: KotlinGradleModule) {
|
||||
}
|
||||
}
|
||||
|
||||
private fun MavenPublication.setupKotlinToolingMetadataIfNeeded(module: KotlinGradleModule) {
|
||||
private fun MavenPublication.setupKotlinToolingMetadataIfNeeded(module: KpmGradleModule) {
|
||||
val buildKotlinToolingMetadataTask = module.buildKotlinToolingMetadataTask ?: return
|
||||
|
||||
artifact(buildKotlinToolingMetadataTask.map { it.outputFile }) { artifact ->
|
||||
@@ -67,4 +67,4 @@ private open class SoftwareComponentFactoryHolder @Inject constructor(
|
||||
return project.objects.newInstance(SoftwareComponentFactoryHolder::class.java)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ internal open class TransformKotlinGranularMetadataForFragment
|
||||
@Inject constructor(
|
||||
@get:Internal
|
||||
@field:Transient
|
||||
val fragment: KotlinGradleFragment,
|
||||
val fragment: KpmGradleFragment,
|
||||
//FIXME annotations
|
||||
private val transformation: FragmentGranularMetadataResolver
|
||||
) : DefaultTask() {
|
||||
|
||||
+5
-5
@@ -16,8 +16,8 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinSingleTargetExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
||||
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
||||
import org.jetbrains.kotlin.project.model.KotlinModule
|
||||
import org.jetbrains.kotlin.project.model.LocalModuleIdentifier
|
||||
import org.jetbrains.kotlin.project.model.KpmModule
|
||||
import org.jetbrains.kotlin.project.model.KpmLocalModuleIdentifier
|
||||
|
||||
val KotlinProjectExtension.targets: Iterable<KotlinTarget>
|
||||
get() = when (this) {
|
||||
@@ -26,8 +26,8 @@ val KotlinProjectExtension.targets: Iterable<KotlinTarget>
|
||||
else -> error("Unexpected 'kotlin' extension $this")
|
||||
}
|
||||
|
||||
fun KotlinModule.representsProject(project: Project): Boolean =
|
||||
moduleIdentifier.let { it is LocalModuleIdentifier && it.buildId == project.currentBuildId().name && it.projectId == project.path }
|
||||
fun KpmModule.representsProject(project: Project): Boolean =
|
||||
moduleIdentifier.let { it is KpmLocalModuleIdentifier && it.buildId == project.currentBuildId().name && it.projectId == project.path }
|
||||
|
||||
// FIXME internal API?
|
||||
fun Project.currentBuildId(): BuildIdentifier =
|
||||
@@ -52,4 +52,4 @@ val Project.distsDirectory get() = if (isGradleVersionAtLeast(7, 1)) {
|
||||
extensions.getByType(BasePluginExtension::class.java).distsDirectory
|
||||
} else {
|
||||
convention.getPlugin(BasePluginConvention::class.java).distsDirectory
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -12,11 +12,11 @@ import kotlin.reflect.KClass
|
||||
internal fun registerDefaultVariantFactories(project: Project) {
|
||||
project.kpmModules.configureEach { module ->
|
||||
module.fragments.registerFactory(
|
||||
KotlinJvmVariant::class.java,
|
||||
KpmJvmVariant::class.java,
|
||||
KotlinJvmVariantFactory(module)
|
||||
)
|
||||
|
||||
fun <T : KotlinNativeVariantInternal> registerNativeVariantFactory(
|
||||
fun <T : KpmNativeVariantInternal> registerNativeVariantFactory(
|
||||
constructor: KotlinNativeVariantConstructor<T>
|
||||
) = module.fragments.registerFactory(
|
||||
constructor.variantClass, KotlinNativeVariantFactory(module, constructor)
|
||||
|
||||
+14
-15
@@ -15,21 +15,20 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.DefaultKotlinCompilationOutput
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.MavenPublicationCoordinatesProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.ComputedCapability
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.disambiguateName
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.newDependencyFilesHolder
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.publishedConfigurationName
|
||||
import org.jetbrains.kotlin.gradle.utils.dashSeparatedName
|
||||
import org.jetbrains.kotlin.project.model.KotlinAttributeKey
|
||||
import org.jetbrains.kotlin.project.model.KotlinPlatformTypeAttribute
|
||||
|
||||
abstract class KotlinGradleVariantInternal(
|
||||
containingModule: KotlinGradleModule,
|
||||
abstract class KpmGradleVariantInternal(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
final override val compileDependenciesConfiguration: Configuration,
|
||||
final override val apiElementsConfiguration: Configuration
|
||||
) : KotlinGradleFragmentInternal(
|
||||
) : KpmGradleFragmentInternal(
|
||||
containingModule, fragmentName, dependencyConfigurations
|
||||
), KotlinGradleVariant {
|
||||
), KpmGradleVariant {
|
||||
|
||||
override val variantAttributes: Map<KotlinAttributeKey, String>
|
||||
get() = mapOf(KotlinPlatformTypeAttribute to kotlinPlatformTypeAttributeFromPlatform(platformType)) // TODO user attributes
|
||||
@@ -51,7 +50,7 @@ abstract class KotlinGradleVariantInternal(
|
||||
}
|
||||
|
||||
class DefaultSingleMavenPublishedModuleHolder(
|
||||
private var module: KotlinGradleModule, override val defaultPublishedModuleSuffix: String?
|
||||
private var module: KpmGradleModule, override val defaultPublishedModuleSuffix: String?
|
||||
) : SingleMavenPublishedModuleHolder {
|
||||
private val project get() = module.project
|
||||
|
||||
@@ -80,24 +79,24 @@ class DefaultSingleMavenPublishedModuleHolder(
|
||||
private fun kotlinPlatformTypeAttributeFromPlatform(platformType: KotlinPlatformType) = platformType.name
|
||||
|
||||
// TODO: rewrite with the artifacts API
|
||||
internal val KotlinGradleVariant.defaultSourceArtifactTaskName: String
|
||||
internal val KpmGradleVariant.defaultSourceArtifactTaskName: String
|
||||
get() = disambiguateName("sourcesJar")
|
||||
|
||||
abstract class KotlinGradleVariantWithRuntimeInternal(
|
||||
containingModule: KotlinGradleModule,
|
||||
abstract class KpmGradleVariantWithRuntimeInternal(
|
||||
containingModule: KpmGradleModule,
|
||||
fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
final override val runtimeDependenciesConfiguration: Configuration,
|
||||
final override val runtimeElementsConfiguration: Configuration
|
||||
) : KotlinGradleVariantInternal(
|
||||
) : KpmGradleVariantInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
dependencyConfigurations = dependencyConfigurations,
|
||||
compileDependenciesConfiguration = compileDependencyConfiguration,
|
||||
apiElementsConfiguration = apiElementsConfiguration
|
||||
), KotlinGradleVariantWithRuntime {
|
||||
), KpmGradleVariantWithRuntime {
|
||||
// TODO deduplicate with KotlinCompilation?
|
||||
|
||||
override var runtimeDependencyFiles: FileCollection = project.files(runtimeDependenciesConfiguration)
|
||||
@@ -106,17 +105,17 @@ abstract class KotlinGradleVariantWithRuntimeInternal(
|
||||
project.files(listOf({ compilationOutputs.allOutputs }, { runtimeDependencyFiles }))
|
||||
}
|
||||
|
||||
private fun defaultModuleSuffix(module: KotlinGradleModule, variantName: String): String =
|
||||
private fun defaultModuleSuffix(module: KpmGradleModule, variantName: String): String =
|
||||
dashSeparatedName(variantName, module.moduleClassifier)
|
||||
|
||||
abstract class KotlinGradlePublishedVariantWithRuntime(
|
||||
containingModule: KotlinGradleModule, fragmentName: String,
|
||||
abstract class KpmGradlePublishedVariantWithRuntime(
|
||||
containingModule: KpmGradleModule, fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations,
|
||||
compileDependencyConfiguration: Configuration,
|
||||
apiElementsConfiguration: Configuration,
|
||||
runtimeDependencyConfiguration: Configuration,
|
||||
runtimeElementsConfiguration: Configuration
|
||||
) : KotlinGradleVariantWithRuntimeInternal(
|
||||
) : KpmGradleVariantWithRuntimeInternal(
|
||||
containingModule = containingModule,
|
||||
fragmentName = fragmentName,
|
||||
dependencyConfigurations = dependencyConfigurations,
|
||||
|
||||
+19
-19
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.gradle.utils.dashSeparatedName
|
||||
import org.jetbrains.kotlin.gradle.utils.filesProvider
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
import org.jetbrains.kotlin.library.KLIB_FILE_EXTENSION
|
||||
import org.jetbrains.kotlin.project.model.KotlinModuleFragment
|
||||
import org.jetbrains.kotlin.project.model.KpmFragment
|
||||
import java.util.concurrent.Callable
|
||||
|
||||
internal fun setupFragmentsMetadataForKpmModules(project: Project) {
|
||||
@@ -38,7 +38,7 @@ internal fun setupFragmentsMetadataForKpmModules(project: Project) {
|
||||
}
|
||||
}
|
||||
|
||||
internal fun configureMetadataResolutionAndBuild(module: KotlinGradleModule) {
|
||||
internal fun configureMetadataResolutionAndBuild(module: KpmGradleModule) {
|
||||
val project = module.project
|
||||
createResolvableMetadataConfigurationForModule(module)
|
||||
|
||||
@@ -52,7 +52,7 @@ internal fun configureMetadataResolutionAndBuild(module: KotlinGradleModule) {
|
||||
generateAndExportProjectStructureMetadata(module)
|
||||
}
|
||||
|
||||
internal fun configureMetadataExposure(module: KotlinGradleModule) {
|
||||
internal fun configureMetadataExposure(module: KpmGradleModule) {
|
||||
val project = module.project
|
||||
project.configurations.create(metadataElementsConfigurationName(module)).apply {
|
||||
isCanBeConsumed = false
|
||||
@@ -83,14 +83,14 @@ internal fun configureMetadataExposure(module: KotlinGradleModule) {
|
||||
)
|
||||
}
|
||||
|
||||
fun metadataElementsConfigurationName(module: KotlinGradleModule) =
|
||||
fun metadataElementsConfigurationName(module: KpmGradleModule) =
|
||||
module.disambiguateName("metadataElements")
|
||||
|
||||
fun sourceElementsConfigurationName(module: KotlinGradleModule) =
|
||||
fun sourceElementsConfigurationName(module: KpmGradleModule) =
|
||||
module.disambiguateName("sourceElements")
|
||||
|
||||
private fun generateAndExportProjectStructureMetadata(
|
||||
module: KotlinGradleModule
|
||||
module: KpmGradleModule
|
||||
) {
|
||||
val project = module.project
|
||||
val projectStructureMetadata = project.createGenerateProjectStructureMetadataTask(module)
|
||||
@@ -105,7 +105,7 @@ private fun generateAndExportProjectStructureMetadata(
|
||||
}
|
||||
}
|
||||
|
||||
private fun createResolvableMetadataConfigurationForModule(module: KotlinGradleModule) {
|
||||
private fun createResolvableMetadataConfigurationForModule(module: KpmGradleModule) {
|
||||
val project = module.project
|
||||
project.configurations.create(module.resolvableMetadataConfigurationName).apply {
|
||||
isCanBeConsumed = false
|
||||
@@ -121,7 +121,7 @@ private fun createResolvableMetadataConfigurationForModule(module: KotlinGradleM
|
||||
}
|
||||
|
||||
private fun configureMetadataCompilationsAndCreateRegistry(
|
||||
module: KotlinGradleModule,
|
||||
module: KpmGradleModule,
|
||||
metadataCompilationRegistry: MetadataCompilationRegistry
|
||||
) {
|
||||
val project = module.project
|
||||
@@ -143,7 +143,7 @@ private fun configureMetadataCompilationsAndCreateRegistry(
|
||||
}
|
||||
|
||||
private fun configureMetadataJarTask(
|
||||
module: KotlinGradleModule,
|
||||
module: KpmGradleModule,
|
||||
registry: MetadataCompilationRegistry
|
||||
) {
|
||||
val project = module.project
|
||||
@@ -169,11 +169,11 @@ private fun configureMetadataJarTask(
|
||||
}
|
||||
}
|
||||
|
||||
internal fun metadataJarName(module: KotlinGradleModule) =
|
||||
internal fun metadataJarName(module: KpmGradleModule) =
|
||||
lowerCamelCaseName(module.moduleClassifier, KotlinMetadataTargetConfigurator.ALL_METADATA_JAR_NAME)
|
||||
|
||||
private fun createCommonMetadataCompilation(
|
||||
fragment: KotlinGradleFragment,
|
||||
fragment: KpmGradleFragment,
|
||||
compileAllTask: TaskProvider<DefaultTask>,
|
||||
metadataCompilationRegistry: MetadataCompilationRegistry
|
||||
) {
|
||||
@@ -194,7 +194,7 @@ private fun createCommonMetadataCompilation(
|
||||
}
|
||||
|
||||
private fun createNativeMetadataCompilation(
|
||||
fragment: KotlinGradleFragment,
|
||||
fragment: KpmGradleFragment,
|
||||
compileAllTask: TaskProvider<DefaultTask>,
|
||||
metadataCompilationRegistry: MetadataCompilationRegistry
|
||||
) {
|
||||
@@ -216,7 +216,7 @@ private fun createNativeMetadataCompilation(
|
||||
|
||||
private class MetadataCompilationTasksConfigurator(project: Project) : KotlinCompilationTaskConfigurator(project) {
|
||||
fun createKotlinCommonCompilationTask(
|
||||
fragment: KotlinGradleFragment,
|
||||
fragment: KpmGradleFragment,
|
||||
compilationData: KotlinCommonFragmentMetadataCompilationData
|
||||
) {
|
||||
KotlinCommonSourceSetProcessor(
|
||||
@@ -235,22 +235,22 @@ private class MetadataCompilationTasksConfigurator(project: Project) : KotlinCom
|
||||
}
|
||||
|
||||
fun createKotlinNativeMetadataCompilationTask(
|
||||
fragment: KotlinGradleFragment,
|
||||
fragment: KpmGradleFragment,
|
||||
compilationData: KotlinNativeFragmentMetadataCompilationData
|
||||
): TaskProvider<KotlinNativeCompile> = createKotlinNativeCompilationTask(fragment, compilationData) {
|
||||
kotlinPluginData = project.compilerPluginProviderForNativeMetadata(fragment, compilationData)
|
||||
}
|
||||
|
||||
override fun getSourcesForFragmentCompilation(fragment: KotlinGradleFragment): MultipleSourceRootsProvider {
|
||||
override fun getSourcesForFragmentCompilation(fragment: KpmGradleFragment): MultipleSourceRootsProvider {
|
||||
return project.provider { listOf(fragmentSourcesProvider.getFragmentOwnSources(fragment)) }
|
||||
}
|
||||
|
||||
override fun getCommonSourcesForFragmentCompilation(fragment: KotlinGradleFragment): MultipleSourceRootsProvider {
|
||||
override fun getCommonSourcesForFragmentCompilation(fragment: KpmGradleFragment): MultipleSourceRootsProvider {
|
||||
return project.provider { listOf(fragmentSourcesProvider.getFragmentOwnSources(fragment)) }
|
||||
}
|
||||
}
|
||||
|
||||
private fun resolvedMetadataProviders(fragment: KotlinGradleFragment) =
|
||||
private fun resolvedMetadataProviders(fragment: KpmGradleFragment) =
|
||||
fragment.withRefinesClosure.map {
|
||||
FragmentResolvedMetadataProvider(
|
||||
fragment.project.tasks.withType<TransformKotlinGranularMetadataForFragment>().named(transformFragmentMetadataTaskName(it))
|
||||
@@ -259,7 +259,7 @@ private fun resolvedMetadataProviders(fragment: KotlinGradleFragment) =
|
||||
|
||||
private fun createExtractMetadataTask(
|
||||
project: Project,
|
||||
fragment: KotlinGradleFragment,
|
||||
fragment: KpmGradleFragment,
|
||||
transformation: FragmentGranularMetadataResolver
|
||||
) {
|
||||
project.tasks.register(
|
||||
@@ -293,5 +293,5 @@ private fun disableMetadataCompilationIfNotYetSupported(
|
||||
}
|
||||
}
|
||||
|
||||
private fun transformFragmentMetadataTaskName(fragment: KotlinModuleFragment) =
|
||||
private fun transformFragmentMetadataTaskName(fragment: KpmFragment) =
|
||||
lowerCamelCaseName("resolve", fragment.disambiguateName("Metadata"))
|
||||
|
||||
+5
-5
@@ -8,8 +8,8 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.AbstractKotlinFragmentMetadataCompilationData
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleVariant
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleVariantWithRuntime
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleVariant
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleVariantWithRuntime
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.resolvableMetadataConfigurationName
|
||||
import org.jetbrains.kotlin.gradle.utils.filesProvider
|
||||
|
||||
@@ -20,7 +20,7 @@ interface DependencyFilesHolder {
|
||||
companion object
|
||||
}
|
||||
|
||||
internal fun DependencyFilesHolder.Companion.ofVariantCompileDependencies(variant: KotlinGradleVariant): DependencyFilesHolder =
|
||||
internal fun DependencyFilesHolder.Companion.ofVariantCompileDependencies(variant: KpmGradleVariant): DependencyFilesHolder =
|
||||
object : DependencyFilesHolder {
|
||||
override val dependencyConfigurationName: String
|
||||
get() = variant.compileDependenciesConfiguration.name
|
||||
@@ -29,7 +29,7 @@ internal fun DependencyFilesHolder.Companion.ofVariantCompileDependencies(varian
|
||||
set(value) { variant.compileDependencyFiles = value }
|
||||
}
|
||||
|
||||
internal fun DependencyFilesHolder.Companion.ofVariantRuntimeDependencies(variant: KotlinGradleVariantWithRuntime): DependencyFilesHolder =
|
||||
internal fun DependencyFilesHolder.Companion.ofVariantRuntimeDependencies(variant: KpmGradleVariantWithRuntime): DependencyFilesHolder =
|
||||
object : DependencyFilesHolder {
|
||||
override val dependencyConfigurationName: String
|
||||
get() = variant.runtimeDependenciesConfiguration.name
|
||||
@@ -58,4 +58,4 @@ internal fun Project.newDependencyFilesHolder(dependencyConfigurationName: Strin
|
||||
SimpleDependencyFilesHolder(
|
||||
dependencyConfigurationName,
|
||||
project.filesProvider { project.configurations.getByName(dependencyConfigurationName) }
|
||||
)
|
||||
)
|
||||
|
||||
+15
-15
@@ -7,10 +7,10 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
import org.jetbrains.kotlin.project.model.KotlinModule
|
||||
import org.jetbrains.kotlin.project.model.KotlinModuleFragment
|
||||
import org.jetbrains.kotlin.project.model.KpmModule
|
||||
import org.jetbrains.kotlin.project.model.KpmFragment
|
||||
|
||||
/**
|
||||
* Mechanism for disambiguating/scoping names for certain entities (e.g. fragments)
|
||||
@@ -36,41 +36,41 @@ interface KotlinNameDisambiguation {
|
||||
|
||||
/* Default implementation for fragments */
|
||||
|
||||
internal fun FragmentNameDisambiguation(module: KotlinModule, fragmentName: String): KotlinNameDisambiguation {
|
||||
internal fun FragmentNameDisambiguation(module: KpmModule, fragmentName: String): KotlinNameDisambiguation {
|
||||
return DefaultKotlinFragmentNameDisambiguation(module, fragmentName)
|
||||
}
|
||||
|
||||
internal fun FragmentNameDisambiguationOmittingMain(module: KotlinModule, fragmentName: String): KotlinNameDisambiguation {
|
||||
internal fun FragmentNameDisambiguationOmittingMain(module: KpmModule, fragmentName: String): KotlinNameDisambiguation {
|
||||
return DefaultKotlinFragmentNameDisambiguationOmittingMain(module, fragmentName)
|
||||
}
|
||||
|
||||
private class DefaultKotlinFragmentNameDisambiguation(
|
||||
private val module: KotlinModule,
|
||||
private val module: KpmModule,
|
||||
private val fragmentName: String
|
||||
) : KotlinNameDisambiguation {
|
||||
override fun disambiguateName(simpleName: String): String {
|
||||
return KotlinModuleFragment.disambiguateName(module, fragmentName, simpleName)
|
||||
return KpmFragment.disambiguateName(module, fragmentName, simpleName)
|
||||
}
|
||||
}
|
||||
|
||||
private class DefaultKotlinFragmentNameDisambiguationOmittingMain(
|
||||
private val module: KotlinModule,
|
||||
private val module: KpmModule,
|
||||
private val fragmentName: String
|
||||
) : KotlinNameDisambiguation {
|
||||
override fun disambiguateName(simpleName: String): String {
|
||||
return KotlinModuleFragment.disambiguateNameOmittingMain(module, fragmentName, simpleName)
|
||||
return KpmFragment.disambiguateNameOmittingMain(module, fragmentName, simpleName)
|
||||
}
|
||||
}
|
||||
|
||||
internal fun KotlinModuleFragment.disambiguateName(simpleName: String) =
|
||||
KotlinModuleFragment.disambiguateName(containingModule, fragmentName, simpleName)
|
||||
internal fun KpmFragment.disambiguateName(simpleName: String) =
|
||||
KpmFragment.disambiguateName(containingModule, fragmentName, simpleName)
|
||||
|
||||
internal val KotlinModuleFragment.unambiguousNameInProject
|
||||
internal val KpmFragment.unambiguousNameInProject
|
||||
get() = disambiguateName("")
|
||||
|
||||
internal fun KotlinModuleFragment.Companion.disambiguateName(module: KotlinModule, fragmentName: String, simpleName: String) =
|
||||
lowerCamelCaseName(fragmentName, module.moduleIdentifier.moduleClassifier ?: KotlinGradleModule.MAIN_MODULE_NAME, simpleName)
|
||||
internal fun KpmFragment.Companion.disambiguateName(module: KpmModule, fragmentName: String, simpleName: String) =
|
||||
lowerCamelCaseName(fragmentName, module.moduleIdentifier.moduleClassifier ?: KpmGradleModule.MAIN_MODULE_NAME, simpleName)
|
||||
|
||||
internal fun KotlinModuleFragment.Companion.disambiguateNameOmittingMain(module: KotlinModule, fragmentName: String, simpleName: String) =
|
||||
internal fun KpmFragment.Companion.disambiguateNameOmittingMain(module: KpmModule, fragmentName: String, simpleName: String) =
|
||||
lowerCamelCaseName(fragmentName, module.moduleIdentifier.moduleClassifier, simpleName)
|
||||
|
||||
|
||||
+5
-5
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util
|
||||
|
||||
import org.gradle.api.capabilities.Capability
|
||||
import org.gradle.api.provider.Provider
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule
|
||||
|
||||
internal class ComputedCapability(
|
||||
val groupProvider: Provider<String>,
|
||||
@@ -22,7 +22,7 @@ internal class ComputedCapability(
|
||||
override fun getVersion(): String? = versionProvider.get()
|
||||
|
||||
companion object {
|
||||
fun fromModule(module: KotlinGradleModule): ComputedCapability {
|
||||
fun fromModule(module: KpmGradleModule): ComputedCapability {
|
||||
val project = module.project
|
||||
return ComputedCapability(
|
||||
project.provider { project.group.toString() },
|
||||
@@ -32,14 +32,14 @@ internal class ComputedCapability(
|
||||
)
|
||||
}
|
||||
|
||||
fun fromModuleOrNull(module: KotlinGradleModule): ComputedCapability? =
|
||||
fun fromModuleOrNull(module: KpmGradleModule): ComputedCapability? =
|
||||
if (module.moduleClassifier != null)
|
||||
fromModule(module)
|
||||
else null
|
||||
|
||||
fun capabilityStringFromModule(module: KotlinGradleModule): String? =
|
||||
fun capabilityStringFromModule(module: KpmGradleModule): String? =
|
||||
if (module.moduleClassifier != null) fromModule(module).notation() else null
|
||||
}
|
||||
|
||||
fun notation(): String = "$group:$name:$version"
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -5,13 +5,13 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleDependencyGraph
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleDependencyGraph
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleDependencyGraphNode
|
||||
import org.jetbrains.kotlin.project.model.KotlinModule
|
||||
import org.jetbrains.kotlin.project.model.KpmModule
|
||||
import org.jetbrains.kotlin.tooling.core.withClosure
|
||||
|
||||
internal val GradleDependencyGraph.allDependencyNodes: Iterable<GradleDependencyGraphNode>
|
||||
internal val KpmGradleDependencyGraph.allDependencyNodes: Iterable<GradleDependencyGraphNode>
|
||||
get() = root.withClosure { it.dependenciesByFragment.values.flatten() }
|
||||
|
||||
internal val GradleDependencyGraph.allDependencyModules: Iterable<KotlinModule>
|
||||
internal val KpmGradleDependencyGraph.allDependencyModules: Iterable<KpmModule>
|
||||
get() = allDependencyNodes.map { it.module }
|
||||
|
||||
+15
-16
@@ -5,7 +5,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
|
||||
|
||||
import com.android.build.gradle.internal.publishing.AndroidArtifacts
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.Configuration
|
||||
import org.gradle.api.artifacts.ModuleDependency
|
||||
@@ -33,14 +32,14 @@ import javax.inject.Inject
|
||||
|
||||
interface PlatformPublicationToMavenRequest {
|
||||
val componentName: String
|
||||
val fromModule: KotlinGradleModule
|
||||
val fromModule: KpmGradleModule
|
||||
val publicationHolder: SingleMavenPublishedModuleHolder
|
||||
val variantPublicationRequests: Iterable<VariantPublicationRequest>
|
||||
}
|
||||
|
||||
data class BasicPlatformPublicationToMavenRequest(
|
||||
override val componentName: String,
|
||||
override val fromModule: KotlinGradleModule,
|
||||
override val fromModule: KpmGradleModule,
|
||||
override val publicationHolder: SingleMavenPublishedModuleHolder,
|
||||
override val variantPublicationRequests: Iterable<VariantPublicationRequest>
|
||||
) : PlatformPublicationToMavenRequest {
|
||||
@@ -54,17 +53,17 @@ data class BasicPlatformPublicationToMavenRequest(
|
||||
/** TODO: consider also using this class for exposing a KPM variant's configurations for project-to-project dependencies,
|
||||
* so that a variant may expose an arbitrary set of configurations rather just { API, runtime } or { API } */
|
||||
interface VariantPublicationRequest {
|
||||
val fromVariant: KotlinGradleVariant
|
||||
val fromVariant: KpmGradleVariant
|
||||
val publishConfiguration: Configuration
|
||||
}
|
||||
|
||||
data class BasicVariantPublicationRequest(
|
||||
override val fromVariant: KotlinGradleVariant,
|
||||
override val fromVariant: KpmGradleVariant,
|
||||
override val publishConfiguration: Configuration
|
||||
) : VariantPublicationRequest
|
||||
|
||||
|
||||
fun VariantPublishingConfigurator.configureNativeVariantPublication(variant: KotlinNativeVariantInternal) {
|
||||
fun VariantPublishingConfigurator.configureNativeVariantPublication(variant: KpmNativeVariantInternal) {
|
||||
val publishConfigurations = listOfNotNull(
|
||||
variant.apiElementsConfiguration,
|
||||
variant.hostSpecificMetadataElementsConfiguration // host-specific metadata may be absent
|
||||
@@ -72,13 +71,13 @@ fun VariantPublishingConfigurator.configureNativeVariantPublication(variant: Kot
|
||||
configureSingleVariantPublishing(variant, variant, publishConfigurations)
|
||||
}
|
||||
|
||||
fun VariantPublishingConfigurator.configureSingleVariantPublication(variant: KotlinGradlePublishedVariantWithRuntime) {
|
||||
fun VariantPublishingConfigurator.configureSingleVariantPublication(variant: KpmGradlePublishedVariantWithRuntime) {
|
||||
val publishConfigurations = listOf(variant.apiElementsConfiguration, variant.runtimeElementsConfiguration)
|
||||
configureSingleVariantPublishing(variant, variant, publishConfigurations)
|
||||
}
|
||||
|
||||
fun VariantPublishingConfigurator.configureSingleVariantPublishing(
|
||||
variant: KotlinGradleVariant,
|
||||
variant: KpmGradleVariant,
|
||||
publishedModuleHolder: SingleMavenPublishedModuleHolder,
|
||||
publishConfigurations: Iterable<Configuration>
|
||||
) {
|
||||
@@ -103,12 +102,12 @@ open class VariantPublishingConfigurator @Inject constructor(
|
||||
project.objects.newInstance(VariantPublishingConfigurator::class.java, project)
|
||||
}
|
||||
|
||||
open fun platformComponentName(variant: KotlinGradleVariant) = variant.disambiguateName("")
|
||||
open fun platformComponentName(variant: KpmGradleVariant) = variant.disambiguateName("")
|
||||
|
||||
open fun inferMavenScope(variant: KotlinGradleVariant, configurationName: String): String? =
|
||||
open fun inferMavenScope(variant: KpmGradleVariant, configurationName: String): String? =
|
||||
when {
|
||||
configurationName == variant.apiElementsConfiguration.name -> "compile"
|
||||
variant is KotlinGradleVariantWithRuntime && configurationName == variant.runtimeElementsConfiguration.name -> "runtime"
|
||||
variant is KpmGradleVariantWithRuntime && configurationName == variant.runtimeElementsConfiguration.name -> "runtime"
|
||||
else -> null
|
||||
}
|
||||
|
||||
@@ -144,7 +143,7 @@ open class VariantPublishingConfigurator @Inject constructor(
|
||||
)
|
||||
}
|
||||
|
||||
protected open fun configureSourceElementsPublishing(componentName: String, variant: KotlinGradleVariant) {
|
||||
protected open fun configureSourceElementsPublishing(componentName: String, variant: KpmGradleVariant) {
|
||||
val configurationName = variant.disambiguateName("sourceElements")
|
||||
val docsVariants = DocumentationVariantConfigurator().createSourcesElementsConfiguration(configurationName, variant)
|
||||
project.components.withType(AdhocComponentWithVariants::class.java).named(componentName).configure { component ->
|
||||
@@ -205,7 +204,7 @@ open class VariantPublishingConfigurator @Inject constructor(
|
||||
|
||||
protected open fun registerPlatformVariantsInRootModule(
|
||||
publishedModuleHolder: SingleMavenPublishedModuleHolder,
|
||||
kotlinModule: KotlinGradleModule,
|
||||
kotlinModule: KpmGradleModule,
|
||||
variantRequests: Iterable<VariantPublicationRequest>
|
||||
) {
|
||||
val platformModuleDependencyProvider = project.provider {
|
||||
@@ -238,7 +237,7 @@ open class VariantPublishingConfigurator @Inject constructor(
|
||||
}
|
||||
|
||||
internal data class AdvancedVariantPublicationRequest(
|
||||
override val fromVariant: KotlinGradleVariant,
|
||||
override val fromVariant: KpmGradleVariant,
|
||||
override val publishConfiguration: Configuration,
|
||||
val overrideConfigurationAttributesForPublication: AttributeContainer?,
|
||||
val overrideConfigurationArtifactsForPublication: Provider<out Iterable<PublishArtifact>>?,
|
||||
@@ -271,7 +270,7 @@ open class DocumentationVariantConfigurator {
|
||||
|
||||
open fun createSourcesElementsConfiguration(
|
||||
configurationName: String,
|
||||
variant: KotlinGradleVariant
|
||||
variant: KpmGradleVariant
|
||||
): Configuration {
|
||||
val sourcesArtifactTask = variant.project.tasks.withType<AbstractArchiveTask>().named(variant.sourceArchiveTaskName)
|
||||
val artifactClassifier = dashSeparatedName(variant.containingModule.moduleClassifier, "sources")
|
||||
@@ -283,4 +282,4 @@ open class DocumentationVariantConfigurator {
|
||||
ComputedCapability.fromModuleOrNull(variant.containingModule)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-3
@@ -15,13 +15,12 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||
import org.jetbrains.kotlin.gradle.plugin.LanguageSettingsBuilder
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.unambiguousNameInProject
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.createDefaultSourceDirectorySet
|
||||
|
||||
class FragmentMappedKotlinSourceSet(
|
||||
private val sourceSetName: String,
|
||||
private val project: Project,
|
||||
internal val underlyingFragment: KotlinGradleFragment
|
||||
internal val underlyingFragment: KpmGradleFragment
|
||||
) : KotlinSourceSet {
|
||||
val displayName: String
|
||||
get() = sourceSetName
|
||||
@@ -75,7 +74,7 @@ class FragmentMappedKotlinSourceSet(
|
||||
|
||||
override val dependsOn: Set<KotlinSourceSet>
|
||||
get() = project.kotlinExtension.sourceSets.filter {
|
||||
it is FragmentMappedKotlinSourceSet && it.underlyingFragment in underlyingFragment.directRefinesDependencies
|
||||
it is FragmentMappedKotlinSourceSet && it.underlyingFragment in underlyingFragment.declaredRefinesDependencies
|
||||
}.toSet()
|
||||
|
||||
override fun toString(): String = "source set $name"
|
||||
|
||||
+5
-5
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.gradle.dsl.*
|
||||
import org.jetbrains.kotlin.gradle.dsl.topLevelExtensionOrNull
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTargetPreset
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KpmGradleModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.kpmModules
|
||||
|
||||
interface SourceSetMappedFragmentLocator {
|
||||
@@ -36,7 +36,7 @@ internal class MultiplatformSourceSetMappedFragmentLocator : SourceSetMappedFrag
|
||||
override fun locateFragmentForSourceSet(project: Project, sourceSetName: String): SourceSetMappedFragmentLocator.FragmentLocation {
|
||||
val camelCaseParts = sourceSetName.camelCaseParts()
|
||||
if (camelCaseParts.size < 2) {
|
||||
return SourceSetMappedFragmentLocator.FragmentLocation(KotlinGradleModule.MAIN_MODULE_NAME, sourceSetName)
|
||||
return SourceSetMappedFragmentLocator.FragmentLocation(KpmGradleModule.MAIN_MODULE_NAME, sourceSetName)
|
||||
}
|
||||
|
||||
val androidTarget = when (val ext = project.topLevelExtension) {
|
||||
@@ -55,7 +55,7 @@ internal class MultiplatformSourceSetMappedFragmentLocator : SourceSetMappedFrag
|
||||
androidSourceSetModuleName(androidTarget.name, sourceSetName)
|
||||
else null
|
||||
} ?: candidateModuleNames.lastOrNull { project.kpmModules.findByName(it) != null }
|
||||
?: KotlinGradleModule.MAIN_MODULE_NAME
|
||||
?: KpmGradleModule.MAIN_MODULE_NAME
|
||||
|
||||
val fragmentName =
|
||||
if (sourceSetName.endsWith(moduleName, ignoreCase = true)) sourceSetName.dropLast(moduleName.length) else sourceSetName
|
||||
@@ -67,7 +67,7 @@ internal class MultiplatformSourceSetMappedFragmentLocator : SourceSetMappedFrag
|
||||
val compilationName = sourceSetName.removePrefix(targetName).takeIf { it != sourceSetName } ?: return null
|
||||
return when {
|
||||
"Test" in compilationName -> "test"
|
||||
else -> KotlinGradleModule.MAIN_MODULE_NAME
|
||||
else -> KpmGradleModule.MAIN_MODULE_NAME
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,4 +84,4 @@ private class SingleTargetSourceSetMappedFragmentLocator : SourceSetMappedFragme
|
||||
}
|
||||
}
|
||||
|
||||
internal const val SINGLE_PLATFORM_FRAGMENT_NAME = "common"
|
||||
internal const val SINGLE_PLATFORM_FRAGMENT_NAME = "common"
|
||||
|
||||
+1
-1
@@ -489,7 +489,7 @@ internal class NativeSharedCompilationProcessor(
|
||||
override fun run() = Unit
|
||||
}
|
||||
|
||||
internal fun Project.createGenerateProjectStructureMetadataTask(module: KotlinGradleModule): TaskProvider<GenerateProjectStructureMetadata> =
|
||||
internal fun Project.createGenerateProjectStructureMetadataTask(module: KpmGradleModule): TaskProvider<GenerateProjectStructureMetadata> =
|
||||
project.registerTask(lowerCamelCaseName("generate", module.moduleClassifier, "ProjectStructureMetadata")) { task ->
|
||||
task.lazyKotlinProjectStructureMetadata = lazy { buildProjectStructureMetadata(module) }
|
||||
}
|
||||
|
||||
+2
-2
@@ -39,7 +39,7 @@ internal class KpmMetadataTargetConfigurator(private val metadataTargetConfigura
|
||||
|
||||
private fun configureTargetWithKpm(target: KotlinMetadataTarget) {
|
||||
target.project.whenEvaluated {
|
||||
val mainModule = target.project.kpmModules.getByName(KotlinGradleModule.MAIN_MODULE_NAME)
|
||||
val mainModule = target.project.kpmModules.getByName(KpmGradleModule.MAIN_MODULE_NAME)
|
||||
val metadataCompilations = target.project.metadataCompilationRegistryByModuleId.getValue(mainModule.moduleIdentifier)
|
||||
mainModule.fragments.forEach { fragment ->
|
||||
val compilationData = metadataCompilations.getForFragmentOrNull(fragment) ?: return@forEach
|
||||
@@ -53,7 +53,7 @@ internal class KpmMetadataTargetConfigurator(private val metadataTargetConfigura
|
||||
val compilation = when {
|
||||
isNative -> {
|
||||
val konanTargets =
|
||||
mainModule.variantsContainingFragment(fragment).map { (it as KotlinNativeVariantInternal).konanTarget }
|
||||
mainModule.variantsContainingFragment(fragment).map { (it as KpmNativeVariantInternal).konanTarget }
|
||||
KotlinSharedNativeCompilation(konanTargets, compilationDetails as CompilationDetails<KotlinCommonOptions>)
|
||||
}
|
||||
else -> KotlinCommonCompilation(compilationDetails as CompilationDetails<KotlinMultiplatformCommonOptions>)
|
||||
|
||||
+3
-3
@@ -158,12 +158,12 @@ private fun <T> getHostSpecificElements(
|
||||
): Set<T> = fragments.filterTo(mutableSetOf()) { isNativeShared(it) && isHostSpecificKonanTargetsSet(getKonanTargets(it)) }
|
||||
|
||||
internal fun getHostSpecificFragments(
|
||||
module: KotlinGradleModule
|
||||
): Set<KotlinGradleFragment> = getHostSpecificElements<KotlinGradleFragment>(
|
||||
module: KpmGradleModule
|
||||
): Set<KpmGradleFragment> = getHostSpecificElements<KpmGradleFragment>(
|
||||
module.fragments,
|
||||
isNativeShared = { it.isNativeShared() },
|
||||
getKonanTargets = {
|
||||
val nativeVariants = module.variantsContainingFragment(it).filterIsInstance<KotlinNativeVariantInternal>()
|
||||
val nativeVariants = module.variantsContainingFragment(it).filterIsInstance<KpmNativeVariantInternal>()
|
||||
nativeVariants.mapTo(mutableSetOf()) { it.konanTarget }
|
||||
}
|
||||
)
|
||||
|
||||
+2
-2
@@ -450,7 +450,7 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotl
|
||||
it.dependsOn(compileTaskProvider)
|
||||
}
|
||||
}
|
||||
val shouldAddCompileOutputsToElements = compilation.owner is KotlinGradleVariant || compilation.isMainCompilationData()
|
||||
val shouldAddCompileOutputsToElements = compilation.owner is KpmGradleVariant || compilation.isMainCompilationData()
|
||||
if (shouldAddCompileOutputsToElements) {
|
||||
createRegularKlibArtifact(compilation, compileTaskProvider)
|
||||
}
|
||||
@@ -536,7 +536,7 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotl
|
||||
|
||||
private val KotlinNativeCompilationData<*>.apiElementsConfigurationName: String
|
||||
get() = when (val dataOwner = owner) {
|
||||
is KotlinGradleVariant -> dataOwner.apiElementsConfiguration.name
|
||||
is KpmGradleVariant -> dataOwner.apiElementsConfiguration.name
|
||||
is KotlinTarget -> dataOwner.apiElementsConfigurationName
|
||||
else -> error("unexpected owner of $this")
|
||||
}
|
||||
|
||||
+2
-2
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.gradle.utils.filesProvider
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
import org.jetbrains.kotlin.gradle.utils.outputFilesProvider
|
||||
import org.jetbrains.kotlin.library.KLIB_FILE_EXTENSION
|
||||
import org.jetbrains.kotlin.project.model.KotlinModuleIdentifier
|
||||
import org.jetbrains.kotlin.project.model.KpmModuleIdentifier
|
||||
import java.io.File
|
||||
import java.util.concurrent.Callable
|
||||
import javax.inject.Inject
|
||||
@@ -104,7 +104,7 @@ internal open class CInteropMetadataDependencyTransformationTask @Inject constru
|
||||
|
||||
@Suppress("unused")
|
||||
class ChooseVisibleSourceSetProjection(
|
||||
@Input val dependencyModuleIdentifiers: List<KotlinModuleIdentifier>,
|
||||
@Input val dependencyModuleIdentifiers: List<KpmModuleIdentifier>,
|
||||
@Nested val projectStructureMetadata: KotlinProjectStructureMetadata,
|
||||
@Input val visibleSourceSetsProvidingCInterops: Set<String>
|
||||
) {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user