From 222f476f0e271112e031aecb8206974f8af85d3f Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Tue, 16 Jun 2026 21:14:21 +0100 Subject: [PATCH] updated runners multiple different build types added for different configurations, now making full use of the matrix properly so we can have an early warning of different compile setups and errors that may occur --- .github/workflows/build-linux-gcc.yml | 150 +++++++++++++---------- .github/workflows/build-macos-clang.yml | 87 +++++++------ .github/workflows/build-windows-msvc.yml | 115 ++++++++++++----- 3 files changed, 222 insertions(+), 130 deletions(-) diff --git a/.github/workflows/build-linux-gcc.yml b/.github/workflows/build-linux-gcc.yml index 3e11f98ad..8d94443f0 100644 --- a/.github/workflows/build-linux-gcc.yml +++ b/.github/workflows/build-linux-gcc.yml @@ -4,17 +4,13 @@ on: branches: [development] pull_request: branches: [development] -env: - build_type: "Release" - cc: "gcc" - cxx: "g++" concurrency: group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-linux cancel-in-progress: true permissions: - checks: write + checks: write jobs: build-linux: @@ -24,21 +20,48 @@ jobs: strategy: fail-fast: false matrix: - config: - - { - name: "Ubuntu Latest GCC", - build_type: "Release", - cc: "gcc", - cxx: "g++", - generator: "Ninja" - } + config: + # Explicit older GCC versions catch deprecation warnings before + # they become the runner default and break the build silently. + - { + name: "Ubuntu GCC 12", + build_type: "Release", + cc: "gcc-12", + cxx: "g++-12", + generator: "Ninja", + } + - { + name: "Ubuntu GCC 13", + build_type: "Release", + cc: "gcc-13", + cxx: "g++-13", + generator: "Ninja", + } + - { + name: "Ubuntu GCC Latest", + build_type: "Release", + cc: "gcc", + cxx: "g++", + generator: "Ninja", + } + # Clang produces a meaningfully different set of warnings and + # errors than GCC — builds that pass one often have real issues + # on the other. + - { + name: "Ubuntu Clang", + build_type: "Release", + cc: "clang", + cxx: "clang++", + generator: "Ninja", + } steps: - uses: actions/checkout@v4 + - name: Print env run: | - echo github.event.action: ${{ github.event.action }} - echo github.event_name: ${{ github.event_name }} + echo github.event.action: ${{ github.event.action }} + echo github.event_name: ${{ github.event_name }} - name: Run GIT Init run: git init @@ -48,62 +71,63 @@ jobs: - name: Install Linux Dependencies run: | - sudo apt-get install ninja-build - ninja --version - cmake --version - gcc --version - sudo apt-get update && \ - sudo apt-get install -y \ - build-essential \ - nasm \ - libogg-dev \ - libxft-dev \ - libx11-dev \ - libxxf86vm-dev \ - libopenal-dev \ - libasound2-dev \ - libpipewire-0.3-dev \ - portaudio19-dev \ - oss4-dev \ - libjack-dev \ - libpulse-dev \ - libdbus-1-dev \ - libfreetype6-dev \ - libxcursor-dev \ - libxinerama-dev \ - libxi-dev \ - libxrandr-dev \ - libxss-dev \ - libglu1-mesa-dev \ - libgtk-3-dev - - sudo apt-get install -y \ - python3 - - pip install jinja2 + sudo apt-get update && \ + sudo apt-get install -y \ + ninja-build \ + build-essential \ + nasm \ + python3 \ + python3-pip \ + gcc-12 g++-12 \ + gcc-13 g++-13 \ + clang \ + libogg-dev \ + libxft-dev \ + libx11-dev \ + libxxf86vm-dev \ + libopenal-dev \ + libasound2-dev \ + libpipewire-0.3-dev \ + portaudio19-dev \ + oss4-dev \ + libjack-dev \ + libpulse-dev \ + libdbus-1-dev \ + libfreetype6-dev \ + libxcursor-dev \ + libxinerama-dev \ + libxi-dev \ + libxrandr-dev \ + libxss-dev \ + libglu1-mesa-dev \ + libgtk-3-dev + ninja --version + cmake --version + ${{matrix.config.cc}} --version + python3 -m pip install --break-system-packages jinja2 - name: Configure, Build & Install uses: threeal/cmake-action@v1.3.0 with: - source-dir: ${{github.workspace}} - build-dir: ${{github.workspace}}/build - c-compiler: ${{matrix.config.cc}} - cxx-compiler: ${{matrix.config.cxx}} - generator: ${{matrix.config.generator}} - options: CMAKE_BUILD_TYPE=${{matrix.config.build_type}} TORQUE_APP_NAME=Torque3D TORQUE_TESTING=ON - run-build: true - build-args: --config ${{matrix.config.build_type}} --target install + source-dir: ${{github.workspace}} + build-dir: ${{github.workspace}}/build + c-compiler: ${{matrix.config.cc}} + cxx-compiler: ${{matrix.config.cxx}} + generator: ${{matrix.config.generator}} + options: CMAKE_BUILD_TYPE=${{matrix.config.build_type}} TORQUE_APP_NAME=Torque3D TORQUE_TESTING=ON + run-build: true + build-args: --config ${{matrix.config.build_type}} --target install - name: Unit Tests run: | - cd "${{github.workspace}}/My Projects/Torque3D/game" - ./Torque3D runTests.tscript + cd "${{github.workspace}}/My Projects/Torque3D/game" + ./Torque3D runTests.tscript - name: Test Reporter uses: phoenix-actions/test-reporting@v14 with: - name: Linux test results - path: "**/My Projects/Torque3D/game/test_detail.xml" - reporter: java-junit - fail-on-error: true - if: github.event_name != 'pull_request' + name: ${{matrix.config.name}} test results + path: "**/My Projects/Torque3D/game/test_detail.xml" + reporter: java-junit + fail-on-error: true + if: github.event_name != 'pull_request' \ No newline at end of file diff --git a/.github/workflows/build-macos-clang.yml b/.github/workflows/build-macos-clang.yml index 4b9d61f9f..1f65cf0f4 100644 --- a/.github/workflows/build-macos-clang.yml +++ b/.github/workflows/build-macos-clang.yml @@ -4,41 +4,57 @@ on: branches: [development] pull_request: branches: [development] -env: - build_type: "Release" - cc: "clang" - cxx: "clang++" concurrency: group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-macosx cancel-in-progress: true permissions: - checks: write + checks: write jobs: - build-linux: + build-macos: if: github.repository == 'TorqueGameEngines/Torque3D' name: ${{matrix.config.name}} - runs-on: macos-latest + runs-on: ${{matrix.config.os}} strategy: fail-fast: false matrix: - config: - - { - name: "MacOSX Latest Clang", - build_type: "Release", - cc: "clang", - cxx: "clang++", - generator: "Ninja" - } + config: + # macos-latest is Apple Silicon (arm64). The Intel entry below + # covers x86_64 users who haven't migrated yet. + - { + name: "macOS ARM Clang Ninja", + os: "macos-latest", + build_type: "Release", + cc: "clang", + cxx: "clang++", + generator: "Ninja", + } + - { + name: "macOS Intel Clang Ninja", + os: "macos-13", + build_type: "Release", + cc: "clang", + cxx: "clang++", + generator: "Ninja", + } + - { + name: "macOS ARM Xcode", + os: "macos-latest", + build_type: "Release", + cc: "clang", + cxx: "clang++", + generator: "Xcode", + } steps: - uses: actions/checkout@v4 + - name: Print env run: | - echo github.event.action: ${{ github.event.action }} - echo github.event_name: ${{ github.event_name }} + echo github.event.action: ${{ github.event.action }} + echo github.event_name: ${{ github.event_name }} - name: Run GIT Init run: git init @@ -48,32 +64,33 @@ jobs: - name: Install MacOSX Dependencies run: | - brew install ninja zip unzip curl pkgconfig - ninja --version - cmake --version + brew install ninja zip unzip curl pkgconfig + ninja --version + cmake --version + clang --version - name: Configure, Build & Install uses: threeal/cmake-action@v1.3.0 with: - source-dir: ${{github.workspace}} - build-dir: ${{github.workspace}}/build - c-compiler: ${{matrix.config.cc}} - cxx-compiler: ${{matrix.config.cxx}} - generator: ${{matrix.config.generator}} - options: CMAKE_BUILD_TYPE=${{matrix.config.build_type}} TORQUE_APP_NAME=Torque3D TORQUE_TESTING=ON - run-build: true - build-args: --config ${{matrix.config.build_type}} --target install + source-dir: ${{github.workspace}} + build-dir: ${{github.workspace}}/build + c-compiler: ${{matrix.config.cc}} + cxx-compiler: ${{matrix.config.cxx}} + generator: ${{matrix.config.generator}} + options: CMAKE_BUILD_TYPE=${{matrix.config.build_type}} TORQUE_APP_NAME=Torque3D TORQUE_TESTING=ON + run-build: true + build-args: --config ${{matrix.config.build_type}} --target install - name: Unit Tests run: | - cd "${{github.workspace}}/My Projects/Torque3D/game" - ./Torque3D.app/Contents/MacOS/Torque3D runTests.tscript + cd "${{github.workspace}}/My Projects/Torque3D/game" + ./Torque3D.app/Contents/MacOS/Torque3D runTests.tscript - name: Test Reporter uses: phoenix-actions/test-reporting@v14 with: - name: MacOS Test results - path: "**/My Projects/Torque3D/game/test_detail.xml" - reporter: java-junit - fail-on-error: true - if: github.event_name != 'pull_request' + name: ${{matrix.config.name}} test results + path: "**/My Projects/Torque3D/game/test_detail.xml" + reporter: java-junit + fail-on-error: true + if: github.event_name != 'pull_request' \ No newline at end of file diff --git a/.github/workflows/build-windows-msvc.yml b/.github/workflows/build-windows-msvc.yml index a8ddaad55..b59a7970f 100644 --- a/.github/workflows/build-windows-msvc.yml +++ b/.github/workflows/build-windows-msvc.yml @@ -4,38 +4,83 @@ on: branches: [development] pull_request: branches: [development] + concurrency: group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-windows cancel-in-progress: true permissions: - checks: write + checks: write jobs: build-windows: if: github.repository == 'TorqueGameEngines/Torque3D' name: ${{matrix.config.name}} - runs-on: windows-latest + runs-on: ${{matrix.config.os}} strategy: fail-fast: false matrix: - config: - - { - name: "Windows Latest MSVC", - build_type: "Release", - cc: "cl", - cxx: "cl", - environment_script: "C:/Program Files (x86)/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat", - generator: "Visual Studio 17 2022" - } - + config: + - { + name: "Windows MSVC Ninja", + os: "windows-latest", + build_type: "Release", + cc: "cl", + cxx: "cl", + generator: "Ninja", + cmake_args: "", + compiler_family: "msvc", + msvc_arch: "amd64", + can_test: true, + } + - { + name: "Windows MSVC Visual Studio", + os: "windows-2022", + build_type: "Release", + cc: "cl", + cxx: "cl", + generator: "Visual Studio 17 2022", + cmake_args: "", + compiler_family: "msvc", + msvc_arch: "amd64", + can_test: true, + } + - { + name: "Windows Clang-cl", + os: "windows-latest", + build_type: "Release", + cc: "clang-cl", + cxx: "clang-cl", + generator: "Ninja", + cmake_args: "", + compiler_family: "clang-cl", + msvc_arch: "amd64", + can_test: true, + } + - { + name: "Windows ARM64 MSVC", + os: "windows-latest", + build_type: "Release", + cc: "cl", + cxx: "cl", + generator: "Visual Studio 17 2022", + cmake_args: "-A ARM64", + compiler_family: "msvc", + msvc_arch: "amd64_arm64", + can_test: false, + } + steps: - uses: actions/checkout@v4 + - uses: ilammy/msvc-dev-cmd@v1.13.0 + with: + arch: ${{matrix.config.msvc_arch}} + - name: Print env run: | - echo github.event.action: ${{ github.event.action }} - echo github.event_name: ${{ github.event_name }} + echo github.event.action: ${{ github.event.action }} + echo github.event_name: ${{ github.event_name }} - name: Run GIT Init run: git init @@ -43,33 +88,39 @@ jobs: - name: Setup MSVC problem matcher uses: ammaraskar/msvc-problem-matcher@master - - name: Install Dependencies For ${{matrix.config.name}} + - name: Add Clang to PATH + if: matrix.config.compiler_family == 'clang-cl' run: | - cmake --version - cmd "${{matrix.config.environment_script}}" + echo "C:\Program Files\LLVM\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + + - name: Verify toolchain + run: cmake --version - name: Configure, Build & Install uses: threeal/cmake-action@v1.3.0 with: - source-dir: ${{github.workspace}} - build-dir: ${{github.workspace}}/build - c-compiler: ${{matrix.config.cc}} - cxx-compiler: ${{matrix.config.cxx}} - generator: ${{matrix.config.generator}} - options: CMAKE_BUILD_TYPE=${{matrix.config.build_type}} TORQUE_APP_NAME=Torque3D TORQUE_TESTING=ON - run-build: true - build-args: --config ${{matrix.config.build_type}} --target install + source-dir: ${{github.workspace}} + build-dir: ${{github.workspace}}/build + c-compiler: ${{matrix.config.cc}} + cxx-compiler: ${{matrix.config.cxx}} + generator: ${{matrix.config.generator}} + args: ${{matrix.config.cmake_args}} + options: CMAKE_BUILD_TYPE=${{matrix.config.build_type}} TORQUE_APP_NAME=Torque3D TORQUE_TESTING=ON + run-build: true + build-args: --config ${{matrix.config.build_type}} --target install + # Skipped for ARM64 — binary cannot run on the x64 host runner. - name: Unit Tests + if: matrix.config.can_test run: | - cd "${{github.workspace}}/My Projects/Torque3D/game" - ./Torque3D.exe runTests.tscript + cd "${{github.workspace}}/My Projects/Torque3D/game" + ./Torque3D.exe runTests.tscript - name: Test Reporter uses: phoenix-actions/test-reporting@v14 with: - name: Windows test results - path: "**/My Projects/Torque3D/game/test_detail.xml" - reporter: java-junit - fail-on-error: true - if: github.event_name != 'pull_request' + name: ${{matrix.config.name}} test results + path: "**/My Projects/Torque3D/game/test_detail.xml" + reporter: java-junit + fail-on-error: true + if: github.event_name != 'pull_request' && matrix.config.can_test \ No newline at end of file