summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.travis.yml56
-rw-r--r--ci/install.sh13
-rw-r--r--ci/script.sh24
3 files changed, 93 insertions, 0 deletions
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..05d94de
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,56 @@
+language: rust
+
+matrix:
+ include:
+ - env: TARGET=x86_64-unknown-linux-gnu
+
+ - env: TARGET=x86_64-unknown-linux-gnu
+ rust: nightly
+
+ - env: TARGET=x86_64-unknown-linux-musl
+ rust: nightly
+
+ # Raspberry Pi 1
+ - env: TARGET=arm-unknown-linux-gnueabi DISABLE_EXAMPLES=1 DISABLE_TESTS=1
+ rust: nightly
+
+ # Raspberry Pi 2, 3, etc
+ - env: TARGET=armv7-unknown-linux-gnueabihf DISABLE_EXAMPLES=1 DISABLE_TESTS=1
+ rust: nightly
+
+ # Bare metal
+ - env: TARGET=thumbv6m-none-eabi
+ rust: beta
+ - env: TARGET=thumbv7em-none-eabi
+ rust: beta
+ - env: TARGET=thumbv7em-none-eabihf
+ rust: beta
+ - env: TARGET=thumbv7m-none-eabi
+ rust: beta
+
+before_install:
+ - set -e
+ - rustup self update
+
+install:
+ - bash ci/install.sh
+
+script:
+ - bash ci/script.sh
+
+after_script: set +e
+
+cache: cargo
+before_cache:
+ # Travis can't cache files that are not readable by "others"
+ - chmod -R a+r $HOME/.cargo
+
+branches:
+ only:
+ - master
+ - staging
+ - trying
+
+notifications:
+ email:
+ on_success: never
diff --git a/ci/install.sh b/ci/install.sh
new file mode 100644
index 0000000..42c96b4
--- /dev/null
+++ b/ci/install.sh
@@ -0,0 +1,13 @@
+set -euxo pipefail
+
+main() {
+ rustup component add rust-src
+ SYSROOT=$(rustc --print sysroot)
+ if [[ ! "$SYSROOT" =~ "$TARGET" ]]; then
+ rustup target add $TARGET
+ else
+ echo "Target $TARGET is already installed"
+ fi
+}
+
+main
diff --git a/ci/script.sh b/ci/script.sh
new file mode 100644
index 0000000..9ad8677
--- /dev/null
+++ b/ci/script.sh
@@ -0,0 +1,24 @@
+set -exo pipefail
+
+main() {
+ if [[ ! $TARGET =~ .*linux.* ]]; then
+ sed -i "s/linux-embedded-hal/#linux-embedded-hal/g" Cargo.toml
+ sed -i "s/embedded-hal-mock/#embedded-hal-mock/g" Cargo.toml
+ fi
+
+ if [ ! -z $FEATURES ]; then
+ export FEATURES="--features $FEATURES"
+ fi
+
+ cargo check --target $TARGET $FEATURES
+ cargo build --target $TARGET --release $FEATURES
+ if [ -z $DISABLE_EXAMPLES ] && [[ $TARGET =~ .*linux.* ]]; then
+ cargo build --target $TARGET $FEATURES --examples
+ fi
+
+ if [ -z $DISABLE_TESTS ] && [ $TRAVIS_RUST_VERSION = nightly ] && [[ $TARGET =~ .*linux.* ]]; then
+ cargo test --target $TARGET $FEATURES
+ fi
+}
+
+main