From f5532abd11cdf7da93bbdcde5451e3b342c8f1b6 Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Thu, 30 Mar 2023 18:05:00 +0000 Subject: [PATCH] Native: support compileBitcodeWithXcodeLlvm=false binary option This option makes the compiler use Kotlin/Native-provided LLVM instead of Xcode-provided LLVM when compiling bitcode to machine code for Apple targets. ^KT-54799 Fixed --- .../src/org/jetbrains/kotlin/backend/konan/BinaryOptions.kt | 2 ++ .../src/org/jetbrains/kotlin/backend/konan/BitcodeCompiler.kt | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/BinaryOptions.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/BinaryOptions.kt index e5f0b619786..05e755d063c 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/BinaryOptions.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/BinaryOptions.kt @@ -50,6 +50,8 @@ object BinaryOptions : BinaryOptionRegistry() { val mimallocUseDefaultOptions by booleanOption() val mimallocUseCompaction by booleanOption() + + val compileBitcodeWithXcodeLlvm by booleanOption() } open class BinaryOption( diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/BitcodeCompiler.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/BitcodeCompiler.kt index a8229b8f0d4..e5ae9853779 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/BitcodeCompiler.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/BitcodeCompiler.kt @@ -71,7 +71,7 @@ internal class BitcodeCompiler( } val bitcodePath = bitcodeFile.absoluteFile.normalize().path val objectPath = objectFile.absoluteFile.normalize().path - if (configurables is AppleConfigurables) { + if (configurables is AppleConfigurables && config.configuration.get(BinaryOptions.compileBitcodeWithXcodeLlvm) != false) { targetTool("clang++", *flags.toTypedArray(), bitcodePath, "-o", objectPath) } else { hostLlvmTool("clang++", *flags.toTypedArray(), bitcodePath, "-o", objectPath)