mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2024-11-05 10:49:41 +01:00
054c24a7c2
CI builds were added to this repository on the first day it was released, and haven't really been touched since then. And since then, 2.3 has added NO_CUSTOM_LEVELS, NO_EDITOR, and OFFICIAL_BUILD builds to the CMake file. On top of the MAKEANDPLAY define already existing, this means CI coverage is a bit sparse - covering compile failures for changes made to most of the codebase, except for Steam and GOG, and not covering compile failures if certain parts of the code get stripped out. And people do forget to check for those configurations as well. These mess of configurations is kind of a wake-up call to refactor and generalize the code a bit, because we would probably be able to get rid of at least two of these (Make & Play, and no-custom-levels) by making it so custom levels behave indistinguishably from the main game. But, that's something to do in 2.4. At the very least, we should cover these in CI right now. On a small note, I had to add a MAKEANDPLAY configure option to the CMake file to be able to easily configure a Make & Play build from the CI runner. This option shouldn't really be used otherwise, so I added a note to it telling people to consider modifying MakeAndPlay.h instead.
131 lines
3.4 KiB
YAML
131 lines
3.4 KiB
YAML
name: CI
|
|
|
|
# Trigger this workflow on push or pull request
|
|
on: [push, pull_request]
|
|
|
|
env:
|
|
SRC_DIR_PATH: desktop_version
|
|
|
|
jobs:
|
|
build:
|
|
name: Build
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
env:
|
|
CXXFLAGS: -I/usr/local/include/SDL2
|
|
LDFLAGS: -L/usr/local/lib
|
|
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-18.04, macos-latest]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
|
|
- name: Install dependencies (Linux)
|
|
if: startsWith(matrix.os, 'ubuntu')
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y ninja-build libsdl2-dev libsdl2-mixer-dev
|
|
|
|
- name: Install dependencies (macOS)
|
|
if: startsWith(matrix.os, 'macos')
|
|
run: brew install ninja sdl2 sdl2_mixer
|
|
|
|
- name: CMake configure (default version)
|
|
run: |
|
|
mkdir ${SRC_DIR_PATH}/build && cd ${SRC_DIR_PATH}/build
|
|
cmake -GNinja ..
|
|
- name: Build (default version)
|
|
run: ninja -C ${SRC_DIR_PATH}/build
|
|
|
|
- name: CMake configure (official)
|
|
run: |
|
|
cd ${SRC_DIR_PATH}/build
|
|
cmake -DOFFICIAL_BUILD=ON ..
|
|
- name: Build (official)
|
|
run: |
|
|
ninja -C ${SRC_DIR_PATH}/build
|
|
|
|
- name: CMake configure (M&P)
|
|
run: |
|
|
cd ${SRC_DIR_PATH}/build
|
|
cmake -DOFFICIAL_BUILD=OFF -DMAKEANDPLAY=ON ..
|
|
- name: Build (M&P)
|
|
run: ninja -C ${SRC_DIR_PATH}/build
|
|
|
|
- name: CMake configure (no custom levels)
|
|
run: |
|
|
cd ${SRC_DIR_PATH}/build
|
|
cmake -DMAKEANDPLAY=OFF -DCUSTOM_LEVEL_SUPPORT=DISABLED ..
|
|
- name: Build (no custom levels)
|
|
run: ninja -C ${SRC_DIR_PATH}/build
|
|
|
|
- name: CMake configure (no editor)
|
|
run: |
|
|
cd ${SRC_DIR_PATH}/build
|
|
cmake -DCUSTOM_LEVEL_SUPPORT=NO_EDITOR ..
|
|
- name: Build (no editor)
|
|
run: ninja -C ${SRC_DIR_PATH}/build
|
|
|
|
build-win:
|
|
name: Build (windows-latest)
|
|
|
|
runs-on: windows-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
|
|
- name: Install dependencies (Windows)
|
|
run: |
|
|
vcpkg install sdl2 sdl2-mixer
|
|
|
|
- name: CMake configure (default version)
|
|
run: |
|
|
cd $env:SRC_DIR_PATH
|
|
$env:LDFLAGS = "/LIBPATH:$env:VCPKG_INSTALLATION_ROOT\installed\x86-windows\lib "
|
|
$env:LDFLAGS += "/LIBPATH:$env:VCPKG_INSTALLATION_ROOT\installed\x86-windows\lib\manual-link"
|
|
cmake -G "Visual Studio 16 2019" -A Win32 `
|
|
-DSDL2_INCLUDE_DIRS="$env:VCPKG_INSTALLATION_ROOT\installed\x86-windows\include\SDL2" `
|
|
-DSDL2_LIBRARIES="SDL2;SDL2main;SDL2_mixer" .
|
|
- name: Build (default version)
|
|
run: |
|
|
cd $env:SRC_DIR_PATH
|
|
cmake --build .
|
|
|
|
- name: CMake configure (official)
|
|
run: |
|
|
cd $env:SRC_DIR_PATH
|
|
cmake -DOFFICIAL_BUILD=ON .
|
|
- name: Build (official)
|
|
run: |
|
|
cd $env:SRC_DIR_PATH
|
|
cmake --build .
|
|
|
|
- name: CMake configure (M&P)
|
|
run: |
|
|
cd $env:SRC_DIR_PATH
|
|
cmake -DOFFICIAL_BUILD=OFF -DMAKEANDPLAY=ON .
|
|
- name: Build (M&P)
|
|
run: |
|
|
cd $env:SRC_DIR_PATH
|
|
cmake --build .
|
|
|
|
- name: CMake configure (no custom levels)
|
|
run: |
|
|
cd $env:SRC_DIR_PATH
|
|
cmake -DMAKEANDPLAY=OFF -DCUSTOM_LEVEL_SUPPORT=DISABLED .
|
|
- name: Build (no custom levels)
|
|
run: |
|
|
cd $env:SRC_DIR_PATH
|
|
cmake --build .
|
|
|
|
- name: CMake configure (no editor)
|
|
run: |
|
|
cd $env:SRC_DIR_PATH
|
|
cmake -DCUSTOM_LEVEL_SUPPORT=NO_EDITOR .
|
|
- name: Build (no editor)
|
|
run: |
|
|
cd $env:SRC_DIR_PATH
|
|
cmake --build .
|