Skip to content

Commit

Permalink
Major CI Revamp.
Browse files Browse the repository at this point in the history
- Linux builds now use Steam Linux Runtime
- MinGW builds now use Fedora
- Dramatically reduce binary blob downloads in favor of repositories
- Filled in some missing SDL2/SDL3 workflows
  • Loading branch information
flibitijibibo committed Jan 24, 2025
1 parent e0c00c3 commit de1c6b6
Showing 1 changed file with 93 additions and 108 deletions.
201 changes: 93 additions & 108 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,47 +4,27 @@ on: [push, pull_request]

env:
SDL2_VERSION: 2.30.11
SDL3_VERSION: 3.1.8
SDL3_VERSION: 3.2.0

jobs:
linux:
name: Rocky Linux
name: Steam Linux Runtime (SDL2)
runs-on: ubuntu-latest
container:
image: rockylinux/rockylinux:8
image: registry.gitlab.steamos.cloud/steamrt/sniper/sdk
steps:
- name: Are we really on Rocky Linux?
run: cat /etc/os-release

- name: Install dependencies
run: |
dnf update -y
dnf install -y epel-release
crb enable
dnf install -y chrpath cmake gcc-c++ git ninja-build
- uses: actions/checkout@v4
with:
submodules: true

- name: Clone SDL2
run: git clone --depth 1 --branch release-$SDL2_VERSION https://github.com/libsdl-org/SDL.git

- name: Build SDL2 (Debug)
run: |
cd SDL
cmake -B build -G Ninja . -DCMAKE_BUILD_TYPE=Release
ninja -C build
cd ..
- name: CMake configure (Debug)
run: cmake -B debug -G Ninja . -DCMAKE_BUILD_TYPE=Debug -DSDL2_INCLUDE_DIRS=${GITHUB_WORKSPACE}/SDL/include -DSDL2_LIBRARIES=${GITHUB_WORKSPACE}/SDL/build/libSDL2-2.0.so
run: cmake -B debug -G Ninja . -DCMAKE_BUILD_TYPE=Debug

- name: Build (Debug)
run: ninja -C debug

- name: CMake configure (Release)
run: cmake -B release -G Ninja . -DCMAKE_BUILD_TYPE=Release -DSDL2_INCLUDE_DIRS=${GITHUB_WORKSPACE}/SDL/include -DSDL2_LIBRARIES=${GITHUB_WORKSPACE}/SDL/build/libSDL2-2.0.so
run: cmake -B release -G Ninja . -DCMAKE_BUILD_TYPE=Release

- name: Build (Release)
run: |
Expand All @@ -59,40 +39,27 @@ jobs:
path: release/libFNA3D.so.0

linux-ppc:
name: Debian Linux PPC
name: Debian Linux PPC (SDL2)
runs-on: ubuntu-latest
container:
image: dockcross/linux-ppc:latest
steps:
- name: Are we really on Debian Linux?
run: cat /etc/os-release

- name: Install dependencies
run: |
apt install -y chrpath
apt install -y chrpath libsdl2-dev
- uses: actions/checkout@v4
with:
submodules: true

- name: Clone SDL2
run: git clone --depth 1 --branch release-$SDL2_VERSION https://github.com/libsdl-org/SDL.git

- name: Build SDL2 (Debug)
run: |
cd SDL
cmake -B build -G Ninja . -DCMAKE_BUILD_TYPE=Release
ninja -C build
cd ..
- name: CMake configure (Debug)
run: cmake -B debug -G Ninja . -DCMAKE_BUILD_TYPE=Debug -DSDL2_INCLUDE_DIRS=${GITHUB_WORKSPACE}/SDL/include -DSDL2_LIBRARIES=${GITHUB_WORKSPACE}/SDL/build/libSDL2-2.0.so
run: cmake -B debug -G Ninja . -DCMAKE_BUILD_TYPE=Debug

- name: Build (Debug)
run: ninja -C debug

- name: CMake configure (Release)
run: cmake -B release -G Ninja . -DCMAKE_BUILD_TYPE=Release -DSDL2_INCLUDE_DIRS=${GITHUB_WORKSPACE}/SDL/include -DSDL2_LIBRARIES=${GITHUB_WORKSPACE}/SDL/build/libSDL2-2.0.so
run: cmake -B release -G Ninja . -DCMAKE_BUILD_TYPE=Release

- name: Build (Release)
run: |
Expand All @@ -107,38 +74,28 @@ jobs:


linux-mingw:
name: Rocky Linux MinGW
name: Fedora Linux MinGW (SDL2)
runs-on: ubuntu-latest
container:
image: rockylinux/rockylinux:9
image: fedora/fedora:latest
steps:
- name: Are we really on Rocky Linux?
run: cat /etc/os-release

- name: Install dependencies
run: |
dnf update -y
dnf install -y epel-release
crb enable
dnf install -y git cmake ninja-build mingw32-gcc mingw64-gcc
dnf install -y git cmake ninja-build mingw32-gcc mingw64-gcc mingw32-SDL2 mingw64-SDL2
- uses: actions/checkout@v4
with:
submodules: true

- name: Download SDL
run: |
curl -LO https://github.com/libsdl-org/SDL/releases/download/release-$SDL2_VERSION/SDL2-devel-$SDL2_VERSION-mingw.tar.gz
tar -xvf SDL2-devel-$SDL2_VERSION-mingw.tar.gz -C ${GITHUB_WORKSPACE}
- name: CMake configure 32-bit (Release)
run: mingw32-cmake -B release-x86 -G Ninja . -DCMAKE_BUILD_TYPE=Release -DSDL2_LIBRARIES=${GITHUB_WORKSPACE}/SDL2-$SDL2_VERSION/i686-w64-mingw32/bin/SDL2.dll -DSDL2_INCLUDE_DIRS=${GITHUB_WORKSPACE}/SDL2-$SDL2_VERSION/i686-w64-mingw32/include/SDL2
run: mingw32-cmake -B release-x86 -G Ninja . -DCMAKE_BUILD_TYPE=Release

- name: Build 32-bit (Release)
run: ninja -C release-x86

- name: CMake configure 64-bit (Release)
run: mingw64-cmake -B release-x64 -G Ninja . -DCMAKE_BUILD_TYPE=Release -DSDL2_LIBRARIES=${GITHUB_WORKSPACE}/SDL2-$SDL2_VERSION/x86_64-w64-mingw32/bin/SDL2.dll -DSDL2_INCLUDE_DIRS=${GITHUB_WORKSPACE}/SDL2-$SDL2_VERSION/x86_64-w64-mingw32/include/SDL2
run: mingw64-cmake -B release-x64 -G Ninja . -DCMAKE_BUILD_TYPE=Release

- name: Build 64-bit (Release)
run: ninja -C release-x64
Expand All @@ -156,7 +113,7 @@ jobs:
path: release-x64/FNA3D.dll

macos:
name: macOS (x86_64)
name: macOS (x86_64) (SDL2)
runs-on: macos-13
env:
CXXFLAGS: -I/usr/local/include/SDL2
Expand Down Expand Up @@ -190,7 +147,7 @@ jobs:
path: release/libFNA3D.0.dylib

windows-msvc:
name: Windows (MSVC)
name: Windows MSVC (SDL2)
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -236,8 +193,8 @@ jobs:
run: cmake --build release

freebsd:
name: FreeBSD (SDL2)
runs-on: ubuntu-latest
name: FreeBSD
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -254,35 +211,15 @@ jobs:
cmake --build build --verbose -- -j`sysctl -n hw.ncpu`
linux-SDL3:
name: Rocky Linux SDL3
name: Steam Linux Runtime (SDL3)
runs-on: ubuntu-latest
container:
image: rockylinux/rockylinux:8
image: registry.gitlab.steamos.cloud/steamrt/sniper/sdk
steps:
- name: Are we really on Rocky Linux?
run: cat /etc/os-release

- name: Install dependencies
run: |
dnf update -y
dnf install -y epel-release
crb enable
dnf install -y chrpath cmake gcc git ninja-build
- uses: actions/checkout@v4
with:
submodules: true

- name: Clone SDL3
run: git clone --depth 1 --branch preview-$SDL3_VERSION https://github.com/libsdl-org/SDL.git

- name: Build SDL3 (Debug)
run: |
cd SDL
cmake -B debug -G Ninja . -DCMAKE_BUILD_TYPE=Debug -DSDL_UNIX_CONSOLE_BUILD=ON
ninja -C debug
cd ..
- name: CMake configure (Debug)
run: cmake -B debug -G Ninja . -DCMAKE_BUILD_TYPE=Debug -DBUILD_SDL3=ON -DSDL3_DIR=${GITHUB_WORKSPACE}/SDL/debug

Expand All @@ -305,14 +242,11 @@ jobs:
path: release/libFNA3D.so.0

linux-ppc-SDL3:
name: Debian Linux PPC SDL3
name: Debian Linux PPC (SDL3)
runs-on: ubuntu-latest
container:
image: dockcross/linux-ppc:latest
steps:
- name: Are we really on Debian Linux?
run: cat /etc/os-release

- name: Install dependencies
run: |
apt install -y chrpath
Expand Down Expand Up @@ -352,41 +286,28 @@ jobs:
path: release/libFNA3D.so.0

linux-mingw-SDL3:
name: Rocky Linux MinGW SDL3
name: Fedora Linux MinGW (SDL3)
runs-on: ubuntu-latest
container:
image: rockylinux/rockylinux:9
image: fedora/fedora:latest
steps:
- name: Are we really on Rocky Linux?
run: cat /etc/os-release

- name: Install dependencies
run: |
dnf update -y
dnf install -y epel-release
crb enable
dnf install -y git cmake ninja-build mingw32-gcc mingw64-gcc
dnf install -y git cmake ninja-build mingw32-gcc mingw64-gcc mingw32-SDL3 mingw64-SDL3
- uses: actions/checkout@v4
with:
submodules: true

- name: Download SDL
run: |
curl -LO https://github.com/libsdl-org/SDL/releases/download/preview-$SDL3_VERSION/SDL3-devel-$SDL3_VERSION-mingw.tar.gz
tar -xvf SDL3-devel-$SDL3_VERSION-mingw.tar.gz -C ${GITHUB_WORKSPACE}
- name: CMake configure 32-bit (Release)
run: mingw32-cmake -B release-x86 -G Ninja . -DBUILD_SDL3=ON -DCMAKE_BUILD_TYPE=Release -DSDL3_LIBRARIES=${GITHUB_WORKSPACE}/SDL3-$SDL3_VERSION/i686-w64-mingw32/bin/SDL3.dll -DSDL3_INCLUDE_DIRS=${GITHUB_WORKSPACE}/SDL3-$SDL3_VERSION/i686-w64-mingw32/include
run: mingw32-cmake -B release-x86 -G Ninja . -DCMAKE_BUILD_TYPE=Release

- name: Build 32-bit (Release)
run: ninja -C release-x86

- name: CMake configure 64-bit (Release)
run: mingw64-cmake -B release-x64 -G Ninja . -DBUILD_SDL3=ON -DCMAKE_BUILD_TYPE=Release -DSDL3_LIBRARIES=${GITHUB_WORKSPACE}/SDL3-$SDL3_VERSION/x86_64-w64-mingw32/bin/SDL3.dll -DSDL3_INCLUDE_DIRS=${GITHUB_WORKSPACE}/SDL3-$SDL3_VERSION/x86_64-w64-mingw32/include

- name: Build 64-bit (Release)
run: ninja -C release-x64
run: mingw64-cmake -B release-x64 -G Ninja . -DCMAKE_BUILD_TYPE=Release

- name: Archive build result 32-bit
uses: actions/upload-artifact@v4
Expand All @@ -401,7 +322,7 @@ jobs:
path: release-x64/FNA3D.dll

macos-SDL3:
name: macOS (Universal) SDL3
name: macOS (Universal) (SDL3)
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
Expand All @@ -410,7 +331,7 @@ jobs:

# This can be replaced by installing once brew ships SDL3
- name: Clone SDL3
run: git clone --depth 1 --branch preview-$SDL3_VERSION https://github.com/libsdl-org/SDL.git
run: git clone --depth 1 --branch release-$SDL3_VERSION https://github.com/libsdl-org/SDL.git

- name: Install dependencies
run: brew install ninja
Expand Down Expand Up @@ -441,7 +362,7 @@ jobs:
path: release/libFNA3D.0.dylib

ios-tvos-SDL3:
name: iOS/tvOS SDL3
name: iOS/tvOS (SDL3)
runs-on: macos-latest
strategy:
matrix:
Expand All @@ -465,7 +386,7 @@ jobs:

# This can be replaced by installing once brew ships SDL3
- name: Clone SDL3
run: git clone --depth 1 --branch preview-$SDL3_VERSION https://github.com/libsdl-org/SDL.git
run: git clone --depth 1 --branch release-$SDL3_VERSION https://github.com/libsdl-org/SDL.git

- name: Install dependencies
run: brew install ninja
Expand Down Expand Up @@ -494,3 +415,67 @@ jobs:
with:
name: FNA3D-SDL3-${{ matrix.sdk }}
path: release/*.a

windows-msvc-sdl3:
name: Windows MSVC (SDL3)
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true

- name: Cache SDL
uses: actions/cache@v4
env:
cache-name: cache-sdl
with:
path: C:\SDL
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:SDL3_VERSION/SDL3-devel-$env:SDL3_VERSION-VC.zip" -OutFile C:\SDL.zip
Expand-Archive C:\SDL.zip -DestinationPath C:\
}
- name: CMake configure (Debug)
run: |
$env:LDFLAGS = "/LIBPATH:C:\SDL3-$env:SDL3_VERSION\lib\x86 "
cmake -B debug -G "Visual Studio 17 2022" . -DCMAKE_BUILD_TYPE=Debug `
-A Win32 `
-DSDL3_INCLUDE_DIRS="C:\SDL3-$env:SDL3_VERSION\include" `
-DSDL3_LIBRARIES="SDL3"
- name: Build (Debug)
run: cmake --build debug

- name: CMake configure (Release)
run: |
$env:LDFLAGS = "/LIBPATH:C:\SDL3-$env:SDL3_VERSION\lib\x86 "
cmake -B release -G "Visual Studio 17 2022" . -DCMAKE_BUILD_TYPE=Release `
-A Win32 `
-DSDL3_INCLUDE_DIRS="C:\SDL3-$env:SDL3_VERSION\include" `
-DSDL3_LIBRARIES="SDL3"
- name: Build (Release)
run: cmake --build release

freebsd-sdl3:
name: FreeBSD (SDL3)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Build
uses: cross-platform-actions/[email protected]
with:
operating_system: freebsd
version: '14.2'
run: |
sudo pkg update
sudo pkg install -y cmake ninja sdl3
cmake -B build -G Ninja .
cmake --build build --verbose -- -j`sysctl -n hw.ncpu`

0 comments on commit de1c6b6

Please sign in to comment.