summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/rust/rust-common.inc
diff options
context:
space:
mode:
authorAndrew Jeffery <andrew@aj.id.au>2022-03-01 01:09:46 +1030
committerRichard Purdie <richard.purdie@linuxfoundation.org>2022-03-02 18:44:08 +0000
commit9ab61e3cfef0157393cb870d606c2f362e190889 (patch)
treeab7e48412ce370b8498ee150daeaf95a88b612bf /meta/recipes-devtools/rust/rust-common.inc
parent97bc2168da7dbacdfbf79cd70db674363ab84f6b (diff)
downloadopenembedded-core-contrib-9ab61e3cfef0157393cb870d606c2f362e190889.tar.gz
rust: Introduce arch_to_rust_arch()
On modern Power systems `uname -m` yields 'ppc64le' while the toolchain knows the architecture as 'powerpc64le'. Provide a mapping from one to the other to integrate with the existing architecture configuration flags. arch_to_rust_arch() only exists to map the OE *_ARCH variables before any further processing, unlike arch_to_rust_target_arch() which is specific to the internal triple handling of rust. On Linux ppc64le systems the changes give the following config: ``` $ cat ./tmp/work/ppc64le-linux/rust-native/1.58.0-r0/targets/ppc64le-linux.json { "llvm-target": "powerpc64le-unknown-linux-gnu", "data-layout": "e-m:e-i64:64-n32:64-v256:256:256-v512:512:512", "max-atomic-width": 64, "target-pointer-width": "64", "target-c-int-width": "64", "target-endian": "little", "arch": "powerpc64", "os": "linux", "env": "gnu", "vendor": "unknown", "target-family": "unix", "linker": "gcc", "cpu": "generic", "dynamic-linking": true, "executables": true, "linker-is-gnu": true, "linker-flavor": "gcc", "has-rpath": true, "has-elf-tls": true, "position-independent-executables": true, "panic-strategy": "unwind" } ``` Change-Id: Ief0c01189185d7d4da31d307270bec4e1de674ca Signed-off-by: Andrew Jeffery <andrew@aj.id.au> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/rust/rust-common.inc')
-rw-r--r--meta/recipes-devtools/rust/rust-common.inc8
1 files changed, 5 insertions, 3 deletions
diff --git a/meta/recipes-devtools/rust/rust-common.inc b/meta/recipes-devtools/rust/rust-common.inc
index ceeee97863..310aecef22 100644
--- a/meta/recipes-devtools/rust/rust-common.inc
+++ b/meta/recipes-devtools/rust/rust-common.inc
@@ -313,10 +313,12 @@ def rust_gen_target(d, thing, wd, features, cpu, arch, abi=""):
sys = sys_for(d, thing)
prefix = prefix_for(d, thing)
+ rust_arch = oe.rust.arch_to_rust_arch(arch)
+
if abi:
- arch_abi = "{}-{}".format(arch, abi)
+ arch_abi = "{}-{}".format(rust_arch, abi)
else:
- arch_abi = arch
+ arch_abi = rust_arch
features = features or d.getVarFlag('FEATURES', arch_abi) or ""
features = features.strip()
@@ -329,7 +331,7 @@ def rust_gen_target(d, thing, wd, features, cpu, arch, abi=""):
tspec['target-pointer-width'] = d.getVarFlag('TARGET_POINTER_WIDTH', arch_abi)
tspec['target-c-int-width'] = d.getVarFlag('TARGET_C_INT_WIDTH', arch_abi)
tspec['target-endian'] = d.getVarFlag('TARGET_ENDIAN', arch_abi)
- tspec['arch'] = arch_to_rust_target_arch(arch)
+ tspec['arch'] = arch_to_rust_target_arch(rust_arch)
tspec['os'] = "linux"
if "musl" in tspec['llvm-target']:
tspec['env'] = "musl"