1addons: 2 apt: 3 packages: 4 - libgl1-mesa-dev 5 - g++-4.8 6 - libsdl2-dev 7 - ninja-build 8 - lcov 9 10matrix: 11 include: 12 - language: cpp 13 os: linux 14 dist: xenial 15 compiler: gcc 16 env: 17 - JOBID=linux-gl 18 - TARGET=desktop 19 - CMAKE_CXX_FLAGS="--coverage" 20 - LCOV_EXTRA_OPTS="--gcov-tool /usr/bin/gcov-4.8" 21 - language: cpp 22 os: linux 23 dist: xenial 24 compiler: gcc 25 env: 26 - JOBID=linux-nondeprecated 27 - TARGET=desktop 28 - BUILD_DEPRECATED=OFF 29 - language: cpp 30 os: linux 31 dist: xenial 32 compiler: clang 33 env: 34 - JOBID=linux-sanitizers 35 - TARGET=desktop-sanitizers 36 - CMAKE_CXX_FLAGS=-fsanitize=address 37 addons: 38 apt: 39 sources: 40 - llvm-toolchain-xenial 41 packages: 42 - libgl1-mesa-dev 43 - ninja-build 44 - clang-3.8 45 - libsdl2-dev 46 #- language: cpp 47 #os: linux 48 #dist: xenial 49 #compiler: gcc 50 #env: 51 #- JOBID=linux-gles2 52 #- TARGET=desktop-gles 53 #- TARGET_GLES2=ON 54 #- CMAKE_CXX_FLAGS="--coverage" 55 #- LCOV_EXTRA_OPTS="--gcov-tool /usr/bin/gcov-4.8" 56 - language: cpp 57 os: linux 58 dist: xenial 59 compiler: gcc 60 env: 61 - JOBID=linux-gles3 62 - TARGET=desktop-gles 63 - TARGET_GLES2=OFF 64 - CMAKE_CXX_FLAGS="--coverage" 65 - LCOV_EXTRA_OPTS="--gcov-tool /usr/bin/gcov-4.8" 66 - language: cpp 67 os: osx 68 compiler: clang 69 env: 70 - JOBID=macos-gl 71 - TARGET=desktop 72 - CMAKE_CXX_FLAGS="--coverage" 73 #- language: cpp 74 #os: osx 75 #osx_image: xcode7.3 76 #env: 77 #- JOBID=ios-gles2 78 #- TARGET=ios-simulator 79 #- TARGET_GLES2=ON 80 - language: cpp 81 os: osx 82 osx_image: xcode7.3 83 env: 84 - JOBID=ios-gles3 85 - TARGET=ios-simulator 86 - TARGET_GLES2=OFF 87 #- language: cpp 88 #os: osx 89 #osx_image: xcode9.3 90 #env: 91 #- JOBID=emscripten-webgl1 92 #- TARGET=emscripten 93 #- TARGET_GLES2=ON 94 - language: cpp 95 os: osx 96 osx_image: xcode9.3 97 env: 98 - JOBID=emscripten-webgl2 99 - TARGET=emscripten 100 - TARGET_GLES2=OFF 101 #- language: android 102 #os: linux 103 #dist: xenial 104 #env: 105 #- JOBID=android-gles2 106 #- TARGET=android 107 #- TARGET_GLES2=ON 108 #addons: 109 #apt: 110 #packages: 111 #- ninja-build 112 #android: 113 #components: 114 #- build-tools-22.0.1 115 #- android-22 116 #- sys-img-armeabi-v7a-android-22 117 - language: android 118 os: linux 119 # Setting xenial here will cause it to use 12.04, with GCC 4.6 and other 120 # prehistoric nightmares. So staying with 14.04 for the time being. 121 dist: trusty 122 env: 123 - JOBID=android-gles3 124 - TARGET=android 125 - TARGET_GLES2=OFF 126 addons: 127 apt: 128 packages: 129 - ninja-build 130 android: 131 components: 132 - build-tools-22.0.1 133 - android-22 134 - sys-img-armeabi-v7a-android-22 135 136notifications: 137 webhooks: 138 urls: 139 - https://webhooks.gitter.im/e/00ec7a9066bb0fec98f3 140 on_success: change 141 on_failure: always 142 on_start: never 143 144cache: 145 directories: 146 - $HOME/sdl2 147 - $HOME/swiftshader 148 - $HOME/cmake 149 150install: 151- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ ! "$TARGET" == "desktop-sanitizers" ] && [ ! "$TARGET" == "android" ]; then export CXX=g++-4.8; fi 152- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$TARGET" == "desktop-sanitizers" ]; then export CXX=clang++-3.8; fi 153- if [ "$BUILD_DEPRECATED" != "OFF" ]; then export BUILD_DEPRECATED=ON; fi 154- if [ "$TRAVIS_OS_NAME" == "linux" ]; then export PLATFORM_GL_API=GLX; fi 155- 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 156# Download CMake 3.4.3 to ensure we're still compatible with it (Travis has 157# 3.9 since December 2017). Also, the PATH setting can't be cached, so it's 158# separate (bit me two times already). Android needs CMake 3.7, but 159# https://gitlab.kitware.com/cmake/cmake/issues/17253 is fixed in 3.9.2, so 160# grab that. 161- 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 162- 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 163- if [ "$TRAVIS_OS_NAME" == "linux" ]; then export PATH=$HOME/cmake/bin:$PATH && cmake --version; fi 164- if [ "$TRAVIS_OS_NAME" == "osx" ]; then HOMEBREW_NO_AUTO_UPDATE=1 brew install ninja; fi 165- if [ "$TRAVIS_OS_NAME" == "osx" ] && [[ "$CMAKE_CXX_FLAGS" == *"--coverage"* ]]; then HOMEBREW_NO_AUTO_UPDATE=1 brew install lcov; fi 166- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "desktop" ]; then export PLATFORM_GL_API=CGL; fi 167- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "ios-simulator" ]; then gem install xcpretty; fi 168- 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 169- if [ "$TARGET_GLES2" == "ON" ]; then export TARGET_GLES3=OFF; fi 170- if [ "$TARGET_GLES2" == "OFF" ]; then export TARGET_GLES3=ON; fi 171 172# SDL (cached) 173- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "desktop" ]; then HOMEBREW_NO_AUTO_UPDATE=1 brew install sdl2; fi 174- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "ios-simulator" ]; then curl -O https://www.libsdl.org/release/SDL2-2.0.4.tar.gz && tar -xzvf SDL2-2.0.4.tar.gz && cd SDL2-2.0.4/Xcode-iOS/SDL && xcodebuild -sdk iphonesimulator9.3 | xcpretty && mkdir -p ../../../sdl2/lib && cp build/Release-iphonesimulator/libSDL2.a ../../../sdl2/lib && mkdir -p ../../../sdl2/include/SDL2 && cp -R ../../include/* ../../../sdl2/include/SDL2 && cd ../../..; fi 175 176# SwiftShader on Linux (cached). Taken from Chromium snapshot 587878 177# (swiftshader-bin Arch package). 178- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$TARGET" == "desktop-gles" ] && [ ! -e "$HOME/swiftshader/libEGL.so" ]; then cd $HOME ; wget https://ci.magnum.graphics/swiftshader-chromium-587878.tar.gz && mkdir -p swiftshader && cd swiftshader && tar -xzf ../swiftshader-chromium-587878.tar.gz && cd $TRAVIS_BUILD_DIR ; fi 179 180# Basis Universal on Emscripten 181- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "emscripten" ]; then 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; fi 182 183script: 184- if [ "$TRAVIS_OS_NAME" == "linux" ] && ( [ "$TARGET" == "desktop" ] || [ "$TARGET" == "desktop-sanitizers" ] ); then ./package/ci/travis-desktop.sh; fi 185- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$TARGET" == "desktop-gles" ]; then ./package/ci/travis-desktop-gles.sh; fi 186- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$TARGET" == "android" ]; then ./package/ci/travis-android-arm.sh; fi 187- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "desktop" ]; then ./package/ci/travis-desktop.sh; fi 188- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "ios-simulator" ]; then ./package/ci/travis-ios-simulator.sh; fi 189- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "emscripten" ]; then ./package/ci/travis-emscripten.sh; fi 190# Travis somehow is not able to gather all output, try to force it using this 191- sync 192 193after_success: 194# Keep in sync with PKBUILD-coverage, please 195- if [[ "$CMAKE_CXX_FLAGS" == *"--coverage"* ]]; then lcov $LCOV_EXTRA_OPTS --directory . --capture --output-file coverage.info > /dev/null; fi 196- if [[ "$CMAKE_CXX_FLAGS" == *"--coverage"* ]]; then lcov $LCOV_EXTRA_OPTS --extract coverage.info "*/src/Magnum*/*" --output-file coverage.info > /dev/null; fi 197- if [[ "$CMAKE_CXX_FLAGS" == *"--coverage"* ]]; then lcov $LCOV_EXTRA_OPTS --remove coverage.info "*/Test/*" --output-file coverage.info > /dev/null; fi 198- if [[ "$CMAKE_CXX_FLAGS" == *"--coverage"* ]]; then lcov $LCOV_EXTRA_OPTS --remove coverage.info "*/build/src/*" --output-file coverage.info > /dev/null; fi 199- if [[ "$CMAKE_CXX_FLAGS" == *"--coverage"* ]]; then bash <(curl -s https://codecov.io/bash) -f coverage.info; fi 200