language: cpp

os:
 - linux
 - osx

osx_image: xcode6.4

compiler:
 - clang
 - gcc

env:
  global:
   - secure: "jA29KvTCTR7q4BMzPPUBGazjJwrIWa7k4fo5ZSMlyxh2NbztZTKQYwodgDcXBoptCd1KJ9H3FXwBnNdMNVnTkvoPL9uWnN4K/3D1D20FCag1kmlBwnaVqVei5cRiZ9TOMuaxhjkdg8pcrQLTlXEEdMZf6A2OW0VgoBGDVSX9nYc="
   # Which Travis environment to run Coverity on
   - coverity_scan_run_condition='"$CC" = gcc -a "$TRAVIS_OS_NAME" != osx'
   # Test mode is for testing if it's working with Coverity. Change to true if testing, to avoid reaching the quota.
   - coverity_scan_script_test_mode=false

branches:
  except:
    - ppu_recompiler

matrix:
 exclude:
  - os: osx
    compiler: gcc

git:
  submodules: false

before_install:
# shutdown services on Travis, which may have a memory impact
# show memory usage before and after shutdown of services
  - if [ "$TRAVIS_OS_NAME" = "linux" ]; then
      sudo service --status-all;
      sudo free -m -t;
      sudo /etc/init.d/mysql stop;
      sudo /etc/init.d/postgresql stop;
      sudo /etc/init.d/couchdb stop;
      sudo /etc/init.d/redis-server stop;
      sudo free -m -t;

      echo "yes" | sudo apt-key adv --fetch-keys 'http://repos.codelite.org/CodeLite.asc';
      echo "yes" | sudo apt-add-repository 'deb http://repos.codelite.org/wx3.0/ubuntu/ precise universe';
      echo "yes" | sudo add-apt-repository 'deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu precise main';
      echo "yes" | sudo add-apt-repository 'deb http://llvm.org/apt/precise/ llvm-toolchain-precise-3.6 main';
      wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add -;
      sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y;
      sudo apt-get update;
      sudo apt-get install libwxgtk3.0-dev libopenal-dev freeglut3-dev libglew-dev libc6-dev llvm-3.6 llvm-3.6-dev libedit-dev;
      sudo apt-get install aria2 -qq;
      download_extract() { aria2c -x 16 $1 -o $2 && tar -xf $2; };
    fi;
  - if [ "$TRAVIS_OS_NAME" = "linux" ] && [ "$CXX" = "g++" ]; then
      sudo apt-get install -qq g++-4.9;
      export CXX="g++-4.9" CC="gcc-4.9" CXXFLAGS="-Wno-format-security";
      export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01';
    elif [ "$TRAVIS_OS_NAME" = "linux" ]; then
      sudo apt-get install -qq --allow-unauthenticated clang-3.6 libstdc++-4.8-dev;
      export CXX="clang++-3.6" CC="clang-3.6";
    fi;
# Travis uses CMake 2.8.7. We require 2.8.8. Grab latest
# Add coverall for C++ so coverall.io could be triggered. Even it should be --coverage and gcov.
  - if [ "$TRAVIS_OS_NAME" = "linux" ]; then
      sudo apt-get install lib32stdc++6 -qq &&
      aria2c -x 16 http://www.cmake.org/files/v3.0/cmake-3.0.0-Linux-i386.sh && 
      chmod a+x cmake-3.0.0-Linux-i386.sh &&
      sudo ./cmake-3.0.0-Linux-i386.sh --skip-license --prefix=/usr;
      sudo pip install cpp-coveralls;
    else
      brew update; brew update;
      brew install glew wxwidgets llvm36;
    fi;

before_script:
 - git submodule update --init asmjit ffmpeg
 - mkdir build
 - cd build
 - if [ "$TRAVIS_OS_NAME" = "linux" ]; then cmake ..; else cmake .. -DLLVM_DIR=/usr/local/opt/llvm36/lib/llvm-3.6/share/llvm/cmake; 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";
- if [ "$COVERITY_SCAN_BRANCH" != 1 ]; then make -j 4; fi

addons:
  coverity_scan:
    project:
      name: $TRAVIS_REPO_SLUG
    notification_email: raul.tambre@gmail.com
    build_command_prepend: ""
    build_command:   "make -j 4"
    branch_pattern: master

after_success:
- coveralls --extension .c --extension .cpp --extension .h;

after_failure:
# show memory usage again and show actions of the OOM killer
 - if [ "$TRAVIS_OS_NAME" = "linux" ]; then
     sudo free -m -t;
     sudo dmesg;
   fi;
