From c2791fc56abba235c4d0d56a746e24ac2cb778bf Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Mon, 27 May 2019 12:51:59 +0200 Subject: [PATCH] add 'miri' script to help build, test and run miri --- miri | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 miri diff --git a/miri b/miri new file mode 100755 index 00000000000..fc8fdb7b5b2 --- /dev/null +++ b/miri @@ -0,0 +1,36 @@ +#!/bin/sh +set -e +TARGET=$(rustc --print target-spec-json -Z unstable-options | jq '.["llvm-target"]' -r) +SYSROOT=$(rustc --print sysroot) +export RUSTFLAGS="-C link-args=-Wl,-rpath,$SYSROOT/lib/rustlib/$TARGET/lib -C debug-assertions" + +COMMAND="$1" +shift + +case "$COMMAND" in +install) + exec cargo install --path "$(dirname "$0")" --force --locked --offline + ;; +build|test|run) + # Basic build + cargo build --release + + # We we want to just build, we are done. + if [ "$COMMAND" = "build" ]; then exit 0; fi + + # Get ourselves a sysroot + if [ -n "$MIRI_SYSROOT" ]; then + # sysroot already set + true + elif rustc --print sysroot | egrep -q 'build/[^/]+/stage'; then + # a local build, we have a proper libstd in $SYSROOT + true + else + # we have to build a sysroot + cargo run --release --bin cargo-miri -- miri setup + export MIRI_SYSROOT=$HOME/.cache/miri/HOST + fi + + exec cargo "$COMMAND" --release "$@" + ;; +esac