I am currently trying to compile a bare metal application for an ARM Cortex A8 based SoC, for that purpose I've written a custom arm-none-eabi target file and a .cargo/config file which which looks as follows
[target.arm-none-eabi]
linker = "arm-none-eabi-gcc"
rustflags = [
"-C", "target-cpu=cortex-a8",
]
I then tried to compile that using cargo-xbuild (already opened an issue over there) However it ignored the linker flag and compiled with /usr/bin/ld instead. If i change the file to
[target.arm-none-eabi]
rustflags = [
"-C", "target-cpu=cortex-a8",
"-C", "linker=arm-none-eabi-gcc"
]
Everything works fine and it uses the arm-none-eabi-gcc linker. After some trouble shooting on Github we came to the conclusion that this is apparently not cargo-xbuilds fault as compiling with cargo build and a custom sysroot will also ignore the linker flag and use /usr/bin/ld. Im currrently running on cargo 1.33.0 nightly from 2019-01-03 with rustc 1.33.0 nightly from one day later.
Has anybody got an idea why cargo ignores the linker flag and just uses the default linker / how to tell cargo to use the linker flag without defining it as a custom rustflag?