[Gradle] Add SetupKotlinNativePlatformDependenciesForLegacyImport
The code is extracted from SetupKotlinNativePlatformDependenciesAndStdlib as the latter is applied only to native compilations and shared native metadata compilations. For test shared native source sets, such as `nativeTest no native metadata compilation is created, but for legacy import intransitive metadata dependencies should contain native platform dependencies listed. And SetupKotlinNativePlatformDependenciesForLegacyImport fixes that. ^KT-61559 Verification Pending
This commit is contained in:
committed by
Space Team
parent
721aafc94c
commit
f4681fb93a
+2
-4
@@ -30,10 +30,7 @@ import org.jetbrains.kotlin.gradle.targets.native.ConfigureFrameworkExportSideEf
|
||||
import org.jetbrains.kotlin.gradle.targets.native.CreateFatFrameworksSetupAction
|
||||
import org.jetbrains.kotlin.gradle.targets.native.KotlinNativeConfigureBinariesSideEffect
|
||||
import org.jetbrains.kotlin.gradle.targets.native.SetupEmbedAndSignAppleFrameworkTaskSideEffect
|
||||
import org.jetbrains.kotlin.gradle.targets.native.internal.AddKotlinPlatformIntegersSupportLibrary
|
||||
import org.jetbrains.kotlin.gradle.targets.native.internal.CInteropCommonizedCInteropApiElementsConfigurationsSetupAction
|
||||
import org.jetbrains.kotlin.gradle.targets.native.internal.SetupCInteropApiElementsConfigurationSideEffect
|
||||
import org.jetbrains.kotlin.gradle.targets.native.internal.SetupKotlinNativePlatformDependenciesAndStdlib
|
||||
import org.jetbrains.kotlin.gradle.targets.native.internal.*
|
||||
import org.jetbrains.kotlin.gradle.targets.native.tasks.artifact.KotlinArtifactsExtensionSetupAction
|
||||
import org.jetbrains.kotlin.gradle.tooling.RegisterBuildKotlinToolingMetadataTask
|
||||
|
||||
@@ -49,6 +46,7 @@ internal fun Project.registerKotlinPluginExtensions() {
|
||||
register(project, UserDefinedAttributesSetupAction)
|
||||
register(project, CustomizeKotlinDependenciesSetupAction)
|
||||
register(project, AddKotlinPlatformIntegersSupportLibrary)
|
||||
register(project, SetupKotlinNativePlatformDependenciesForLegacyImport)
|
||||
|
||||
|
||||
if (isJvm || isMultiplatform) {
|
||||
|
||||
+19
-6
@@ -8,9 +8,12 @@ package org.jetbrains.kotlin.gradle.targets.native.internal
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.jetbrains.kotlin.commonizer.*
|
||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinProjectSetupCoroutine
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.AbstractKotlinNativeCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationSideEffectCoroutine
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSet
|
||||
import org.jetbrains.kotlin.gradle.targets.metadata.isNativeSourceSet
|
||||
import org.jetbrains.kotlin.gradle.utils.filesProvider
|
||||
import org.jetbrains.kotlin.gradle.utils.konanDistribution
|
||||
import java.io.File
|
||||
@@ -26,14 +29,24 @@ internal val SetupKotlinNativePlatformDependenciesAndStdlib =
|
||||
|
||||
val stdlib = project.files(project.konanDistribution.stdlib)
|
||||
compilation.compileDependencyFiles += stdlib
|
||||
|
||||
val defaultSourceSet = compilation.defaultSourceSet
|
||||
if (defaultSourceSet is DefaultKotlinSourceSet) {
|
||||
defaultSourceSet.addDependencyForLegacyImport(nativeDistributionDependencies)
|
||||
defaultSourceSet.addDependencyForLegacyImport(stdlib)
|
||||
}
|
||||
}
|
||||
|
||||
internal val SetupKotlinNativePlatformDependenciesForLegacyImport = KotlinProjectSetupCoroutine {
|
||||
val multiplatform = multiplatformExtensionOrNull ?: return@KotlinProjectSetupCoroutine
|
||||
val sourceSets = multiplatform
|
||||
.awaitSourceSets()
|
||||
.filter { it.isNativeSourceSet.await() }
|
||||
.filterIsInstance<DefaultKotlinSourceSet>()
|
||||
|
||||
val stdlib = project.files(project.konanDistribution.stdlib)
|
||||
sourceSets.forEach { sourceSet ->
|
||||
val commonizerTarget = sourceSet.commonizerTarget.await() ?: return@forEach
|
||||
val nativeDistributionDependencies = getNativeDistributionDependencies(commonizerTarget)
|
||||
sourceSet.addDependencyForLegacyImport(nativeDistributionDependencies)
|
||||
sourceSet.addDependencyForLegacyImport(stdlib)
|
||||
}
|
||||
}
|
||||
|
||||
internal fun Project.getNativeDistributionDependencies(target: CommonizerTarget): FileCollection {
|
||||
return when (target) {
|
||||
is LeafCommonizerTarget -> getOriginalPlatformLibrariesFor(target)
|
||||
|
||||
Reference in New Issue
Block a user