Browse Source

package/ci: enable Vulkan building on Travis CI.

Currently a separate job with everything that depends on GL disabled.
And against a minimal Vulkan driver that has just four symbols, because
I can't run the stuff there anyway.
pull/194/merge
Vladimír Vondruš 8 years ago
parent
commit
96050cb1e3
  1. 21
      package/ci/libvulkan.cpp
  2. 1
      package/ci/travis-android-arm.sh
  3. 1
      package/ci/travis-desktop-gles.sh
  4. 47
      package/ci/travis-desktop-vulkan.sh
  5. 2
      package/ci/travis-desktop.sh
  6. 1
      package/ci/travis-emscripten.sh
  7. 1
      package/ci/travis-ios-simulator.sh
  8. 27
      package/ci/travis.yml

21
package/ci/libvulkan.cpp

@ -0,0 +1,21 @@
/* Yes. I know what I am doing. Yes. Really. */
extern "C" {
int vkCreateInstance(const void*, const void*, void*) {
return -9;
}
int vkEnumerateInstanceExtensionProperties(const void*, void*, void*) {
return -9;
}
int vkEnumerateInstanceLayerProperties(void*, void*) {
return -9;
}
void(*vkGetInstanceProcAddr(void*, const void*))() {
return nullptr;
}
}

1
package/ci/travis-android-arm.sh

@ -52,6 +52,7 @@ cmake .. \
-DCMAKE_BUILD_TYPE=Release \ -DCMAKE_BUILD_TYPE=Release \
-DTARGET_GLES2=$TARGET_GLES2 \ -DTARGET_GLES2=$TARGET_GLES2 \
-DWITH_AUDIO=OFF \ -DWITH_AUDIO=OFF \
-DWITH_VK=OFF \
-DWITH_ANDROIDAPPLICATION=ON \ -DWITH_ANDROIDAPPLICATION=ON \
-DWITH_EGLCONTEXT=ON \ -DWITH_EGLCONTEXT=ON \
-DWITH_ANYAUDIOIMPORTER=OFF \ -DWITH_ANYAUDIOIMPORTER=OFF \

1
package/ci/travis-desktop-gles.sh

@ -24,6 +24,7 @@ cmake .. \
-DTARGET_GLES2=$TARGET_GLES2 \ -DTARGET_GLES2=$TARGET_GLES2 \
-DTARGET_DESKTOP_GLES=ON \ -DTARGET_DESKTOP_GLES=ON \
-DWITH_AUDIO=ON \ -DWITH_AUDIO=ON \
-DWITH_VK=OFF \
-DWITH_GLFWAPPLICATION=OFF \ -DWITH_GLFWAPPLICATION=OFF \
-DWITH_SDL2APPLICATION=OFF \ -DWITH_SDL2APPLICATION=OFF \
-DWITH_WINDOWLESS${PLATFORM_GL_API}APPLICATION=ON \ -DWITH_WINDOWLESS${PLATFORM_GL_API}APPLICATION=ON \

47
package/ci/travis-desktop-vulkan.sh

@ -0,0 +1,47 @@
#!/bin/bash
set -ev
# Corrade
git clone --depth 1 git://github.com/mosra/corrade.git
cd corrade
mkdir build && cd build
cmake .. \
-DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS" \
-DCMAKE_INSTALL_PREFIX=$HOME/deps \
-DCMAKE_INSTALL_RPATH=$HOME/deps/lib \
-DCMAKE_BUILD_TYPE=Debug \
-DBUILD_DEPRECATED=$BUILD_DEPRECATED \
-DWITH_INTERCONNECT=OFF \
-DWITH_PLUGINMANAGER=OFF \
-G Ninja
ninja install
cd ../..
mkdir build && cd build
# Not using CXXFLAGS in order to avoid affecting dependencies
cmake .. \
-DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS" \
-DCMAKE_INSTALL_PREFIX=$HOME/deps \
-DCMAKE_BUILD_TYPE=Debug \
-DVulkan_LIBRARY=$HOME/libvulkan.so \
-DWITH_AUDIO=OFF \
-DWITH_DEBUGTOOLS=OFF \
-DWITH_GL=OFF \
-DWITH_MESHTOOLS=OFF \
-DWITH_PRIMITIVES=OFF \
-DWITH_SCENEGRAPH=ON \
-DWITH_SHADERS=OFF \
-DWITH_SHAPES=ON \
-DWITH_TEXT=OFF \
-DWITH_TEXTURETOOLS=OFF \
-DWITH_TRADE=OFF \
-DWITH_VK=ON \
-DWITH_AL_INFO=OFF \
-DWITH_VK_INFO=ON \
-DBUILD_TESTS=ON \
-DBUILD_VK_TESTS=ON \
-DBUILD_DEPRECATED=$BUILD_DEPRECATED \
-G Ninja
# Otherwise the job gets killed (probably because using too much memory)
ninja -j4
ASAN_OPTIONS="color=always" LSAN_OPTIONS="color=always suppressions=$TRAVIS_BUILD_DIR/package/ci/leaksanitizer.conf" CORRADE_TEST_COLOR=ON ctest -V -E GLTest

2
package/ci/travis-desktop.sh

@ -23,7 +23,9 @@ cmake .. \
-DCMAKE_INSTALL_PREFIX=$HOME/deps \ -DCMAKE_INSTALL_PREFIX=$HOME/deps \
-DCMAKE_PREFIX_PATH=$HOME/glfw \ -DCMAKE_PREFIX_PATH=$HOME/glfw \
-DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_BUILD_TYPE=Debug \
-DVULKAN_LIBRARY=$HOME/libvulkan.so \
-DWITH_AUDIO=ON \ -DWITH_AUDIO=ON \
-DWITH_VK=OFF \
-DWITH_GLFWAPPLICATION=ON \ -DWITH_GLFWAPPLICATION=ON \
-DWITH_GLUTAPPLICATION=$WITH_GLUTAPPLICATION \ -DWITH_GLUTAPPLICATION=$WITH_GLUTAPPLICATION \
-DWITH_SDL2APPLICATION=ON \ -DWITH_SDL2APPLICATION=ON \

1
package/ci/travis-emscripten.sh

@ -49,6 +49,7 @@ cmake .. \
-DCMAKE_INSTALL_PREFIX=$HOME/deps \ -DCMAKE_INSTALL_PREFIX=$HOME/deps \
-DCMAKE_FIND_ROOT_PATH=$HOME/deps \ -DCMAKE_FIND_ROOT_PATH=$HOME/deps \
-DWITH_AUDIO=ON \ -DWITH_AUDIO=ON \
-DWITH_VK=OFF \
-DWITH_SDL2APPLICATION=ON \ -DWITH_SDL2APPLICATION=ON \
-WDITH_WINDOWLESSEGLAPPLICATION=ON \ -WDITH_WINDOWLESSEGLAPPLICATION=ON \
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \

1
package/ci/travis-ios-simulator.sh

@ -45,6 +45,7 @@ cmake .. \
-DCMAKE_PREFIX_PATH="$HOME/deps;$TRAVIS_BUILD_DIR/sdl2" \ -DCMAKE_PREFIX_PATH="$HOME/deps;$TRAVIS_BUILD_DIR/sdl2" \
-DTARGET_GLES2=$TARGET_GLES2 \ -DTARGET_GLES2=$TARGET_GLES2 \
-DWITH_AUDIO=ON \ -DWITH_AUDIO=ON \
-DWITH_VK=OFF \
-DWITH_SDL2APPLICATION=ON \ -DWITH_SDL2APPLICATION=ON \
-DWITH_WINDOWLESSIOSAPPLICATION=ON \ -DWITH_WINDOWLESSIOSAPPLICATION=ON \
-DWITH_EGLCONTEXT=ON \ -DWITH_EGLCONTEXT=ON \

27
package/ci/travis.yml

@ -59,6 +59,19 @@ matrix:
- libxinerama-dev - libxinerama-dev
- libxcursor-dev - libxcursor-dev
#- libxi-dev #- libxi-dev
- language: cpp
os: linux
dist: trusty
compiler: gcc
env:
- JOBID=linux-vulkan
- TARGET=desktop-vulkan
- CMAKE_CXX_FLAGS="--coverage"
addons:
apt:
packages:
- ninja-build
- lcov
- language: cpp - language: cpp
os: linux os: linux
dist: trusty dist: trusty
@ -170,12 +183,12 @@ cache:
- $HOME/cmake - $HOME/cmake
install: install:
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ ! "$TARGET" == "desktop-sanitizers" ] && [ ! "$TARGET" == "android" ]; then export CXX=g++-4.7; fi - if [ "$TRAVIS_OS_NAME" == "linux" ] && [ ! "$TARGET" == "desktop-sanitizers" ] && [ ! "$TARGET" == "android" ] && [ ! "$TARGET" == "desktop-vulkan" ]; then export CXX=g++-4.7; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$TARGET" == "desktop-sanitizers" ]; then export CXX=clang++-3.8; fi - if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$TARGET" == "desktop-sanitizers" ]; then export CXX=clang++-3.8; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$TARGET" == "desktop" ]; then export WITH_GLUTAPPLICATION=ON; fi - if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$TARGET" == "desktop" ]; then export WITH_GLUTAPPLICATION=ON; fi
- if [ "$WITH_GLUTAPPLICATION" != "ON" ]; then export WITH_GLUTAPPLICATION=OFF; fi - if [ "$WITH_GLUTAPPLICATION" != "ON" ] && [ ! "$TARGET" == "desktop-vulkan" ]; then export WITH_GLUTAPPLICATION=OFF; fi
- if [ "$BUILD_DEPRECATED" != "OFF" ]; then export BUILD_DEPRECATED=ON; fi - if [ "$BUILD_DEPRECATED" != "OFF" ]; then export BUILD_DEPRECATED=ON; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then export PLATFORM_GL_API=GLX; fi - if [ "$TRAVIS_OS_NAME" == "linux" ] && [ ! "$TARGET" == "desktop-vulkan" ]; then export PLATFORM_GL_API=GLX; fi
- 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 - 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
# Download CMake 2.8.12 to ensure we're still compatible with it (Travis has # Download CMake 2.8.12 to ensure we're still compatible with it (Travis has
# 3.9 since December 2017). Also, the PATH setting can't be cached, so it's # 3.9 since December 2017). Also, the PATH setting can't be cached, so it's
@ -183,9 +196,9 @@ install:
# are running, so for it we use the preinstalled CMake. Android needs CMake # are running, so for it we use the preinstalled CMake. Android needs CMake
# 3.7, but https://gitlab.kitware.com/cmake/cmake/issues/17253 is fixed in # 3.7, but https://gitlab.kitware.com/cmake/cmake/issues/17253 is fixed in
# 3.9.2, so grab that. # 3.9.2, so grab that.
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ ! "$TARGET" == "desktop-sanitizers" ] && [ ! "$TARGET" == "android" ] && [ ! -e "$HOME/cmake/bin" ]; then cd $HOME ; wget -nc --no-check-certificate https://cmake.org/files/v2.8/cmake-2.8.12.2-Linux-i386.tar.gz && mkdir -p cmake && cd cmake && tar --strip-components=1 -xzf ../cmake-2.8.12.2-Linux-i386.tar.gz && cd $TRAVIS_BUILD_DIR ; fi - if [ "$TRAVIS_OS_NAME" == "linux" ] && [ ! "$TARGET" == "desktop-sanitizers" ] && [ ! "$TARGET" == "android" ] && [ ! "$TARGET" == "desktop-vulkan" ] && [ ! -e "$HOME/cmake/bin" ]; then cd $HOME ; wget -nc --no-check-certificate https://cmake.org/files/v2.8/cmake-2.8.12.2-Linux-i386.tar.gz && mkdir -p cmake && cd cmake && tar --strip-components=1 -xzf ../cmake-2.8.12.2-Linux-i386.tar.gz && cd $TRAVIS_BUILD_DIR ; fi
- 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 - 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
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ ! "$TARGET" == "desktop-sanitizers" ]; then export PATH=$HOME/cmake/bin:$PATH && cmake --version; fi - if [ "$TRAVIS_OS_NAME" == "linux" ] && [ ! "$TARGET" == "desktop-vulkan" ] && [ ! "$TARGET" == "desktop-sanitizers" ]; then export PATH=$HOME/cmake/bin:$PATH && cmake --version; fi
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then HOMEBREW_NO_AUTO_UPDATE=1 brew install ninja; fi - if [ "$TRAVIS_OS_NAME" == "osx" ]; then HOMEBREW_NO_AUTO_UPDATE=1 brew install ninja; fi
- if [ "$TRAVIS_OS_NAME" == "osx" ] && [[ "$CMAKE_CXX_FLAGS" == *"--coverage"* ]]; then HOMEBREW_NO_AUTO_UPDATE=1 brew install lcov; fi - if [ "$TRAVIS_OS_NAME" == "osx" ] && [[ "$CMAKE_CXX_FLAGS" == *"--coverage"* ]]; then HOMEBREW_NO_AUTO_UPDATE=1 brew install lcov; fi
- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "desktop" ]; then export PLATFORM_GL_API=CGL; fi - if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "desktop" ]; then export PLATFORM_GL_API=CGL; fi
@ -203,8 +216,12 @@ install:
# supporting that. Latest GLFW is tested on macOS. # supporting that. Latest GLFW is tested on macOS.
- if [ "$TRAVIS_OS_NAME" == "linux" ] && ( [ "$TARGET" == "desktop" ] || [ "$TARGET" == "desktop-sanitizers" ] ) && [ ! -e "$HOME/glfw/include" ]; then wget https://github.com/glfw/glfw/releases/download/3.1.2/glfw-3.1.2.zip && unzip glfw-3.1.2.zip && cd glfw-3.1.2 && mkdir build && cd build && cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/glfw -DCMAKE_BUILD_TYPE=Release -DGLFW_BUILD_EXAMPLES=OFF -DGLFW_BUILD_TESTS=OFF -DGLFW_BUILD_DOCS=OFF -DBUILD_SHARED_LIBS=ON && cmake --build . --target install && cd ../..; fi - if [ "$TRAVIS_OS_NAME" == "linux" ] && ( [ "$TARGET" == "desktop" ] || [ "$TARGET" == "desktop-sanitizers" ] ) && [ ! -e "$HOME/glfw/include" ]; then wget https://github.com/glfw/glfw/releases/download/3.1.2/glfw-3.1.2.zip && unzip glfw-3.1.2.zip && cd glfw-3.1.2 && mkdir build && cd build && cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/glfw -DCMAKE_BUILD_TYPE=Release -DGLFW_BUILD_EXAMPLES=OFF -DGLFW_BUILD_TESTS=OFF -DGLFW_BUILD_DOCS=OFF -DBUILD_SHARED_LIBS=ON && cmake --build . --target install && cd ../..; fi
# Vulkan (eheh)
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$TARGET" == "desktop-vulkan" ]; then g++ package/ci/libvulkan.cpp -std=c++11 -shared -o $HOME/libvulkan.so; fi
script: script:
- if [ "$TRAVIS_OS_NAME" == "linux" ] && ( [ "$TARGET" == "desktop" ] || [ "$TARGET" == "desktop-sanitizers" ] ); then ./package/ci/travis-desktop.sh; fi - if [ "$TRAVIS_OS_NAME" == "linux" ] && ( [ "$TARGET" == "desktop" ] || [ "$TARGET" == "desktop-sanitizers" ] ); then ./package/ci/travis-desktop.sh; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$TARGET" == "desktop-vulkan" ]; then ./package/ci/travis-desktop-vulkan.sh; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$TARGET" == "desktop-gles" ]; then ./package/ci/travis-desktop-gles.sh; fi - if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$TARGET" == "desktop-gles" ]; then ./package/ci/travis-desktop-gles.sh; fi
- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$TARGET" == "android" ]; then ./package/ci/travis-android-arm.sh; fi - if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$TARGET" == "android" ]; then ./package/ci/travis-android-arm.sh; fi
- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "desktop" ]; then ./package/ci/travis-desktop.sh; fi - if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "desktop" ]; then ./package/ci/travis-desktop.sh; fi

Loading…
Cancel
Save