From 91a0af2aa1d5f3e52281ab8d8c423ae13ed66a81 Mon Sep 17 00:00:00 2001 From: Pavel Kirpichenkov Date: Thu, 10 Feb 2022 10:15:20 +0300 Subject: [PATCH] [MPP] Provide platform integers support library implicitly in KGP KT-41509 --- .../internal/KotlinDependenciesManagement.kt | 1 + .../KotlinNativePlatformDependencies.kt | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/KotlinDependenciesManagement.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/KotlinDependenciesManagement.kt index bf92e820e3f..cb4ce7e4010 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/KotlinDependenciesManagement.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/KotlinDependenciesManagement.kt @@ -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) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativePlatformDependencies.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativePlatformDependencies.kt index 1ec6c8558f2..c32a762d814 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativePlatformDependencies.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativePlatformDependencies.kt @@ -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 + 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() }