sudo: required
dist: trusty
language: cpp

matrix:
  include:
    - compiler: gcc
      addons:
        apt:
          packages:
            - lcov
      env: COMPILER=g++ C_COMPILER=gcc BUILD_TYPE=Coverage
    - compiler: gcc
      env: COMPILER=g++ C_COMPILER=gcc BUILD_TYPE=Debug
    - compiler: gcc
      env: COMPILER=g++ C_COMPILER=gcc BUILD_TYPE=Release
    - compiler: gcc
      addons:
        apt:
          packages:
            - g++-multilib
            - libc6:i386
      env:
        - COMPILER=g++
        - C_COMPILER=gcc
        - BUILD_TYPE=Debug
        - BUILD_32_BITS=ON
        - EXTRA_FLAGS="-m32"
    - compiler: gcc
      addons:
        apt:
          packages:
            - g++-multilib
            - libc6:i386
      env:
        - COMPILER=g++
        - C_COMPILER=gcc
        - BUILD_TYPE=Release
        - BUILD_32_BITS=ON
        - EXTRA_FLAGS="-m32"
    - compiler: gcc
      env:
        - INSTALL_GCC6_FROM_PPA=1
        - COMPILER=g++-6 C_COMPILER=gcc-6  BUILD_TYPE=Debug
        - ENABLE_SANITIZER=1
        - EXTRA_FLAGS="-fno-omit-frame-pointer -g -O2 -fsanitize=undefined,address -fuse-ld=gold"
    - compiler: clang
      env: COMPILER=clang++ C_COMPILER=clang BUILD_TYPE=Debug
    - compiler: clang
      env: COMPILER=clang++ C_COMPILER=clang BUILD_TYPE=Release
    # Clang w/ libc++
    - compiler: clang
      dist: xenial
      addons:
        apt:
          packages:
            clang-3.8
      env:
        - INSTALL_GCC6_FROM_PPA=1
        - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Debug
        - LIBCXX_BUILD=1
        - EXTRA_CXX_FLAGS="-stdlib=libc++"
    - compiler: clang
      dist: xenial
      addons:
        apt:
          packages:
            clang-3.8
      env:
        - INSTALL_GCC6_FROM_PPA=1
        - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Release
        - LIBCXX_BUILD=1
        - EXTRA_CXX_FLAGS="-stdlib=libc++"
    # Clang w/ 32bit libc++
    - compiler: clang
      dist: xenial
      addons:
        apt:
          packages:
            - clang-3.8
            - g++-multilib
            - libc6:i386
      env:
        - INSTALL_GCC6_FROM_PPA=1
        - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Debug
        - LIBCXX_BUILD=1
        - BUILD_32_BITS=ON
        - EXTRA_FLAGS="-m32"
        - EXTRA_CXX_FLAGS="-stdlib=libc++"
    # Clang w/ 32bit libc++
    - compiler: clang
      dist: xenial
      addons:
        apt:
          packages:
            - clang-3.8
            - g++-multilib
            - libc6:i386
      env:
        - INSTALL_GCC6_FROM_PPA=1
        - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Release
        - LIBCXX_BUILD=1
        - BUILD_32_BITS=ON
        - EXTRA_FLAGS="-m32"
        - EXTRA_CXX_FLAGS="-stdlib=libc++"
    # Clang w/ libc++, ASAN, UBSAN
    - compiler: clang
      dist: xenial
      addons:
        apt:
          packages:
            clang-3.8
      env:
        - INSTALL_GCC6_FROM_PPA=1
        - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Debug
        - LIBCXX_BUILD=1 LIBCXX_SANITIZER="Undefined;Address"
        - ENABLE_SANITIZER=1
        - EXTRA_FLAGS="-g -O2 -fno-omit-frame-pointer -fsanitize=undefined,address -fno-sanitize-recover=all"
        - EXTRA_CXX_FLAGS="-stdlib=libc++"
        - UBSAN_OPTIONS=print_stacktrace=1
    # Clang w/ libc++ and MSAN
    - compiler: clang
      dist: xenial
      addons:
        apt:
          packages:
            clang-3.8
      env:
        - INSTALL_GCC6_FROM_PPA=1
        - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Debug
        - LIBCXX_BUILD=1 LIBCXX_SANITIZER=MemoryWithOrigins
        - ENABLE_SANITIZER=1
        - EXTRA_FLAGS="-g -O2 -fno-omit-frame-pointer -fsanitize=memory -fsanitize-memory-track-origins"
        - EXTRA_CXX_FLAGS="-stdlib=libc++"
    # Clang w/ libc++ and MSAN
    - compiler: clang
      dist: xenial
      addons:
        apt:
          packages:
            clang-3.8
      env:
        - INSTALL_GCC6_FROM_PPA=1
        - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=RelWithDebInfo
        - LIBCXX_BUILD=1 LIBCXX_SANITIZER=Thread
        - ENABLE_SANITIZER=1
        - EXTRA_FLAGS="-g -O2 -fno-omit-frame-pointer -fsanitize=thread -fno-sanitize-recover=all"
        - EXTRA_CXX_FLAGS="-stdlib=libc++"
    - os: osx
      osx_image: xcode8.3
      compiler: clang
      env:
        - COMPILER=clang++ BUILD_TYPE=Debug
    - os: osx
      osx_image: xcode8.3
      compiler: clang
      env:
        - COMPILER=clang++ BUILD_TYPE=Release
    - os: osx
      osx_image: xcode8.3
      compiler: clang
      env:
        - COMPILER=clang++
        - BUILD_TYPE=Release
        - BUILD_32_BITS=ON
        - EXTRA_FLAGS="-m32"
    - os: osx
      osx_image: xcode9.4
      compiler: gcc
      env:
        - COMPILER=g++-7 C_COMPILER=gcc-7  BUILD_TYPE=Debug

before_script:
  - if [ -n "${LIBCXX_BUILD}" ]; then
      source .travis-libcxx-setup.sh;
    fi
  - if [ -n "${ENABLE_SANITIZER}" ]; then
      export EXTRA_OPTIONS="-DBENCHMARK_ENABLE_ASSEMBLY_TESTS=OFF";
    else
      export EXTRA_OPTIONS="";
    fi
  - mkdir -p build && cd build

before_install:
  - if [ -z "$BUILD_32_BITS" ]; then
      export BUILD_32_BITS=OFF && echo disabling 32 bit build;
    fi
  - if [ -n "${INSTALL_GCC6_FROM_PPA}" ]; then
      sudo add-apt-repository -y "ppa:ubuntu-toolchain-r/test";
      sudo apt-get update --option Acquire::Retries=100 --option Acquire::http::Timeout="60";
    fi

install:
  - if [ -n "${INSTALL_GCC6_FROM_PPA}" ]; then
      travis_wait sudo -E apt-get -yq --no-install-suggests --no-install-recommends install g++-6;
    fi
  - if [ "${TRAVIS_OS_NAME}" == "linux" -a "${BUILD_32_BITS}" == "OFF" ]; then
      travis_wait sudo -E apt-get -y --no-install-suggests --no-install-recommends install llvm-3.9-tools;
      sudo cp /usr/lib/llvm-3.9/bin/FileCheck /usr/local/bin/;
    fi
  - if [ "${BUILD_TYPE}" == "Coverage" -a "${TRAVIS_OS_NAME}" == "linux" ]; then
      PATH=~/.local/bin:${PATH};
      pip install --user --upgrade pip;
      travis_wait pip install --user cpp-coveralls;
    fi
  - if [ "${C_COMPILER}" == "gcc-7" -a "${TRAVIS_OS_NAME}" == "osx" ]; then
      rm -f /usr/local/include/c++;
      brew update;
      travis_wait brew install gcc@7;
    fi
  - if [ "${TRAVIS_OS_NAME}" == "linux" ]; then
      sudo apt-get update -qq;
      sudo apt-get install -qq unzip cmake3;
      wget https://github.com/bazelbuild/bazel/releases/download/3.2.0/bazel-3.2.0-installer-linux-x86_64.sh --output-document bazel-installer.sh;
      travis_wait sudo bash bazel-installer.sh;
    fi
  - if [ "${TRAVIS_OS_NAME}" == "osx" ]; then
      curl -L -o bazel-installer.sh https://github.com/bazelbuild/bazel/releases/download/3.2.0/bazel-3.2.0-installer-darwin-x86_64.sh;
      travis_wait sudo bash bazel-installer.sh;
    fi

script:
  - cmake -DCMAKE_C_COMPILER=${C_COMPILER} -DCMAKE_CXX_COMPILER=${COMPILER} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_C_FLAGS="${EXTRA_FLAGS}" -DCMAKE_CXX_FLAGS="${EXTRA_FLAGS} ${EXTRA_CXX_FLAGS}" -DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON -DBENCHMARK_BUILD_32_BITS=${BUILD_32_BITS} ${EXTRA_OPTIONS} ..
  - make
  - ctest -C ${BUILD_TYPE} --output-on-failure
  - bazel test -c dbg --define google_benchmark.have_regex=posix --announce_rc --verbose_failures --test_output=errors --keep_going //test/...

after_success:
  - if [ "${BUILD_TYPE}" == "Coverage" -a "${TRAVIS_OS_NAME}" == "linux" ]; then
      coveralls --include src --include include --gcov-options '\-lp' --root .. --build-root .;
    fi
