Skip to content

Commit

Permalink
Add SDL3 to CI and upload build artifacts
Browse files Browse the repository at this point in the history
  • Loading branch information
thatcosmonaut committed Oct 16, 2024
1 parent 370171c commit a9343b5
Show file tree
Hide file tree
Showing 3 changed files with 220 additions and 13 deletions.
14 changes: 14 additions & 0 deletions .github/mingw-w64-i686.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
set(CMAKE_SYSTEM_NAME Windows)
set(TOOLCHAIN_PREFIX i686-w64-mingw32)

# cross compilers to use for C/C++
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)

# target environment on the build host system
set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})

# modify default behavior of FIND_XXX() commands
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
14 changes: 14 additions & 0 deletions .github/mingw-w64-x86_64.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
set(CMAKE_SYSTEM_NAME Windows)
set(TOOLCHAIN_PREFIX x86_64-w64-mingw32)

# cross compilers to use for C/C++
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)

# target environment on the build host system
set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})

# modify default behavior of FIND_XXX() commands
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
205 changes: 192 additions & 13 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,16 @@ name: CI

on: [push, pull_request]

env:
SDL2_VERSION: 2.30.8
SDL3_VERSION: 3.1.3

jobs:
linux:
name: Linux
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: true

Expand All @@ -29,14 +33,20 @@ jobs:
- name: Build (Release)
run: ninja -C release

- name: Archive build result
uses: actions/upload-artifact@v4
with:
name: FAudio-SDL2-lib64
path: release/libFAudio.so.0

macos:
name: macOS (CMake)
runs-on: macos-latest
env:
CXXFLAGS: -I/usr/local/include/SDL2
LDFLAGS: -L/usr/local/lib
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: true

Expand All @@ -55,18 +65,22 @@ jobs:
- name: Build (Release)
run: ninja -C release

- name: Archive build result
uses: actions/upload-artifact@v4
with:
name: FAudio-SDL2-osx
path: release/libFAudio.0.dylib

windows-msvc:
name: Windows (MSVC)
runs-on: windows-latest
env:
SDL_VERSION: 2.26.0
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: true

- name: Cache SDL
uses: actions/cache@v2
uses: actions/cache@v4
env:
cache-name: cache-sdl
with:
Expand All @@ -77,27 +91,27 @@ jobs:
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" -OutFile C:\SDL.zip
Invoke-WebRequest "/~https://github.com/libsdl-org/SDL/releases/download/release-$env:SDL2_VERSION/SDL2-devel-$env:SDL2_VERSION-VC.zip" -OutFile C:\SDL.zip
Expand-Archive C:\SDL.zip -DestinationPath C:\
}
- name: CMake configure (Debug)
run: |
$env:LDFLAGS = "/LIBPATH:C:\SDL2-$env:SDL_VERSION\lib\x86 "
$env:LDFLAGS = "/LIBPATH:C:\SDL2-$env:SDL2_VERSION\lib\x86 "
cmake -B debug -G "Visual Studio 17 2022" . -DCMAKE_BUILD_TYPE=Debug `
-A Win32 `
-DSDL2_INCLUDE_DIRS="C:\SDL2-$env:SDL_VERSION\include" `
-DSDL2_INCLUDE_DIRS="C:\SDL2-$env:SDL2_VERSION\include" `
-DSDL2_LIBRARIES="SDL2;SDL2main"
- name: Build (Debug)
run: cmake --build debug

- name: CMake configure (Release)
run: |
$env:LDFLAGS = "/LIBPATH:C:\SDL2-$env:SDL_VERSION\lib\x86 "
$env:LDFLAGS = "/LIBPATH:C:\SDL2-$env:SDL2_VERSION\lib\x86 "
cmake -B release -G "Visual Studio 17 2022" . -DCMAKE_BUILD_TYPE=Release `
-A Win32 `
-DSDL2_INCLUDE_DIRS="C:\SDL2-$env:SDL_VERSION\include" `
-DSDL2_INCLUDE_DIRS="C:\SDL2-$env:SDL2_VERSION\include" `
-DSDL2_LIBRARIES="SDL2;SDL2main"
- name: Build (Release)
Expand All @@ -110,7 +124,7 @@ jobs:
run:
shell: msys2 {0}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: true

Expand Down Expand Up @@ -153,7 +167,7 @@ jobs:
runs-on: ubuntu-latest
name: FreeBSD
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: true
- name: Build
Expand All @@ -166,3 +180,168 @@ jobs:
sudo pkg install -y cmake ninja sdl2
cmake -B build -G Ninja .
cmake --build build --verbose -- -j`sysctl -n hw.ncpu`
linux-mingw:
name: Linux MinGW
runs-on: ubuntu-latest
steps:
- 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: Install dependencies
run: |
sudo apt-get update
sudo apt-get install ninja-build mingw-w64
- name: CMake configure 32-bit (Release)
run: cmake -B release-x86 -G Ninja . -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=.github/mingw-w64-i686.cmake -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

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

- name: CMake configure 64-bit (Release)
run: cmake -B release-x64 -G Ninja . -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=.github/mingw-w64-x86_64.cmake -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

- name: Build 64-bit (Release)
run: ninja -C release-x64

- name: Archive build result 32-bit
uses: actions/upload-artifact@v4
with:
name: FAudio-SDL2-x86
path: release-x86/FAudio.dll

- name: Archive build result 64-bit
uses: actions/upload-artifact@v4
with:
name: FAudio-SDL2-x64
path: release-x64/FAudio.dll

linux-SDL3:
name: Linux SDL3
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true

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

- name: Install dependencies
run: |
sudo apt-get install ninja-build
- name: Build SDL3 (Release)
run: |
cd SDL
cmake -B release -G Ninja . -DCMAKE_BUILD_TYPE=Release
ninja -C release
cd ..
- name: CMake configure (Debug)
run: cmake -B debug -G Ninja . -DCMAKE_BUILD_TYPE=Debug -DBUILD_SDL3=ON -DSDL3_INCLUDE_DIRS=${GITHUB_WORKSPACE}/SDL/include -DSDL3_LIBRARIES=${GITHUB_WORKSPACE}/SDL/release/libSDL3.so

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

- name: CMake configure (Release)
run: cmake -B release -G Ninja . -DCMAKE_BUILD_TYPE=Release -DBUILD_SDL3=ON -DSDL3_INCLUDE_DIRS=${GITHUB_WORKSPACE}/SDL/include -DSDL3_LIBRARIES=${GITHUB_WORKSPACE}/SDL/release/libSDL3.so

- name: Build (Release)
run: ninja -C release

- name: Archive build result
uses: actions/upload-artifact@v4
with:
name: FAudio-SDL3-lib64
path: release/libFAudio.so.0

macos-SDL3:
name: macOS (CMake) SDL3
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true

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

- name: Install dependencies
run: brew install ninja

- name: Build SDL3 (Release)
run: |
cd SDL
cmake -B release -G Ninja . -DCMAKE_BUILD_TYPE=Release
ninja -C release
cd ..
- name: CMake configure (Debug)
run: cmake -B debug -G Ninja . -DCMAKE_BUILD_TYPE=Debug -DBUILD_SDL3=ON -DSDL3_INCLUDE_DIRS=${GITHUB_WORKSPACE}/SDL/include -DSDL3_LIBRARIES=${GITHUB_WORKSPACE}/SDL/release/libSDL3.dylib

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

- name: CMake configure (Release)
run: cmake -B release -G Ninja . -DCMAKE_BUILD_TYPE=Release -DBUILD_SDL3=ON -DSDL3_INCLUDE_DIRS=${GITHUB_WORKSPACE}/SDL/include -DSDL3_LIBRARIES=${GITHUB_WORKSPACE}/SDL/release/libSDL3.dylib

- name: Build (Release)
run: ninja -C release

- name: Archive build result
uses: actions/upload-artifact@v4
with:
name: FAudio-SDL3-osx
path: release/libFAudio.0.dylib

linux-mingw-SDL3:
name: Linux MinGW SDL3
runs-on: ubuntu-latest
steps:
- 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.xz
tar -xvf SDL3-devel-$SDL3_VERSION-mingw.tar.xz -C ${GITHUB_WORKSPACE}
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install ninja-build mingw-w64
- name: CMake configure 32-bit (Release)
run: cmake -B release-x86 -G Ninja . -DBUILD_SDL3=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=.github/mingw-w64-i686.cmake -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

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

- name: CMake configure 64-bit (Release)
run: cmake -B release-x64 -G Ninja . -DBUILD_SDL3=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=.github/mingw-w64-x86_64.cmake -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

- name: Archive build result 32-bit
uses: actions/upload-artifact@v4
with:
name: FAudio-SDL3-x86
path: release-x86/FAudio.dll

- name: Archive build result 64-bit
uses: actions/upload-artifact@v4
with:
name: FAudio-SDL3-x64
path: release-x64/FAudio.dll

0 comments on commit a9343b5

Please sign in to comment.