[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.CreateFatFrameworksSetupAction
|
||||||
import org.jetbrains.kotlin.gradle.targets.native.KotlinNativeConfigureBinariesSideEffect
|
import org.jetbrains.kotlin.gradle.targets.native.KotlinNativeConfigureBinariesSideEffect
|
||||||
import org.jetbrains.kotlin.gradle.targets.native.SetupEmbedAndSignAppleFrameworkTaskSideEffect
|
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.*
|
||||||
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.tasks.artifact.KotlinArtifactsExtensionSetupAction
|
import org.jetbrains.kotlin.gradle.targets.native.tasks.artifact.KotlinArtifactsExtensionSetupAction
|
||||||
import org.jetbrains.kotlin.gradle.tooling.RegisterBuildKotlinToolingMetadataTask
|
import org.jetbrains.kotlin.gradle.tooling.RegisterBuildKotlinToolingMetadataTask
|
||||||
|
|
||||||
@@ -49,6 +46,7 @@ internal fun Project.registerKotlinPluginExtensions() {
|
|||||||
register(project, UserDefinedAttributesSetupAction)
|
register(project, UserDefinedAttributesSetupAction)
|
||||||
register(project, CustomizeKotlinDependenciesSetupAction)
|
register(project, CustomizeKotlinDependenciesSetupAction)
|
||||||
register(project, AddKotlinPlatformIntegersSupportLibrary)
|
register(project, AddKotlinPlatformIntegersSupportLibrary)
|
||||||
|
register(project, SetupKotlinNativePlatformDependenciesForLegacyImport)
|
||||||
|
|
||||||
|
|
||||||
if (isJvm || isMultiplatform) {
|
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.Project
|
||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
import org.jetbrains.kotlin.commonizer.*
|
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.AbstractKotlinNativeCompilation
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationSideEffectCoroutine
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationSideEffectCoroutine
|
||||||
import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSet
|
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.filesProvider
|
||||||
import org.jetbrains.kotlin.gradle.utils.konanDistribution
|
import org.jetbrains.kotlin.gradle.utils.konanDistribution
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -26,14 +29,24 @@ internal val SetupKotlinNativePlatformDependenciesAndStdlib =
|
|||||||
|
|
||||||
val stdlib = project.files(project.konanDistribution.stdlib)
|
val stdlib = project.files(project.konanDistribution.stdlib)
|
||||||
compilation.compileDependencyFiles += 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 {
|
internal fun Project.getNativeDistributionDependencies(target: CommonizerTarget): FileCollection {
|
||||||
return when (target) {
|
return when (target) {
|
||||||
is LeafCommonizerTarget -> getOriginalPlatformLibrariesFor(target)
|
is LeafCommonizerTarget -> getOriginalPlatformLibrariesFor(target)
|
||||||
|
|||||||
Reference in New Issue
Block a user