Fixed MSVC compiler errors 11/24/2024 | 24w47b2 #1742
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Main Build CI. This compiles TRAP™ for Windows and Linux (Ubuntu) | |
name: Build-CI | |
# Controls when the workflow will run | |
on: | |
# Run on all pull requests | |
pull_request: | |
# Run on main, master and dev branches | |
push: | |
branches: [ main, master, dev ] | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
jobs: | |
build-linux-gcc-14: | |
name: Build Linux GCC 14 | |
runs-on: [self-hosted, Linux, X64, ubuntu, "24.10", cpu] | |
env: | |
CC: gcc-14 | |
CXX: g++-14 | |
steps: | |
- name: Cleanup workspace | |
if: ${{ always() }} | |
uses: gamestrap/[email protected] | |
- name: Checkout repository and submodules | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
- name: Checkout DiscordGameSDK | |
if: env.HAS_GIT_NDA_DEPS && env.HAS_GIT_NDA_DEPS_DISCORDGAMESDK | |
env: | |
HAS_GIT_NDA_DEPS: ${{ secrets.GIT_NDA_DEPS }} | |
HAS_GIT_NDA_DEPS_DISCORDGAMESDK: ${{ secrets.GIT_NDA_DEPS_DISCORDGAMESDK }} | |
run: | | |
cd Dependencies/DiscordGameSDK | |
git init | |
git remote add origin ${{ secrets.GIT_NDA_DEPS }}/${{ secrets.GIT_NDA_DEPS_DISCORDGAMESDK }} | |
git pull origin main | |
cd ../.. | |
- name: Checkout NVIDIA Nsight Aftermath SDK | |
if: env.HAS_GIT_NDA_DEPS && env.HAS_GIT_NDA_DEPS_NSIGHTAFTERMATH | |
env: | |
HAS_GIT_NDA_DEPS: ${{ secrets.GIT_NDA_DEPS }} | |
HAS_GIT_NDA_DEPS_NSIGHTAFTERMATH: ${{ secrets.GIT_NDA_DEPS_NSIGHTAFTERMATH }} | |
run: | | |
cd Dependencies/Nsight-Aftermath | |
git init | |
git remote add origin ${{ secrets.GIT_NDA_DEPS }}/${{ secrets.GIT_NDA_DEPS_NSIGHTAFTERMATH }} | |
git pull origin main | |
cd ../.. | |
- name: Checkout Steamworks SDK | |
if: env.HAS_GIT_NDA_DEPS && env.HAS_GIT_NDA_DEPS_STEAMWORKSSDK | |
env: | |
HAS_GIT_NDA_DEPS: ${{ secrets.GIT_NDA_DEPS }} | |
HAS_GIT_NDA_DEPS_STEAMWORKSSDK: ${{ secrets.GIT_NDA_DEPS_STEAMWORKSSDK }} | |
run: | | |
cd Dependencies/SteamworksSDK | |
git init | |
git remote add origin ${{ secrets.GIT_NDA_DEPS }}/${{ secrets.GIT_NDA_DEPS_STEAMWORKSSDK }} | |
git pull origin main | |
cd ../.. | |
- name: Add toolchain ppa | |
run: sudo add-apt-repository --yes ppa:ubuntu-toolchain-r/ppa | |
- name: Update package list | |
run: sudo apt update | |
- name: Install dependencies | |
run: sudo apt install -y g++-14 mold xorg-dev libwayland-dev libxkbcommon-dev wayland-protocols ninja-build | |
- name: Make python3 available as python | |
run: sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10 | |
- name: Make pip3 available as pip | |
run: sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 10 | |
- name: Make g++-14 available as g++ | |
run: sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-14 10 | |
- name: Make gcc-14 available as gcc | |
run: sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 10 | |
- name: Make scripts and premake executable | |
run: | | |
chmod +x libs/premake5/linux/premake5 | |
chmod +x GeneratorScripts/GenerateProjectNinjaGCC.sh | |
- name: Generate Ninja files | |
run: | | |
cd GeneratorScripts/ | |
./GenerateProjectNinjaGCC.sh | |
cd .. | |
- name: Setup problem matchers | |
uses: ./.github/composite/problem-matchers | |
- name: Compile code | |
run: ninja Release -j $(nproc) | |
- name: Finalize data for artifact | |
run: | | |
cp -r Games/Headless-Tests/Assets bin/Release-linux-x86_64/Games/Headless-Tests/ | |
cp -r Games/Sandbox/Assets bin/Release-linux-x86_64/Games/Sandbox/ | |
cp -r Games/Tests/Assets bin/Release-linux-x86_64/Games/Tests/ | |
cp -r Games/Tests3D/Assets bin/Release-linux-x86_64/Games/Tests3D/ | |
cp -r Games/TRAP-Editor/Assets bin/Release-linux-x86_64/Games/TRAP-Editor/ | |
cp -r Games/TRAP-Editor/Resources bin/Release-linux-x86_64/Games/TRAP-Editor/ | |
cp -r Utility/QOIConv bin/Release-linux-x86_64/Utility/ | |
cp -r Licenses bin/Release-linux-x86_64/Licenses | |
rm bin/Release-linux-x86_64/Utility/QOIConv/QOIConv.exe | |
- name: Upload artifacts (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/artifact-upload | |
with: | |
target-filename: Linux GCC Release Executables | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
folder-to-upload: > | |
bin/Release-linux-x86_64/./Games | |
bin/Release-linux-x86_64/./Utility | |
bin/Release-linux-x86_64/./UnitTests | |
bin/Release-linux-x86_64/./Licenses | |
- name: Upload artifacts (GitHub) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname == null | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Linux GCC Release Executables | |
path: | | |
bin/Release-linux-x86_64/Games | |
bin/Release-linux-x86_64/Utility | |
bin/Release-linux-x86_64/UnitTests | |
bin/Release-linux-x86_64/Licenses | |
build-linux-clang-19: | |
name: Build Linux Clang 19 | |
runs-on: [self-hosted, Linux, X64, ubuntu, "24.10", cpu] | |
env: | |
CC: clang-19 | |
CXX: clang++-19 | |
steps: | |
- name: Cleanup workspace | |
if: ${{ always() }} | |
uses: gamestrap/[email protected] | |
- name: Checkout repository and submodules | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
- name: Checkout DiscordGameSDK | |
if: env.HAS_GIT_NDA_DEPS && env.HAS_GIT_NDA_DEPS_DISCORDGAMESDK | |
env: | |
HAS_GIT_NDA_DEPS: ${{ secrets.GIT_NDA_DEPS }} | |
HAS_GIT_NDA_DEPS_DISCORDGAMESDK: ${{ secrets.GIT_NDA_DEPS_DISCORDGAMESDK }} | |
run: | | |
cd Dependencies/DiscordGameSDK | |
git init | |
git remote add origin ${{ secrets.GIT_NDA_DEPS }}/${{ secrets.GIT_NDA_DEPS_DISCORDGAMESDK }} | |
git pull origin main | |
cd ../.. | |
- name: Checkout NVIDIA Nsight Aftermath SDK | |
if: env.HAS_GIT_NDA_DEPS && env.HAS_GIT_NDA_DEPS_NSIGHTAFTERMATH | |
env: | |
HAS_GIT_NDA_DEPS: ${{ secrets.GIT_NDA_DEPS }} | |
HAS_GIT_NDA_DEPS_NSIGHTAFTERMATH: ${{ secrets.GIT_NDA_DEPS_NSIGHTAFTERMATH }} | |
run: | | |
cd Dependencies/Nsight-Aftermath | |
git init | |
git remote add origin ${{ secrets.GIT_NDA_DEPS }}/${{ secrets.GIT_NDA_DEPS_NSIGHTAFTERMATH }} | |
git pull origin main | |
cd ../.. | |
- name: Checkout Steamworks SDK | |
if: env.HAS_GIT_NDA_DEPS && env.HAS_GIT_NDA_DEPS_STEAMWORKSSDK | |
env: | |
HAS_GIT_NDA_DEPS: ${{ secrets.GIT_NDA_DEPS }} | |
HAS_GIT_NDA_DEPS_STEAMWORKSSDK: ${{ secrets.GIT_NDA_DEPS_STEAMWORKSSDK }} | |
run: | | |
cd Dependencies/SteamworksSDK | |
git init | |
git remote add origin ${{ secrets.GIT_NDA_DEPS }}/${{ secrets.GIT_NDA_DEPS_STEAMWORKSSDK }} | |
git pull origin main | |
cd ../.. | |
- name: Add toolchain ppa | |
run: sudo add-apt-repository --yes ppa:ubuntu-toolchain-r/ppa | |
- name: Update package list | |
run: sudo apt update | |
- name: Install dependencies | |
run: sudo apt install -y clang-19 llvm-19 mold xorg-dev libwayland-dev libxkbcommon-dev wayland-protocols ninja-build | |
- name: Make python3 available as python | |
run: sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10 | |
- name: Make pip3 available as pip | |
run: sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 10 | |
- name: Make llvm-ar-19 available as llvm-ar | |
run: sudo update-alternatives --install /usr/bin/llvm-ar llvm-ar /usr/bin/llvm-ar-19 10 | |
- name: Make clang-19 available as clang | |
run: sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-19 10 | |
- name: Make clang++-19 available as clang++ | |
run: sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-19 10 | |
- name: Make scripts and premake executable | |
run: | | |
chmod +x libs/premake5/linux/premake5 | |
chmod +x GeneratorScripts/GenerateProjectNinjaClang.sh | |
- name: Generate Ninja files | |
run: | | |
cd GeneratorScripts/ | |
./GenerateProjectNinjaClang.sh | |
cd .. | |
- name: Setup problem matchers | |
uses: ./.github/composite/problem-matchers | |
- name: Compile code | |
run: ninja Release -j $(nproc) | |
- name: Finalize data for artifact | |
run: | | |
cp -r Games/Headless-Tests/Assets bin/Release-linux-x86_64/Games/Headless-Tests/ | |
cp -r Games/Sandbox/Assets bin/Release-linux-x86_64/Games/Sandbox/ | |
cp -r Games/Tests/Assets bin/Release-linux-x86_64/Games/Tests/ | |
cp -r Games/Tests3D/Assets bin/Release-linux-x86_64/Games/Tests3D/ | |
cp -r Games/TRAP-Editor/Assets bin/Release-linux-x86_64/Games/TRAP-Editor/ | |
cp -r Games/TRAP-Editor/Resources bin/Release-linux-x86_64/Games/TRAP-Editor/ | |
cp -r Utility/QOIConv bin/Release-linux-x86_64/Utility/ | |
cp -r Licenses bin/Release-linux-x86_64/Licenses | |
rm bin/Release-linux-x86_64/Utility/QOIConv/QOIConv.exe | |
- name: Upload artifacts (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/artifact-upload | |
with: | |
target-filename: Linux Clang Release Executables | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
folder-to-upload: > | |
bin/Release-linux-x86_64/./Games | |
bin/Release-linux-x86_64/./Utility | |
bin/Release-linux-x86_64/./UnitTests | |
bin/Release-linux-x86_64/./Licenses | |
- name: Upload artifacts (GitHub) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname == null | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Linux Clang Release Executables | |
path: | | |
bin/Release-linux-x86_64/Games | |
bin/Release-linux-x86_64/Utility | |
bin/Release-linux-x86_64/UnitTests | |
bin/Release-linux-x86_64/Licenses | |
build-windows-msvc-2022: | |
name: Build Windows MSVC 2022 | |
runs-on: [self-hosted, windows, X64, cpu] | |
steps: | |
- name: Cleanup workspace | |
if: ${{ always() }} | |
uses: gamestrap/[email protected] | |
- name: Checkout repository and submodules | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
- name: Checkout DiscordGameSDK | |
if: env.HAS_GIT_NDA_DEPS && env.HAS_GIT_NDA_DEPS_DISCORDGAMESDK | |
env: | |
HAS_GIT_NDA_DEPS: ${{ secrets.GIT_NDA_DEPS }} | |
HAS_GIT_NDA_DEPS_DISCORDGAMESDK: ${{ secrets.GIT_NDA_DEPS_DISCORDGAMESDK }} | |
run: | | |
cd Dependencies/DiscordGameSDK | |
git init | |
git remote add origin ${{ secrets.GIT_NDA_DEPS }}/${{ secrets.GIT_NDA_DEPS_DISCORDGAMESDK }} | |
git pull origin main | |
cd ../.. | |
- name: Checkout NVIDIA Nsight Aftermath SDK | |
if: env.HAS_GIT_NDA_DEPS && env.HAS_GIT_NDA_DEPS_NSIGHTAFTERMATH | |
env: | |
HAS_GIT_NDA_DEPS: ${{ secrets.GIT_NDA_DEPS }} | |
HAS_GIT_NDA_DEPS_NSIGHTAFTERMATH: ${{ secrets.GIT_NDA_DEPS_NSIGHTAFTERMATH }} | |
run: | | |
cd Dependencies/Nsight-Aftermath | |
git init | |
git remote add origin ${{ secrets.GIT_NDA_DEPS }}/${{ secrets.GIT_NDA_DEPS_NSIGHTAFTERMATH }} | |
git pull origin main | |
cd ../.. | |
- name: Checkout Steamworks SDK | |
if: env.HAS_GIT_NDA_DEPS && env.HAS_GIT_NDA_DEPS_STEAMWORKSSDK | |
env: | |
HAS_GIT_NDA_DEPS: ${{ secrets.GIT_NDA_DEPS }} | |
HAS_GIT_NDA_DEPS_STEAMWORKSSDK: ${{ secrets.GIT_NDA_DEPS_STEAMWORKSSDK }} | |
run: | | |
cd Dependencies/SteamworksSDK | |
git init | |
git remote add origin ${{ secrets.GIT_NDA_DEPS }}/${{ secrets.GIT_NDA_DEPS_STEAMWORKSSDK }} | |
git pull origin main | |
cd ../.. | |
- name: Setup developer console | |
uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
arch: x64 | |
- name: Generate Visual Studio 2022 Project files | |
run: | | |
cd GeneratorScripts | |
.\GenerateProjectNinjaMSVC.bat | |
cd .. | |
- name: Setup problem matchers | |
uses: ./.github/composite/problem-matchers | |
- name: Compile code | |
run: | | |
$maxCPUCount = if($env:CONTAINER_MAX_CPUS) {$env:CONTAINER_MAX_CPUS} Else {$env:NUMBER_OF_PROCESSORS} | |
ninja Release -j $maxCPUCount | |
- name: Finalize data for artifact | |
run: | | |
Xcopy Games\Headless-Tests\Assets bin\Release-windows-x86_64\Games\Headless-Tests\Assets /I /H /E /C | |
Xcopy Games\Sandbox\Assets bin\Release-windows-x86_64\Games\Sandbox\Assets /I /H /E /C | |
Xcopy Games\Tests\Assets bin\Release-windows-x86_64\Games\Tests\Assets /I /H /E /C | |
Xcopy Games\Tests3D\Assets bin\Release-windows-x86_64\Games\Tests3D\Assets /I /H /E /C | |
Xcopy Games\TRAP-Editor\Assets bin\Release-windows-x86_64\Games\TRAP-Editor\Assets /I /H /E /C | |
Xcopy Games\TRAP-Editor\Resources bin\Release-windows-x86_64\Games\TRAP-Editor\Resources /I /H /E /C | |
Xcopy Licenses bin\Release-windows-x86_64\Licenses /I /H /E /C | |
Xcopy Utility\QOIConv bin\Release-windows-x86_64\Utility\QOIConv /I /H /E /C | |
Xcopy Redists bin\Release-windows-x86_64\Redists /I /H /E /C | |
Get-ChildItem -Path "bin" -Filter "*.pdb" -Recurse | Remove-Item -Force | |
Remove-Item bin\Release-windows-x86_64\Utility\QOIConv\QOIConv | |
- name: Upload artifacts (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/artifact-upload | |
with: | |
target-filename: Windows MSVC Release Executables | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
folder-to-upload: > | |
bin/Release-windows-x86_64/./Games | |
bin/Release-windows-x86_64/./Utility | |
bin/Release-windows-x86_64/./UnitTests | |
bin/Release-windows-x86_64/./Licenses | |
bin/Release-windows-x86_64/./Redists | |
- name: Upload artifacts (GitHub) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname == null | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Windows MSVC 2022 Release Executables | |
path: | | |
bin/Release-windows-x86_64/Games | |
bin/Release-windows-x86_64/Utility | |
bin/Release-windows-x86_64/UnitTests | |
bin/Release-windows-x86_64/Licenses | |
bin/Release-windows-x86_64/Redists | |
test-windows: | |
name: Unit-Test Windows | |
runs-on: [self-hosted, windows, X64, cpu] | |
needs: [build-windows-msvc-2022] | |
steps: | |
- name: Cleanup workspace | |
if: ${{ always() }} | |
uses: gamestrap/[email protected] | |
- name: Download artifact (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: gamestrap/[email protected] | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
artifact-name: "Windows MSVC Release Executables" | |
- name: Download artifact (GitHub) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname == null | |
uses: actions/download-artifact@v4 | |
with: | |
name: Windows MSVC 2022 Release Executables | |
- name: Run Tests | |
run: | | |
cd UnitTests | |
$env:TRACY_NO_INVARIANT_CHECK=1; .\UnitTests.exe; Remove-Item Env:\TRACY_NO_INVARIANT_CHECK | |
test-linux: | |
name: Unit-Test Linux | |
runs-on: [self-hosted, Linux, X64, ubuntu, cpu] | |
needs: [build-linux-clang-19] | |
steps: | |
- name: Cleanup workspace | |
if: ${{ always() }} | |
uses: gamestrap/[email protected] | |
- name: Download artifact (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: gamestrap/[email protected] | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
artifact-name: "Linux Clang Release Executables" | |
- name: Download artifact (GitHub) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname == null | |
uses: actions/download-artifact@v4 | |
with: | |
name: Linux Clang Release Executables | |
- name: Run Tests | |
run: | | |
cd UnitTests | |
chmod +x UnitTests | |
TRACY_NO_INVARIANT_CHECK=1 ./UnitTests |