Skip to content

nttld/setup-ndk@v1.4.2 #271

nttld/setup-ndk@v1.4.2

nttld/setup-ndk@v1.4.2 #271

name: 🛠️ GDExtension Build
on:
push:
paths: [src/**, .github/**, "!.github/**/util_*", "patches/**", lib_utils.py, SConstruct]
pull_request:
paths: [src/**, .github/**, "!.github/**/util_*", "patches/**", lib_utils.py, SConstruct]
workflow_dispatch:
repository_dispatch:
# Stop the same workflow actions
concurrency:
group: ${{github.workflow}}-${{github.event.pull_request.number || github.run_id}}
cancel-in-progress: true
env:
SCONS_CACHE: ${{github.workspace}}/.scons-cache/
OUTPUT_LIBS_PATH: bin
FORCE_DISABLE_UNITY: yes
jobs:
windows-gdextension:
name: 🏁 Windows
runs-on: "windows-latest"
strategy:
fail-fast: false
matrix:
arch: [x86_64]
target: [editor, template_release]
steps:
- name: Checkout
uses: actions/checkout@v3
with:
lfs: true
submodules: recursive
- name: Compile GDExtension
uses: ./.github/actions/compile_gdextension
with:
platform: windows
target: ${{matrix.target}}
arch: ${{matrix.arch}}
output_libs_path: ${{env.OUTPUT_LIBS_PATH}}
artifact: windows
additional: lto=yes
# ============================================
linux-gdextension:
name: 🐧 Linux
runs-on: "ubuntu-20.04"
strategy:
fail-fast: false
matrix:
arch: [x86_64]
target: [editor, template_release]
steps:
- name: Checkout
uses: actions/checkout@v3
with:
lfs: true
submodules: recursive
- name: Compile GDExtension
uses: ./.github/actions/compile_gdextension
with:
platform: linux
target: ${{matrix.target}}
arch: ${{matrix.arch}}
output_libs_path: ${{env.OUTPUT_LIBS_PATH}}
artifact: linux
additional: lto=yes
# ============================================
macos-gdextension:
name: 🍏 MacOS
runs-on: "macos-latest"
strategy:
fail-fast: false
matrix:
arch: [universal]
target: [editor, template_release]
steps:
- name: Checkout
uses: actions/checkout@v3
with:
lfs: true
submodules: recursive
- name: Compile GDExtension
uses: ./.github/actions/compile_gdextension
with:
platform: macos
target: ${{matrix.target}}
arch: ${{matrix.arch}}
output_libs_path: ${{env.OUTPUT_LIBS_PATH}}
artifact: macos
additional: lto=yes macos_deployment_target=10.14
# ============================================
android-gdextension:
name: 🤖 Android
runs-on: "ubuntu-latest"
strategy:
fail-fast: false
matrix:
arch: [arm32, arm64, x86_32, x86_64]
target: [template_debug, template_release]
steps:
- name: Checkout
uses: actions/checkout@v3
with:
lfs: true
submodules: recursive
- name: Install Android NDK r23c
uses: nttld/setup-ndk@v1.4.2
id: setup-ndk
with:
ndk-version: r23c
link-to-sdk: true
local-cache: true
## TODO revisit after some updates of nttld/setup-ndk
#- name: Restore Android Symlinks
# run: |
# directory="${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin"
#
# find "$directory" -type l | while read link; do
# current_target=$(readlink "$link")
# new_target="$directory/$(basename "$current_target")"
# ln -sf "$new_target" "$link"
# echo "Changed $(basename "$link") from $current_target to $new_target"
# done
- name: Compile GDExtension
uses: ./.github/actions/compile_gdextension
with:
platform: android
target: ${{matrix.target}}
arch: ${{matrix.arch}}
output_libs_path: ${{env.OUTPUT_LIBS_PATH}}
artifact: android
additional: lto=yes
# ============================================
web-gdextension:
name: 🕸 Web
runs-on: "ubuntu-latest"
strategy:
fail-fast: false
matrix:
arch: [wasm32]
target: [template_debug, template_release]
env:
EM_VERSION: 3.1.39
steps:
- name: Checkout
uses: actions/checkout@v3
with:
lfs: true
submodules: recursive
- uses: mymindstorm/setup-emsdk@v12
with:
version: ${{env.EM_VERSION}}
- name: Compile GDExtension
uses: ./.github/actions/compile_gdextension
with:
platform: web
target: ${{matrix.target}}
arch: ${{matrix.arch}}
output_libs_path: ${{env.OUTPUT_LIBS_PATH}}
artifact: web
additional: lto=yes
# ============================================
collect-gdextension:
needs:
[
windows-gdextension,
linux-gdextension,
macos-gdextension,
android-gdextension,
web-gdextension,
]
name: 📦 Collect GDExtension binaries
runs-on: ubuntu-latest
steps:
- name: Download Binaries
uses: actions/download-artifact@v3
with:
path: extracted_files
- name: Store all libraries in one directory
run: |
ls -R extracted_files/
mv -f extracted_files/**/* extracted_files
rm -rf extracted_files/**/
touch extracted_files/.gdignore
- name: Upload GDExtension
uses: actions/upload-artifact@v3
with:
name: gdextension_libs
retention-days: 7
path: extracted_files/*