Experimental Rust support

Last update: 2021-06-08

Ubuntu 20 x64, Mint x64

Note: Does not work with Ubuntu 18 Bionic - GLIBC problem in cargo: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found.

Commands

sudo apt install gcc wget xz-utils
mkdir -p ~/.rustup/toolchains/xtensa

wget https://dl.espressif.com/dl/idf-rust/dist/x86_64-unknown-linux-gnu/rust-1.50.0-dev-x86_64-unknown-linux-gnu.tar.xz
tar xvf rust-1.50.0-dev-x86_64-unknown-linux-gnu.tar.xz
pushd rust-1.50.0-dev-x86_64-unknown-linux-gnu
./install.sh --destdir=~/.rustup/toolchains/xtensa --prefix="" --without=rust-docs
popd

wget https://dl.espressif.com/dl/idf-rust/dist/x86_64-unknown-linux-gnu/rust-src-1.50.0-dev.tar.xz
tar xvf rust-src-1.50.0-dev.tar.xz
pushd rust-src-1.50.0-dev
./install.sh --destdir=~/.rustup/toolchains/xtensa --prefix="" --without=rust-docs
popd

rustup default xtensa

wget https://dl.espressif.com/dl/idf-rust/dist/x86_64-unknown-linux-gnu/xtensa-esp32-elf-llvm11_0_0-llvmorg-11-init-21247-g65ed48e-linux-amd64.tar.xz
tar xf xtensa-esp32-elf-llvm11_0_0-llvmorg-11-init-21247-g65ed48e-linux-amd64.tar.xz
export PATH="`pwd`/xtensa-esp32-elf-clang/bin/:$PATH"

wget https://dl.espressif.com/dl/idf-rust/dist/x86_64-unknown-linux-gnu/llvm-patch-0.1.x86_64-unknown-linux-gnu.tar.gz
tar xzf llvm-patch-0.1.x86_64-unknown-linux-gnu.tar.gz
export PATH="`pwd`/llvm-patch/bin/:$PATH"

wget https://dl.espressif.com/dl/idf-rust/rust-esp32-example-0.2.tar.gz
tar xvzf rust-esp32-example-0.2.tar.gz
cd rust-esp32-example/rustlib
cargo build --release
cd ..
idf.py build

Big Sur - x64

Commands

mkdir -p ~/.rustup/toolchains/xtensa

wget https://dl.espressif.com/dl/idf-rust/dist/x86_64-apple-darwin/rust-1.50.0-dev-x86_64-apple-darwin.tar.xz
tar xvf rust-1.50.0-dev-x86_64-apple-darwin.tar.xz
pushd rust-1.50.0-dev-x86_64-apple-darwin
./install.sh --destdir=~/.rustup/toolchains/xtensa --prefix="" --without=rust-docs
popd

wget https://dl.espressif.com/dl/idf-rust/dist/x86_64-apple-darwin/rust-src-1.50.0-dev.tar.xz
tar xvf rust-src-1.50.0-dev.tar.xz
pushd rust-src-1.50.0-dev
./install.sh --destdir=~/.rustup/toolchains/xtensa --prefix="" --without=rust-docs
popd

rustup default xtensa

# TODO: Add llvm-project built for x64 - export PATH to bin

wget https://dl.espressif.com/dl/idf-rust/dist/x86_64-apple-darwin/llvm-patch-0.1.x86_64-apple-darwin.tar.gz
tar xzf llvm-patch-0.1.x86_64-apple-darwin.tar.gz
export PATH="`pwd`/llvm-patch/bin/:$PATH"

wget https://dl.espressif.com/dl/idf-rust/rust-esp32-example-0.2.tar.gz
tar xvzf rust-esp32-example-0.2.tar.gz
cd rust-esp32-example/rustlib
cargo build --release
cd ..
idf.py build

Big Sur - M1

Commands

mkdir -p ~/.rustup/toolchains/xtensa

wget https://dl.espressif.com/dl/idf-rust/dist/aarch64-apple-darwin/rust-1.50.0-dev-aarch64-apple-darwin.tar.xz
tar xvf rust-1.50.0-dev-aarch64-apple-darwin.tar.xz
pushd rust-1.50.0-dev-aarch64-apple-darwin
./install.sh --destdir=~/.rustup/toolchains/xtensa --prefix="" --without=rust-docs
popd

wget https://dl.espressif.com/dl/idf-rust/dist/aarch64-apple-darwin/rust-src-1.50.0-dev.tar.xz
tar xvf rust-src-1.50.0-dev.tar.xz
pushd rust-src-1.50.0-dev
./install.sh --destdir=~/.rustup/toolchains/xtensa --prefix="" --without=rust-docs
popd

rustup default xtensa

# TODO: Add llvm-project built for M1 - export PATH to bin

wget https://dl.espressif.com/dl/idf-rust/dist/aarch64-apple-darwin/llvm-patch-0.1.aarch64-apple-darwin.tar.gz
tar xzf llvm-patch-0.1.aarch64-apple-darwin.tar.gz
export PATH="`pwd`/llvm-patch/bin/:$PATH"

wget https://dl.espressif.com/dl/idf-rust/rust-esp32-example-0.2.tar.gz
tar xvzf rust-esp32-example-0.2.tar.gz
cd rust-esp32-example/rustlib
cargo build --release
cd ..
idf.py build

Windows 10 - x64

Commands

mkdir -p ~/.rustup/toolchains/xtensa

wget https://dl.espressif.com/dl/idf-rust/dist/x86_64-pc-windows-msvc/rust-1.50.0-dev-x86_64-pc-windows-msvc.tar.xz
tar xvf rust-1.50.0-dev-x86_64-pc-windows-msvc.tar.xz
pushd rust-1.50.0-dev-x86_64-pc-windows-msvc
./install.sh --destdir=~/.rustup/toolchains/xtensa --prefix="" --without=rust-docs
popd

wget https://dl.espressif.com/dl/idf-rust/dist/x86_64-pc-windows-msvc/rust-src-1.50.0-dev.tar.xz
tar xvf rust-src-1.50.0-dev.tar.xz
pushd rust-src-1.50.0-dev
./install.sh --destdir=~/.rustup/toolchains/xtensa --prefix="" --without=rust-docs
popd

rustup default xtensa

wget https://dl.espressif.com/dl/idf-rust/dist/x86_64-pc-windows-msvc/xtensa-esp32-elf-llvm11_0_0-llvmorg-11-init-21247-g65ed48e-win64.zip
unzip xtensa-esp32-elf-llvm11_0_0-llvmorg-11-init-21247-g65ed48e-win64.zip
export PATH="`pwd`/xtensa-esp32-elf-clang/bin/:$PATH"

wget https://dl.espressif.com/dl/idf-rust/dist/x86_64-pc-windows-msvc/llvm-patch-0.1.x86_64-pc-windows-msvc.tar.gz
tar xzf llvm-patch-0.1.x86_64-pc-windows-msvc.tar.gz
export PATH="`pwd`/llvm-patch/bin/:$PATH"

wget https://dl.espressif.com/dl/idf-rust/rust-esp32-example-0.2.tar.gz
tar xvzf rust-esp32-example-0.2.tar.gz
cd rust-esp32-example/rustlib
cargo build --release
cd ..
idf.py build