From 6f52a1937d24238ae83bfa746a09f466c3cedb3d Mon Sep 17 00:00:00 2001 From: bjorn3 Date: Fri, 31 Aug 2018 19:50:26 +0200 Subject: [PATCH] Improve build.sh --- build.sh | 59 +++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 43 insertions(+), 16 deletions(-) diff --git a/build.sh b/build.sh index a3d31c6c770..eb17c716f4a 100755 --- a/build.sh +++ b/build.sh @@ -1,6 +1,6 @@ #!/bin/bash -cargo build || exit 1 +set -e unamestr=`uname` if [[ "$unamestr" == 'Linux' ]]; then @@ -14,31 +14,58 @@ fi extract_data() { pushd target/out/ - ar x $1 data.o && - chmod +rw data.o && + ar x $1 data.o + chmod +rw data.o mv data.o $2 popd } -RUSTC="rustc -Zcodegen-backend=$(pwd)/target/debug/librustc_codegen_cranelift.$dylib_ext -L crate=target/out --out-dir target/out" +link_and_run() { + target=$1 + shift + pushd target/out + gcc $@ -o $target + ./$target +} -rm -r target/out -mkdir -p target/out/mir +build_lib() { + SHOULD_CODEGEN=1 $RUSTC $2 --crate-name $1 --crate-type lib + extract_data lib$1.rlib $1.o +} + +run_bin() { + SHOULD_RUN=1 $RUSTC $1 --crate-type bin +} + +build_example_bin() { + $RUSTC $2 --crate-name $1 --crate-type bin + extract_data $1 $1.o + + link_and_run $1 mini_core.o $1.o +} + +if [[ "$1" == "--release" ]]; then + channel='release' + cargo build --release +else + channel='debug' + cargo build +fi + +RUSTC="rustc -Zcodegen-backend=$(pwd)/target/$channel/librustc_codegen_cranelift.$dylib_ext -Cpanic=abort -L crate=target/out --out-dir target/out" + +rm -r target/out || true mkdir -p target/out/clif -SHOULD_CODEGEN=1 $RUSTC examples/mini_core.rs --crate-name mini_core --crate-type lib && -extract_data libmini_core.rlib mini_core.o && +build_lib mini_core examples/mini_core.rs -$RUSTC examples/example.rs --crate-type lib && +$RUSTC examples/example.rs --crate-type lib # SimpleJIT is broken -#SHOULD_RUN=1 $RUSTC examples/mini_core_hello_world.rs --crate-type bin && +# run_bin examples/mini_core_hello_world.rs -$RUSTC examples/mini_core_hello_world.rs --crate-type bin && -extract_data mini_core_hello_world mini_core_hello_world.o && +build_example_bin mini_core_hello_world examples/mini_core_hello_world.rs -gcc target/out/mini_core.o target/out/mini_core_hello_world.o -o target/out/mini_core_hello_world || exit 1 -./target/out/mini_core_hello_world - -$RUSTC target/libcore/src/libcore/lib.rs --color=always --crate-type lib -Cincremental=target/incremental 2>&1 | (head -n 20; echo "===="; tail -n 1000) +time $RUSTC target/libcore/src/libcore/lib.rs --crate-type lib --crate-name core -Cincremental=target/incremental_core cat target/out/log.txt | sort | uniq -c +#extract_data libcore.rlib core.o