sudo: required dist: trusty language: c sudo: true os: - linux - osx branches: only: master compiler: - gcc - clang matrix: exclude: - os: osx compiler: gcc env: - BUILD_ARGS="-DCMAKE_BUILD_TYPE=Release" - BUILD_ARGS="-DCMAKE_BUILD_TYPE=Debug" - BUILD_ARGS="-DNOSERVER=1 -DGL2=1 -DNOPNG=1" - BUILD_ARGS="-DNOSERVER=1 -DLUA_SYSTEM=0 -DPHYSFS_SYSTEM=0" matrix: include: - language: c os: linux compiler: clang env: BUILD_ARGS="-DNOSERVER=1 -DBUILD_ENGINE_C=1" - language: c os: osx compiler: clang env: BUILD_ARGS="-DNOSERVER=1 -DBUILD_ENGINE_C=1" - language: c os: linux compiler: clang env: BUILD_ARGS="-DNOSERVER=1 -DBUILD_ENGINE_C=1 -DGL2=1" - language: c os: osx compiler: clang env: BUILD_ARGS="-DNOSERVER=1 -DBUILD_ENGINE_C=1 -DGL2=1" - language: objective-c sudo: required os: osx compiler: clang env: TRAVIS_OS_NAME="ios" SDL_LIB_PATH="$TRAVIS_BUILD_DIR/../Library" osx_image: xcode7.2 before_install: | if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo add-apt-repository -y ppa:zoogie/sdl2-snapshots sudo apt-get update -qq elif [ "$TRAVIS_OS_NAME" == "osx" ]; then brew update --all elif [ "$TRAVIS_OS_NAME" == "ios" ]; then hg clone http://hg.libsdl.org/SDL $SDL_LIB_PATH/SDL/ hg clone http://hg.libsdl.org/SDL_image $SDL_LIB_PATH/SDL_image/ hg clone http://hg.libsdl.org/SDL_net $SDL_LIB_PATH/SDL_net/ hg clone http://hg.libsdl.org/SDL_ttf $SDL_LIB_PATH/SDL_ttf/ hg clone http://hg.libsdl.org/SDL_mixer $SDL_LIB_PATH/SDL_mixer/ fi install: | if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo apt-get install -y debhelper cmake dpkg-dev libqt4-dev qt4-qmake libphysfs-dev libsdl2-dev libsdl2-ttf-dev libsdl2-mixer-dev libsdl2-image-dev libsdl2-net-dev bzip2 ghc libghc-mtl-dev libghc-parsec3-dev libghc-vector-dev libghc-zlib-dev libghc-random-dev libghc-network-dev libghc-sandi-dev libghc-hslogger-dev libghc-utf8-string-dev libghc-sha-dev libghc-entropy-dev libghc-regex-tdfa-dev liblua5.1-0-dev imagemagick fpc fp-compiler fp-units-misc libpng-dev fp-units-gfx libavcodec-dev libavformat-dev libglew1.6-dev elif [ "$TRAVIS_OS_NAME" == "osx" ]; then brew tap cartr/qt4 brew tap-pin cartr/qt4 brew install qt@4 brew install fpc glew physfs lua51 sdl2 sdl2_image sdl2_net sdl2_ttf ffmpeg ghc cabal-install brew install sdl2_mixer --with-libvorbis # use cabal install haskell deps, pas2c ones are covered by server if [[ "$BUILD_ARGS" != *"NOSERVER"* ]]; then cabal update cabal install --only-dependencies gameServer/hedgewars-server.cabal fi if [[ "$BUILD_ARGS" == *"BUILD_ENGINE_C"* ]]; then cabal update cabal install --only-dependencies tools/pas2c/pas2c.cabal fi # avoid installing Sparkle, add default unit path export BUILD_ARGS="$BUILD_ARGS -DNOAUTOUPDATE=1" elif [ "$TRAVIS_OS_NAME" == "ios" ]; then # FPC 3.0.0 required for using FPC 3.0.1 which contains rtl for ios sudo bash tools/dmg_pkg_install.sh ftp://freepascal.stack.nl/pub/mirrors/fpc/dist/3.0.0/i386-macosx/fpc-3.0.0.intel-macosx.dmg sudo bash tools/dmg_pkg_install.sh ftp://freepascal.stack.nl/pub/mirrors/fpc/dist/3.0.0/i386-macosx/fpc-3.0.1.intel-macosx.cross.ios.dmg fi before_script: | if [ "$TRAVIS_OS_NAME" == "ios" ]; then # More or less stable hw iOS version can be compiled with FPC 3.1.1, # but there are no (easy?) way to build it from sources, # so we just temporary switch Xcode project to use FPC 3.0.1 git apply tools/fix_fpc_ios_build_patch.diff xctool -project ./project_files/HedgewarsMobile/Hedgewars.xcodeproj -scheme UpdateDataFolder build else mkdir build && cd build && cmake $BUILD_ARGS .. fi script: | if [ "$TRAVIS_OS_NAME" == "ios" ]; then xctool -project ./project_files/HedgewarsMobile/Hedgewars.xcodeproj -scheme Hedgewars -configuration Release build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO else make VERBOSE=1 fi after_success: | if [ "$TRAVIS_OS_NAME" == "linux" ]; then make test_verbose elif [ "$TRAVIS_OS_NAME" == "osx" ]; then make install fi notifications: email: false irc: channels: - "chat.freenode.net#hedgewars" template: - "hw-build #%{build_number} (%{commit} by %{author}): %{message}" - "See details at %{build_url}" on_success: change on_failure: always skip_join: false