[K/N] Proper MinGW cross-compilation support

This commit is contained in:
Sergey Bogolepov
2021-08-09 20:22:37 +07:00
committed by Space
parent 6953d29922
commit 1315fdaf56
4 changed files with 43 additions and 20 deletions
@@ -105,8 +105,8 @@ interface AppleConfigurables : Configurables, ClangFlags {
}
interface MingwConfigurables : Configurables, ClangFlags {
val lldLocation get() = targetString("lldLocation")!!
val absoluteLldLocation get() = absolute(lldLocation)
val linker get() = hostTargetString("linker")!!
val absoluteLinker get() = absolute(linker)
val windowsKit: WindowsKit
val msvc: Msvc
@@ -422,8 +422,13 @@ class GccBasedLinker(targetProperties: GccConfigurables)
class MingwLinker(targetProperties: MingwConfigurables)
: LinkerFlags(targetProperties), MingwConfigurables by targetProperties {
private val ar = "$absoluteTargetToolchain/bin/ar"
private val linker = "$absoluteLlvmHome/bin/clang++"
// TODO: Maybe always use llvm-ar?
private val ar = if (HostManager.hostIsMingw) {
"$absoluteTargetToolchain/bin/ar"
} else {
"$absoluteLlvmHome/bin/llvm-ar"
}
private val clang = "$absoluteLlvmHome/bin/clang++"
override val useCompilerDriverAsLinker: Boolean get() = true
@@ -483,12 +488,7 @@ class MingwLinker(targetProperties: MingwConfigurables)
+additionalArguments
}
return listOf(when {
HostManager.hostIsMingw -> Command(linker)
else -> Command("wine64", "$linker.exe")
}.constructLinkerArguments(
additionalArguments = listOf("-fuse-ld=$absoluteLldLocation")
))
return listOf(Command(clang).constructLinkerArguments(additionalArguments = listOf("-fuse-ld=$absoluteLinker")))
}
}