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