# Build matrix / environment variables are explained on:
# http://about.travis-ci.org/docs/user/build-configuration/
# This file can be validated on: http://lint.travis-ci.org/

language: cpp
dist: bionic
osx_image: xcode12.2

compiler:
- gcc
- clang
os:
- linux
- osx

env:
- BUILD_TYPE=Debug CPU_LEVEL=AVX
- BUILD_TYPE=Debug CPU_LEVEL=AVX2
- BUILD_TYPE=RelWithDebInfo CPU_LEVEL=AVX
- BUILD_TYPE=RelWithDebInfo CPU_LEVEL=AVX2

jobs:
  exclude:
  # Travis OSX servers seem to run on pre-Haswell CPUs. Attempting to use AVX2
  # results in crashes.
  - env: BUILD_TYPE=Debug CPU_LEVEL=AVX2
    os: osx
  - env: BUILD_TYPE=RelWithDebInfo CPU_LEVEL=AVX2
    os: osx
  allow_failures:
  # Homebrew's GCC is currently broken on XCode 11.
  - compiler: gcc
    os: osx

addons:
  apt:
    sources:
    - sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-10 main'
      key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
    - sourceline: 'ppa:ubuntu-toolchain-r/test'
    packages:
    - clang-10
    - cmake
    - gcc-10
    - g++-10
    - ninja-build
  homebrew:
    packages:
    - cmake
    - gcc@10
    - llvm@10
    - ninja
    update: true

install:
# The following Homebrew packages aren't linked by default, and need to be
# prepended to the path explicitly.
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then
    export PATH="$(brew --prefix llvm)/bin:$PATH";
  fi
# Fuzzing is only supported on Clang. Perform fuzzing on Debug builds.
# LibFuzzer doesn't ship with CommandLineTools on osx.
- if [ "$CXX" = "clang++" ] && [ "$BUILD_TYPE" = "Debug" ] && [ "$TRAVIS_OS_NAME" != "osx" ]; then
    export FUZZING=1;
  else
    export FUZZING=0;
  fi
# /usr/bin/gcc points to an older compiler on both Linux and macOS.
- if [ "$CXX" = "g++" ]; then export CXX="g++-10" CC="gcc-10"; fi
# /usr/bin/clang points to an older compiler on both Linux and macOS.
#
# Homebrew's llvm package doesn't ship a versioned clang++ binary, so the values
# below don't work on macOS. Fortunately, the path change above makes the
# default values (clang and clang++) resolve to the correct compiler on macOS.
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then
    if [ "$CXX" = "clang++" ]; then export CXX="clang++-10" CC="clang-10"; fi;
  fi
- echo ${CC}
- echo ${CXX}
- ${CXX} --version
- cmake --version

before_script:
- mkdir -p build && cd build
- cmake .. -G Ninja -DCMAKE_BUILD_TYPE=$BUILD_TYPE
    -DSNAPPY_REQUIRE_${CPU_LEVEL}=ON -DSNAPPY_FUZZING_BUILD=${FUZZING}
    -DCMAKE_INSTALL_PREFIX=$HOME/.local
- cmake --build .
- cd ..

script:
- build/snappy_unittest
- build/snappy_benchmark
- if [ -f build/snappy_compress_fuzzer ]; then
    build/snappy_compress_fuzzer -runs=1000 -close_fd_mask=3;
  fi
- if [ -f build/snappy_uncompress_fuzzer ]; then
    build/snappy_uncompress_fuzzer -runs=1000 -close_fd_mask=3;
  fi
- cd build && cmake --build . --target install
