use PreciseTimer for visualizer #320
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: Build macOS | |
on: | |
push: | |
branches: [ master, feature/github-actions ] | |
pull_request: | |
branches: [ master, feature/github-actions ] | |
jobs: | |
build: | |
name: "Build: ${{ matrix.os }} Qt${{ matrix.qtvershort }}" | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-12, macos-13, macos-14] | |
config: [Release] | |
include: | |
- os: macos-12 | |
arch: x64 | |
qtver: Qt5 | |
qtvershort: "5_intel" | |
- os: macos-13 | |
arch: x64 | |
qtver: Qt6 | |
qtvershort: "6_intel" | |
- os: macos-14 | |
arch: arm64 | |
qtver: Qt6 | |
qtvershort: "6_arm" | |
steps: | |
- name: Checkout Git Repo | |
uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- name: Install dependencies | |
run: | | |
set -e | |
brew install automake autoconf libtool libusb | |
- name: Install latest CMake | |
uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # latest as of 2024-08-08 | |
- name: Restore artifacts, or setup vcpkg (do not install any package) | |
uses: lukka/run-vcpkg@d87e7fac99f22776a4973d7e413921ea254c1fc9 # latest as of 2024-08-08 | |
with: | |
vcpkgJsonGlob: '**/gui/qt/vcpkg.json' | |
- name: Build CEmu ${{ matrix.qtver }} ${{ matrix.config }} on MacOS ${{ matrix.arch }} | |
uses: lukka/run-cmake@4b1adc1944be8367be9f4e08303ce49918db8e3c # latest as of 2024-08-08 | |
with: | |
cmakeListsTxtPath: '${{ github.workspace }}/gui/qt/CMakeLists.txt' | |
configurePreset: 'Mac-${{ matrix.arch }}-${{ matrix.qtver }}' | |
configurePresetAdditionalArgs: "['-DDEPS_RELEASE_ONLY=ON', '-DSHORT_VERSION=v3.0']" | |
buildPreset: 'Mac-${{ matrix.arch }}-${{ matrix.qtver }}-${{ matrix.config }}' | |
env: | |
VCPKG_DEFAULT_HOST_TRIPLET: ${{ matrix.arch }}-osx-release | |
VCPKG_FORCE_SYSTEM_BINARIES: 1 | |
- name: Move to temp folder | |
run: | | |
mkdir -p /tmp/CEmu-nightly_mac_qt${{matrix.qtvershort}}/ | |
mv ${{ github.workspace }}/gui/qt/CEmu.build/Mac-${{ matrix.arch }}-${{ matrix.qtver }}/${{ matrix.config }}/CEmu.app /tmp/CEmu-nightly_mac_qt${{matrix.qtvershort}}/ | |
- name: "Codesign CEmu.app" | |
env: | |
HAVE_SECRETS: ${{ secrets.MACOS_CERTIFICATE_PWD != '' }} | |
MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }} | |
MACOS_CERTIFICATE_PWD: ${{ secrets.MACOS_CERTIFICATE_PWD }} | |
MACOS_KEYCHAIN_PWD: ${{ secrets.MACOS_KEYCHAIN_PWD }} | |
MACOS_CODESIGN_IDENT: ${{ secrets.MACOS_CODESIGN_IDENT }} | |
if: ${{ runner.os == 'macOS' && github.repository == 'CE-Programming/CEmu' && env.HAVE_SECRETS == 'true' }} | |
run: | | |
echo $MACOS_CERTIFICATE | base64 -d > certificate.p12 | |
security create-keychain -p $MACOS_KEYCHAIN_PWD build.keychain | |
security default-keychain -s build.keychain | |
security unlock-keychain -p $MACOS_KEYCHAIN_PWD build.keychain | |
security import certificate.p12 -k build.keychain -P $MACOS_CERTIFICATE_PWD -T /usr/bin/codesign | |
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $MACOS_KEYCHAIN_PWD build.keychain | |
/usr/bin/codesign --deep --force --verify --verbose --sign "$MACOS_CODESIGN_IDENT" --timestamp --options runtime /tmp/CEmu-nightly_mac_qt${{matrix.qtvershort}}/CEmu.app | |
- name: "Create the DMG" | |
run: | | |
brew install create-dmg || brew install create-dmg; # we try twice because sometimes it fails... | |
# The codesign variable may be empty (for forks) but that's fine, create-dmg only does code-signing if it's not empty. | |
createDmgArgs="--codesign '${{ secrets.MACOS_CODESIGN_IDENT }}' \ | |
--volname 'CEmu-nightly Qt${{matrix.qtvershort}}' \ | |
--window-pos 200 120 \ | |
--window-size 600 400 \ | |
--icon-size 64 \ | |
--icon 'CEmu.app' 125 200 \ | |
--app-drop-link 400 200 \ | |
'CEmu-nightly_mac_qt${{matrix.qtvershort}}.dmg' \ | |
'/tmp/CEmu-nightly_mac_qt${{matrix.qtvershort}}/'" | |
eval "create-dmg $createDmgArgs" || eval "create-dmg $createDmgArgs" # We also retry just in case... | |
- name: "[macOS] Notarize and staple DMG" | |
if: ${{ runner.os == 'macOS' && github.repository == 'CE-Programming/CEmu' && env.HAVE_SECRETS == 'true' }} | |
env: | |
HAVE_SECRETS: ${{ secrets.APPLE_NOTARIZATION_PASSWORD != '' }} | |
APPLE_NOTARIZATION_USERNAME: ${{ secrets.APPLE_NOTARIZATION_USERNAME }} | |
APPLE_NOTARIZATION_PASSWORD: ${{ secrets.APPLE_NOTARIZATION_PASSWORD }} | |
APPLE_NOTARIZATION_TEAMID: ${{ secrets.APPLE_NOTARIZATION_TEAMID }} | |
run: | | |
xcrun notarytool store-credentials "notarytool-profile" --apple-id "$APPLE_NOTARIZATION_USERNAME" --team-id "$APPLE_NOTARIZATION_TEAMID" --password "$APPLE_NOTARIZATION_PASSWORD" | |
xcrun notarytool submit "CEmu-nightly_mac_qt${{matrix.qtvershort}}.dmg" --keychain-profile "notarytool-profile" --wait | |
xcrun stapler staple "CEmu-nightly_mac_qt${{matrix.qtvershort}}.dmg" | |
- name: Upload dmg as artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: CEmu-nightly_mac_qt${{matrix.qtvershort}} | |
path: CEmu-nightly_mac_qt${{matrix.qtvershort}}.dmg | |
- name: Update nightly release | |
if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' | |
uses: softprops/action-gh-release@d4e8205d7e959a9107da6396278b2f1f07af0f9b # latest as of 2023-01-13 | |
with: | |
tag_name: nightly | |
prerelease: true | |
token: ${{secrets.GITHUB_TOKEN}} | |
files: | | |
CEmu-nightly_mac_qt${{matrix.qtvershort}}.dmg |