set -ex print_versions() { rustc -V cargo -V cc --version } rustup_install() { export PATH="$PATH:$HOME/.cargo/bin" curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain=$1 } # Add provided target to current Rust toolchain if it is not already # the default or installed. rustup_target_add() { if ! rustup target list | grep -E "$1 \((default|installed)\)" then rustup target add $1 fi } setup_docker() { apt-get -qq -y install zip cd /mnt/host } mingw_i686_install() { curl https://static.rust-lang.org/dist/rust-mingw-nightly-i686-pc-windows-gnu.tar.gz \ | tar xzvf - -C /tmp /tmp/rust-mingw-nightly-i686-pc-windows-gnu/install.sh --prefix=`rustc --print sysroot` } # Configure rustc target for cross compilation. Provided with a build # target, this will determine which linker to use for cross compilation. cargo_config() { local prefix case "$TARGET" in aarch64-unknown-linux-gnu) prefix=aarch64-linux-gnu ;; arm*-unknown-linux-gnueabihf) prefix=arm-linux-gnueabihf ;; arm-unknown-linux-gnueabi) prefix=arm-linux-gnueabi ;; mipsel-unknown-linux-musl) prefix=mipsel-openwrt-linux ;; x86_64-pc-windows-gnu) prefix=x86_64-w64-mingw32 ;; i686-pc-windows-gnu) prefix=i686-w64-mingw32 ;; *) return ;; esac mkdir -p ~/.cargo cat >~/.cargo/config <