mirror of
https://github.com/scp-fs2open/fs2open.github.com.git
synced 2026-11-09 17:52:08 -10:00
MSVC 14.50 (v145) no longer targets Windows 7, 8, or 8.1, so building with it would quietly drop those platforms. The VS 2026 runner images include the v143 compiler but ship ATL and MFC only for the latest toolset, and both are needed: ATL by SAPI speech (sphelper.h) and MFC by FRED2. Install the 14.44 ATL/MFC components before configuring and keep building with v143, matching the 26.0 release. Co-Authored-By: Claude Opus 5.5 <[email protected]>
203 lines
7.8 KiB
YAML
203 lines
7.8 KiB
YAML
name: Check a pull request
|
|
|
|
on: [pull_request]
|
|
|
|
jobs:
|
|
build_linux:
|
|
strategy:
|
|
matrix:
|
|
configuration: [Debug, Release]
|
|
compiler: [gcc-9, gcc-13, clang-16]
|
|
cmake_options: [""]
|
|
include:
|
|
# Also include configurations that check if the code compiles without the graphics backends
|
|
- configuration: Debug
|
|
compiler: gcc-13
|
|
cmake_options: -DFSO_BUILD_WITH_OPENGL=OFF -DFSO_BUILD_WITH_VULKAN=OFF
|
|
- configuration: Release
|
|
compiler: gcc-13
|
|
cmake_options: -DFSO_BUILD_WITH_OPENGL=OFF -DFSO_BUILD_WITH_VULKAN=OFF
|
|
# - configuration: Debug
|
|
# compiler: gcc-13
|
|
# cmake_options: -DFSO_BUILD_WITH_OPENGL=OFF -DFSO_BUILD_WITH_VULKAN=ON
|
|
# - configuration: Release
|
|
# compiler: gcc-13
|
|
# cmake_options: -DFSO_BUILD_WITH_OPENGL=OFF -DFSO_BUILD_WITH_VULKAN=ON
|
|
name: Linux
|
|
runs-on: ubuntu-latest
|
|
container: ghcr.io/scp-fs2open/linux_build:sha-ab87451
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
name: Checkout
|
|
with:
|
|
submodules: true
|
|
fetch-depth: 0
|
|
- name: Set workspace as safe
|
|
# This appears to be broken in current actions, so do it manually
|
|
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
|
- name: ccache
|
|
uses: hendrikmuhs/[email protected]
|
|
with:
|
|
key: ${{ runner.os }}-${{ matrix.configuration }}-${{ matrix.compiler }}
|
|
save: false # Caches are created by a separate job and only restored for PRs
|
|
verbose: 1
|
|
- name: Configure ccache
|
|
run: ccache --set-config=sloppiness=pch_defines,time_macros
|
|
- name: Configure CMake
|
|
env:
|
|
CONFIGURATION: ${{ matrix.configuration }}
|
|
COMPILER: ${{ matrix.compiler }}
|
|
JOB_CMAKE_OPTIONS: ${{ matrix.cmake_options }}
|
|
CCACHE_PATH: /usr/local/bin/ccache
|
|
run: $GITHUB_WORKSPACE/ci/linux/configure_cmake.sh
|
|
- name: Compile
|
|
working-directory: ./build
|
|
run: ninja -k 20 all
|
|
- name: Run Tests
|
|
working-directory: ./build
|
|
env:
|
|
CONFIGURATION: ${{ matrix.configuration }}
|
|
XDG_RUNTIME_DIR: /root
|
|
run: $GITHUB_WORKSPACE/ci/linux/run_tests.sh
|
|
- name: Show CCache statistics
|
|
run: ccache --show-stats
|
|
- name: Run Clang Tidy
|
|
# Clang-tidy reuses the precompiled headers so this only makes sense for the clang compilers
|
|
if: startsWith(matrix.compiler, 'clang-')
|
|
run: $GITHUB_WORKSPACE/ci/linux/clang_tidy.sh ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }}
|
|
- name: Process clang-tidy warnings
|
|
if: startsWith(matrix.compiler, 'clang-')
|
|
uses: asarium/clang-tidy-action@v1
|
|
with:
|
|
fixesFile: clang-fixes.yaml
|
|
|
|
build_windows:
|
|
strategy:
|
|
matrix:
|
|
configuration: [Debug, FastDebug, Release]
|
|
compiler: [MSVC]
|
|
arch: [Win32, x64]
|
|
name: Windows
|
|
runs-on: windows-2025
|
|
steps:
|
|
- name: Prepare Environment
|
|
run: choco install ninja
|
|
- uses: actions/checkout@v7
|
|
name: Checkout
|
|
with:
|
|
submodules: true
|
|
- name: Set workspace as safe
|
|
# This appears to be broken in current actions, so do it manually
|
|
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
|
- name: Install v143 ATL/MFC
|
|
if: matrix.compiler == 'MSVC'
|
|
shell: pwsh
|
|
run: ci/windows/install_v143_atlmfc.ps1
|
|
- name: Configure CMake
|
|
env:
|
|
CONFIGURATION: ${{ matrix.configuration }}
|
|
COMPILER: ${{ matrix.compiler }}
|
|
ARCHITECTURE: ${{ matrix.arch }}
|
|
shell: bash
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
|
|
if [ "$COMPILER" = "MinGW" ]; then
|
|
cmake -DFSO_USE_SPEECH=OFF -DFSO_FATAL_WARNINGS=ON -DFSO_USE_VOICEREC=OFF -DFSO_BUILD_TESTS=ON \
|
|
-DFSO_BUILD_FRED2=OFF -DQT_USE_PRECOMPILED=ON -DCMAKE_BUILD_TYPE=$CONFIGURATION -G "Ninja" ..
|
|
else
|
|
cmake -DFSO_USE_SPEECH=ON -DFSO_FATAL_WARNINGS=ON -DFSO_USE_VOICEREC=OFF -DFSO_BUILD_TESTS=ON \
|
|
-DFORCED_SIMD_INSTRUCTIONS=SSE2 -G "Visual Studio 18 2026" -T "v143" -A "$ARCHITECTURE" \
|
|
-DQT_USE_PRECOMPILED=ON -DCMAKE_BUILD_TYPE=$CONFIGURATION ..
|
|
fi
|
|
- name: Compile
|
|
working-directory: ./build
|
|
env:
|
|
CONFIGURATION: ${{ matrix.configuration }}
|
|
COMPILER: ${{ matrix.compiler }}
|
|
shell: bash
|
|
run: |
|
|
if [ "$COMPILER" = "MinGW" ]; then
|
|
cmake --build . --config "$CONFIGURATION"
|
|
else
|
|
cmake --build . --config "$CONFIGURATION" -- /verbosity:minimal
|
|
fi
|
|
- name: Run Tests
|
|
working-directory: ./build
|
|
env:
|
|
CONFIGURATION: ${{ matrix.configuration }}
|
|
COMPILER: ${{ matrix.compiler }}
|
|
shell: bash
|
|
run: |
|
|
if [ "$COMPILER" = "MinGW" ]; then
|
|
./bin/unittests --gtest_shuffle
|
|
else
|
|
"./bin/$CONFIGURATION/unittests" --gtest_shuffle
|
|
fi
|
|
|
|
build_mac:
|
|
strategy:
|
|
matrix:
|
|
configuration: [Debug, Release]
|
|
compiler: [clang]
|
|
arch: [x86_64, arm64]
|
|
cmake_options: [""]
|
|
name: Mac
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
name: Checkout
|
|
with:
|
|
submodules: true
|
|
fetch-depth: 0
|
|
- name: Set workspace as safe
|
|
# This appears to be broken in current actions, so do it manually
|
|
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
|
- name: ccache
|
|
uses: hendrikmuhs/[email protected]
|
|
with:
|
|
key: ${{ runner.os }}-${{ matrix.configuration }}-${{ matrix.compiler }}-${{ matrix.arch }}
|
|
save: false # Caches are created by a separate job and only restored for PRs
|
|
- name: Configure ccache
|
|
run: ccache --set-config=sloppiness=pch_defines,time_macros
|
|
- name: Configure CMake
|
|
env:
|
|
CONFIGURATION: ${{ matrix.configuration }}
|
|
COMPILER: ${{ matrix.compiler }}
|
|
ARCHITECTURE: ${{ matrix.arch }}
|
|
JOB_CMAKE_OPTIONS: ${{ matrix.cmake_options }}
|
|
CCACHE_PATH: /usr/local/bin/ccache
|
|
run: $GITHUB_WORKSPACE/ci/linux/configure_cmake.sh
|
|
- name: Compile
|
|
working-directory: ./build
|
|
run: ninja all
|
|
- name: Run Tests
|
|
working-directory: ./build
|
|
env:
|
|
CONFIGURATION: ${{ matrix.configuration }}
|
|
ARCH: ${{ matrix.arch }}
|
|
XDG_RUNTIME_DIR: /root
|
|
run: $GITHUB_WORKSPACE/ci/linux/run_tests.sh
|
|
- name: Show CCache statistics
|
|
run: ccache --show-stats
|
|
- name: Install clang-tidy
|
|
# macOS runners don't ship clang-tidy; pin to the same version as the Linux
|
|
# container's clang-tidy-16 for consistent diagnostics. pyyaml is required
|
|
# too: clang-tidy-diff.py only accepts -export-fixes when it can import yaml.
|
|
# --break-system-packages is required since the runner's Homebrew Python
|
|
# is externally managed (PEP 668); the runner is ephemeral so this is safe.
|
|
if: startsWith(matrix.compiler, 'clang')
|
|
run: pip3 install --break-system-packages clang-tidy==16.0.4 pyyaml
|
|
- name: Run Clang Tidy
|
|
# Clang-tidy reuses the precompiled headers so this only makes sense for the clang compilers
|
|
if: startsWith(matrix.compiler, 'clang')
|
|
env:
|
|
CLANG_TIDY_BINARY: clang-tidy
|
|
run: $GITHUB_WORKSPACE/ci/linux/clang_tidy.sh ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }}
|
|
- name: Process clang-tidy warnings
|
|
if: startsWith(matrix.compiler, 'clang')
|
|
uses: asarium/clang-tidy-action@v1
|
|
with:
|
|
fixesFile: clang-fixes.yaml
|