Как передать параметр бэкэнда LLVM в Xargo? - PullRequest
0 голосов
/ 04 октября 2018

Я компилирую приложение Rust для архитектуры AArch64, и мне нужно передать параметр бэкэнда LLVM -mgeneral-regs-only, чтобы код использовал только регистры общего назначения.

Как передать параметр в Xargo, когда мне нужно выполнить кросс-компиляцию приложения?

Как и предполагалось , я попытался запустить команду с RUSTFLAGS, нополучена ошибка об неизвестных аргументах командной строки:

RUSTFLAGS='-C llvm-args=-mgeneral-regs-only' xargo build --target aarch64-unknown-none
error: failed to run `rustc` to learn about target-specific information

Caused by:
  process didn't exit successfully: `rustc - --crate-name ___ --print=file-names -C llvm-args=-mgeneral-regs-only --sysroot /home/.xargo -Z force-unstable-if-unmarked --target aarch64-unknown-none --crate-type bin --crate-type rlib --crate-type dylib --crate-type cdylib --crate-type staticlib --crate-type proc-macro` (exit code: 1)
--- stderr
rustc: Unknown command line argument '-mgeneral-regs-only'.  Try: 'rustc -help'
rustc: Did you mean '-mark-data-regions'?

1 Ответ

0 голосов
/ 05 октября 2018

См. документацию Xargo о компиляции sysroot с пользовательскими rustc flags .rustc позволяет устанавливать флаги LLVM с помощью переключателя -C:

$ rustc -C help
...
-C            llvm-args=val -- a list of arguments to pass to llvm (space separated)
...

Вы можете передать это с помощью RUSTFLAGS='-C llvm-args=-mgeneral-regs-only' xargo build.

...