Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 27 additions & 16 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ name: CI

on: [push, pull_request, workflow_dispatch]

permissions: {}

concurrency:
group: environment-${{github.ref}}
cancel-in-progress: true
Expand All @@ -22,10 +24,11 @@ jobs:
fail-fast: false
matrix:
platform:
- { name: Windows VS2022 x86, os: windows-2025, flags: -AWin32 }
- { name: Windows VS2022 x64, os: windows-2025, flags: -Ax64 }
- { name: Windows ClangCL, os: windows-2025, flags: -T ClangCL }
- { name: Windows Clang, os: windows-2025, flags: -GNinja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ }
- { name: Windows VS2026 x86, os: windows-2025-vs2026, flags: -AWin32 }
- { name: Windows VS2026 x64, os: windows-2025-vs2026, flags: -Ax64 }
# ClangCL is disabled until we build against SFML 3.1, the FLAC version bundled with SFML 3.0 fails to compile with VS2026's ClangCL
# - { name: Windows ClangCL, os: windows-2025-vs2026, flags: -T ClangCL }
- { name: Windows Clang, os: windows-2025-vs2026, flags: -GNinja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ }
- { name: Linux GCC, os: ubuntu-24.04, flags: -GNinja }
- { name: Linux Clang, os: ubuntu-24.04, flags: -GNinja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ }
- { name: MacOS, os: macos-15, flags: -GNinja }
Expand All @@ -40,16 +43,17 @@ jobs:
- name: Get CMake and Ninja
uses: lukka/get-cmake@latest
with:
cmakeVersion: ${{ runner.os == 'Windows' && '3.25' || '3.22' }}
cmakeVersion: ${{ runner.os == 'Windows' && '4.2' || '3.22' }} # Visual Studio 2026 generator requires CMake 4.2 or later
ninjaVersion: latest

- name: Install Linux Dependencies
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install libxrandr-dev libxcursor-dev libxi-dev libudev-dev libflac-dev libvorbis-dev libgl1-mesa-dev libegl1-mesa-dev libfreetype-dev

- name: Checkout SFML
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
persist-credentials: false
repository: SFML/SFML
ref: ${{env.SFML_VERSION}}
path: SFML
Expand All @@ -66,8 +70,9 @@ jobs:
run: cmake --build SFML/build --config ${{matrix.type.name}} --target install

- name: Checkout CSFML
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
persist-credentials: false
path: CSFML

- name: Configure CSFML CMake
Expand Down Expand Up @@ -96,7 +101,9 @@ jobs:
run: sudo apt-get install clang-format-17

- name: Checkout Code
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
persist-credentials: false

- name: Format Code
run: cmake -DCLANG_FORMAT_EXECUTABLE=clang-format-17 -P cmake/Format.cmake
Expand All @@ -112,18 +119,19 @@ jobs:
- name: Get CMake and Ninja
uses: lukka/get-cmake@latest
with:
cmakeVersion: ${{ runner.os == 'Windows' && '3.25' || '3.22' }}
cmakeVersion: ${{ runner.os == 'Windows' && '4.2' || '3.22' }} # Visual Studio 2026 generator requires CMake 4.2 or later
ninjaVersion: latest

- name: Install Dependencies
run: |
brew update
brew install llvm ninja
echo /opt/homebrew/opt/llvm/bin >> $GITHUB_PATH
brew install llvm@18 ninja
echo "$(brew --prefix llvm@18)/bin" >> $GITHUB_PATH

- name: Checkout SFML
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
persist-credentials: false
repository: SFML/SFML
ref: ${{env.SFML_VERSION}}
path: SFML
Expand All @@ -135,8 +143,9 @@ jobs:
run: cmake --build SFML/build --target install

- name: Checkout CSFML
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
persist-credentials: false
path: CSFML

- name: Configure CSFML CMake
Expand All @@ -153,7 +162,7 @@ jobs:
- name: Get CMake and Ninja
uses: lukka/get-cmake@latest
with:
cmakeVersion: ${{ runner.os == 'Windows' && '3.25' || '3.22' }}
cmakeVersion: ${{ runner.os == 'Windows' && '4.2' || '3.22' }} # Visual Studio 2026 generator requires CMake 4.2 or later
ninjaVersion: latest

- name: Install Doxygen
Expand All @@ -162,8 +171,9 @@ jobs:
brew install doxygen ninja || true

- name: Checkout SFML
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
persist-credentials: false
repository: SFML/SFML
ref: ${{env.SFML_VERSION}}
path: SFML
Expand All @@ -175,8 +185,9 @@ jobs:
run: cmake --build SFML/build --target install

- name: Checkout CSFML
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
persist-credentials: false
path: CSFML

- name: Configure CSFML
Expand Down
52 changes: 32 additions & 20 deletions .github/workflows/nuget.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ on:
- "**"
workflow_dispatch: {}

permissions: {}

concurrency:
group: nuget-${{github.ref}}
cancel-in-progress: true
Expand All @@ -19,12 +21,13 @@ env:
jobs:
windows-x86-x64:
name: Windows x86 x64
runs-on: windows-2025
runs-on: windows-2025-vs2026

steps:
- name: Checkout CSFML
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
persist-credentials: false
path: CSFML

- name: Build x86
Expand All @@ -40,19 +43,20 @@ jobs:
./build.win.ps1 "win-x64"

- name: Upload Artifact
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v7
with:
name: CSFML-win-x86-x64
path: CSFML/tools/nuget/CSFML/runtimes

windows-arm64:
name: Windows ARM64
runs-on: windows-11-arm
runs-on: windows-11-vs2026-arm

steps:
- name: Checkout CSFML
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
persist-credentials: false
path: CSFML

- name: Build ARM64
Expand All @@ -62,7 +66,7 @@ jobs:
./build.win.ps1 "win-arm64"

- name: Upload Artifact
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v7
with:
name: CSFML-win-arm64
path: CSFML/tools/nuget/CSFML/runtimes
Expand All @@ -75,8 +79,9 @@ jobs:

steps:
- name: Checkout CSFML
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
persist-credentials: false
path: CSFML

- name: Build
Expand All @@ -87,7 +92,7 @@ jobs:
./docker.linux-x64.sh

- name: Upload Artifact
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v7
with:
name: CSFML-linux-x64
path: CSFML/tools/nuget/CSFML/runtimes
Expand All @@ -98,8 +103,9 @@ jobs:

steps:
- name: Checkout CSFML
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
persist-credentials: false
path: CSFML

- name: Install dependencies & cross compiler
Expand All @@ -116,7 +122,7 @@ jobs:
./build.linux.sh linux-arm arm-linux-gnueabihf-g++ arm-linux-gnueabihf-gcc

- name: Upload Artifact
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v7
with:
name: CSFML-linux-arm
path: CSFML/tools/nuget/CSFML/runtimes
Expand All @@ -127,8 +133,9 @@ jobs:

steps:
- name: Checkout CSFML
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
persist-credentials: false
path: CSFML

- name: Install dependencies
Expand All @@ -144,7 +151,7 @@ jobs:
./build.linux.sh linux-arm64

- name: Upload Artifact
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v7
with:
name: CSFML-linux-arm64
path: CSFML/tools/nuget/CSFML/runtimes
Expand All @@ -157,8 +164,9 @@ jobs:

steps:
- name: Checkout CSFML
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
persist-credentials: false
path: CSFML

- name: Build
Expand All @@ -169,7 +177,7 @@ jobs:
./docker.linux-musl-x64.sh

- name: Upload Artifact
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v7
with:
name: CSFML-linux-musl-x64
path: CSFML/tools/nuget/CSFML/runtimes
Expand All @@ -180,8 +188,9 @@ jobs:

steps:
- name: Checkout CSFML
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
persist-credentials: false
path: CSFML

- name: Install necessary tooling
Expand All @@ -198,7 +207,7 @@ jobs:
./build.macos.sh "osx-arm64"

- name: Upload Artifact
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v7
with:
name: CSFML-macOS-x64-arm64
path: CSFML/tools/nuget/CSFML/runtimes
Expand All @@ -216,11 +225,12 @@ jobs:
- macos-x64-arm64
steps:
- name: Checkout CSFML
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
persist-credentials: false
path: CSFML
- name: Download Artifacts
uses: actions/download-artifact@v7
uses: actions/download-artifact@v8
with:
path: CSFML/tools/nuget/CSFML/runtimes
merge-multiple: true
Expand All @@ -230,15 +240,17 @@ jobs:
with:
dotnet-version: 10.0.x
- name: Enforce SDK Version
run: dotnet new globaljson --sdk-version ${{ steps.setup-dotnet.outputs.dotnet-version }} --force
env:
DOTNET_VERSION: ${{ steps.setup-dotnet.outputs.dotnet-version }}
run: dotnet new globaljson --sdk-version "$DOTNET_VERSION" --force
- name: Verify SDK Installation
run: dotnet --info
- name: Build NuGet Package
run: |
cd CSFML/tools/nuget
dotnet build --configuration Release --verbosity detailed
- name: Upload NuGet Package
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v7
with:
name: CSFML-NuGet-Package
path: CSFML/tools/nuget/CSFML/bin/Release/*.nupkg
Loading
Loading