mirror of https://github.com/OpenRCT2/OpenRCT2.git
build arm/x64 macOS app bundles, make universal bundle
This commit is contained in:
parent
3efae5bff7
commit
cac7438b04
|
@ -146,21 +146,35 @@ jobs:
|
||||||
echo 'Not going to push build'
|
echo 'Not going to push build'
|
||||||
fi
|
fi
|
||||||
macos-cmake:
|
macos-cmake:
|
||||||
name: macOS (x64) using CMake
|
name: macOS using CMake
|
||||||
runs-on: macos-latest
|
runs-on: macos-latest
|
||||||
needs: check-code-formatting
|
needs: check-code-formatting
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
arch: [x86_64, arm64]
|
||||||
|
include:
|
||||||
|
- arch: x86_64
|
||||||
|
cache_key: macos-x64
|
||||||
|
build_flags: -DARCH="x86_64" -DWITH_TESTS=on
|
||||||
|
run_tests: true
|
||||||
|
- arch: arm64
|
||||||
|
cache_key: macos-arm64
|
||||||
|
build_flags: -DARCH="arm64"
|
||||||
|
run_tests: false
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: ccache
|
- name: ccache
|
||||||
uses: hendrikmuhs/ccache-action@v1
|
uses: hendrikmuhs/ccache-action@v1
|
||||||
with:
|
with:
|
||||||
key: macos
|
key: ${{ matrix.cache_key }}
|
||||||
- name: Build OpenRCT2
|
- name: Build OpenRCT2
|
||||||
run: |
|
run: |
|
||||||
HOMEBREW_NO_ANALYTICS=1 brew install ninja
|
HOMEBREW_NO_ANALYTICS=1 brew install ninja
|
||||||
. scripts/setenv -q && build -DWITH_TESTS=on -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=on
|
. scripts/setenv -q && build -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=on ${{ matrix.build_flags }}
|
||||||
- name: Run Tests
|
- name: Run Tests
|
||||||
|
if: ${{matrix.run_tests}}
|
||||||
run: . scripts/setenv -q && run-tests
|
run: . scripts/setenv -q && run-tests
|
||||||
- name: Build artifacts
|
- name: Build artifacts
|
||||||
run: |
|
run: |
|
||||||
|
@ -173,7 +187,45 @@ jobs:
|
||||||
- name: Upload artifacts (CI)
|
- name: Upload artifacts (CI)
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: OpenRCT2-${{ runner.os }}-cmake
|
name: OpenRCT2-${{ runner.os }}-${{ matrix.arch }}-cmake
|
||||||
|
path: artifacts/openrct2-macos.zip
|
||||||
|
if-no-files-found: error
|
||||||
|
macos-universal:
|
||||||
|
name: macOS universal app bundle
|
||||||
|
runs-on: macos-latest
|
||||||
|
needs: macos-cmake
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: download x64 app bundle
|
||||||
|
uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: OpenRCT2-${{ runner.os }}-x86_64-cmake
|
||||||
|
path: macos_universal/x64
|
||||||
|
- name: download arm64 app bundle
|
||||||
|
uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: OpenRCT2-${{ runner.os }}-arm64-cmake
|
||||||
|
path: macos_universal/arm64
|
||||||
|
- name: Make Universal app bundle
|
||||||
|
run: |
|
||||||
|
. scripts/setenv
|
||||||
|
cd macos_universal
|
||||||
|
unzip x64/openrct2-macos.zip -d x64
|
||||||
|
unzip arm64/openrct2-macos.zip -d arm64
|
||||||
|
create-macos-universal
|
||||||
|
- name: Create artifact
|
||||||
|
run: |
|
||||||
|
. scripts/setenv
|
||||||
|
mkdir -p artifacts
|
||||||
|
mv macos_universal/OpenRCT2-universal.app artifacts/OpenRCT2.app
|
||||||
|
echo -e "\033[0;36mCompressing OpenRCT2.app...\033[0m"
|
||||||
|
cd artifacts
|
||||||
|
zip -rqy openrct2-macos.zip OpenRCT2.app
|
||||||
|
- name: Upload artifacts (CI)
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: OpenRCT2-${{ runner.os }}-universal
|
||||||
path: artifacts/openrct2-macos.zip
|
path: artifacts/openrct2-macos.zip
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
linux-portable:
|
linux-portable:
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
echo "Creating macOS universal app bundle"
|
||||||
|
# create app skeleton
|
||||||
|
mkdir OpenRCT2-universal.app
|
||||||
|
mkdir OpenRCT2-universal.app/Contents
|
||||||
|
|
||||||
|
# copy all resources (most will overwrite)
|
||||||
|
mkdir OpenRCT2-universal.app/Contents/Resources
|
||||||
|
# Note: g2.dat is expected to only be in one (matching OS of build machine)
|
||||||
|
rsync -ah x64/OpenRCT2.app/Contents/Resources/* OpenRCT2-universal.app/Contents/Resources/
|
||||||
|
rsync -ah arm64/OpenRCT2.app/Contents/Resources/* OpenRCT2-universal.app/Contents/Resources/
|
||||||
|
|
||||||
|
# create a universal binary
|
||||||
|
mkdir OpenRCT2-universal.app/Contents/MacOS
|
||||||
|
lipo -create x64/OpenRCT2.app/Contents/MacOS/OpenRCT2 arm64/OpenRCT2.app/Contents/MacOS/OpenRCT2 -output OpenRCT2-universal.app/Contents/MacOS/OpenRCT2
|
||||||
|
|
||||||
|
# copy frameworks
|
||||||
|
mkdir OpenRCT2-universal.app/Contents/Frameworks
|
||||||
|
# with the exception of libopenrct2.dylib, the Frameworks are identical and are already universal dylibs
|
||||||
|
rsync -ah --exclude 'libopenrct2.dylib' x64/OpenRCT2.app/Contents/Frameworks/* OpenRCT2-universal.app/Contents/Frameworks
|
||||||
|
lipo -create x64/OpenRCT2.app/Contents/Frameworks/libopenrct2.dylib arm64/OpenRCT2.app/Contents/Frameworks/libopenrct2.dylib -output OpenRCT2-universal.app/Contents/Frameworks/libopenrct2.dylib
|
||||||
|
|
||||||
|
# handle Info.plist
|
||||||
|
defaults import $PWD/OpenRCT2-universal.app/Contents/Info $PWD/x64/OpenRCT2.app/Contents/Info.plist $PWD/arm64/OpenRCT2.app/Contents/Info.plist
|
||||||
|
arm64_min_ver=$(defaults read $PWD/arm64/OpenRCT2.app/Contents/Info LSMinimumSystemVersion)
|
||||||
|
x64_min_ver=$(defaults read $PWD/x64/OpenRCT2.app/Contents/Info LSMinimumSystemVersion)
|
||||||
|
defaults write $PWD/OpenRCT2-universal.app/Contents/Info LSMinimumSystemVersionByArchitecture -dict x86_64 ${x64_min_ver} arm64 ${arm64_min_ver}
|
Loading…
Reference in New Issue