HMPP: Evaluate exact TargetPlatform for each K/N KLIB library

This commit is contained in:
Dmitriy Dolovov
2020-04-08 18:05:43 +07:00
parent 90398fd087
commit 757d77600a
3 changed files with 9 additions and 8 deletions
@@ -52,6 +52,9 @@ object NativePlatforms {
}
}
fun nativePlatformByTargetNames(targets: Collection<String>): TargetPlatform =
nativePlatformByTargets(targets.mapNotNull { KonanTarget.predefinedTargets[it] })
@Deprecated(
message = "Should be accessed only by compatibility layer, other clients should use 'unspecifiedNativePlatform'",
level = DeprecationLevel.ERROR
@@ -30,7 +30,6 @@ import org.jetbrains.kotlin.idea.inspections.gradle.findAll
import org.jetbrains.kotlin.idea.inspections.gradle.findKotlinPluginVersion
import org.jetbrains.kotlin.idea.platform.IdePlatformKindTooling
import org.jetbrains.kotlin.idea.roots.migrateNonJvmSourceFolders
import org.jetbrains.kotlin.konan.target.KonanTarget
import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
import org.jetbrains.kotlin.platform.impl.NativeIdePlatformKind
@@ -111,10 +110,7 @@ class KotlinSourceSetDataService : AbstractProjectDataService<GradleSourceSetDat
val jvmTarget = JvmTarget.fromString(moduleData.targetCompatibility ?: "") ?: JvmTarget.DEFAULT
JvmPlatforms.jvmPlatformByTargetVersion(jvmTarget).componentPlatforms
}
is NativeIdePlatformKind -> {
val nativeTargets = moduleData.konanTargets.mapNotNull { KonanTarget.predefinedTargets[it] }
NativePlatforms.nativePlatformByTargets(nativeTargets)
}
is NativeIdePlatformKind -> NativePlatforms.nativePlatformByTargetNames(moduleData.konanTargets)
else -> platformKind.defaultPlatform.componentPlatforms
}
}
@@ -42,7 +42,9 @@ import org.jetbrains.kotlin.platform.impl.NativeIdePlatformKind
import org.jetbrains.kotlin.resolve.ImplicitIntegerCoercion
import org.jetbrains.kotlin.resolve.TargetEnvironment
import org.jetbrains.kotlin.library.metadata.NullFlexibleTypeDeserializer
import org.jetbrains.kotlin.library.nativeTargets
import org.jetbrains.kotlin.platform.konan.NativePlatforms
import org.jetbrains.kotlin.platform.konan.NativePlatforms.nativePlatformByTargetNames
import org.jetbrains.kotlin.serialization.konan.impl.KlibMetadataModuleDescriptorFactoryImpl
import org.jetbrains.kotlin.storage.StorageManager
@@ -161,7 +163,7 @@ class NativeKlibLibraryInfo(project: Project, library: Library, libraryRoot: Str
return capabilities
}
override val platform: TargetPlatform
// TODO: detect native platform by library
get() = NativePlatforms.unspecifiedNativePlatform
override val platform: TargetPlatform by lazy {
nativePlatformByTargetNames(resolvedKotlinLibrary.safeRead(emptyList()) { nativeTargets })
}
}