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