# Travis configuration file for downloading and building OP-TEE according to the
# instructions in build.git
language: bash

notifications:
  email:
    recipients:
      - op-tee@linaro.org
    on_success: change
    on_failure: always

dist: trusty
sudo: required

cache:
  directories:
    - $HOME/.ccache

git:
  depth: 10

after_script:
  - ccache -s

before_install:
  - ccache -s
  - sudo dpkg --add-architecture i386
  - sudo apt-get update -qq
  # Package list taken from README.md
  - sudo apt-get install -qq -y android-tools-adb android-tools-fastboot autoconf automake bc bison build-essential cscope curl device-tree-compiler flex ftp-upload gdisk iasl libattr1-dev libc6:i386 libcap-dev libfdt-dev libftdi-dev libglib2.0-dev libhidapi-dev libncurses5-dev libpixman-1-dev libssl-dev libstdc++6:i386 libtool libz1:i386 make mtools netcat python-crypto python-serial unzip uuid-dev xdg-utils xterm xz-utils zlib1g-dev

install: true

env:
  - $REPO_PROJ=default
  - $REPO_PROJ=fvp
  - $REPO_PROJ=hikey
  - $REPO_PROJ=hikey960
  - $REPO_PROJ=juno
  - $REPO_PROJ=qemu_v8
  - $REPO_PROJ=rpi3

before_script:
  - export CCACHE_BASEDIR=$HOME/$REPO_PROJ
  - export CCACHE_NOHASHDIR=1
  - mkdir -p $HOME/bin
  - cd $HOME/bin && wget https://storage.googleapis.com/git-repo-downloads/repo && chmod +x repo
  - export PATH=$HOME/bin:$PATH
  - mkdir -p $HOME/$REPO_PROJ

script:
  # Special case for FVP, since we check for the Foundation_Platformpkg folder
  # in the makefile.
  - if [ $REPO_PROJ == "fvp" ]; then mkdir -p $HOME/$REPO_PROJ/Foundation_Platformpkg; fi
  # Use the manifest from the branch itself we're pushing to.
  - |
        if [ "$TRAVIS_EVENT_TYPE" == "pull_request" ]; then
                slug=$TRAVIS_PULL_REQUEST_SLUG
                branch=$TRAVIS_PULL_REQUEST_BRANCH
        else
                slug=$TRAVIS_REPO_SLUG
                branch=$TRAVIS_BRANCH
        fi
        echo "Getting ${REPO_PROJ}.xml from https://github.com/$slug using branch $branch"
        cd $HOME/$REPO_PROJ && repo init -u https://github.com/$slug -b $branch -m ${REPO_PROJ}.xml </dev/null && repo sync -j10 --no-clone-bundle --no-tags
  # Fetch a local copy of dtc+libfdt to avoid issues with a possibly outdated libfdt-dev
  - if [ $REPO_PROJ == "qemu_v8" ]; then cd $HOME/$REPO_PROJ/qemu && git submodule update --init dtc; fi
  # Dump the content of the manifest (for debug purpose)
  - cat $HOME/$REPO_PROJ/.repo/manifests/${REPO_PROJ}.xml
  - cd $HOME/$REPO_PROJ/build && make -f toolchain.mk toolchains -j3 && make all -j`nproc`
