Skip to content

Build GDExtension

Build GDExtension #122

Workflow file for this run

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