Browse Source

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.
pull/157/head
Vladimír Vondruš 10 years ago
parent
commit
5b82162a4d
  1. 37
      package/ci/travis-desktop.sh
  2. 70
      package/ci/travis-ios-simulator.sh
  3. 53
      package/ci/travis.yml

37
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

70
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

53
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

Loading…
Cancel
Save