Make filesystem decent, part 1 (#677) #2430
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: MacOS Build | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
env: | |
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) | |
BUILD_TYPE: Release | |
jobs: | |
build: | |
strategy: | |
matrix: | |
arch: [x86_64, arm64] | |
name: MacOS-${{ matrix.arch }} | |
runs-on: macos-13 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Fetch submodules | |
run: git submodule update --init --recursive | |
- name: Setup Vulkan SDK | |
uses: humbletim/[email protected] | |
with: | |
vulkan-query-version: latest | |
vulkan-use-cache: true | |
vulkan-components: Vulkan-Headers, Vulkan-Loader, SPIRV-Tools, Glslang | |
- name: Configure CMake | |
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. | |
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type | |
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DENABLE_USER_BUILD=ON -DCMAKE_OSX_ARCHITECTURES=${{ matrix.arch }} | |
- name: Build | |
# Build your program with the given configuration | |
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} | |
- name: Install bundle dependencies | |
run: brew install dylibbundler imagemagick | |
- name: Run bundle script | |
run: ./.github/mac-bundle.sh | |
- name: Sign the App | |
run: codesign --force -s - -vvvv Alber.app | |
- name: Zip it up | |
run: zip -r Alber-${{ matrix.arch }} Alber.app | |
- name: Upload MacOS App | |
uses: actions/upload-artifact@v4 | |
with: | |
name: MacOS Alber App Bundle (${{ matrix.arch }}) | |
path: Alber-${{ matrix.arch }}.zip | |
MacOS-Universal: | |
name: MacOS-Universal | |
needs: [build] | |
runs-on: macos-13 | |
steps: | |
- name: Download x86_64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: MacOS Alber App Bundle (x86_64) | |
path: x86_64 | |
- name: Download ARM64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: MacOS Alber App Bundle (arm64) | |
path: arm64 | |
- name: Combine app bundles | |
shell: bash | |
run: | | |
set -x | |
unzip x86_64/*.zip -d x86_64 | |
unzip arm64/*.zip -d arm64 | |
lipo {x86_64,arm64}/Alber.app/Contents/MacOS/Alber -create -output Alber | |
cp -v -a arm64/Alber.app Alber.app | |
cp -v Alber Alber.app/Contents/MacOS/Alber | |
# Mix in x86_64 files that do not appear in the ARM64 build (e.g. libvulkan) | |
cp -v -R -n x86_64/Alber.app/* Alber.app/ || true | |
codesign --force -s - -vvvv Alber.app | |
zip -r -y Alber-universal.zip Alber.app | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: MacOS Alber App Bundle (universal) | |
path: Alber-universal.zip |