[MPP] Provide platform integers support library implicitly in KGP

KT-41509
This commit is contained in:
Pavel Kirpichenkov
2022-02-10 10:15:20 +03:00
committed by teamcity
parent f257297505
commit 91a0af2aa1
2 changed files with 25 additions and 0 deletions
@@ -38,6 +38,7 @@ import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
internal const val KOTLIN_MODULE_GROUP = "org.jetbrains.kotlin"
internal const val KOTLIN_COMPILER_EMBEDDABLE = "kotlin-compiler-embeddable"
internal const val PLATFORM_INTEGERS_SUPPORT_LIBRARY = "platform-integers"
internal fun customizeKotlinDependencies(project: Project) {
configureStdlibDefaultDependency(project)
@@ -9,11 +9,15 @@ import org.gradle.api.Project
import org.gradle.api.file.FileCollection
import org.jetbrains.kotlin.commonizer.*
import org.jetbrains.kotlin.compilerRunner.konanHome
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
import org.jetbrains.kotlin.gradle.internal.KOTLIN_MODULE_GROUP
import org.jetbrains.kotlin.gradle.internal.PLATFORM_INTEGERS_SUPPORT_LIBRARY
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.ide.ideaImportDependsOn
import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.sources.getVisibleSourceSetsFromAssociateCompilations
import org.jetbrains.kotlin.gradle.targets.metadata.getMetadataCompilationForSourceSet
import org.jetbrains.kotlin.gradle.targets.metadata.isKotlinGranularMetadataEnabled
import org.jetbrains.kotlin.gradle.targets.native.internal.MissingNativeStdlibWarning.showMissingNativeStdlibWarning
@@ -43,6 +47,15 @@ internal fun Project.setupKotlinNativePlatformDependencies() {
isCompilationDependency = false
)
}
if (isPlatformIntegerCommonizationEnabled) {
kotlin.nativeRootSourceSets.forEach { sourceSet ->
dependencies.add(
sourceSet.implementationConfigurationName,
"$KOTLIN_MODULE_GROUP:$PLATFORM_INTEGERS_SUPPORT_LIBRARY:${getKotlinPluginVersion()}"
)
}
}
}
internal fun Project.getNativeDistributionDependencies(target: CommonizerTarget): FileCollection {
@@ -52,6 +65,17 @@ internal fun Project.getNativeDistributionDependencies(target: CommonizerTarget)
}
}
internal val KotlinMultiplatformExtension.nativeRootSourceSets: Collection<KotlinSourceSet>
get() {
val nativeSourceSets = sourceSets.filter { sourceSet -> project.getCommonizerTarget(sourceSet) != null }
return nativeSourceSets.filter { sourceSet ->
val allVisibleSourceSets = sourceSet.dependsOn + getVisibleSourceSetsFromAssociateCompilations(project, sourceSet)
allVisibleSourceSets.none { dependency ->
dependency in nativeSourceSets
}
}
}
private fun Project.getOriginalPlatformLibrariesFor(target: LeafCommonizerTarget): FileCollection = project.filesProvider {
konanDistribution.platformLibsDir.resolve(target.konanTarget.name).listLibraryFiles().toSet()
}