name: 🍎 macOS Builds on: workflow_call: workflow_dispatch: # Global Settings env: SCONS_FLAGS: >- dev_mode=yes module_text_server_fb_enabled=yes jobs: build-macos: # From https://docs.github.com/en/actions/how-tos/write-workflows/choose-where-workflows-run/choose-the-runner-for-a-job#choosing-github-hosted-runners runs-on: macos-latest name: ${{ matrix.name }} timeout-minutes: 120 strategy: fail-fast: false matrix: include: - name: Editor (target=editor) cache-name: macos-editor target: editor bin: ./bin/godot.macos.editor.universal - name: Template (target=template_release) cache-name: macos-template target: template_release scons-flags: debug_symbols=no bin: ./bin/godot.macos.template_release.universal steps: - name: Checkout uses: actions/checkout@v6 with: submodules: recursive # From https://github.com/actions/runner-images/blob/main/images/macos - name: Select Xcode 26 run: sudo xcode-select -s /Applications/Xcode_26.0.1.app - name: Restore Godot build cache uses: ./.github/actions/godot-cache-restore with: cache-name: ${{ matrix.cache-name }} continue-on-error: true - name: Setup Python and SCons uses: ./.github/actions/godot-deps - name: Download pre-built AccessKit shell: sh id: accesskit-sdk run: | if python3 ./misc/scripts/install_accesskit.py; then echo "ACCESSKIT_ENABLED=yes" >> "$GITHUB_OUTPUT" else echo "::warning::AccessKit SDK installation failed, building without AccessKit support." echo "ACCESSKIT_ENABLED=no" >> "$GITHUB_OUTPUT" fi - name: Setup Vulkan SDK id: vulkan-sdk run: | if sh misc/scripts/install_vulkan_sdk_macos.sh; then echo "VULKAN_ENABLED=yes" >> "$GITHUB_OUTPUT" else echo "::warning::macOS: Vulkan SDK installation failed, building without Vulkan support." echo "VULKAN_ENABLED=no" >> "$GITHUB_OUTPUT" fi continue-on-error: true - name: Compilation (x86_64) uses: ./.github/actions/godot-build with: scons-flags: ${{ env.SCONS_FLAGS }} ${{ matrix.scons-flags }} arch=x86_64 vulkan=${{ steps.vulkan-sdk.outputs.VULKAN_ENABLED }} accesskit=${{ steps.accesskit-sdk.outputs.ACCESSKIT_ENABLED }} platform: macos target: ${{ matrix.target }} - name: Compilation (arm64) uses: ./.github/actions/godot-build with: scons-flags: ${{ env.SCONS_FLAGS }} ${{ matrix.scons-flags }} arch=arm64 vulkan=${{ steps.vulkan-sdk.outputs.VULKAN_ENABLED }} accesskit=${{ steps.accesskit-sdk.outputs.ACCESSKIT_ENABLED }} platform: macos target: ${{ matrix.target }} - name: Save Godot build cache uses: ./.github/actions/godot-cache-save with: cache-name: ${{ matrix.cache-name }} continue-on-error: true - name: Prepare artifact run: | lipo -create ./bin/godot.macos.${{ matrix.target }}.x86_64 ./bin/godot.macos.${{ matrix.target }}.arm64 -output ./bin/godot.macos.${{ matrix.target }}.universal rm ./bin/godot.macos.${{ matrix.target }}.x86_64 ./bin/godot.macos.${{ matrix.target }}.arm64 strip bin/godot.* chmod +x bin/godot.* - name: Upload artifact uses: ./.github/actions/upload-artifact with: name: ${{ matrix.cache-name }} - name: Unit tests run: | ${{ matrix.bin }} --version ${{ matrix.bin }} --help ${{ matrix.bin }} --test --force-colors