108 lines
3.6 KiB
YAML
108 lines
3.6 KiB
YAML
name: GDExtension Build
|
|
description: Build GDExtension
|
|
|
|
inputs:
|
|
platform:
|
|
required: true
|
|
description: Target platform.
|
|
arch:
|
|
required: true
|
|
description: Target architecture.
|
|
float-precision:
|
|
default: 'single'
|
|
description: Float precision (single or double).
|
|
build-target-type:
|
|
default: 'template_debug'
|
|
description: Build type (template_debug or template_release).
|
|
scons-cache:
|
|
default: .scons-cache/
|
|
description: Scons cache location.
|
|
em_version:
|
|
default: 3.1.39
|
|
description: Emscripten version.
|
|
em_cache_folder:
|
|
default: emsdk-cache
|
|
description: Emscripten cache folder.
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
# Android only
|
|
- name: Android - Set up Java 11
|
|
uses: actions/setup-java@v3
|
|
if: ${{ inputs.platform == 'android' }}
|
|
with:
|
|
distribution: temurin
|
|
java-version: 11
|
|
|
|
- name: Android - dependencies
|
|
uses: nttld/setup-ndk@v1
|
|
if: ${{ inputs.platform == 'android' }}
|
|
with:
|
|
ndk-version: r23c
|
|
link-to-sdk: true
|
|
# Linux only
|
|
- name: Linux - dependencies
|
|
if: ${{ inputs.platform == 'linux' }}
|
|
shell: sh
|
|
run: |
|
|
sudo apt-get update -qq
|
|
sudo apt-get install -qqq build-essential pkg-config
|
|
# Web only
|
|
- name: Web - Set up Emscripten latest
|
|
if: ${{ inputs.platform == 'web' }}
|
|
uses: mymindstorm/setup-emsdk@v13
|
|
with:
|
|
version: ${{ inputs.em_version }}
|
|
actions-cache-folder: ${{ inputs.em_cache_folder }}.${{ inputs.float-precision }}.${{ inputs.build-target-type }}
|
|
- name: Web - Verify Emscripten setup
|
|
if: ${{ inputs.platform == 'web' }}
|
|
shell: sh
|
|
run: |
|
|
emcc -v
|
|
# Windows only
|
|
- name: Windows - Setup MinGW for Windows/MinGW build
|
|
uses: egor-tensin/setup-mingw@v2
|
|
if: ${{ inputs.platform == 'windows' }}
|
|
with:
|
|
version: 12.2.0
|
|
# Dependencies of godot
|
|
# Use python 3.x release (works cross platform)
|
|
- name: Set up Python 3.x
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
# Semantic version range syntax or exact version of a Python version
|
|
python-version: "3.x"
|
|
# Optional - x64 or x86 architecture, defaults to x64
|
|
architecture: "x64"
|
|
- name: Setup scons
|
|
shell: bash
|
|
run: |
|
|
python -c "import sys; print(sys.version)"
|
|
python -m pip install scons==4.4.0
|
|
scons --version
|
|
# Build
|
|
- name: Cache .scons_cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
${{ github.workspace }}/${{ inputs.gdextension-location }}/${{ inputs.scons-cache }}/
|
|
${{ github.workspace }}/${{ inputs.godot-cpp }}/${{ inputs.scons-cache }}/
|
|
key: ${{ inputs.platform }}_${{ inputs.arch }}_${{ inputs.float-precision }}_${{ inputs.build-target-type }}_cache
|
|
# Build godot-cpp
|
|
- name: Build godot-cpp Debug Build
|
|
shell: sh
|
|
env:
|
|
SCONS_CACHE: ${{ github.workspace }}/${{ inputs.godot-cpp }}/${{ inputs.scons-cache }}/
|
|
run: |
|
|
scons target=${{ inputs.build-target-type }} platform=${{ inputs.platform }} arch=${{ inputs.arch }} generate_bindings=yes precision=${{ inputs.float-precision }}
|
|
working-directory: ${{ inputs.godot-cpp }}
|
|
# Build gdextension
|
|
- name: Build GDExtension Debug Build
|
|
shell: sh
|
|
env:
|
|
SCONS_CACHE: ${{ github.workspace }}/${{ inputs.gdextension-location }}/${{ inputs.scons-cache }}/
|
|
run: |
|
|
scons target=${{ inputs.build-target-type }} platform=${{ inputs.platform }} arch=${{ inputs.arch }} precision=${{ inputs.float-precision }} production=yes
|
|
working-directory: ${{ inputs.gdextension-location }}
|