.travis.yml
author nemo
Tue, 21 Aug 2018 15:11:28 -0400
branch0.9.24
changeset 13682 f60b3998ba56
parent 13301 1c8c270aebed
child 13714 9ea58d0134ad
permissions -rw-r--r--
only-stats should never create visual gears. and lua should never rely on visual gears being created. critical is just to help ensure ones important to gameplay don't get lost in fast-forward

sudo: required
dist: xenial
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 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 qtbase5-dev qtbase5-private-dev qttools5-dev-tools qttools5-dev libphysfs-dev libsdl2-dev libsdl2-ttf-dev libsdl2-mixer-dev libsdl2-image-dev libsdl2-net-dev bzip2 ghc libghc-mtl-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 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 qt5
    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