# Linux Build Configuration for Travis

language: cpp

os:
  - linux
  - osx

# Use Ubuntu 14.04 LTS (Trusty) as the Linux testing environment.
dist: trusty
sudo: false

env:
  global:
    - secure: IoR/Xe9E+NnLAeI23WrmUsGQn5rocz+XRYUk+BbaoKiIRYm4q72GKyypRoOGLu7wImOXFSvnN/dpdnqIpx4W0NfsSvNdlXyhDy+wvT1kzTt77dJGnkGZTZ2SBOtC9AECLy4sqM9HG0rYRR6WfXcnP2GlrE5f2aF07aISQbOUsQMvyyhtCmVAzIigK1zIUto5I0pNenvo/Y+ur+mEvTh+FtaoDIGepCbZlCc+OxqRXwXNlI7mDXbzLPmTB1FWTGsrZdRX8czF9tN9Y+T79DQjB4Lcyyeow8yU9NBVlgzZJcp1xI0UIskRT8gVrXmBYL2dMeHnDQuhxjEg9n7jfr3ptA9rgwMaSsgdaLwuBXgtPuqVgUYDpE1cP8WI8q38MXX0I6psTs/WHu+z+5UwfjzpPOHmGdVt48o8ymFTapvD5Cf1+uJyk73QkyStnPIdBF1N9Yx5sD7HN28K6/Ro12sCCePHUZ9Uz1DdZI6XxkgCNKNwao0csAyvODxD6Ee43mkExtviB8BJY5jWLIMTdGhgEGH2sRqils8IDW0p8AOTPM4UC7iA7hdg3pA+XMvBHvP9ixsY7tuB+yR2AfnFaSw2DVbwI5GgFdFMNHXYuL+9V9Wuh3keBKYQT/Hy1YvxjQ/t9UouYHqEsyVFUl3R4lEAM9+qSRsRu+EKmcSO2QtCsWc=
  matrix:
    # Each line is a set of environment variables set before a build.
    # Thus each line represents a different build configuration.
    - BUILD_TYPE=Release
    - BUILD_TYPE=Debug

compiler:
  - clang
  - gcc

matrix:
  fast_finish: true
  include:
    # Additional build using Android NDK with android-cmake
    - env: BUILD_ANDROID_CMAKE=ON
    # Additional build using Android NDK with Android.mk
    - env: BUILD_ANDROID_MK=ON
  exclude:
    # Skip GCC builds on macOS.
    - os: osx
      compiler: gcc

cache:
  apt: true

git:
  depth: 1

branches:
  only:
    - master

before_install:
  - if [[ "$BUILD_ANDROID_CMAKE" == "ON" ]] || [[ "$BUILD_ANDROID_MK" == "ON" ]]; then
      git clone --depth=1 https://github.com/urho3d/android-ndk.git $HOME/android-ndk;
      export ANDROID_NDK=$HOME/android-ndk;
      git clone --depth=1 https://github.com/taka-no-me/android-cmake.git $HOME/android-cmake;
      export TOOLCHAIN_PATH=$HOME/android-cmake/android.toolchain.cmake;
    fi

before_script:
  - git clone --depth=1 https://github.com/KhronosGroup/SPIRV-Headers external/spirv-headers
  - git clone --depth=1 https://github.com/google/googletest          external/googletest
  - git clone --depth=1 https://github.com/google/effcee              external/effcee
  - git clone --depth=1 https://github.com/google/re2                 external/re2

script:
  # Due to the limitation of Travis platform, we cannot start too many concurrent jobs.
  # Otherwise GCC will panic with internal error, possibility because of memory issues.
  # ctest with the current tests doesn't profit from using more than 4 threads.
  - export NPROC=4;
  - mkdir build && cd build;
  - if [[ "$BUILD_ANDROID_MK" == "ON" ]]; then
      export BUILD_DIR=$(pwd);
      mkdir ${BUILD_DIR}/libs;
      mkdir ${BUILD_DIR}/app;
      $ANDROID_NDK/ndk-build -C ../android_test NDK_PROJECT_PATH=.
                             NDK_LIBS_OUT=${BUILD_DIR}/libs
                             NDK_APP_OUT=${BUILD_DIR}/app -j${NPROC};
    elif [[ "$BUILD_ANDROID_CMAKE" == "ON" ]]; then
      cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_PATH}
            -DANDROID_NATIVE_API_LEVEL=android-9
            -DCMAKE_BUILD_TYPE=Release
            -DANDROID_ABI="armeabi-v7a with NEON"
            -DSPIRV_BUILD_COMPRESSION=ON
            -DSPIRV_SKIP_TESTS=ON ..;
      make -j${NPROC};
    else
      cmake -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DSPIRV_BUILD_COMPRESSION=ON -DCMAKE_INSTALL_PREFIX=install ..;
      make -j${NPROC} install;
      ctest -j${NPROC} --output-on-failure --timeout 300;
    fi

after_success:
  # Create tarball for deployment
  - if [[ "${CC}" == "clang" && "${BUILD_ANDROID_MK}" != "ON" && "${BUILD_ANDROID_CMAKE}" != "ON" ]]; then
      cd install;
      export TARBALL=SPIRV-Tools-master-${TRAVIS_OS_NAME}-${BUILD_TYPE}.zip;
      find . -print | zip -@ ${TARBALL};
    fi

before_deploy:
  # Tag the current master top of the tree as "master-tot".
  # Travis CI relies on the tag name to push to the correct release.
  - git config --global user.name "Travis CI"
  - git config --global user.email "builds@travis-ci.org"
  - git tag -f master-tot
  - git push -q -f https://${spirvtoken}@github.com/KhronosGroup/SPIRV-Tools --tags

deploy:
  provider: releases
  api_key: ${spirvtoken}
  on:
    branch: master
    condition: ${CC} == clang && ${BUILD_ANDROID_MK} != ON && ${BUILD_ANDROID_CMAKE} != ON
  file: ${TARBALL}
  skip_cleanup: true
  overwrite: true

notifications:
  email:
    recipients:
      - andreyt@google.com
      - antiagainst@google.com
      - awoloszyn@google.com
      - dneto@google.com
      - ehsann@google.com
      - qining@google.com
    on_success: change
    on_failure: always
