# Linux and Mac Build Configuration for Travis

language: cpp

os:
  - linux
  - osx

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

env:
  global:
    - secure: aGFrgzyKp+84hKrGkxVWg8cHV61uqrKEHT38gfSQK6+WS4GfLOyH83p7WnsEBb7AMhzU7LMNFdvOFr6+NaMpVnqRvc40CEG1Q+lNg9Pq9mhIZLowvDrfqTL9kQ+8Nbw5Q6/dg6CTvY7fvRfpfCEmKIUZBRkoKUuHeuM1uy3IupFcdNuL5bSYn3Beo+apSJginh9DI4BLDXFUgBzTRSLLyCX5g3cpaeGGOCr8quJlYx75W6HRck5g9SZuLtUoH9GFEV3l+ZEWB8noErW+J56L03bwNwFuuAh321evw++oQk5KFa8rlDvar3SJ3b1RHB8u/eq5DBYMyaK/fS8+Q7QbGr8diF/wDe68bKO7U9IhpNfExXmczCpExjHomW5TQv4rYdGhygPMfW97aIsPRYyNKcl4fkmb7NDrM8w0Jscdq2g5c2Kz0ItyZoBri/NXLwFQQjaVCs7Pf97TjuMA7mK0GJmDTRzi6SrDYlWMt5BQL3y0CCojyfLIRcTh0CQjQI29s97bLfQrYAxt9GNNFR+HTXRLLrkaAlJkPGEPwUywlSfEThnvHLesNxYqemolAYpQT4ithoL4GehGIHmaxsW295aKVhuRf8K9eBODNqrfblvM42UHhjntT+92ZnQ/Gkq80GqaMxnxi4PO5FyPIxt0r981b54YBkWi8YA4P7w5pNI=
  matrix:
    - GLSLANG_BUILD_TYPE=Release
    - GLSLANG_BUILD_TYPE=Debug

compiler:
  - clang
  - gcc

matrix:
  fast_finish: true # Show final status immediately if a test fails.
  exclude:
    # Skip GCC builds on Mac OS X.
    - os: osx
      compiler: gcc
  include:
    # Additional build using Android NDK.
    - env: BUILD_NDK=ON

cache:
  apt: true

branches:
  only:
    - master

addons:
  apt:
    packages:
      - clang-3.6

install:
  # Make sure that clang-3.6 is selected on Linux.
  - if [[ "$TRAVIS_OS_NAME" == "linux" && "$CC" == "clang" ]]; then
      export CC=clang-3.6 CXX=clang++-3.6;
    fi
  # Download Android NDK and Android CMake toolchain file.
  - if [[ "$BUILD_NDK" == "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/google/googletest.git External/googletest
  - ./update_glslang_sources.py

script:
  - mkdir build && cd build
  # For Android, do release building using NDK without testing.
  # For Linux and macOS, do debug/release building with testing.
  - if [[ "$BUILD_NDK" == "ON" ]]; then
      cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_PATH}
            -DANDROID_NATIVE_API_LEVEL=android-12
            -DCMAKE_BUILD_TYPE=Release
            -DANDROID_ABI="armeabi-v7a with NEON"
            -DBUILD_TESTING=OFF ..;
      make -j4;
    else
      cmake -DCMAKE_BUILD_TYPE=${GLSLANG_BUILD_TYPE}
            -DCMAKE_INSTALL_PREFIX=`pwd`/install ..;
      make -j4 install;
      ctest --output-on-failure &&
      cd ../Test && ./runtests;
    fi

after_success:
  # For debug build, the generated dll has a postfix "d" in its name.
  - if [[ "${GLSLANG_BUILD_TYPE}" == "Debug" ]]; then
      export SUFFIX="d";
    else
      export SUFFIX="";
    fi
  # Create tarball for deployment
  - if [[ ${CC} == clang* && "${BUILD_NDK}" != "ON" ]]; then
      cd ../build/install;
      export TARBALL=glslang-master-${TRAVIS_OS_NAME}-${GLSLANG_BUILD_TYPE}.zip;
      zip ${TARBALL}
        bin/glslangValidator
        include/glslang/*
        include/SPIRV/*
        lib/libglslang${SUFFIX}.a
        lib/libHLSL${SUFFIX}.a
        lib/libOGLCompiler${SUFFIX}.a
        lib/libOSDependent${SUFFIX}.a
        lib/libSPIRV${SUFFIX}.a
        lib/libSPVRemapper${SUFFIX}.a
        lib/libSPIRV-Tools${SUFFIX}.a
        lib/libSPIRV-Tools-opt${SUFFIX}.a;
    fi

before_deploy:
  # Tag the current top of the tree as "master-tot".
  # Travis CI replies on the tag name to properly push to GitHub Releases.
  - 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://${glslangtoken}@github.com/KhronosGroup/glslang --tags

deploy:
  provider: releases
  api_key: ${glslangtoken}
  on:
    branch: master
    condition: ${CC} == clang* && ${BUILD_NDK} != ON
  file: ${TARBALL}
  skip_cleanup: true
  overwrite: true
