mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-11-16 02:04:48 +00:00
60fa736904
Ideally we'd just say "use the default OS version" and have it auto-upgrade as Travis upgrades their stuff, with no work on our part. Unfortunately, Travis has let their default OSX image lag so far back (it's now 10.13) that Homebrew has started refusing to install GLEW without the `--build-from-source` flag. So, sign up for some extra maintenance work.
235 lines
6.7 KiB
YAML
235 lines
6.7 KiB
YAML
language: cpp
|
|
dist: bionic
|
|
services:
|
|
- docker
|
|
matrix:
|
|
include:
|
|
- os: linux # Linux GCC, autotools
|
|
compiler: gcc
|
|
env: >-
|
|
TRAVIS_OS_NAME=linux
|
|
TRAVIS_COMPILER_NAME=gcc
|
|
TRAVIS_BUILD_SYSTEM=autotools
|
|
HYPERROGUE_USE_GLEW=1
|
|
HYPERROGUE_USE_PNG=1
|
|
- os: osx # OSX, autotools
|
|
osx_image: xcode12.2
|
|
compiler: clang
|
|
env: >-
|
|
TRAVIS_OS_NAME=osx
|
|
TRAVIS_COMPILER_NAME=clang
|
|
TRAVIS_BUILD_SYSTEM=autotools
|
|
HYPERROGUE_USE_GLEW=1
|
|
HYPERROGUE_USE_PNG=1
|
|
- os: linux # Linux GCC, make
|
|
compiler: gcc
|
|
env: >-
|
|
TRAVIS_OS_NAME=linux
|
|
TRAVIS_COMPILER_NAME=gcc
|
|
TRAVIS_BUILD_SYSTEM=Makefile
|
|
HYPERROGUE_USE_GLEW=1
|
|
HYPERROGUE_USE_PNG=1
|
|
- os: linux # Linux GCC, make, no libpng
|
|
compiler: gcc
|
|
env: >-
|
|
TRAVIS_OS_NAME=linux
|
|
TRAVIS_COMPILER_NAME=gcc
|
|
TRAVIS_BUILD_SYSTEM=Makefile
|
|
HYPERROGUE_USE_GLEW=1
|
|
HYPERROGUE_USE_PNG=0
|
|
- os: linux # Linux GCC, make, Rogueviz
|
|
compiler: gcc
|
|
env: >-
|
|
TRAVIS_OS_NAME=linux
|
|
TRAVIS_COMPILER_NAME=gcc
|
|
TRAVIS_BUILD_SYSTEM=Makefile
|
|
HYPERROGUE_USE_GLEW=1
|
|
HYPERROGUE_USE_PNG=1
|
|
HYPERROGUE_USE_ROGUEVIZ=1
|
|
- os: linux # Linux Clang, make
|
|
compiler: clang
|
|
env: >-
|
|
TRAVIS_OS_NAME=linux
|
|
TRAVIS_COMPILER_NAME=clang
|
|
TRAVIS_BUILD_SYSTEM=Makefile
|
|
HYPERROGUE_USE_GLEW=1
|
|
HYPERROGUE_USE_PNG=1
|
|
- os: linux # Linux Clang, make, Rogueviz
|
|
compiler: clang
|
|
env: >-
|
|
TRAVIS_OS_NAME=linux
|
|
TRAVIS_COMPILER_NAME=clang
|
|
TRAVIS_BUILD_SYSTEM=Makefile
|
|
HYPERROGUE_USE_GLEW=1
|
|
HYPERROGUE_USE_PNG=1
|
|
HYPERROGUE_USE_ROGUEVIZ=1
|
|
- os: osx # OSX, make
|
|
osx_image: xcode12u
|
|
compiler: clang
|
|
env: >-
|
|
TRAVIS_OS_NAME=osx
|
|
TRAVIS_COMPILER_NAME=clang
|
|
TRAVIS_BUILD_SYSTEM=Makefile
|
|
HYPERROGUE_USE_GLEW=1
|
|
HYPERROGUE_USE_PNG=1
|
|
- os: osx # OSX, make, no libpng
|
|
osx_image: xcode11.6
|
|
compiler: clang
|
|
env: >-
|
|
TRAVIS_OS_NAME=osx
|
|
TRAVIS_COMPILER_NAME=clang
|
|
TRAVIS_BUILD_SYSTEM=Makefile
|
|
HYPERROGUE_USE_GLEW=1
|
|
HYPERROGUE_USE_PNG=0
|
|
- os: osx # OSX, make, Rogueviz
|
|
osx_image: xcode11.5
|
|
compiler: clang
|
|
env: >-
|
|
TRAVIS_OS_NAME=osx
|
|
TRAVIS_COMPILER_NAME=clang
|
|
TRAVIS_BUILD_SYSTEM=Makefile
|
|
HYPERROGUE_USE_GLEW=1
|
|
HYPERROGUE_USE_PNG=1
|
|
HYPERROGUE_USE_ROGUEVIZ=1
|
|
- os: linux # Linux GCC, mymake
|
|
compiler: gcc
|
|
env: >-
|
|
TRAVIS_OS_NAME=linux
|
|
TRAVIS_COMPILER_NAME=gcc
|
|
TRAVIS_BUILD_SYSTEM=mymake
|
|
HYPERROGUE_USE_GLEW=1
|
|
HYPERROGUE_USE_PNG=1
|
|
- os: linux # Linux GCC, mymake, Rogueviz
|
|
compiler: gcc
|
|
env: >-
|
|
TRAVIS_OS_NAME=linux
|
|
TRAVIS_COMPILER_NAME=gcc
|
|
TRAVIS_BUILD_SYSTEM=mymake
|
|
HYPERROGUE_USE_GLEW=1
|
|
HYPERROGUE_USE_PNG=1
|
|
HYPERROGUE_USE_ROGUEVIZ=1
|
|
- os: osx # OSX, mymake
|
|
osx_image: xcode11.4
|
|
compiler: clang
|
|
env: >-
|
|
TRAVIS_OS_NAME=osx
|
|
TRAVIS_COMPILER_NAME=clang
|
|
TRAVIS_BUILD_SYSTEM=mymake
|
|
HYPERROGUE_USE_GLEW=1
|
|
HYPERROGUE_USE_PNG=1
|
|
- os: osx # OSX, mymake, Rogueviz
|
|
osx_image: xcode11.3
|
|
compiler: clang
|
|
env: >-
|
|
TRAVIS_OS_NAME=osx
|
|
TRAVIS_COMPILER_NAME=clang
|
|
TRAVIS_BUILD_SYSTEM=mymake
|
|
HYPERROGUE_USE_GLEW=1
|
|
HYPERROGUE_USE_PNG=1
|
|
HYPERROGUE_USE_ROGUEVIZ=1
|
|
- os: linux # Emscripten
|
|
env: >-
|
|
TRAVIS_OS_NAME=linux
|
|
TRAVIS_COMPILER_NAME=emscripten
|
|
TRAVIS_BUILD_SYSTEM=emscripten
|
|
|
|
before_install:
|
|
- |-
|
|
# Install SDL
|
|
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
|
|
sudo apt-get update -qq
|
|
sudo apt-get install -qq libsdl1.2-dev libsdl-gfx1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev
|
|
elif [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
|
brew update
|
|
brew install sdl sdl_gfx sdl_mixer sdl_ttf
|
|
# work around https://stackoverflow.com/questions/51034399/ for now
|
|
(cd /usr/local/include && ln -sf SDL/SDL.h)
|
|
else
|
|
exit 'Unsupported OS'
|
|
fi
|
|
- |-
|
|
# Install GLEW if asked for
|
|
if [[ "$HYPERROGUE_USE_GLEW" == "1" ]]; then
|
|
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
|
|
sudo apt-get install -qq libglew-dev
|
|
elif [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
|
brew install glew
|
|
else
|
|
exit 'Unsupported OS'
|
|
fi
|
|
fi
|
|
- |-
|
|
# Install libpng if asked for
|
|
if [[ "$HYPERROGUE_USE_PNG" == "1" ]]; then
|
|
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
|
|
echo 'libpng is installed by default'
|
|
elif [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
|
brew install libpng
|
|
else
|
|
exit 'Unsupported OS'
|
|
fi
|
|
fi
|
|
- |-
|
|
# Install autotools if asked for
|
|
if [[ "$TRAVIS_USE_AUTOTOOLS" == "1" ]]; then
|
|
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
|
|
echo 'autotools is installed by default'
|
|
elif [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
|
brew install automake
|
|
else
|
|
exit 'Unsupported OS'
|
|
fi
|
|
fi
|
|
|
|
script:
|
|
- |-
|
|
make -f Makefile.simple clean
|
|
if [[ "$(git status --porcelain)" ]]; then
|
|
git status
|
|
exit 'A build artifact was committed; git rm it and try again'
|
|
fi
|
|
- |-
|
|
# Build hyperrogue.
|
|
if [[ "$TRAVIS_BUILD_SYSTEM" == "autotools" ]]; then
|
|
autoreconf -vi
|
|
./configure CXXFLAGS="-W -Wall -Wextra -Werror -Wno-unused-parameter -Wno-maybe-uninitialized -Wno-unknown-warning-option"
|
|
make
|
|
elif [[ "$TRAVIS_BUILD_SYSTEM" == "Makefile" ]]; then
|
|
make -f Makefile.simple
|
|
elif [[ "$TRAVIS_BUILD_SYSTEM" == "mymake" ]]; then
|
|
make -f Makefile.simple mymake
|
|
if [[ "$HYPERROGUE_USE_ROGUEVIZ" == "1" ]]; then
|
|
./mymake -rv
|
|
else
|
|
./mymake
|
|
fi
|
|
mv hyper hyperrogue
|
|
elif [[ "$TRAVIS_BUILD_SYSTEM" == "emscripten" ]]; then
|
|
docker run --rm -v $(pwd):/src trzeci/emscripten make -f Makefile.simple emscripten
|
|
else
|
|
exit 'Unsupported build system'
|
|
fi
|
|
- |-
|
|
# Test hyperrogue.
|
|
if [[ "$TRAVIS_BUILD_SYSTEM" == "emscripten" ]]; then
|
|
ls -lAF hyper.html hyper.js hyper.wasm
|
|
else
|
|
./hyperrogue --help
|
|
fi
|
|
- |-
|
|
if [[ "$TRAVIS_BUILD_SYSTEM" == "autotools" ]]; then
|
|
make clean
|
|
else
|
|
make -f Makefile.simple clean
|
|
fi
|
|
if [[ "$(git status --porcelain)" ]]; then
|
|
git status
|
|
exit 'make clean did not return the repository to its pre-build state'
|
|
fi
|
|
- |-
|
|
# Test "make dist". ("make distcheck" is expected to fail.)
|
|
if [[ "$TRAVIS_BUILD_SYSTEM" == "autotools" ]]; then make dist; fi
|
|
- |-
|
|
# Test "sudo make install".
|
|
if [[ "$TRAVIS_BUILD_SYSTEM" == "autotools" ]]; then sudo make install; fi
|