From 5b82162a4d823562fc4df334462d8d26893a875e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 23 May 2016 11:55:59 +0200 Subject: [PATCH] package/ci: build for iOS on Travis CI. What's done: * The build matrix now has four targets -- Linux desktop, OSX desktop, iOS GLES2 and iOS GLES3. * Putting the commands into separate bash scripts, which are called based on what's the actual build matrix item. * Displaying *all* test output (colored) for visual verification. --- package/ci/travis-desktop.sh | 37 ++++++++++++++++ package/ci/travis-ios-simulator.sh | 70 ++++++++++++++++++++++++++++++ package/ci/travis.yml | 53 +++++++++++++--------- 3 files changed, 139 insertions(+), 21 deletions(-) create mode 100755 package/ci/travis-desktop.sh create mode 100755 package/ci/travis-ios-simulator.sh diff --git a/package/ci/travis-desktop.sh b/package/ci/travis-desktop.sh new file mode 100755 index 000000000..a20664a6c --- /dev/null +++ b/package/ci/travis-desktop.sh @@ -0,0 +1,37 @@ +#!/bin/bash +set -ev + +# Corrade +git clone --depth 1 git://github.com/mosra/corrade.git +cd corrade +mkdir build && cd build +cmake .. \ + -DCMAKE_INSTALL_PREFIX=$HOME/deps \ + -DCMAKE_INSTALL_RPATH=$HOME/deps/lib \ + -DCMAKE_BUILD_TYPE=Release \ + -DWITH_INTERCONNECT=OFF \ +make -j install +cd ../.. + +mkdir build && cd build +cmake .. \ + -DCMAKE_PREFIX_PATH="$HOME/deps;$HOME/sdl2;$HOME/glfw" \ + -DCMAKE_BUILD_TYPE=Release \ + -DWITH_AUDIO=ON \ + -DWITH_GLFWAPPLICATION=ON \ + -DWITH_SDL2APPLICATION=ON \ + -DWITH_WINDOWLESS${PLATFORM_GL_API}APPLICATION=ON \ + -DWITH_${PLATFORM_GL_API}CONTEXT=ON \ + -DWITH_MAGNUMFONT=ON \ + -DWITH_MAGNUMFONTCONVERTER=ON \ + -DWITH_OBJIMPORTER=ON \ + -DWITH_TGAIMAGECONVERTER=ON \ + -DWITH_TGAIMPORTER=ON \ + -DWITH_WAVAUDIOIMPORTER=ON \ + -DWITH_DISTANCEFIELDCONVERTER=ON \ + -DWITH_FONTCONVERTER=ON \ + -DWITH_MAGNUMINFO=ON \ + -DBUILD_TESTS=ON \ + -DBUILD_GL_TESTS=ON +make -j${JOBS_LIMIT} +CORRADE_TEST_COLOR=ON ctest -V -E GLTest diff --git a/package/ci/travis-ios-simulator.sh b/package/ci/travis-ios-simulator.sh new file mode 100755 index 000000000..c921a30f8 --- /dev/null +++ b/package/ci/travis-ios-simulator.sh @@ -0,0 +1,70 @@ +#!/bin/bash +set -ev + +git submodule update --init + +# Corrade +git clone --depth 1 git://github.com/mosra/corrade.git +cd corrade + +# Build native corrade-rc +mkdir build && cd build +cmake .. \ + -DCMAKE_INSTALL_PREFIX=$HOME/deps \ + -DCMAKE_INSTALL_RPATH=$HOME/deps/lib \ + -DWITH_INTERCONNECT=OFF \ + -DWITH_PLUGINMANAGER=OFF \ + -DWITH_TESTSUITE=OFF \ + -DCMAKE_BUILD_TYPE=Release +make -j install +cd .. + +# Crosscompile Corrade +mkdir build-ios && cd build-ios +cmake .. \ + -DCMAKE_TOOLCHAIN_FILE=../../toolchains/generic/iOS.cmake \ + -DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk \ + -DCMAKE_OSX_ARCHITECTURES="x86_64" \ + -DCORRADE_RC_EXECUTABLE=$HOME/deps/bin/corrade-rc \ + -DCMAKE_INSTALL_PREFIX=$HOME/deps-ios \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_STATIC=ON \ + -DTESTSUITE_TARGET_XCTEST=ON \ + -DWITH_INTERCONNECT=OFF \ + -G Xcode +cmake --build . --config Release --target install | xcpretty +cd ../.. + +ls -lR $TRAVIS_BUILD_DIR/sdl2 + +# Crosscompile Magnum +mkdir build-ios && cd build-ios +cmake .. \ + -DCMAKE_TOOLCHAIN_FILE=../toolchains/generic/iOS.cmake \ + -DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk \ + -DCMAKE_OSX_ARCHITECTURES="x86_64" \ + -DCORRADE_RC_EXECUTABLE=$HOME/deps/bin/corrade-rc \ + -DCMAKE_PREFIX_PATH="$HOME/deps-ios;$TRAVIS_BUILD_DIR/sdl2" \ + -DCMAKE_BUILD_TYPE=Release \ + -DTARGET_GLES2=$TARGET_GLES2 \ + -DWITH_AUDIO=ON \ + -DWITH_SDL2APPLICATION=ON \ + -DWITH_WINDOWLESSIOSAPPLICATION=ON \ + -DWITH_EGLCONTEXT=ON \ + -DWITH_MAGNUMFONT=ON \ + -DWITH_MAGNUMFONTCONVERTER=ON \ + -DWITH_OBJIMPORTER=ON \ + -DWITH_TGAIMAGECONVERTER=ON \ + -DWITH_TGAIMPORTER=ON \ + -DWITH_WAVAUDIOIMPORTER=ON \ + -DWITH_DISTANCEFIELDCONVERTER=ON \ + -DWITH_FONTCONVERTER=ON \ + -DWITH_MAGNUMINFO=ON \ + -DBUILD_STATIC=ON \ + -DBUILD_PLUGINS_STATIC=ON \ + -DBUILD_TESTS=ON \ + -DBUILD_GL_TESTS=ON \ + -G Xcode +cmake --build . --config Release | xcpretty +cmake --build . --config Release --target install | xcpretty +CORRADE_TEST_COLOR=ON ctest -V -C Release -E GLTest diff --git a/package/ci/travis.yml b/package/ci/travis.yml index b49d85c3b..be4179143 100644 --- a/package/ci/travis.yml +++ b/package/ci/travis.yml @@ -1,8 +1,26 @@ # kate: indent-width 2; -os: -- linux -- osx +language: cpp + +matrix: + include: + - os: linux + compiler: gcc + env: + - TARGET=desktop + # Otherwise the job gets killed (probably because using too much memory) + - JOBS_LIMIT=4 + - os: osx + compiler: clang + env: TARGET=desktop + - os: osx + env: + - TARGET=ios-simulator + - TARGET_GLES2=ON + - os: osx + env: + - TARGET=ios-simulator + - TARGET_GLES2=OFF addons: apt: @@ -32,29 +50,22 @@ install: - if [ "$TRAVIS_OS_NAME" == "linux" ]; then export CXX=g++-4.7; fi - if [ "$TRAVIS_OS_NAME" == "linux" ]; then export PLATFORM_GL_API=GLX; fi - if [ "$TRAVIS_OS_NAME" == "osx" ]; then export PLATFORM_GL_API=CGL; fi -- printf "[General]\ndrivers=null" > ~/.alsoftrc +- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "ios-simulator" ]; then gem install xcpretty; fi +- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "ios-simulator" ]; then brew upgrade cmake; fi +- if [ "$TARGET" == "desktop" ]; then printf "[General]\ndrivers=null" > ~/.alsoftrc; fi # SDL (cached) -- if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew install sdl2; fi +- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "desktop" ]; then brew install sdl2; fi +- 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 iphonesimulator8.1 | 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 - if [ "$TRAVIS_OS_NAME" == "linux" ] && [ ! -e "$HOME/sdl2/include" ]; then curl -O http://www.libsdl.org/release/SDL2-2.0.4.tar.gz && tar -xzvf SDL2-2.0.4.tar.gz && cd SDL2-2.0.4 && mkdir build && cd build && cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/sdl2 -DCMAKE_BUILD_TYPE=Release && cmake --build . --target install && cd ../..; fi # GLFW (cached) -- if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew install homebrew/versions/glfw3; fi +- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "desktop" ]; then brew install homebrew/versions/glfw3; fi - if [ "$TRAVIS_OS_NAME" == "linux" ] && [ ! -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 && cmake --build . --target install && cd ../..; fi -# Corrade -- git clone --depth 1 git://github.com/mosra/corrade.git -- cd corrade -- mkdir build -- cd build -- cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/deps -DCMAKE_INSTALL_RPATH=$HOME/deps/lib -DCMAKE_BUILD_TYPE=Release -- cmake --build . -- cmake --build . --target install -- cd .. -- cd .. - script: -- mkdir build && cd build -- cmake .. -DCMAKE_PREFIX_PATH="$HOME/deps;$HOME/sdl2;$HOME/glfw" -DCMAKE_BUILD_TYPE=Release -DWITH_AUDIO=ON -DWITH_GLFWAPPLICATION=ON -DWITH_SDL2APPLICATION=ON -DWITH_WINDOWLESS${PLATFORM_GL_API}APPLICATION=ON -DWITH_${PLATFORM_GL_API}CONTEXT=ON -DWITH_MAGNUMFONT=ON -DWITH_MAGNUMFONTCONVERTER=ON -DWITH_OBJIMPORTER=ON -DWITH_TGAIMAGECONVERTER=ON -DWITH_TGAIMPORTER=ON -DWITH_WAVAUDIOIMPORTER=ON -DWITH_DISTANCEFIELDCONVERTER=ON -DWITH_FONTCONVERTER=ON -DWITH_MAGNUMINFO=ON -DBUILD_TESTS=ON -DBUILD_GL_TESTS=ON -- cmake --build . -- ctest --output-on-failure -E GLTest +- if [ "$TRAVIS_OS_NAME" == "linux" ]; then ./package/ci/travis-desktop.sh; fi +- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "desktop" ]; then ./package/ci/travis-desktop.sh; fi +- if [ "$TRAVIS_OS_NAME" == "osx" ] && [ "$TARGET" == "ios-simulator" ]; then ./package/ci/travis-ios-simulator.sh; fi +# Travis somehow is not able to gather all output, try to force it using this +- sync