git clone https://github.com/espressif/llvm-xtensa.git
git clone https://github.com/espressif/clang-xtensa.git llvm-xtensa/tools/clang
mkdir llvm-xtensa-build && cd llvm-xtensa-build
cmake ../llvm-xtensa -DLLVM_TARGETS_TO_BUILD="Xtensa;X86" -DCMAKE_BUILD_TYPE=Release -G "Ninja"
cmake --build . -j X
git clone --single-branch --branch xtensa-target https://github.com/MabezDev/rust rust-xtensa
cd rust-xtensa && ./configure --llvm-root=$PATH_TO_LLVM_BUILD
- set
prefix
in cargo.toml, e.g.prefix=/opt/xtensa
- rust-lang/rust#40108 (comment)
rustup toolchain link xtensa-esp32-elf /opt/xtensa
rustup default xtensa-esp32-elf
cargo install cargo-generate
cargo generate --git https://github.com/MabezDev/xtensa-rust-quickstart
- Edit
setenv
'sCUSTROM_RUSTC
and runsource setenv
e.g.CUSTOM_RUSTC=/home/estrom/git/rust-xtensa
- Debug builds are buggy, use
xargo build --release
Undefined reference to .L
(MabezDev/xtensa-rust-quickstart#1)
Add "--emit", "llvm-bc,link",
to rustflags in .cargo/config
.
xargo build
may faild due to buggy debug builds, instead build in release mode xargo build --release
.
https://github.com/MabezDev/xtensa-rust-quickstart
https://gist.github.com/MabezDev/26e175790f84f2f2b0f9bca4e63275d1