1addons: 2 apt: 3 packages: 4 - g++-4.8 5 - ninja-build 6 - lcov 7 - libfaad-dev 8 - libfreetype6-dev 9 - libjpeg-dev 10 - libopenal-dev 11 - libpng12-dev 12 - libdevil-dev 13 - libharfbuzz-dev 14 - libassimp-dev 15 16matrix: 17 include: 18 - language: cpp 19 os: linux 20 dist: xenial 21 compiler: gcc 22 env: 23 - JOBID=linux 24 - TARGET=desktop 25 - CMAKE_CXX_FLAGS="--coverage" 26 - LCOV_EXTRA_OPTS="--gcov-tool /usr/bin/gcov-4.8" 27 - language: cpp 28 os: linux 29 dist: xenial 30 compiler: gcc 31 env: 32 - JOBID=linux-nondeprecated 33 - TARGET=desktop 34 - BUILD_DEPRECATED=OFF 35 - language: cpp 36 os: linux 37 dist: xenial 38 compiler: clang 39 env: 40 - JOBID=linux-sanitizers 41 - TARGET=desktop-sanitizers 42 - CMAKE_CXX_FLAGS=-fsanitize=address 43 addons: 44 apt: 45 sources: 46 - llvm-toolchain-xenial 47 packages: 48 - libgl1-mesa-dev 49 - clang-3.8 50 - ninja-build 51 - libfaad-dev 52 - libfreetype6-dev 53 - libjpeg-dev 54 - libopenal-dev 55 - libpng12-dev 56 - libdevil-dev 57 - libharfbuzz-dev 58 - libassimp-dev 59 - language: cpp 60 os: osx 61 # The new plugin testing workflow is dynamically loading and unloading them 62 # in the tests. When that's combined with coverage and LLVM < 5.0.1, all 63 # such tests crash on exit: https://bugs.llvm.org/show_bug.cgi?id=27224 64 # But only in some cases (for example not at all in tests for Corrade 65 # PluginManager itself). The commit fixing it is from Jan 3 2018 and all 66 # Xcode versions before Xcode 9.3 beta (released on Jan 24) are affected. 67 # https://github.com/llvm-mirror/compiler-rt/commit/860d7953a6f36980f406bfbff76f3c00f15eed57 68 # Xcode 9.3 beta has broken git clone ("unknown protocol version 2") since 69 # Feb 16 2019, so using version 9.3 now. 70 osx_image: xcode9.3 71 compiler: clang 72 env: 73 - JOBID=macos 74 - TARGET=desktop 75 - CMAKE_CXX_FLAGS="--coverage" 76 - language: cpp 77 os: osx 78 osx_image: xcode7.3 79 env: 80 - JOBID=ios 81 - TARGET=ios-simulator 82 - language: cpp 83 os: osx 84 osx_image: xcode9.3 85 env: 86 - JOBID=emscripten 87 - TARGET=emscripten 88 - language: android 89 os: linux 90 # Setting xenial here will cause it to use 12.04, with GCC 4.6 and other 91 # prehistoric nightmares. So staying with 14.04 for the time being. 92 dist: trusty 93 env: 94 - JOBID=android 95 - TARGET=android 96 addons: 97 apt: 98 packages: 99 - ninja-build 100 android: 101 components: 102 - build-tools-22.0.1 103 - android-22 104 - sys-img-armeabi-v7a-android-22 105 106notifications: 107 webhooks: 108 urls: 109 - https://webhooks.gitter.im/e/00ec7a9066bb0fec98f3 110 on_success: change 111 on_failure: always 112 on_start: never 113 114cache: 115 directories: 116 - $HOME/cmake 117 118install: 119- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ ! "$TARGET" == "desktop-sanitizers" ] && [ ! "$TARGET" == "android" ]; then export CXX=g++-4.8; fi 120- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$TARGET" == "desktop-sanitizers" ]; then export CXX=clang++-3.8; fi 121- if [ "$BUILD_DEPRECATED" != "OFF" ]; then export BUILD_DEPRECATED=ON; fi 122- if [ "$TRAVIS_OS_NAME" == "linux" ]; then export PLATFORM_GL_API=GLX; fi 123- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$TARGET" == "android" ]; then wget -nc https://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip && unzip -q android-*.zip; fi 124# Download CMake 3.4.3 to ensure we're still compatible with it (Travis has 125# 3.9 since December 2017). Also, the PATH setting can't be cached, so it's 126# separate (bit me two times already). Android needs CMake 3.7, but 127# https://gitlab.kitware.com/cmake/cmake/issues/17253 is fixed in 3.9.2, so 128# grab that. 129- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ ! "$TARGET" == "android" ] && [ ! -e "$HOME/cmake/bin" ]; then cd $HOME ; wget -nc --no-check-certificate https://cmake.org/files/v3.4/cmake-3.4.3-Linux-x86_64.tar.gz && mkdir -p cmake && cd cmake && tar --strip-components=1 -xzf ../cmake-3.4.3-Linux-x86_64.tar.gz && cd $TRAVIS_BUILD_DIR ; fi 130- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$TARGET" == "android" ] && [ ! -e "$HOME/cmake/bin" ]; then cd $HOME ; wget -nc --no-check-certificate https://cmake.org/files/v3.9/cmake-3.9.2-Linux-x86_64.tar.gz && mkdir -p cmake && cd cmake && tar --strip-components=1 -xzf ../cmake-3.9.2-Linux-x86_64.tar.gz && cd $TRAVIS_BUILD_DIR ; fi 131- if [ "$TRAVIS_OS_NAME" == "linux" ]; then export PATH=$HOME/cmake/bin:$PATH && cmake --version; fi 132- if [ "$TRAVIS_OS_NAME" == "osx" ]; then HOMEBREW_NO_AUTO_UPDATE=1 brew install ninja; fi 133- if [ "$TRAVIS_OS_NAME" == "osx" ] && [[ "$CMAKE_CXX_FLAGS" == *"--coverage"* ]]; then HOMEBREW_NO_AUTO_UPDATE=1 brew install lcov; fi 134- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "desktop" ]; then export PLATFORM_GL_API=CGL; fi 135- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "ios-simulator" ]; then gem install xcpretty; fi 136- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "emscripten" ]; then HOMEBREW_NO_AUTO_UPDATE=1 brew install emscripten && export LLVM=/usr/local/opt/emscripten/libexec/llvm/bin && emcc; fi 137 138# FAAD2, HarfBuzz, Assimp, DevIL 139- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "desktop" ]; then HOMEBREW_NO_AUTO_UPDATE=1 brew install faad2 harfbuzz assimp devil; fi 140 141# Basis Universal 142- export BASIS_VERSION=1cae1d57266e2c95bc011b0bf1ccb9940988c184 && wget -nc https://github.com/BinomialLLC/basis_universal/archive/$BASIS_VERSION.zip && unzip -q $BASIS_VERSION; mv basis_universal-$BASIS_VERSION $HOME/basis_universal 143 144script: 145- if [ "$TRAVIS_OS_NAME" == "linux" ] && ( [ "$TARGET" == "desktop" ] || [ "$TARGET" == "desktop-sanitizers" ] ); then ./package/ci/travis-desktop.sh; fi 146- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$TARGET" == "android" ]; then ./package/ci/travis-android-arm.sh; fi 147- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "desktop" ]; then ./package/ci/travis-desktop.sh; fi 148- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "ios-simulator" ]; then ./package/ci/travis-ios-simulator.sh; fi 149- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "emscripten" ]; then ./package/ci/travis-emscripten.sh; fi 150# Travis somehow is not able to gather all output, try to force it using this 151- sync 152 153after_success: 154# Keep in sync with PKBUILD-coverage, please 155- if [[ "$CMAKE_CXX_FLAGS" == *"--coverage"* ]]; then lcov $LCOV_EXTRA_OPTS --directory . --capture --output-file coverage.info > /dev/null; fi 156- if [[ "$CMAKE_CXX_FLAGS" == *"--coverage"* ]]; then lcov $LCOV_EXTRA_OPTS --extract coverage.info "*/src/Magnum*/*" --output-file coverage.info > /dev/null; fi 157- if [[ "$CMAKE_CXX_FLAGS" == *"--coverage"* ]]; then lcov $LCOV_EXTRA_OPTS --remove coverage.info "*/src/MagnumExternal/*" --output-file coverage.info > /dev/null; fi 158- if [[ "$CMAKE_CXX_FLAGS" == *"--coverage"* ]]; then lcov $LCOV_EXTRA_OPTS --remove coverage.info "*/Test/*" --output-file coverage.info > /dev/null; fi 159- if [[ "$CMAKE_CXX_FLAGS" == *"--coverage"* ]]; then lcov $LCOV_EXTRA_OPTS --remove coverage.info "*/build/src/*" --output-file coverage.info > /dev/null; fi 160- if [[ "$CMAKE_CXX_FLAGS" == *"--coverage"* ]]; then bash <(curl -s https://codecov.io/bash) -f coverage.info; fi 161