mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2026-01-29 09:28:15 +03:00
Seems like the build root can change and CMake rightfully gets confused at the conflicting paths, so let's just use the minutes to do this from scratch.
183 lines
5.0 KiB
YAML
183 lines
5.0 KiB
YAML
name: CI
|
|
|
|
# Only trigger workflow when code changes, or this file is changed.
|
|
# Android has a different workflow and different rules.
|
|
on:
|
|
push:
|
|
paths:
|
|
- "desktop_version/CMakeLists.txt"
|
|
- "desktop_version/src/**.cpp"
|
|
- "desktop_version/src/**.c"
|
|
- "desktop_version/src/**.h"
|
|
- "third_party/**"
|
|
- ".github/workflows/ci.yml"
|
|
pull_request:
|
|
paths:
|
|
- "desktop_version/CMakeLists.txt"
|
|
- "desktop_version/src/**.cpp"
|
|
- "desktop_version/src/**.c"
|
|
- "desktop_version/src/**.h"
|
|
- "third_party/**"
|
|
- ".github/workflows/ci.yml"
|
|
|
|
permissions:
|
|
contents: read
|
|
statuses: write
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
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
|
|
HOMEBREW_NO_ENV_HINTS: 1 # Suppress brew update hints
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
|
|
- name: Cache Homebrew packages
|
|
id: cache-brew
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
/usr/local/Cellar/ninja
|
|
/usr/local/Cellar/sdl2
|
|
/usr/local/opt/sdl2 # Symlink often used
|
|
key: ${{ runner.os }}-brew-${{ hashFiles('/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/ninja.rb', '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/sdl2.rb') }} # Using hash of formula files if available, or a fixed key for simplicity if not easily determined
|
|
|
|
- name: Install dependencies
|
|
if: steps.cache-brew.outputs.cache-hit != 'true'
|
|
run: brew install ninja sdl2
|
|
|
|
- name: CMake configure (default version)
|
|
run: |
|
|
mkdir -p ${SRC_DIR_PATH}/build && cd ${SRC_DIR_PATH}/build
|
|
cmake -G Ninja ..
|
|
- 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
|
|
|
|
build-lin:
|
|
name: Build (Steam Linux Runtime Sniper)
|
|
|
|
runs-on: ubuntu-latest
|
|
container: registry.gitlab.steamos.cloud/steamrt/sniper/sdk:beta
|
|
env:
|
|
CONTAINER_IMAGE_TAG: beta
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
|
|
- name: CMake configure (default version)
|
|
run: |
|
|
mkdir -p ${SRC_DIR_PATH}/build && cd ${SRC_DIR_PATH}/build
|
|
cmake -G Ninja ..
|
|
- name: Build (default version)
|
|
run: ninja -C ${SRC_DIR_PATH}/build
|
|
|
|
- name: CMake configure (official)
|
|
run: |
|
|
cd ${SRC_DIR_PATH}/build
|
|
cmake -G Ninja -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 -G Ninja -DOFFICIAL_BUILD=OFF -DMAKEANDPLAY=ON ..
|
|
- name: Build (M&P)
|
|
run: ninja -C ${SRC_DIR_PATH}/build
|
|
|
|
build-win:
|
|
name: Build (windows-latest)
|
|
|
|
runs-on: windows-latest
|
|
|
|
env:
|
|
SDL_VERSION: 2.26.0
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
|
|
- name: Cache SDL
|
|
id: cache-windows-sdl
|
|
uses: actions/cache@v3
|
|
env:
|
|
cache-name: cache-sdl
|
|
with:
|
|
path: C:\SDL2-*
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.SDL_VERSION }}
|
|
|
|
- if: ${{ steps.cache-windows-sdl.outputs.cache-hit != 'true' }}
|
|
name: Download SDL if not cached
|
|
run: |
|
|
Invoke-WebRequest "https://github.com/libsdl-org/SDL/releases/download/release-$env:SDL_VERSION/SDL2-devel-$env:SDL_VERSION-VC.zip" -OutFile C:\SDL.zip
|
|
Expand-Archive C:\SDL.zip -DestinationPath C:\
|
|
|
|
- name: CMake initial configure/generate
|
|
run: |
|
|
mkdir $env:SRC_DIR_PATH/build
|
|
cd $env:SRC_DIR_PATH/build
|
|
$env:LDFLAGS = "/LIBPATH:C:\SDL2-$env:SDL_VERSION\lib\x86 "
|
|
cmake -G "Visual Studio 17 2022" -A Win32 `
|
|
-DSDL2_INCLUDE_DIRS="C:\SDL2-$env:SDL_VERSION\include" `
|
|
-DSDL2_LIBRARIES="SDL2;SDL2main" ..
|
|
|
|
- name: CMake configure (default version)
|
|
run: |
|
|
cd $env:SRC_DIR_PATH/build
|
|
cmake ..
|
|
- name: Build (default version)
|
|
run: |
|
|
cd $env:SRC_DIR_PATH/build
|
|
cmake --build .
|
|
|
|
- name: CMake configure (official)
|
|
run: |
|
|
cd $env:SRC_DIR_PATH/build
|
|
cmake -DOFFICIAL_BUILD=ON ..
|
|
- name: Build (official)
|
|
run: |
|
|
cd $env:SRC_DIR_PATH/build
|
|
cmake --build .
|
|
|
|
- name: CMake configure (M&P)
|
|
run: |
|
|
cd $env:SRC_DIR_PATH/build
|
|
cmake -DOFFICIAL_BUILD=OFF -DMAKEANDPLAY=ON ..
|
|
- name: Build (M&P)
|
|
run: |
|
|
cd $env:SRC_DIR_PATH/build
|
|
cmake --build .
|