mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-11-05 05:36:17 +00:00
a708c10f1d
The `HYPERROGUE_USE_ROGUEVIZ=1` build now uses inline variables. So we pass `-std=c++17` in the Makefile. But GCC 5.4.0 (Travis's default system compiler on Ubuntu Xenial) doesn't recognize inline variables even in `-std=c++17` mode. Therefore, we must pass `dist: bionic` to Travis, to get it to use Ubuntu Bionic, whose system compiler is GCC 7.4.0. But we do this only for the one entry in the build matrix that builds RogueViz with GCC on Linux. Nobody else needs `dist: bionic`. The bug was that my hack to support `g++-5` accidentally prevented Travis from ever using `clang++`! So all our "Clang" builds were quietly using regular `g++` instead. This is now fixed, and in fact I've removed the `g++-5` build because its GCC 5.5.0 is not significantly different from the regular `g++` build's GCC 5.4.0. Also, add two more configurations to the build matrix. Since `HYPERROGUE_USE_ROGUEVIZ=1` now uses `-std=c++17`, we want to make sure that we run builds on every platform both with `HYPERROGUE_USE_ROGUEVIZ=1` (to prove that the RogueViz code compiles) and without (to prove that the non-RogueViz code still compiles as `-std=c++11`).
164 lines
4.3 KiB
YAML
164 lines
4.3 KiB
YAML
language: cpp
|
|
services:
|
|
- docker
|
|
matrix:
|
|
include:
|
|
- os: linux
|
|
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
|
|
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
|
|
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
|
|
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
|
|
dist: bionic
|
|
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
|
|
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
|
|
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
|
|
compiler: gcc
|
|
env: >-
|
|
TRAVIS_OS_NAME=osx
|
|
TRAVIS_COMPILER_NAME=gcc
|
|
TRAVIS_BUILD_SYSTEM=Makefile
|
|
HYPERROGUE_USE_GLEW=1
|
|
HYPERROGUE_USE_PNG=1
|
|
HYPERROGUE_USE_ROGUEVIZ=1
|
|
- os: osx
|
|
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
|
|
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:
|
|
- |-
|
|
# 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" == "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
|
|
- |-
|
|
# 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
|