Skip to content

Use relative paths for the .gdextension file such that the extension can be placed in any folder. #63

Use relative paths for the .gdextension file such that the extension can be placed in any folder.

Use relative paths for the .gdextension file such that the extension can be placed in any folder. #63

Workflow file for this run

name: Build GDExtension
on:
workflow_call:
push:
pull_request:
merge_group:
jobs:
build:
strategy:
fail-fast: false
matrix:
include:
# Debug templates
- platform: linux
float-precision: single
arch: x86_64
target-type: template_debug
os: ubuntu-20.04
- platform: windows
float-precision: single
arch: x86_32
target-type: template_debug
os: windows-latest
- platform: windows
float-precision: single
arch: x86_64
target-type: template_debug
os: windows-latest
- platform: macos
float-precision: single
arch: universal
target-type: template_debug
os: macos-latest
- platform: android
float-precision: single
arch: arm64
target-type: template_debug
os: ubuntu-20.04
- platform: android
float-precision: single
arch: arm32
target-type: template_debug
os: ubuntu-20.04
- platform: android
float-precision: single
arch: x86_64
target-type: template_debug
os: ubuntu-20.04
- platform: android
float-precision: single
arch: x86_32
target-type: template_debug
os: ubuntu-20.04
- platform: ios
float-precision: single
arch: arm64
target-type: template_debug
os: macos-latest
- platform: web
float-precision: single
arch: wasm32
target-type: template_debug
os: ubuntu-20.04
# Release templates
- platform: linux
float-precision: single
arch: x86_64
target-type: template_release
os: ubuntu-20.04
# - platform: windows
# float-precision: single
# arch: x86_32
# target-type: template_release
# os: windows-latest
# - platform: windows
# float-precision: single
# arch: x86_64
# target-type: template_release
# os: windows-latest
# - platform: macos
# float-precision: single
# arch: universal
# target-type: template_release
# os: macos-latest
# - platform: android
# float-precision: single
# arch: arm64
# target-type: template_release
# os: ubuntu-20.04
# - platform: android
# float-precision: single
# arch: arm32
# target-type: template_release
# os: ubuntu-20.04
# - platform: android
# float-precision: single
# arch: x86_64
# target-type: template_release
# os: ubuntu-20.04
# - platform: android
# float-precision: single
# arch: x86_32
# target-type: template_release
# os: ubuntu-20.04
# - platform: ios
# float-precision: single
# arch: arm64
# target-type: template_release
# os: macos-latest
# - platform: web
# float-precision: single
# arch: wasm32
# target-type: template_release
# os: ubuntu-20.04
# Double precision templates
# Double precision debug templates
- platform: linux
float-precision: double
arch: x86_64
target-type: template_debug
os: ubuntu-20.04
- platform: windows
float-precision: double
arch: x86_32
target-type: template_debug
os: windows-latest
- platform: windows
float-precision: double
arch: x86_64
target-type: template_debug
os: windows-latest
- platform: macos
float-precision: double
arch: universal
target-type: template_debug
os: macos-latest
- platform: android
float-precision: double
arch: arm64
target-type: template_debug
os: ubuntu-20.04
- platform: android
float-precision: double
arch: arm32
target-type: template_debug
os: ubuntu-20.04
- platform: android
float-precision: double
arch: x86_64
target-type: template_debug
os: ubuntu-20.04
- platform: android
float-precision: double
arch: x86_32
target-type: template_debug
os: ubuntu-20.04
- platform: ios
float-precision: double
arch: arm64
target-type: template_debug
os: macos-latest
- platform: web
float-precision: double
arch: wasm32
target-type: template_debug
os: ubuntu-20.04
# Double precision release templates
- platform: linux
float-precision: double
arch: x86_64
target-type: template_release
os: ubuntu-20.04
# - platform: windows
# float-precision: double
# arch: x86_32
# target-type: template_release
# os: windows-latest
# - platform: windows
# float-precision: double
# arch: x86_64
# target-type: template_release
# os: windows-latest
# - platform: macos
# float-precision: double
# arch: universal
# target-type: template_release
# os: macos-latest
# - platform: android
# float-precision: double
# arch: arm64
# target-type: template_release
# os: ubuntu-20.04
# - platform: android
# float-precision: double
# arch: arm32
# target-type: template_release
# os: ubuntu-20.04
# - platform: android
# float-precision: double
# arch: x86_64
# target-type: template_release
# os: ubuntu-20.04
# - platform: android
# float-precision: double
# arch: x86_32
# target-type: template_release
# os: ubuntu-20.04
# - platform: ios
# float-precision: double
# arch: arm64
# target-type: template_release
# os: macos-latest
# - platform: web
# float-precision: double
# arch: wasm32
# target-type: template_release
# os: ubuntu-20.04
runs-on: ${{ matrix.os }}
steps:
# Clone this repository
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
# Lint
#- name: Setup clang-format
# shell: bash
# run: |
# python -m pip install clang-format
#- name: Run clang-format
# shell: bash
# run: |
# clang-format src/** --dry-run --Werror
# Setup dependencies
- name: Setup godot-cpp
uses: ./godot-cpp/.github/actions/setup-godot-cpp
with:
platform: ${{ matrix.platform }}
em-version: 3.1.62
# Build GDExtension (with caches)
- name: Cache .scons_cache
uses: actions/cache@v4
with:
path: ${{ github.workspace }}/.scons-cache/
key: ${{ matrix.platform }}_${{ matrix.arch }}_${{ matrix.float-precision }}_${{ matrix.target-type }}_cache
- name: Build GDExtension Debug Build
shell: sh
env:
SCONS_CACHE: ${{ github.workspace }}/.scons-cache/
run: |
scons target=${{ matrix.target-type }} platform=${{ matrix.platform }} arch=${{ matrix.arch }} precision=${{ matrix.float-precision }}
# Sign the binary (macOS only)
- name: Mac Sign
# Disable sign if secrets are not set
if: ${{ matrix.platform == 'macos' && env.APPLE_CERT_BASE64 }}
env:
APPLE_CERT_BASE64: ${{ secrets.APPLE_CERT_BASE64 }}
uses: ./.github/actions/sign
with:
FRAMEWORK_PATH: bin/macos/macos.framework
APPLE_CERT_BASE64: ${{ secrets.APPLE_CERT_BASE64 }}
APPLE_CERT_PASSWORD: ${{ secrets.APPLE_CERT_PASSWORD }}
APPLE_DEV_PASSWORD: ${{ secrets.APPLE_DEV_PASSWORD }}
APPLE_DEV_ID: ${{ secrets.APPLE_DEV_ID }}
APPLE_DEV_TEAM_ID: ${{ secrets.APPLE_DEV_TEAM_ID }}
APPLE_DEV_APP_ID: ${{ secrets.APPLE_DEV_APP_ID }}
# Clean up compilation files
- name: Windows - Delete compilation files
if: ${{ matrix.platform == 'windows' }}
shell: pwsh
run: |
Remove-Item bin/* -Include *.exp,*.lib,*.pdb -Force
# Upload the build
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: godot-cpp-template-${{ matrix.platform }}-${{ matrix.arch }}-${{ matrix.float-precision }}-${{ matrix.target-type }}
path: |
${{ github.workspace }}/bin/**
# Merges all the build artifacts together into a single godot-cpp-template artifact.
# If you comment out this step, all the builds will be uploaded individually.
merge:
runs-on: ubuntu-20.04
needs: build
steps:
- name: Merge Artifacts
uses: actions/upload-artifact/merge@v4
with:
name: godot-cpp-template
pattern: godot-cpp-template-*
delete-merged: true