From 8e37a07af2995bca5049a536509fbdeec8900814 Mon Sep 17 00:00:00 2001 From: Sergey Bogolepov Date: Thu, 12 Jan 2023 16:47:09 +0200 Subject: [PATCH] [K/N] Show warning when compiling for a deprecated target --- .../kotlin/backend/konan/KonanDriver.kt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanDriver.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanDriver.kt index dd4a1ae411e..8951561f883 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanDriver.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanDriver.kt @@ -9,13 +9,27 @@ import com.intellij.openapi.project.Project import org.jetbrains.kotlin.backend.common.serialization.codedInputStream import org.jetbrains.kotlin.backend.common.serialization.proto.IrFile import org.jetbrains.kotlin.backend.konan.driver.DynamicCompilerDriver +import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.konan.file.File import org.jetbrains.kotlin.konan.library.impl.createKonanLibrary +import org.jetbrains.kotlin.konan.target.CompilerOutputKind +import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.library.uniqueName import org.jetbrains.kotlin.protobuf.ExtensionRegistryLite +// Extracted from KonanTarget class to avoid problems with kotlin-native-shared. +private val deprecatedTargets = setOf( + KonanTarget.WATCHOS_X86, + KonanTarget.IOS_ARM32, + KonanTarget.LINUX_ARM32_HFP, + KonanTarget.MINGW_X86, + KonanTarget.LINUX_MIPS32, + KonanTarget.LINUX_MIPSEL32, + KonanTarget.WASM32 +) + class KonanDriver( val project: Project, val environment: KotlinCoreEnvironment, @@ -45,6 +59,11 @@ class KonanDriver( } if (konanConfig.infoArgsOnly) return + // Avoid showing warning twice in 2-phase compilation. + if (konanConfig.produce != CompilerOutputKind.LIBRARY && konanConfig.target in deprecatedTargets) { + configuration.report(CompilerMessageSeverity.STRONG_WARNING, "target ${konanConfig.target} is deprecated and will be removed soon.") + } + ensureModuleName(konanConfig) val cacheBuilder = CacheBuilder(konanConfig, spawnCompilation)