language: c
#sudo: required
dist: trusty
env:
    - CMAKE_FLAGS="-Denable-profiling=1"
    - CMAKE_FLAGS="-Denable-floats=1 -Denable-profiling=1"
    - CMAKE_FLAGS="-Denable-trap-on-fpe=1"
    - CMAKE_FLAGS="-Denable-fpe-check=1"
    - CMAKE_FLAGS="-Denable-ipv6=0"
    - CMAKE_FLAGS="-Denable-network=0"
    - CMAKE_FLAGS="-Denable-aufile=0"
    - CMAKE_FLAGS="-DBUILD_SHARED_LIBS=0"
matrix:
  include:
    - os: linux
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-4.8
            - cmake-data
            - cmake
            - libglib2.0-0
            - libsndfile-dev
            - libasound2-dev
            - libjack-dev
            - portaudio19-dev
            - libpulse-dev
            - libdbus-glib-1-dev
            - ladspa-sdk
      env:
         - MATRIX_EVAL="CC=gcc-4.8 && CXX=g++-4.8"
         - CMAKE_FLAGS="-Denable-floats=1"
         
    - os: linux
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-4.8
            - cmake-data
            - cmake
            - libglib2.0-0
            - libsndfile-dev
            - libasound2-dev
            - libjack-dev
            - portaudio19-dev
            - libpulse-dev
            - libdbus-glib-1-dev
            - ladspa-sdk
      env:
         - MATRIX_EVAL="CC=gcc-4.8 && CXX=g++-4.8"
         - CMAKE_FLAGS="-Denable-floats=0"
         
    - os: linux
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-4.9
            - cmake-data
            - cmake
            - libglib2.0-0
            - ladspa-sdk
      env:
         - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9"

    # works on Precise and Trusty
    - os: linux
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-5
            - cmake-data
            - cmake
            - libglib2.0-0
            - ladspa-sdk
      env:
         - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"
         - CMAKE_FLAGS="-Denable-debug=1"

    # works on Precise and Trusty
    - os: linux
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-6
            - cmake-data
            - cmake
            - libglib2.0-0
            - ladspa-sdk
      env:
        - MATRIX_EVAL="CC=gcc-6 && CXX=g++-6"

    # works on Precise and Trusty
    - os: linux
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-7
            - cmake-data
            - cmake
            - libglib2.0-0
            - ladspa-sdk
      env:
        - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7"

    # works on Precise and Trusty
    - os: linux
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
            - llvm-toolchain-precise-3.8
          packages:
            - clang-3.8
            - cmake-data
            - cmake
            - libglib2.0-0
            - ladspa-sdk
      env:
        - MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8"

    # works on Trusty
    - os: linux
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-3.9
          packages:
            - clang-3.9
            - cmake-data
            - cmake
            - libglib2.0-0
            - ladspa-sdk
      env:
        - MATRIX_EVAL="CC=clang-3.9 && CXX=clang++-3.9"

    # works on Trusty
    - os: linux
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-4.0
          packages:
            - clang-4.0
            - cmake-data
            - cmake
            - libglib2.0-0
            - ladspa-sdk
      env:
        - MATRIX_EVAL="CC=clang-4.0 && CXX=clang++-4.0"

    # works on Trusty
    - os: linux
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-5.0
          packages:
            - clang-5.0
            - cmake-data
            - cmake
            - libglib2.0-0
            - ladspa-sdk
      env:
        - MATRIX_EVAL="CC=clang-5.0 && CXX=clang++-5.0"
        
    - os: osx
      osx_image: xcode8
      env:
        - MATRIX_EVAL="brew install gcc5 glib gettext && brew link gettext && CC=gcc-5 && CXX=g++-5" # gettext should provide libintl, but doesnt work

    - os: osx
      osx_image: xcode8
      env:
        - MATRIX_EVAL="brew install gcc6 glib gettext && brew link gettext && CC=gcc-6 && CXX=g++-6"

    - os: osx
      osx_image: xcode8
      env:
        - MATRIX_EVAL="brew install gcc glib gettext libsndfile jack dbus-glib pulseaudio portaudio && brew link gettext && CC=gcc-7 && CXX=g++-7"

before_install:
    - if [ $TRAVIS_OS_NAME = linux ]; then sudo apt-get update; else brew update; fi
    - eval "${MATRIX_EVAL}"
    
before_script:
    - mkdir $HOME/fluidsynth_install/
    - mkdir build && cd build
    
script:
    - cmake -DCMAKE_INSTALL_PREFIX=$HOME/fluidsynth_install ${CMAKE_FLAGS} "-Denable-portaudio=1" "-Denable-ladspa=1" "-DCMAKE_BUILD_TYPE=RelWithDebInfo" ..
    - make -j4
    - if [ $TRAVIS_OS_NAME = linux ]; then make install; cmake -Denable-tests=1 ..; make check; fi # install only on linux, as CMAKE_INSTALL_PREFIX is ignored for frameworks on macosx and I cant tell whether that's correct or a bug. also build unit test only on linux, as libintl is not found on macosx