Try to handle thumb targets and xargo

This commit is contained in:
Alex Crichton 2019-04-02 11:44:28 -07:00
parent 89f2b5a8bd
commit c880d1ca06
4 changed files with 73 additions and 64 deletions

View File

@ -11,38 +11,43 @@ jobs:
matrix:
aarch64:
TARGET: aarch64-unknown-linux-gnu
arm:
TARGET: arm-unknown-linux-gnueabi
armhf:
TARGET: arm-unknown-linux-gnueabihf
i586:
TARGET: i586-unknown-linux-gnu
i686:
TARGET: i686-unknown-linux-gnu
mips:
TARGET: mips-unknown-linux-gnu
mips64:
TARGET: mips64-unknown-linux-gnuabi64
mips64el:
TARGET: mips64el-unknown-linux-gnuabi64
mipsel:
TARGET: mipsel-unknown-linux-gnu
powerpc:
TARGET: powerpc-unknown-linux-gnu
powerpc64:
TARGET: powerpc64-unknown-linux-gnu
powerpc64le:
TARGET: powerpc64le-unknown-linux-gnu
# arm:
# TARGET: arm-unknown-linux-gnueabi
# armhf:
# TARGET: arm-unknown-linux-gnueabihf
# i586:
# TARGET: i586-unknown-linux-gnu
# i686:
# TARGET: i686-unknown-linux-gnu
# mips:
# TARGET: mips-unknown-linux-gnu
# mips64:
# TARGET: mips64-unknown-linux-gnuabi64
# mips64el:
# TARGET: mips64el-unknown-linux-gnuabi64
# mipsel:
# TARGET: mipsel-unknown-linux-gnu
# powerpc:
# TARGET: powerpc-unknown-linux-gnu
# powerpc64:
# TARGET: powerpc64-unknown-linux-gnu
# powerpc64le:
# TARGET: powerpc64le-unknown-linux-gnu
thumbv6m:
TARGET: thumbv6m-linux-eabi
XARGO: 1
thumbv7em:
TARGET: thumbv7em-linux-eabi
XARGO: 1
thumbv7emhf:
TARGET: thumbv7em-linux-eabihf
XARGO: 1
thumbv7m:
TARGET: thumbv7m-linux-eabi
XARGO: 1
wasm32:
TARGET: wasm32-unknown-unknown
ONLY_BUILD: 1
x86_64:
TARGET: x86_64-unknown-linux-gnu
@ -55,8 +60,8 @@ jobs:
matrix:
x86_64:
TARGET: x86_64-apple-darwin
i686:
TARGET: i686-apple-darwin
# i686:
# TARGET: i686-apple-darwin
- job: Windows
pool:
@ -67,9 +72,9 @@ jobs:
matrix:
i686-msvc:
TARGET: i686-pc-windows-msvc
x86_64-msvc:
TARGET: x86_64-pc-windows-msvc
i686-gnu:
TARGET: i686-pc-windows-gnu
# x86_64-msvc:
# TARGET: x86_64-pc-windows-msvc
# i686-gnu:
# TARGET: i686-pc-windows-gnu
x86_64-gnu:
TARGET: x86_64-pc-windows-gnu

View File

@ -4,13 +4,23 @@ steps:
- template: azure-install-rust.yml
- script: rustup component add rust-src
displayName: Install Rust sources
condition: eq( variables['XARGO'], '1' )
- bash: rustup target add $TARGET
displayName: Install compilation target
displayName: Install Rust target
condition: ne( variables['XARGO'], '1' )
- bash: ./ci/run.sh $TARGET
condition: ne( variables['Agent.OS'], 'Linux' )
displayName: Run test script
- bash: cargo generate-lockfile && ./ci/run-docker.sh $TARGET
- bash: |
if [ "$ONLY_BUILD" = "1" ]; then
cargo build --target $TARGET
else
cargo generate-lockfile && ./ci/run-docker.sh $TARGET
fi
condition: eq( variables['Agent.OS'], 'Linux' )
displayName: Run docker test script

View File

@ -18,6 +18,7 @@ run() {
--user $(id -u):$(id -g) \
-e CARGO_HOME=/cargo \
-e CARGO_TARGET_DIR=/target \
-e XARGO \
-v $HOME/.cargo:/cargo \
-v `pwd`/target:/target \
-v `pwd`:/checkout:ro \

View File

@ -3,14 +3,10 @@ set -ex
# FIXME(japarix/xargo#186) this shouldn't be necessary
export RUST_TARGET_PATH=`pwd`
case $1 in
thumb*)
cargo=xargo
;;
*)
cargo=cargo
;;
esac
cargo=cargo
if [ "$XARGO" = "1" ]; then
cargo=xargo
fi
INTRINSICS_FEATURES="c"
@ -22,34 +18,31 @@ if [ -z "$INTRINSICS_FAILS_WITH_MEM_FEATURE" ]; then
fi
# Test our implementation
case $1 in
thumb*)
run="xargo test --manifest-path testcrate/Cargo.toml --target $1"
for t in $(ls testcrate/tests); do
t=${t%.rs}
if [ "$XARGO" = "1" ]; then
run="xargo test --manifest-path testcrate/Cargo.toml --target $1"
for t in $(ls testcrate/tests); do
t=${t%.rs}
RUSTFLAGS="-C debug-assertions=no -C lto" \
CARGO_INCREMENTAL=0 \
$run --test $t --no-default-features --features 'mem c' --no-run
qemu-arm-static target/${1}/debug/$t-*
done
RUSTFLAGS="-C debug-assertions=no -C lto" \
CARGO_INCREMENTAL=0 \
$run --test $t --no-default-features --features 'mem c' --no-run
qemu-arm-static target/${1}/debug/$t-*
done
for t in $(ls testcrate/tests); do
t=${t%.rs}
RUSTFLAGS="-C lto" \
CARGO_INCREMENTAL=0 \
$run --test $t --no-default-features --features 'mem c' --no-run --release
qemu-arm-static target/${1}/release/$t-*
done
;;
*)
run="cargo test --manifest-path testcrate/Cargo.toml --target $1"
$run
$run --release
$run --features c
$run --features c --release
;;
esac
for t in $(ls testcrate/tests); do
t=${t%.rs}
RUSTFLAGS="-C lto" \
CARGO_INCREMENTAL=0 \
$run --test $t --no-default-features --features 'mem c' --no-run --release
qemu-arm-static target/${1}/release/$t-*
done
else
run="cargo test --manifest-path testcrate/Cargo.toml --target $1"
$run
$run --release
$run --features c
$run --features c --release
fi
PREFIX=$(echo $1 | sed -e 's/unknown-//')-
case $1 in