]>
Commit | Line | Data |
---|---|---|
f20569fa XL |
1 | #!/usr/bin/env bash |
2 | ||
3 | set -ex | |
4 | ||
5 | : ${TARGET?"The TARGET environment variable must be set."} | |
6 | ||
7 | # Tests are all super fast anyway, and they fault often enough on travis that | |
8 | # having only one thread increases debuggability to be worth it. | |
9 | #export RUST_TEST_THREADS=1 | |
10 | #export RUST_BACKTRACE=full | |
11 | #export RUST_TEST_NOCAPTURE=1 | |
12 | ||
13 | # Some appveyor builds run out-of-memory; this attempts to mitigate that: | |
14 | # https://github.com/rust-lang-nursery/packed_simd/issues/39 | |
15 | # export RUSTFLAGS="${RUSTFLAGS} -C codegen-units=1" | |
16 | # export CARGO_BUILD_JOBS=1 | |
17 | ||
18 | export CARGO_SUBCMD=test | |
19 | if [[ "${NORUN}" == "1" ]]; then | |
20 | export CARGO_SUBCMD=build | |
21 | fi | |
22 | ||
23 | if [[ ${TARGET} == "x86_64-apple-ios" ]] || [[ ${TARGET} == "i386-apple-ios" ]]; then | |
24 | export RUSTFLAGS="${RUSTFLAGS} -Clink-arg=-mios-simulator-version-min=7.0" | |
25 | rustc ./ci/deploy_and_run_on_ios_simulator.rs -o $HOME/runtest | |
26 | export CARGO_TARGET_X86_64_APPLE_IOS_RUNNER=$HOME/runtest | |
27 | export CARGO_TARGET_I386_APPLE_IOS_RUNNER=$HOME/runtest | |
28 | fi | |
29 | ||
30 | # The source directory is read-only. Need to copy internal crates to the target | |
31 | # directory for their Cargo.lock to be properly written. | |
32 | mkdir target || true | |
33 | ||
34 | rustc --version | |
35 | cargo --version | |
36 | echo "TARGET=${TARGET}" | |
37 | echo "HOST=${HOST}" | |
38 | echo "RUSTFLAGS=${RUSTFLAGS}" | |
39 | echo "NORUN=${NORUN}" | |
40 | echo "NOVERIFY=${NOVERIFY}" | |
41 | echo "CARGO_SUBCMD=${CARGO_SUBCMD}" | |
42 | echo "CARGO_BUILD_JOBS=${CARGO_BUILD_JOBS}" | |
43 | echo "CARGO_INCREMENTAL=${CARGO_INCREMENTAL}" | |
44 | echo "RUST_TEST_THREADS=${RUST_TEST_THREADS}" | |
45 | echo "RUST_BACKTRACE=${RUST_BACKTRACE}" | |
46 | echo "RUST_TEST_NOCAPTURE=${RUST_TEST_NOCAPTURE}" | |
47 | ||
48 | cargo_test() { | |
49 | cmd="cargo ${CARGO_SUBCMD} --verbose --target=${TARGET} ${@}" | |
50 | if [ "${NORUN}" != "1" ] | |
51 | then | |
52 | if [ "$TARGET" != "wasm32-unknown-unknown" ] | |
53 | then | |
54 | cmd="$cmd -- --quiet" | |
55 | fi | |
56 | fi | |
57 | mkdir target || true | |
58 | ${cmd} 2>&1 | tee > target/output | |
59 | if [[ ${PIPESTATUS[0]} != 0 ]]; then | |
60 | cat target/output | |
61 | return 1 | |
62 | fi | |
63 | } | |
64 | ||
65 | cargo_test_impl() { | |
66 | ORIGINAL_RUSTFLAGS=${RUSTFLAGS} | |
67 | RUSTFLAGS="${ORIGINAL_RUSTFLAGS} --cfg test_v16 --cfg test_v32 --cfg test_v64" cargo_test ${@} | |
68 | RUSTFLAGS="${ORIGINAL_RUSTFLAGS} --cfg test_v128 --cfg test_v256" cargo_test ${@} | |
69 | RUSTFLAGS="${ORIGINAL_RUSTFLAGS} --cfg test_v512" cargo_test ${@} | |
70 | RUSTFLAGS=${ORIGINAL_RUSTFLAGS} | |
71 | } | |
72 | ||
73 | # Debug run: | |
74 | if [[ "${TARGET}" != "wasm32-unknown-unknown" ]]; then | |
75 | # Run wasm32-unknown-unknown in release mode only | |
76 | cargo_test_impl | |
77 | fi | |
78 | ||
79 | if [[ "${TARGET}" == "x86_64-unknown-linux-gnu" ]] || [[ "${TARGET}" == "x86_64-pc-windows-msvc" ]]; then | |
80 | # use sleef on linux and windows x86_64 builds | |
81 | cargo_test_impl --release --features=into_bits,core_arch,sleef-sys | |
82 | else | |
83 | cargo_test_impl --release --features=into_bits,core_arch | |
84 | fi | |
85 | ||
86 | # Verify code generation | |
87 | if [[ "${NOVERIFY}" != "1" ]]; then | |
88 | cp -r verify/verify target/verify | |
89 | export STDSIMD_ASSERT_INSTR_LIMIT=30 | |
90 | if [[ "${TARGET}" == "i586-unknown-linux-gnu" ]]; then | |
91 | export STDSIMD_ASSERT_INSTR_LIMIT=50 | |
92 | fi | |
93 | cargo_test --release --manifest-path=target/verify/Cargo.toml | |
94 | fi | |
95 | ||
96 | . ci/run_examples.sh |