Build GDExtension #122
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 GDExtension | |
| on: | |
| workflow_call: | |
| workflow_dispatch: | |
| pull_request: | |
| jobs: | |
| build: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # Could build with double, but that would double (hah) our build count. | |
| # Double builds require building Godot from scratch anyway, | |
| # so it's appropriate NumDot also only ships with single builds by default. | |
| target: | |
| - { platform: linux, arch: x86_64, os: ubuntu-22.04 } | |
| # - { platform: linux, arch: x86_32, os: ubuntu-22.04 } # Broken right now | |
| - { platform: linux, arch: arm64, os: ubuntu-22.04-arm } | |
| - { platform: linux, arch: arm32, os: ubuntu-22.04-arm } | |
| - { platform: windows, arch: x86_64, os: windows-latest } | |
| - { platform: windows, arch: x86_32, os: windows-latest } | |
| # - { platform: windows, arch: arm64, os: windows-latest } # Broken right now | |
| - { platform: macos, arch: universal, os: macos-latest } | |
| - { platform: android, arch: x86_64, os: ubuntu-22.04 } | |
| - { platform: android, arch: x86_32, os: ubuntu-22.04 } | |
| - { platform: android, arch: arm64, os: ubuntu-22.04 } | |
| - { platform: android, arch: arm32, os: ubuntu-22.04 } | |
| - { platform: ios, arch: arm64, os: macos-latest } | |
| - { platform: web, arch: wasm32, os: ubuntu-22.04 } | |
| float_precision: ["single"] | |
| build_target_type: ["template_debug", "template_release"] | |
| runs-on: ${{ matrix.target.os }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| # Add linux x86_32 toolchain | |
| - name: Install multilib support | |
| if: ${{ matrix.target.platform == 'linux' && matrix.target.arch == 'x86_32' }} | |
| run: | | |
| sudo apt-get update && sudo apt-get install -y gcc-multilib g++-multilib | |
| - name: Setup godot-cpp | |
| uses: ./godot-cpp/.github/actions/setup-godot-cpp | |
| with: | |
| platform: ${{ matrix.target.platform }} | |
| em-version: '3.1.55' # FIXME Doesn't compile on the newest, xtensor has problems | |
| ndk-version: 'r27c' | |
| - name: Cache .scons_cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ${{ github.workspace }}/.scons_cache | |
| key: ${{ matrix.target.platform }}_${{ matrix.target.arch }}_${{ matrix.float_precision }}_${{ matrix.build_target_type }}_cache | |
| - name: Build NumDot library | |
| shell: sh | |
| env: | |
| SCONS_CACHE: ${{ github.workspace }}/.scons_cache | |
| run: | | |
| scons target=${{ matrix.build_target_type }} platform=${{ matrix.target.platform }} arch=${{ matrix.target.arch }} precision=${{ matrix.float_precision }} scu_build=yes | |
| - name: Upload Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: NumDot-${{ matrix.target.platform }}-${{ matrix.target.arch }}-${{ matrix.float_precision }}-${{ matrix.build_target_type }} | |
| path: | | |
| ${{ github.workspace }}/build/** | |
| merge: | |
| runs-on: ubuntu-latest | |
| needs: build | |
| steps: | |
| - name: Merge Artifacts | |
| uses: actions/upload-artifact/merge@v4 | |
| with: | |
| name: NumDot-all | |
| pattern: NumDot-* | |
| delete-merged: true |