language: cpp
dist: xenial

branches:
  except:
    - /^appveyor.*$/

git:
  depth: 10

matrix:
  include:
    - os: osx
      osx_image: xcode8
      env:
        - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Debug -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9"

    - os: osx
      osx_image: xcode11.2
      env:
        - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9"

    - os: windows
      env:
        - CMAKE_OPTIONS="-A Win32"

    - os: windows
      env:
        - CMAKE_OPTIONS="-A x64"

    - os: linux
      compiler: gcc
      env:
        - GCC_VERSION=4.9
        - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS=-Wno-maybe-uninitialized"
      addons:
        apt:
          packages:
            - g++-4.9
            - libsdl2-dev
            - libgtk2.0-dev

    - os: linux
      compiler: gcc
      env:
        - GCC_VERSION=6
        - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CXX_FLAGS=-Wno-maybe-uninitialized"
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-6
            - libsdl2-dev
            - libgtk2.0-dev

    - os: linux
      compiler: gcc
      env:
        - GCC_VERSION=8
        - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_CXX_FLAGS=-Wno-implicit-fallthrough"
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-8
            - libsdl2-dev
            - libgtk-3-dev

    - os: linux
      compiler: gcc
      env:
        - GCC_VERSION=9
        - CMAKE_OPTIONS="-DCMAKE_CXX_FLAGS=-Wno-implicit-fallthrough"
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-9
            - libsdl2-dev

    - os: linux
      compiler: clang
      env:
        - CLANG_VERSION=3.6
        - CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=RelWithDebInfo"
      addons:
        apt:
          packages:
            - clang-3.6
            - libsdl2-dev
            - libgtk2.0-dev

    - os: linux
      compiler: clang
      env:
        - CLANG_VERSION=8
        - CMAKE_OPTIONS="-DDYN_OPENAL=NO -DDYN_SNDFILE=NO -DDYN_MPG123=NO -DDYN_FLUIDSYNTH=NO"
      addons:
        apt:
          sources:
            - llvm-toolchain-xenial-8
          packages:
            - clang-8
            - libsdl2-dev
            - libgme-dev
            - libopenal-dev
            - libmpg123-dev
            - libsndfile-dev
            - libfluidsynth-dev
            - libgtk-3-dev

before_install:
  - if [ -n "$GCC_VERSION" ]; then export CC="gcc-${GCC_VERSION}" CXX="g++-${GCC_VERSION}"; fi
  - if [ -n "$CLANG_VERSION" ]; then export CC="clang-${CLANG_VERSION}" CXX="clang++-${CLANG_VERSION}"; fi
  - $CC --version
  - $CXX --version

script:
  - echo ${TRAVIS_BUILD_DIR}
  - mkdir build
  - cd build
  - >
    cmake ${CMAKE_OPTIONS}       \
      -DFORCE_INTERNAL_ZLIB=YES  \
      -DFORCE_INTERNAL_JPEG=YES  \
      -DFORCE_INTERNAL_BZIP2=YES \
      -DFORCE_INTERNAL_GME=YES   \
      -DPK3_QUIET_ZIPDIR=YES     \
      ..
  - if [[ $TRAVIS_OS_NAME == 'windows' ]]; then cmake --build . --config Release -- -maxcpucount -verbosity:minimal; fi
  - if [[ $TRAVIS_OS_NAME != 'windows' ]]; then cmake --build . -- --jobs=2 --keep-going; fi

notifications:
  email: false