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

notifications:
  email:
    recipients:
      - joakim.bech@linaro.org
    on_success: change
    on_failure: always

dist: trusty
sudo: required
group: beta

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 python-wand unzip uuid-dev xdg-utils xterm xz-utils zlib1g-dev

install: true

env:
  - $REPO_PROJ=default
  - $REPO_PROJ=fvp
  - $REPO_PROJ=hikey
  - $REPO_PROJ=juno
  - $REPO_PROJ=mt8173-evb
  - $REPO_PROJ=qemu_v8
  - $REPO_PROJ=rpi3
  #- $REPO_PROJ=dra7xx # Cannot build this since it requires TI_SECURE_DEV_PKG

before_script:
  - 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}_stable.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}_stable.xml </dev/null && repo sync -j2 --no-clone-bundle --no-tags --quiet
  # 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}_stable.xml
  - cd $HOME/$REPO_PROJ/build && make -f toolchain.mk toolchains -j3 && make all -j`nproc`
