.travis.yml
author nemo
Fri, 13 Oct 2017 16:37:56 -0400
changeset 12701 79e13080b9db
parent 12438 664e2a221047
child 12816 be7f05f83f8e
permissions -rw-r--r--
mark up sprites for uStore loading. critical is for ones needed for proper gameplay, checksum is for ones where the game will desync if they don't match. will add checksumming next...

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