language: cpp
sudo: required

os:
  - linux
  #- osx

# osx_image: xcode6.4

compiler:
  - clang
  - gcc

cache:
  ccache: true
  directories:
    - $HOME/hombebrew_cache

matrix:
  exclude:
    - os: osx
      compiler: gcc

git:
  submodules: false

before_install:
  - if [ "$CC" = "clang" ]; then
      export CXX="clang++-4.0" CC="clang-4.0";
    fi;    
  - if [ "$TRAVIS_OS_NAME" = "linux" ] && [ "$CXX" = "g++" ]; then
      export CXX="g++-5" CC="gcc-5" CXXFLAGS="-Wno-format-security";
    fi;
  - if [ "$TRAVIS_OS_NAME" = "linux" ]; then
      wget http://download.qt.io/official_releases/online_installers/qt-unified-linux-x64-online.run ;
      chmod a+x ./qt-unified-linux-x64-online.run ;
      export QT_QPA_PLATFORM=minimal ;
      ./qt-unified-linux-x64-online.run --script qt-installer-noninteractive.qs --no-force-installations ;
    fi;

  # Install updated libglew-dev since the version provided by trusty is outdated
  - if [ "$TRAVIS_OS_NAME" = "linux" ]; then
      wget http://mirrors.kernel.org/ubuntu/pool/main/g/glew/libglew-dev_1.13.0-2_amd64.deb;
      wget http://mirrors.kernel.org/ubuntu/pool/main/g/glew/libglew1.13_1.13.0-2_amd64.deb;
      wget http://mirrors.kernel.org/ubuntu/pool/universe/v/vulkan/libvulkan1_1.0.42.0+dfsg1-1ubuntu1~16.04.1_amd64.deb;
      wget http://mirrors.kernel.org/ubuntu/pool/universe/v/vulkan/libvulkan-dev_1.0.42.0+dfsg1-1ubuntu1~16.04.1_amd64.deb;
      sudo dpkg -i libglew1.13_1.13.0-2_amd64.deb libglew-dev_1.13.0-2_amd64.deb libvulkan1_1.0.42.0+dfsg1-1ubuntu1~16.04.1_amd64.deb libvulkan-dev_1.0.42.0+dfsg1-1ubuntu1~16.04.1_amd64.deb;
    else
      brew update;
      brew install ccache glew llvm40;
    fi;

before_script:
  - git submodule update --init asmjit 3rdparty/ffmpeg 3rdparty/pugixml 3rdparty/GSL 3rdparty/libpng Utilities/yaml-cpp 3rdparty/cereal 3rdparty/hidapi 3rdparty/Optional Vulkan/glslang Vulkan/Vulkan-LoaderAndValidationLayers
  - mkdir build
  - cd build
  - export CMAKE_PREFIX_PATH=~/Qt/5.9.1/gcc_64/lib/cmake
  - if [ "$TRAVIS_PULL_REQUEST" = false ]; then
      export CXXFLAGS="$CXXFLAGS -DBRANCH=$TRAVIS_REPO_SLUG/$TRAVIS_BRANCH";
    else
      export CXXFLAGS="$CXXFLAGS -DBRANCH=$TRAVIS_REPO_SLUG/$TRAVIS_BRANCH/#$TRAVIS_PULL_REQUEST";
    fi;
  - cmake .. -DCMAKE_INSTALL_PREFIX=/usr;
  - make -j 3
  - # AppImage generation
  - if [ -n "$UPLOAD_URL" ] && [ "$TRAVIS_BRANCH" = "master" ] && [ "$CC" = "clang-4.0" ] && [ "$TRAVIS_PULL_REQUEST" = false ]; then
      export LD_LIBRARY_PATH=~/Qt/5.9.1/gcc_64/lib;
      make DESTDIR=appdir install ; find appdir/ ;
      find ../bin ;
      wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" ; 
      chmod a+x linuxdeployqt*.AppImage ;
      export PATH=~/Qt/5.9.1/gcc_64/bin/:${PATH} ;
      ./linuxdeployqt*.AppImage --appimage-extract ;
      ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -bundle-non-qt-libs ;
      mkdir ./appdir/usr/plugins/xcbglintegrations/ ; 
      mkdir ./appdir/usr/plugins/imageformats/ ;
      cp ~/Qt/5.9.1/gcc_64/lib/libQt5Svg.so.5 ./appdir/usr/lib/ ;
      cp ~/Qt/5.9.1/gcc_64/plugins/xcbglintegrations/* ./appdir/usr/plugins/xcbglintegrations/ ;
      cp ~/Qt/5.9.1/gcc_64/plugins/imageformats/* ./appdir/usr/plugins/imageformats/ ;
      cp ~/Qt/5.9.1/gcc_64/plugins/platforms/* ./appdir/usr/plugins/platforms/ ;
      export PATH=${TRAVIS_BUILD_DIR}/build/squashfs-root/usr/bin/:${PATH} ;
      ./squashfs-root/usr/bin/appimagetool ${TRAVIS_BUILD_DIR}/build/appdir ;
      find ./appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq ;
      curl ${UPLOAD_URL}${TRAVIS_COMMIT:0:7}-${TRAVIS_BUILD_NUMBER}_linux64 --upload-file ./RPCS3*.AppImage;
   fi;

script:
  # Add a command to show all the variables. May be useful for debugging Travis.
  #- echo "--Shell Export Lists START--" ; export -p; echo "--Shell Export Lists STOP--";
  # And to ensure the versions of toolchain
  - echo "--CXX version?"; "$CXX" --version; echo "--CXX version confirmed";

addons:
  apt:
    sources:
      - ubuntu-toolchain-r-test
      - llvm-toolchain-trusty-4.0
      - sourceline: 'ppa:jonathonf/binutils' # We need to update binutils to a newer version to link against the ffmpeg libs on.
    packages:
      - binutils
      - cmake
      - libasound2-dev
      - libopenal-dev
      - freeglut3-dev
      #- libglew-dev
      #- libvulkan1
      #- libvulkan-dev
      - libc6-dev
      - llvm-4.0
      - llvm-4.0-dev
      - clang-4.0
      - libedit-dev
      - g++-5
      - gcc-5
      - libstdc++-5-dev
      - lib32stdc++6
      - zlib1g-dev
      # We need to install qt 5.9.1 manually because the version trusty provides is too old.
      #- qtbase5-dev
      - libudev-dev
      - libevdev-dev
      - libpulse-dev
