Skip to content

Port to Godot 4

Port to Godot 4 #515

Workflow file for this run

name: 🍎 macOS Builds
on:
push:
branches:
- 'main'
pull_request:
jobs:
extract-sdk:
runs-on: "macos-12"
name: Extract SDK
steps:
- name: "Load cache"
uses: actions/cache@v3
id: "cache"
with:
path: ~/cached_builds/sdk
key: MacOS-sdk
continue-on-error: true
- name: "Checkout osxcross"
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/checkout@v3
with:
repository: tpoechtrager/osxcross
- name: "Extract SDK"
if: steps.cache.outputs.cache-hit != 'true'
run: |
#ls /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
#sed 's/\^MacOSX13\.\*|//g' tools/gen_sdk_package.sh > tools/gen_sdk_package.sh.patched
#mv tools/gen_sdk_package.sh.patched tools/gen_sdk_package.sh
#chmod +x tools/gen_sdk_package.sh
XCODEDIR=/Applications/Xcode_14.0.1.app ./tools/gen_sdk_package.sh
mkdir -p -v ~/cached_builds/sdk
mv MacOSX12.3.sdk.tar.xz ~/cached_builds/sdk
compile-ffmpeg:
needs: extract-sdk
runs-on: "ubuntu-20.04"
name: Compile FFMPEG
steps:
- name: "Load cache (SDK)"
uses: actions/cache@v3
id: "cache-sdk"
with:
path: ~/cached_builds/sdk
key: MacOS-sdk
continue-on-error: false
- name: "Load cache (videodecoder)"
uses: actions/cache@v3
id: "cache-videodecoder"
with:
path: cached_builds/videodecoder/macos
key: MacOS-videodecoder-build
continue-on-error: true
- name: "Checkout godot-videodecoder"
if: steps.cache-videodecoder.outputs.cache-hit != 'true'
uses: actions/checkout@v3
with:
repository: retrohub-org/godot-videodecoder
submodules: recursive
- name: "Compile"
if: steps.cache-videodecoder.outputs.cache-hit != 'true'
env:
PLATFORMS: macos
run: |
mv ~/cached_builds/sdk/MacOSX12.3.sdk.tar.xz darwin_sdk
./build_gdextension.sh
mkdir -p -v cached_builds/videodecoder
cp -r -v target/* cached_builds/videodecoder
build-macos:
needs: compile-ffmpeg
runs-on: "macos-12"
name: Build
steps:
- name: "Checkout RetroHub"
uses: actions/checkout@v3
with:
path: "retrohub"
- name: "Load cached objects (Godot editor)"
uses: actions/cache@v3
id: "cache_editor"
with:
path: cached_builds/editor/Godot.app
key: MacOS-editor-build
continue-on-error: true
- name: "Load cached objects (Godot templates)"
uses: actions/cache@v3
id: "cache_template"
with:
path: cached_builds/template/macos.zip
key: MacOS-template-build
continue-on-error: true
- name: "Load cached objects (Videodecoder)"
uses: actions/cache@v3
id: "cache_videodecoder"
with:
path: cached_builds/videodecoder/macos
key: MacOS-videodecoder-build
continue-on-error: false
- name: "Checkout Custom Godot"
if: steps.cache_template.outputs.cache-hit != 'true'
uses: actions/checkout@v3
with:
repository: retrohub-org/godot
ref: retrohub_patches_4x
path: "godot"
- name: "[Godot] Dependencies"
if: steps.cache_template.outputs.cache-hit != 'true'
working-directory: ./godot
shell: bash
run: |
brew install scons yasm
- name: "[Godot] Setup Godot build cache"
if: steps.cache_template.outputs.cache-hit != 'true'
uses: ./godot/.github/actions/godot-cache
with:
cache-name: macos-template
continue-on-error: true
- name: "[Godot] Setup python and scons"
if: steps.cache_template.outputs.cache-hit != 'true'
uses: ./godot/.github/actions/godot-deps
- name: "[Godot] Setup Vulkan SDK"
run: |
sh misc/scripts/install_vulkan_sdk_macos.sh
- name: "[Godot] Compilation [template] (x86_64)"
if: steps.cache_template.outputs.cache-hit != 'true'
uses: ./godot/.github/actions/godot-build
with:
root: ./godot
sconsflags: verbose=yes warnings=all werror=yes use_lto=yes optimize=size arch=x86_64
platform: macos
target: template_release
tools: false
- name: "[Godot] Compilation [template] (arm64)"
if: steps.cache_template.outputs.cache-hit != 'true'
uses: ./godot/.github/actions/godot-build
with:
root: ./godot
sconsflags: verbose=yes warnings=all werror=yes use_lto=yes optimize=size arch=arm64
platform: macos
target: template_release
tools: false
- name: "[Godot] Clean and cache template build"
if: steps.cache_template.outputs.cache-hit != 'true'
working-directory: godot
run: |
lipo -create bin/godot.macos.template_release.x86_64 bin/godot.macos.template_release.arm64 -output bin/godot.macos.template_release.universal
cp -r misc/dist/macos_template.app .
mkdir -p -v macos_template.app/Contents/MacOS
cp bin/godot.macos.template_release.universal macos_template.app/Contents/MacOS/godot_macos_release.64
chmod +x macos_template.app/Contents/MacOS/godot_macos_release.64
zip -q -9 -r macos.zip macos_template.app
mkdir -p -v ../cached_builds/template
mv macos.zip ../cached_builds/template
- name: "[Godot] Download editor"
if: steps.cache_editor.outputs.cache-hit != 'true'
run: |
wget https://downloads.tuxfamily.org/godotengine/4.1/Godot_v4.1-stable_macos.universal.zip
unzip Godot_v4.1-stable_macos.universal.zip
mkdir -p -v cached_builds/editor
mv Godot.app cached_builds/editor/
- name: "Setup templates and libraries"
env:
TEMPLATE_PATH: /Users/runner/Library/Application Support/Godot/export_templates/4.1.stable
run: |
mkdir -p -v "$TEMPLATE_PATH"
cp cached_builds/template/macos.zip "$TEMPLATE_PATH"
ln -s ../../../cached_builds/videodecoder/macos retrohub/addons/godot-videodecoder/macos
mkdir -p -v export/macos
- name: "Package default themes"
uses: ./retrohub/.github/actions/get-default-themes
- name: "Exporting RetroHub"
working-directory: retrohub
run: |
../cached_builds/editor/Godot.app/Contents/MacOS/Godot --headless --export-release "macOS" ../export/macos/RetroHub.app
- name: "Sign executable"
working-directory: export/macos
run: |
xattr -dr com.apple.quarantine "RetroHub.app"
codesign -s - --force --deep "RetroHub.app"
- name: "Upload Artifacts"
uses: actions/upload-artifact@v3
with:
name: macos
path: export/macos