Feat: SIMD Math support #529
This file contains hidden or 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
| name: Build | |
| on: | |
| pull_request: | |
| workflow_dispatch: | |
| inputs: | |
| debug: | |
| type: boolean | |
| description: 'Enable TMate Debug' | |
| required: false | |
| default: false | |
| env: | |
| BUILD_TYPE: Release | |
| MAKE_THREAD_NUM: 16 | |
| CMAKE_VERSION: '4.1.2' | |
| jobs: | |
| build: | |
| strategy: | |
| # Linux runs alongside Windows/macOS, but the engine's own Linux support is | |
| # not yet verified -- keep a failing Linux leg from cancelling the others. | |
| fail-fast: false | |
| matrix: | |
| os: ['windows-2022', 'macOS-latest', 'ubuntu-latest'] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Setup TMate Session | |
| uses: mxschmitt/action-tmate@v3 | |
| if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug }} | |
| with: | |
| detached: true | |
| - name: Set XCode Version | |
| run: sudo xcode-select -s /Applications/Xcode.app/Contents/Developer | |
| if: runner.os == 'macOS' | |
| - name: Setup MSVC | |
| uses: ilammy/msvc-dev-cmd@v1 | |
| if: runner.os == 'Windows' | |
| # Qt's prebuilt Qt6::Gui transitively requires WrapOpenGL, so CMake's FindOpenGL needs the GL dev | |
| # files (libOpenGL.so, libGLX.so, GL/gl.h). The runners only ship the runtime libraries by default. | |
| - name: Setup Linux Dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev | |
| if: runner.os == 'Linux' | |
| - name: Checkout Repo | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 24 | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - name: Setup CMake | |
| uses: jwlawson/actions-setup-cmake@v2 | |
| with: | |
| cmake-version: ${{env.CMAKE_VERSION}} | |
| - name: Setup Conan | |
| uses: conan-io/setup-conan@v1 | |
| - name: Config Conan Remote | |
| run: conan remote add explosion https://conan.kindem.online/artifactory/api/conan/conan | |
| # xorg/system (pulled in transitively by Qt on Linux) declares its X11 dev packages as system | |
| # requirements; let Conan install them via apt instead of erroring out in the default 'check' mode. | |
| - name: Allow Conan System Package Install | |
| run: | | |
| conf="$(conan config home)/global.conf" | |
| echo "tools.system.package_manager:mode=install" >> "$conf" | |
| echo "tools.system.package_manager:sudo=True" >> "$conf" | |
| if: runner.os == 'Linux' | |
| # Register the in-repo recipes in the local cache so the engine's 'conan install --build=missing' | |
| # resolves them from this checkout: unchanged recipes hash to the revision already published on the | |
| # remote (binaries are downloaded), changed ones get built locally, making recipe PRs self-contained. | |
| - name: Export Conan Recipes | |
| run: | | |
| pip install pyyaml | |
| python ThirdParty/ConanRecipes/build_recipes.py --export-only | |
| - name: Configure CMake | |
| run: cmake -B ${{github.workspace}}/build -G=Ninja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCI=ON | |
| - name: Build | |
| run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j ${{env.MAKE_THREAD_NUM}} | |
| - name: Test | |
| working-directory: ${{github.workspace}}/build | |
| run: ctest -C ${{env.BUILD_TYPE}} --extra-verbose | |
| - name: Install | |
| run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --target install -j ${{env.MAKE_THREAD_NUM}} | |
| # TODO build test project |