.travis.yml
author Wuzzy <Wuzzy2@mail.ru>
Sat, 21 Oct 2017 18:38:28 +0200
changeset 12729 4e0e59255856
parent 12438 664e2a221047
child 12816 be7f05f83f8e
permissions -rw-r--r--
Sniper rifle mission: Faster dynamite blow-up, also skip with precise

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-stm-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 install fpc glew qt 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