sudo: false

language: rust

rust: nightly

os:
  - linux
  - osx

cache:
  cargo: true
  directories:
    - $HOME/Library/Caches/Homebrew

addons:
  apt:
    packages:
      - qemu
  homebrew:
    packages:
      - qemu

env:
  matrix:
    - ARCH="riscv32"
    - ARCH="riscv32" OPTS="m_mode=1"
    - ARCH="x86_64"
    - ARCH="aarch64"

install:
  - if [ $ARCH = riscv32 ]; then
      [ $TRAVIS_OS_NAME = linux ] && export FILE="riscv64-unknown-elf-gcc-20181127-x86_64-linux-ubuntu14";
      [ $TRAVIS_OS_NAME = osx   ] && export FILE="riscv64-unknown-elf-gcc-20181127-x86_64-apple-darwin";
      wget https://static.dev.sifive.com/dev-tools/$FILE.tar.gz;
      tar xf $FILE.tar.gz;
      export PATH=$PATH:$PWD/$FILE/bin;
    fi
  - if [ $ARCH = aarch64 ]; then
    if [ $TRAVIS_OS_NAME = linux ]; then
      wget https://web.stanford.edu/class/cs140e/files/aarch64-none-elf-linux-x64.tar.gz;
      tar -xzvf aarch64-none-elf-linux-x64.tar.gz;
      export PATH=$PATH:$PWD/aarch64-none-elf/bin;
    elif [ $TRAVIS_OS_NAME = osx ]; then
      brew tap SergioBenitez/osxct;
      brew install aarch64-none-elf;
    fi;
    fi


before_script:
  - rustup component add rust-src
  - (test -x $HOME/.cargo/bin/cargo-xbuild || cargo install cargo-xbuild)
  - (test -x $HOME/.cargo/bin/bootimage || cargo install bootimage)

script:
  - cd kernel && make build arch=$ARCH $OPTS && cd ..
  - cd user && make arch=$ARCH