Fix Android NDK targets
Android NDK dirs omit vendor part of triple, so we have to respect its decision.
This commit is contained in:
@@ -98,7 +98,7 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
|
||||
|
||||
KonanTarget.ANDROID_ARM32, KonanTarget.ANDROID_ARM64,
|
||||
KonanTarget.ANDROID_X86, KonanTarget.ANDROID_X64 -> {
|
||||
val clangTarget = targetTriple.toString()
|
||||
val clangTarget = targetTriple.withoutVendor()
|
||||
val architectureDir = Android.architectureDirForTarget(target)
|
||||
val toolchainSysroot = "$absoluteTargetToolchain/sysroot"
|
||||
listOf(
|
||||
|
||||
@@ -109,8 +109,8 @@ class AndroidLinker(targetProperties: AndroidConfigurables)
|
||||
: LinkerFlags(targetProperties), AndroidConfigurables by targetProperties {
|
||||
|
||||
private val clangTarget = when (val targetString = targetProperties.targetTriple.toString()) {
|
||||
"arm-unknown-linux-androideabi" -> "armv7a-unknown-linux-androideabi"
|
||||
else -> targetString
|
||||
"arm-unknown-linux-androideabi" -> "armv7a-linux-androideabi"
|
||||
else -> targetProperties.targetTriple.withoutVendor()
|
||||
}
|
||||
private val prefix = "$absoluteTargetToolchain/bin/${clangTarget}${Android.API}"
|
||||
private val clang = if (HostManager.hostIsMingw) "$prefix-clang.cmd" else "$prefix-clang"
|
||||
@@ -136,7 +136,7 @@ class AndroidLinker(targetProperties: AndroidConfigurables)
|
||||
val toolchainSysroot = "${absoluteTargetToolchain}/sysroot"
|
||||
val architectureDir = Android.architectureDirForTarget(target)
|
||||
val apiSysroot = "$absoluteTargetSysRoot/$architectureDir"
|
||||
val clangTarget = targetTriple.toString()
|
||||
val clangTarget = targetTriple.withoutVendor()
|
||||
val libDirs = listOf(
|
||||
"--sysroot=$apiSysroot",
|
||||
if (target == KonanTarget.ANDROID_X64) "-L$apiSysroot/usr/lib64" else "-L$apiSysroot/usr/lib",
|
||||
|
||||
+13
-1
@@ -64,4 +64,16 @@ val TargetTriple.isSimulator: Boolean
|
||||
* Useful for precise target specification in Clang and Swift.
|
||||
*/
|
||||
fun TargetTriple.withOSVersion(osVersion: String): TargetTriple =
|
||||
copy(os = "${os}${osVersion}")
|
||||
copy(os = "${os}${osVersion}")
|
||||
|
||||
/**
|
||||
* Triple without vendor (second) component.
|
||||
*
|
||||
* TODO: Actually, this method should return [TargetTriple],
|
||||
* but this class is not that flexible yet.
|
||||
*/
|
||||
fun TargetTriple.withoutVendor(): String {
|
||||
val envSuffix = environment?.let { "-$environment" }
|
||||
?: ""
|
||||
return "$architecture-$os$envSuffix"
|
||||
}
|
||||
Reference in New Issue
Block a user