1
0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-06-29 07:58:30 +02:00
VVVVVV/.github/workflows/ci.yml
Misa 23f91005d6 Windows CI build: Ditch vcpkg
This replaces vcpkg with simply downloading the pre-compiled
dependencies from official upstream releases. The rationale is that
vcpkg is sometimes really slow to update to the latest SDL version when
it releases, and also that it requires the runner to compile SDL every
single time it's instantiated, which is slow and wasteful.

Instead, download the pre-compiled binaries of SDL from its release page
on GitHub. This way, we don't have to compile it ourselves, and we
aren't waiting on vcpkg whenever SDL releases a new version. And for
good measure, cache it so we aren't downloading it _every_ time, which
is even more efficient.

The same can't be done for SDL_mixer, though, because it doesn't have a
GitHub release page with pre-compiled binaries. Instead, we'll download
them from libsdl.org, which is an infrastructure that takes more strain
than if we used GitHub instead. But, it shouldn't matter anyways,
because we cahe this too. And we are going to ditch SDL_mixer for FAudio
in 2.4 anyways, so it's a moot point either way.
2022-02-11 23:49:02 -08:00

202 lines
5.5 KiB
YAML

name: CI
# Trigger this workflow on push or pull request
on: [push, pull_request]
env:
SRC_DIR_PATH: desktop_version
jobs:
build-mac:
name: Build (macos-latest)
runs-on: macos-latest
env:
CXXFLAGS: -I/usr/local/include/SDL2
LDFLAGS: -L/usr/local/lib
steps:
- uses: actions/checkout@v1
- name: Install dependencies
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-lin:
name: Build (CentOS 7)
runs-on: ubuntu-latest
container: ghcr.io/infoteddy/vvvvvv-build@sha256:edb1636c49386d0f929722cd0d8a618d897d23af33c754f2b0d3593ceb994629
env:
CXXFLAGS: -I/usr/local/include/SDL2
LDFLAGS: -L/usr/local/lib
steps:
- uses: actions/checkout@v1
- name: CMake configure (default version)
run: |
mkdir ${SRC_DIR_PATH}/build && cd ${SRC_DIR_PATH}/build
cmake ..
- name: Build (default version)
run: make -j $(nproc) -C ${SRC_DIR_PATH}/build
- name: CMake configure (official)
run: |
cd ${SRC_DIR_PATH}/build
cmake -DOFFICIAL_BUILD=ON ..
- name: Build (official)
run: |
make -j $(nproc) -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: make -j $(nproc) -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: make -j $(nproc) -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: make -j $(nproc) -C ${SRC_DIR_PATH}/build
build-win:
name: Build (windows-latest)
runs-on: windows-latest
env:
SDL_VERSION: 2.0.20
SDL_MIXER_VERSION: 2.0.4
steps:
- uses: actions/checkout@v1
- name: Cache SDL
uses: actions/cache@v2
env:
cache-name: cache-sdl
with:
path: C:\SDL
key: ${{ runner.os }}-build-${{ env.cache-name }}
- name: Cache SDL_mixer
uses: actions/cache@v2
env:
cache-name: cache-sdl-mixer
with:
path: C:\SDL_mixer
key: ${{ runner.os }}-build-${{ env.cache-name }}
- name: Download SDL if not cached
run: |
if (-Not (Test-Path C:\SDL))
{
Invoke-WebRequest "https://github.com/libsdl-org/SDL/releases/download/release-$env:SDL_VERSION/SDL2-devel-$env:SDL_VERSION-VC.zip" -o C:\SDL.zip
Expand-Archive C:\SDL.zip -DestinationPath C:\
}
- name: Download SDL_mixer if not cached
run: |
if (-Not (Test-Path C:\SDL_mixer))
{
Invoke-WebRequest "https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-devel-$env:SDL_MIXER_VERSION-VC.zip" -o C:\SDL_mixer.zip
Expand-Archive C:\SDL_mixer.zip -DestinationPath C:\
}
- name: CMake configure (default version)
run: |
cd $env:SRC_DIR_PATH
$env:LDFLAGS = "/LIBPATH:C:\SDL2-$env:SDL_VERSION\lib\x86 "
$env:LDFLAGS += "/LIBPATH:C:\SDL2_mixer-$env:SDL_MIXER_VERSION\lib\x86"
cmake -G "Visual Studio 16 2019" -A Win32 `
-DSDL2_INCLUDE_DIRS="C:\SDL2-$env:SDL_VERSION\include;C:\SDL2_mixer-$env:SDL_MIXER_VERSION\include" `
-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 .