mirror of
https://git.yoctoproject.org/poky
synced 2026-04-23 00:32:12 +02:00
rust: Enable baremetal targets
Allow rust to build for baremetal targets by generating the proper target triple, follow the format specified by rusts Triple [1], that is: <arch>-<vendor>-<os>-<abi> This is done automatically based on both TARGET_OS and TCLIBC. For example, a riscv64 baremetal target triple would look like this: riscv64gc-poky-none-elf matching rusts own target triple for riscv64 according to platform-support [2] [1] https://docs.rs/target-lexicon/latest/target_lexicon/struct.Triple.html [2] https://doc.rust-lang.org/stable/rustc/platform-support.html (From OE-Core rev: 3bff689f0c5ea73076ce0510872b0552e8660cbe) Signed-off-by: Alejandro Enedino Hernandez Samaniego <alejandro@enedino.org> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
cb33d63060
commit
901f7ed6ba
@@ -66,6 +66,12 @@ def rust_base_triple(d, thing):
|
||||
elif "musl" in os:
|
||||
libc = "-musl"
|
||||
os = "linux"
|
||||
elif "elf" in os:
|
||||
libc = "-elf"
|
||||
os = "none"
|
||||
elif "eabi" in os:
|
||||
libc = "-eabi"
|
||||
os = "none"
|
||||
|
||||
return arch + vendor + '-' + os + libc
|
||||
|
||||
|
||||
@@ -355,7 +355,10 @@ def rust_gen_target(d, thing, wd, arch):
|
||||
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(rust_arch)
|
||||
tspec['os'] = "linux"
|
||||
if "baremetal" in d.getVar('TCLIBC'):
|
||||
tspec['os'] = "none"
|
||||
else:
|
||||
tspec['os'] = "linux"
|
||||
if "musl" in tspec['llvm-target']:
|
||||
tspec['env'] = "musl"
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user