convert to real Rust triples properly

This should fix conversion to real Rust triples for musl targets, for
i686 targets and possibly others.
This commit is contained in:
Doug Goldstein
2016-11-21 15:53:16 -06:00
parent 5d60f12957
commit 957ede76f8

View File

@@ -12,18 +12,24 @@ def rust_base_triple(d, thing):
# All the Yocto targets are Linux and are 'unknown'
vendor = "-unknown"
os = d.getVar('{}_OS'.format(thing), True)
libc = d.getVar('TCLIBC', True)
if arch.startswith("arm"):
if os.endswith("gnueabi"):
os += bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'hf', '', d)
elif arch.startswith("aarch64"):
os = "linux-gnu"
elif arch.startswith("x86_64"):
os = "linux-gnu"
elif arch.startswith("i586"):
arch = "i686"
os = "linux-gnu"
return arch + vendor + '-' + os
# Prefix with a dash and convert glibc -> gnu
if libc == "glibc":
libc = "-gnu"
elif libc == "musl":
libc = "-musl"
# Don't double up musl (only appears to be the case on aarch64)
if os == "linux-musl":
if libc != "-musl":
bb.fatal("{}_OS was '{}' but TCLIBC was not 'musl'".format(thing, os))
os = "linux"
# This catches ARM targets and appends the necessary hard float bits
if os == "linux-gnueabi" or os == "linux-musleabi":
libc = bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'hf', '', d)
return arch + vendor + '-' + os + libc
RUST_BUILD_SYS = "${@rust_base_triple(d, 'BUILD')}"
RUST_HOST_SYS = "${@rust_base_triple(d, 'HOST')}"