language: cpp

matrix:
  include:
    - os: linux
      dist: trusty
      sudo: required
      compiler: gcc
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-7
            - gcc-7
      env:
        - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7"
    - os: osx
      osx_image: xcode11.6
      compiler: clang

before_install:
  - eval "${MATRIX_EVAL}"
  - |
    # OSX
    if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
      brew update
    # Linux
    elif [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
      sudo add-apt-repository ppa:beineri/opt-qt593-trusty -y
      sudo apt-get update -qq
    fi

install:
  - |
    # OSX
    if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
      brew install qt5
      brew link qt5 --force
      #brew install libusb
      #brew install wget
    # Linux
    elif [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
      sudo apt-get -y install qt59base libusb-1.0-0-dev
      source /opt/qt*/bin/qt*-env.sh
    fi

script:
  - |
    # OSX
    if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
      cd Desktop_Interface
      qmake CONFIG+=release PREFIX=/usr DEFINES+=GIT_HASH_SHORT=$(git rev-parse --short HEAD)
      make -j$(sysctl -n hw.ncpu)
      mkdir -p bin/Labrador.app/Contents/MacOS/Resources
      mkdir -p bin/Labrador.app/Contents/Frameworks
      cp -r bin/firmware bin/Labrador.app/Contents/MacOS
      cp -r bin/waveforms bin/Labrador.app/Contents/MacOS
      cp resources/iconfile.icns bin/Labrador.app/Contents/Resources
      cp resources/Info.plist bin/Labrador.app/Contents
      macdeployqt bin/Labrador.app -dmg -libpath=build_mac/libdfuprog/lib/
      #Linux
    elif [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
      cd Desktop_Interface
      ./make_appimage
      sudo ./make_deb
    fi

after_success:
  - |
    # OSX
    if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
      export UPLOADTOOL_SUFFIX="macOS"
      export UPLOADTOOL_BODY="EspoTek Labrador software for macOS 10.13 and later."
      wget -c https://github.com/probonopd/uploadtool/raw/master/upload.sh
      bash upload.sh bin/Labrador.dmg
    # Linux
    elif [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
      export UPLOADTOOL_SUFFIX="Linux"
      find appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq
      export UPLOADTOOL_BODY="EspoTek Labrador software for Linux. Please note that the .deb is unsupported - it's recommended you install the AppImage or build from source (instructions available in main page)."
      wget -c https://github.com/probonopd/uploadtool/raw/master/upload.sh
      bash upload.sh EspoTek_Labrador*.AppImage EspoTek_Labrador*.deb
    fi
  
branches:
  except:
    - # Do not build tags that we create when we upload to GitHub Releases
    - /^(?i:continuous)/
