From 87e4bbe0f66e35606e0a0b6f8c7e76db4bc7abe0 Mon Sep 17 00:00:00 2001 From: Sergey Bogolepov Date: Mon, 30 Nov 2020 18:02:43 +0700 Subject: [PATCH] [ClangArgs] Move sysroot setting to single place --- .../kotlin/konan/target/ClangArgs.kt | 33 ++++++++----------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/ClangArgs.kt b/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/ClangArgs.kt index e44867f8aca..6d45c932707 100644 --- a/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/ClangArgs.kt +++ b/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/ClangArgs.kt @@ -46,7 +46,6 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con KonanTarget.MACOS_X64 -> "$absoluteTargetToolchain/usr/bin" else -> throw TargetSupportException("Unexpected host platform") } - // TODO: Use buildList private val commonClangArgs: List = mutableListOf>().apply { add(listOf("-B$binDir", "-fno-stack-protector")) @@ -56,6 +55,18 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con if (configurables is TargetableConfigurables) { add(listOf("-target", configurables.targetArg!!)) } + val hasCustomSysroot = configurables is ZephyrConfigurables + || configurables is WasmConfigurables + || configurables is AndroidConfigurables + if (!hasCustomSysroot) { + when (configurables) { + // isysroot and sysroot on darwin are _almost_ synonyms. + // The first one parses SDKSettings.json while second one is not. + is AppleConfigurables -> add(listOf("-isysroot", absoluteTargetSysRoot)) + else -> add(listOf("--sysroot=$absoluteTargetSysRoot")) + } + + } }.flatten() private val osVersionMin: String @@ -65,76 +76,63 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con } private val specificClangArgs: List = when (target) { - KonanTarget.LINUX_X64 -> listOf( - "--sysroot=$absoluteTargetSysRoot", - ) + KonanTarget.LINUX_X64 -> listOf() KonanTarget.LINUX_ARM32_HFP -> listOf( "-mfpu=vfp", "-mfloat-abi=hard", - "--sysroot=$absoluteTargetSysRoot", // TODO: those two are hacks. "-I$absoluteTargetSysRoot/usr/include/c++/4.8.3", "-I$absoluteTargetSysRoot/usr/include/c++/4.8.3/arm-linux-gnueabihf" ) KonanTarget.LINUX_ARM64 -> listOf( - "--sysroot=$absoluteTargetSysRoot", "-I$absoluteTargetSysRoot/usr/include/c++/7", "-I$absoluteTargetSysRoot/usr/include/c++/7/aarch64-linux-gnu" ) KonanTarget.LINUX_MIPS32 -> listOf( - "--sysroot=$absoluteTargetSysRoot", "-I$absoluteTargetSysRoot/usr/include/c++/4.9.4", "-I$absoluteTargetSysRoot/usr/include/c++/4.9.4/mips-unknown-linux-gnu" ) KonanTarget.LINUX_MIPSEL32 -> listOf( - "--sysroot=$absoluteTargetSysRoot", "-I$absoluteTargetSysRoot/usr/include/c++/4.9.4", "-I$absoluteTargetSysRoot/usr/include/c++/4.9.4/mipsel-unknown-linux-gnu" ) KonanTarget.MINGW_X64, KonanTarget.MINGW_X86 -> listOf( - "--sysroot=$absoluteTargetSysRoot", "-Xclang", - "-flto-visibility-public-std" + "-Xclang", "-flto-visibility-public-std" ) KonanTarget.MACOS_X64 -> listOf( - "--sysroot=$absoluteTargetSysRoot", "-mmacosx-version-min=$osVersionMin" ) KonanTarget.IOS_ARM32 -> listOf( "-stdlib=libc++", "-arch", "armv7", - "--sysroot=$absoluteTargetSysRoot", "-miphoneos-version-min=$osVersionMin" ) KonanTarget.IOS_ARM64 -> listOf( "-stdlib=libc++", "-arch", "arm64", - "--sysroot=$absoluteTargetSysRoot", "-miphoneos-version-min=$osVersionMin" ) KonanTarget.IOS_X64 -> listOf( "-stdlib=libc++", - "--sysroot=$absoluteTargetSysRoot", "-miphoneos-version-min=$osVersionMin" ) KonanTarget.TVOS_ARM64 -> listOf( "-stdlib=libc++", "-arch", "arm64", - "--sysroot=$absoluteTargetSysRoot", "-mtvos-version-min=$osVersionMin" ) KonanTarget.TVOS_X64 -> listOf( "-stdlib=libc++", - "--sysroot=$absoluteTargetSysRoot", "-mtvos-simulator-version-min=$osVersionMin" ) @@ -142,20 +140,17 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con KonanTarget.WATCHOS_ARM32 -> listOf( "-stdlib=libc++", "-arch", "armv7k", - "--sysroot=$absoluteTargetSysRoot", "-mwatchos-version-min=$osVersionMin" ) KonanTarget.WATCHOS_X86 -> listOf( "-stdlib=libc++", "-arch", "i386", - "--sysroot=$absoluteTargetSysRoot", "-mwatchos-simulator-version-min=$osVersionMin" ) KonanTarget.WATCHOS_X64 -> listOf( "-stdlib=libc++", - "--sysroot=$absoluteTargetSysRoot", "-mwatchos-simulator-version-min=$osVersionMin" )