Descent3/.github/workflows/build.yml
Ryan C. Gordon ff571ed7dd
Make sure Mac and Linux builds have SDL2 available.
Currently Windows gets this from vcpkg. Mac will get it from Homebrew,
and the GitHub linux builders will just install it with apt-get.

This might not be the perfect solution (having to install Homebrew is a pain,
GitHub Actions has an ancient SDL2), but it gets all the common platforms
running for now without much fuss.
2024-05-02 08:30:46 -04:00

90 lines
2.5 KiB
YAML

name: Descent 3 Build
on:
workflow_dispatch:
push:
branches: [ "main" ]
paths-ignore:
- '**/README.md'
- '**/LICENSE'
- '**/.github/**'
pull_request:
branches: [ "main" ]
paths-ignore:
- '**/README.md'
- '**/LICENSE'
- '**/.github/**'
jobs:
build:
name: ${{ matrix.os.runner }}, ${{ matrix.os.cxx }}, ${{ matrix.build_type }}
strategy:
fail-fast: false
matrix:
os:
- runner: windows-latest
preset: win
cc: cl
cxx: cl
name: Windows-x86
- runner: macos-12 # This is supposed to be Intel for now, and what macos-latest is defaulting to for some reason (as of 04/2024)
preset: mac
cc: cc
cxx: c++
name: macOS-Intel
- runner: macos-14 # This is supposed to be M1
preset: mac
cc: cc
cxx: c++
name: macOS-ARM
- runner: ubuntu-latest
preset: linux
cc: gcc
cxx: g++
name: Linux-x64
- runner: ubuntu-latest
preset: linux
cc: clang
cxx: clang++
name: Linux-x64-clang
build_type:
- Debug
- Release
runs-on: ${{ matrix.os.runner }}
steps:
- uses: actions/checkout@v4
- name: Install macOS dependencies
if: ${{ matrix.os.preset == 'mac' }}
run: |
# Install packages from Homebrew
brew bundle install
- name: Install Linux dependencies
if: ${{ matrix.os.preset == 'linux' }}
run: |
sudo apt update
sudo apt install -y --no-install-recommends \
ninja-build cmake g++ libgtest-dev libsdl2-dev libncurses-dev zlib1g-dev libspdlog-dev
- name: Configure CMake
env:
CC: ${{ matrix.os.cc }}
CXX: ${{ matrix.os.cxx }}
VCPKG_ROOT: C:/vcpkg
run: cmake --preset ${{ matrix.os.preset }} -DBUILD_TESTING=ON
- name: Build ${{ matrix.build_type }}
run: cmake --build --preset ${{ matrix.os.preset }} --config ${{ matrix.build_type }} --verbose
- name: Run ${{ matrix.build_type }} Unittests
run: ctest --preset ${{ matrix.os.preset }} -C ${{ matrix.build_type }}
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: Descent3_${{ matrix.build_type }}_${{ matrix.os.name }}
path: ${{ github.workspace }}/builds/${{ matrix.os.preset }}/Descent3/${{ matrix.build_type }}/