language: cpp

env:
  - TRAVIS_MINGW=OFF
  - TRAVIS_MINGW=ON

compiler:
  - gcc
  - clang

os:
  - osx
  - linux

osx_image: xcode61

matrix:
  exclude:
    # This excludes OSX builds from the build matrix for gcc
    - os: osx
      compiler: gcc

    # Do not compile for OS X or clang when MinGW is enabled
    - os: osx
      env: TRAVIS_MINGW=ON
    - compiler: clang
      env: TRAVIS_MINGW=ON

before_install:
  - if [ $TRAVIS_OS_NAME == linux ]; then sudo apt-get update -qq && sudo apt-get install
    -qq build-essential unzip cmake mercurial uuid-dev libcurl4-openssl-dev liblua5.1-0-dev
    libgtest-dev libpng-dev libsqlite3-dev libssl-dev zlib1g-dev libdcmtk2-dev libwrap0-dev
    libcharls-dev; fi
  # For DCMTK 3.6.2 - Can't make it compile in static mode with MinGW32 on the
  # Ubuntu Precise (12.04) that is used by Travis:
  # - if [ $TRAVIS_OS_NAME == linux -a $TRAVIS_MINGW == ON ]; then sudo apt-get install mingw-w64 gcc-mingw-w64-i686 g++-mingw-w64-i686 wine; fi

  # For DCMTK 3.6.0: 
  - if [ $TRAVIS_OS_NAME == linux -a $TRAVIS_MINGW == ON ]; then sudo apt-get install mingw32; fi

before_script:
  - mkdir Build
  - cd Build
  - if [ $TRAVIS_OS_NAME == linux -a $TRAVIS_MINGW == OFF ]; then cmake
    -DCMAKE_BUILD_TYPE=Debug "-DDCMTK_LIBRARIES=CharLS;dcmjpls;wrap;oflog"
    -DALLOW_DOWNLOADS=ON -DUSE_SYSTEM_BOOST=OFF -DUSE_SYSTEM_CIVETWEB=OFF -DUSE_SYSTEM_JSONCPP=OFF
    -DUSE_SYSTEM_GOOGLE_LOG=OFF -DUSE_SYSTEM_PUGIXML=OFF -DUSE_GOOGLE_TEST_DEBIAN_PACKAGE=ON
    -DBOOST_LOCALE_BACKEND=icu
    ..; fi
  - if [ $TRAVIS_OS_NAME == linux -a $TRAVIS_MINGW == ON ]; then cmake
    -DCMAKE_BUILD_TYPE=Debug -DSTATIC_BUILD=ON -DSTANDALONE_BUILD=ON -DALLOW_DOWNLOADS=ON
    -DCMAKE_TOOLCHAIN_FILE=Resources/MinGWToolchain.cmake -DDCMTK_STATIC_VERSION=3.6.0
    -DUSE_LEGACY_JSONCPP=ON -DBOOST_LOCALE_BACKEND=libiconv
    ..; fi
  - if [ $TRAVIS_OS_NAME == osx ]; then cmake 
    -DCMAKE_BUILD_TYPE=Debug -DSTATIC_BUILD=ON -DSTANDALONE_BUILD=ON -DALLOW_DOWNLOADS=ON
    -DBOOST_LOCALE_BACKEND=icu
    ..; fi

# Old releases of MinGW are not compatible with GoogleTest 1.8.1
script: make Orthanc ServeFolders ModalityWorklists && if [ $TRAVIS_MINGW == OFF ]; then make UnitTests && ./UnitTests; fi

#script: cp ../README Orthanc
#deploy:
#  provider: releases
#  api_key:
#    secure: WU+niKLAKMoJHST5EK23BayK4qXSrXELKlJYc8wRjMO4ay1KSgvzlY2UGKeW1EPClBfZZ0Uh5VKF8l34exsfirFuwCX2qceozduZproUszZ4Z88X8wt8Ctu8tBuuKLZYFc9iNH4zw+QZyRuPyXK9iWpS0L9O20pqy5upTsagM3o=
#  file_glob: true
#  file:
#    - 'Build/Orthanc'
#    - 'Build/UnitTests'
#    - 'BuildMinGW32/Orthanc.exe'
#    - 'BuildMinGW32/UnitTests.exe'
#  skip_cleanup: true
#  on:
#    all_branches: true
