[K/N] Consolidate toolchain paths between platforms

The compiler had some code that looked for the same tools and files
in toolchains at different relative paths depending on the platform.

This commit improves that code by including `usr/` into the path to
the toolchain on macOS, which allows to unify the relative paths
inside the toolchains.

Co-authored-by: Johan Bay <jobay@google.com>
This commit is contained in:
Johan Bay
2023-11-07 12:10:14 +00:00
committed by Space Cloud
parent 0d8960088e
commit 3aeca1956e
5 changed files with 9 additions and 19 deletions
@@ -35,11 +35,7 @@ internal class BitcodeCompiler(
.execute() .execute()
private fun targetTool(tool: String, vararg arg: String) { private fun targetTool(tool: String, vararg arg: String) {
val absoluteToolName = if (platform.configurables is AppleConfigurables) { val absoluteToolName = "${platform.absoluteTargetToolchain}/bin/$tool"
"${platform.absoluteTargetToolchain}/usr/bin/$tool"
} else {
"${platform.absoluteTargetToolchain}/bin/$tool"
}
runTool(absoluteToolName, *arg) runTool(absoluteToolName, *arg)
} }
@@ -37,7 +37,7 @@ class AppleConfigurablesImpl(
override val absoluteTargetToolchain: String get() = when (val provider = xcodePartsProvider) { override val absoluteTargetToolchain: String get() = when (val provider = xcodePartsProvider) {
is XcodePartsProvider.Local -> provider.xcode.toolchain is XcodePartsProvider.Local -> provider.xcode.toolchain
XcodePartsProvider.InternalServer -> absolute(toolchainDependency) XcodePartsProvider.InternalServer -> "${absolute(toolchainDependency)}/usr"
} }
override val absoluteAdditionalToolsDir: String get() = when (val provider = xcodePartsProvider) { override val absoluteAdditionalToolsDir: String get() = when (val provider = xcodePartsProvider) {
@@ -71,13 +71,7 @@ sealed class ClangArgs(
return (konanOptions + otherOptions).map { "-D$it" } return (konanOptions + otherOptions).map { "-D$it" }
} }
private val binDir = when (HostManager.host) { private val binDir = "$absoluteTargetToolchain/bin"
KonanTarget.LINUX_X64 -> "$absoluteTargetToolchain/bin"
KonanTarget.MINGW_X64 -> "$absoluteTargetToolchain/bin"
KonanTarget.MACOS_X64,
KonanTarget.MACOS_ARM64 -> "$absoluteTargetToolchain/usr/bin"
else -> throw TargetSupportException("Unexpected host platform")
}
// TODO: Use buildList // TODO: Use buildList
private val commonClangArgs: List<String> = mutableListOf<List<String>>().apply { private val commonClangArgs: List<String> = mutableListOf<List<String>>().apply {
// Currently, MinGW toolchain contains old LLVM 8, and -fuse-ld=lld picks linker from there. // Currently, MinGW toolchain contains old LLVM 8, and -fuse-ld=lld picks linker from there.
@@ -169,13 +169,13 @@ class AndroidLinker(targetProperties: AndroidConfigurables)
class MacOSBasedLinker(targetProperties: AppleConfigurables) class MacOSBasedLinker(targetProperties: AppleConfigurables)
: LinkerFlags(targetProperties), AppleConfigurables by targetProperties { : LinkerFlags(targetProperties), AppleConfigurables by targetProperties {
private val libtool = "$absoluteTargetToolchain/usr/bin/libtool" private val libtool = "$absoluteTargetToolchain/bin/libtool"
private val linker = "$absoluteTargetToolchain/usr/bin/ld" private val linker = "$absoluteTargetToolchain/bin/ld"
private val strip = "$absoluteTargetToolchain/usr/bin/strip" private val strip = "$absoluteTargetToolchain/bin/strip"
private val dsymutil = "$absoluteTargetToolchain/usr/bin/dsymutil" private val dsymutil = "$absoluteTargetToolchain/bin/dsymutil"
private val compilerRtDir: String? by lazy { private val compilerRtDir: String? by lazy {
val dir = File("$absoluteTargetToolchain/usr/lib/clang/").listFiles.firstOrNull()?.absolutePath val dir = File("$absoluteTargetToolchain/lib/clang/").listFiles.firstOrNull()?.absolutePath
if (dir != null) "$dir/lib/darwin/" else null if (dir != null) "$dir/lib/darwin/" else null
} }
@@ -91,7 +91,7 @@ internal class CurrentXcode : Xcode {
override val toolchain by lazy { override val toolchain by lazy {
val ldPath = xcrun("-f", "ld") // = $toolchain/usr/bin/ld val ldPath = xcrun("-f", "ld") // = $toolchain/usr/bin/ld
File(ldPath).parentFile.parentFile.parentFile.absolutePath File(ldPath).parentFile.parentFile.absolutePath
} }
override val additionalTools: String by lazy { override val additionalTools: String by lazy {