diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 543b44ee..c627223a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,6 +2,8 @@ name: CI on: [push, pull_request, workflow_dispatch] +permissions: {} + concurrency: group: environment-${{github.ref}} cancel-in-progress: true @@ -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 } @@ -40,7 +43,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 Linux Dependencies @@ -48,8 +51,9 @@ jobs: 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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 diff --git a/.github/workflows/nuget.yml b/.github/workflows/nuget.yml index 2d8c83df..3cebbb0a 100644 --- a/.github/workflows/nuget.yml +++ b/.github/workflows/nuget.yml @@ -9,6 +9,8 @@ on: - "**" workflow_dispatch: {} +permissions: {} + concurrency: group: nuget-${{github.ref}} cancel-in-progress: true @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -230,7 +240,9 @@ 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 @@ -238,7 +250,7 @@ jobs: 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 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2ff24404..9bb52954 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,6 +9,8 @@ on: - "**" workflow_dispatch: {} +permissions: {} + concurrency: group: release-${{github.ref}} cancel-in-progress: true @@ -19,12 +21,12 @@ env: jobs: windows-x86: name: Windows x86 - runs-on: windows-2025 + runs-on: windows-2025-vs2026 steps: - name: Cache MinGW x86 id: mingw-x86-cache - uses: actions/cache@v5 + uses: actions/cache@v6 with: path: ${{ github.workspace }}/mingw32 key: 15.2.0posix-13.0.0-ucrt-r1-x86 @@ -41,25 +43,27 @@ jobs: add_to_path: false - name: Checkout SFML - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: + persist-credentials: false repository: SFML/SFML ref: ${{ env.SFML_VERSION }} path: SFML - name: Checkout CSFML - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: + persist-credentials: false path: CSFML - name: Build SFML run: | - cmake -S SFML -B SFML-build -A Win32 -G "Visual Studio 17 2022" -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/SFML-install -DCMAKE_VERBOSE_MAKEFILE=ON + cmake -S SFML -B SFML-build -A Win32 -G "Visual Studio 18 2026" -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/SFML-install -DCMAKE_VERBOSE_MAKEFILE=ON cmake --build SFML-build --config Release --target install - name: Build CSFML run: | - cmake -S CSFML -B CSFML-build -A Win32 -G "Visual Studio 17 2022" -DBUILD_SHARED_LIBS=ON -DCSFML_LINK_SFML_STATICALLY=OFF -DCMAKE_BUILD_TYPE=Release -DSFML_ROOT=${{ github.workspace }}/SFML-install -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/CSFML-install -DCMAKE_VERBOSE_MAKEFILE=ON + cmake -S CSFML -B CSFML-build -A Win32 -G "Visual Studio 18 2026" -DBUILD_SHARED_LIBS=ON -DCSFML_LINK_SFML_STATICALLY=OFF -DCMAKE_BUILD_TYPE=Release -DSFML_ROOT=${{ github.workspace }}/SFML-install -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/CSFML-install -DCMAKE_VERBOSE_MAKEFILE=ON cmake --build CSFML-build --config Release --target install - name: Add MinGW to PATH @@ -99,19 +103,19 @@ jobs: Move-Item -Path "CSFML-install\*" -Destination "install\CSFML" - name: Upload Artifact - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: CSFML-windows-32-bit path: install/CSFML windows-x64: name: Windows x64 - runs-on: windows-2025 + runs-on: windows-2025-vs2026 steps: - name: Cache MinGW x64 id: mingw-x64-cache - uses: actions/cache@v5 + uses: actions/cache@v6 with: path: ${{ github.workspace }}/mingw64 key: 15.2.0posix-13.0.0-ucrt-r1-x64 @@ -128,25 +132,27 @@ jobs: add_to_path: false - name: Checkout SFML - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: + persist-credentials: false repository: SFML/SFML ref: ${{ env.SFML_VERSION }} path: SFML - name: Checkout CSFML - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: + persist-credentials: false path: CSFML - name: Build SFML run: | - cmake -S SFML -B SFML-build -A x64 -G "Visual Studio 17 2022" -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/SFML-install -DCMAKE_VERBOSE_MAKEFILE=ON + cmake -S SFML -B SFML-build -A x64 -G "Visual Studio 18 2026" -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/SFML-install -DCMAKE_VERBOSE_MAKEFILE=ON cmake --build SFML-build --config Release --target install - name: Build CSFML run: | - cmake -S CSFML -B CSFML-build -A x64 -G "Visual Studio 17 2022" -DBUILD_SHARED_LIBS=ON -DCSFML_LINK_SFML_STATICALLY=OFF -DCMAKE_BUILD_TYPE=Release -DSFML_ROOT=${{ github.workspace }}/SFML-install -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/CSFML-install -DCMAKE_VERBOSE_MAKEFILE=ON + cmake -S CSFML -B CSFML-build -A x64 -G "Visual Studio 18 2026" -DBUILD_SHARED_LIBS=ON -DCSFML_LINK_SFML_STATICALLY=OFF -DCMAKE_BUILD_TYPE=Release -DSFML_ROOT=${{ github.workspace }}/SFML-install -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/CSFML-install -DCMAKE_VERBOSE_MAKEFILE=ON cmake --build CSFML-build --config Release --target install - name: Add MinGW to PATH @@ -186,36 +192,38 @@ jobs: Move-Item -Path "CSFML-install\*" -Destination "install\CSFML" - name: Upload Artifact - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: CSFML-windows-64-bit path: install/CSFML windows-arm64: name: Windows ARM64 - runs-on: windows-2025 + runs-on: windows-2025-vs2026 steps: - name: Checkout SFML - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: + persist-credentials: false repository: SFML/SFML ref: ${{ env.SFML_VERSION }} path: SFML - name: Checkout CSFML - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: + persist-credentials: false path: CSFML - name: Build SFML run: | - cmake -S SFML -B SFML-build -A ARM64 -G "Visual Studio 17 2022" -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/SFML-install -DCMAKE_VERBOSE_MAKEFILE=ON + cmake -S SFML -B SFML-build -A ARM64 -G "Visual Studio 18 2026" -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/SFML-install -DCMAKE_VERBOSE_MAKEFILE=ON cmake --build SFML-build --config Release --target install - name: Build CSFML run: | - cmake -S CSFML -B CSFML-build -A ARM64 -G "Visual Studio 17 2022" -DBUILD_SHARED_LIBS=ON -DCSFML_LINK_SFML_STATICALLY=OFF -DCMAKE_BUILD_TYPE=Release -DSFML_ROOT=${{ github.workspace }}/SFML-install -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/CSFML-install -DCMAKE_VERBOSE_MAKEFILE=ON + cmake -S CSFML -B CSFML-build -A ARM64 -G "Visual Studio 18 2026" -DBUILD_SHARED_LIBS=ON -DCSFML_LINK_SFML_STATICALLY=OFF -DCMAKE_BUILD_TYPE=Release -DSFML_ROOT=${{ github.workspace }}/SFML-install -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/CSFML-install -DCMAKE_VERBOSE_MAKEFILE=ON cmake --build CSFML-build --config Release --target install - name: Move Files @@ -225,7 +233,7 @@ jobs: Move-Item -Path "CSFML-install\*" -Destination "install\CSFML" - name: Upload Artifact - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: CSFML-windows-arm64 path: install/CSFML @@ -236,15 +244,17 @@ jobs: steps: - name: Checkout SFML - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: + persist-credentials: false repository: SFML/SFML ref: ${{ env.SFML_VERSION }} path: SFML - name: Checkout CSFML - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: + persist-credentials: false path: CSFML - name: Build SFML @@ -288,7 +298,7 @@ jobs: tar -zcvf CSFML-macOS-clang-64-bit.tar.gz CSFML-macOS-clang-64-bit - name: Upload Artifact - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: CSFML-macOS-clang-64-bit path: CSFML-macOS-clang-64-bit.tar.gz @@ -299,15 +309,17 @@ jobs: steps: - name: Checkout SFML - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: + persist-credentials: false repository: SFML/SFML ref: ${{ env.SFML_VERSION }} path: SFML - name: Checkout CSFML - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: + persist-credentials: false path: CSFML - name: Build SFML run: | @@ -350,7 +362,7 @@ jobs: tar -zcvf CSFML-macOS-clang-arm64.tar.gz CSFML-macOS-clang-arm64 - name: Upload Artifact - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: CSFML-macOS-clang-arm64 path: CSFML-macOS-clang-arm64.tar.gz diff --git a/tools/nuget/build.win.ps1 b/tools/nuget/build.win.ps1 index 178f0b21..33858675 100644 --- a/tools/nuget/build.win.ps1 +++ b/tools/nuget/build.win.ps1 @@ -17,7 +17,7 @@ if (-not $RID) { exit } -$Generator = 'Visual Studio 17 2022' +$Generator = 'Visual Studio 18 2026' # See also: https://learn.microsoft.com/en-us/dotnet/core/rid-catalog#known-rids switch ($RID) {