pcsx2/.github/workflows/macos_build.yml

165 lines
5.4 KiB
YAML
Raw Normal View History

name: MacOS Build Steps
on:
workflow_call:
inputs:
jobName:
required: true
type: string
CI: migrate to upload-artifact@v4, download-artifact@v4 and labeler@v5 (#10431) * Bump actions/upload-artifact from 3 to 4 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * Bump actions/download-artifact from 3 to 4 Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * github: group github actions updates going forward * ci: update to labeler@v5 * ci: properly differentiate between windows build artifacts on PRs * ci: workaround flatpak-builder temporarily as well as test fix * ci: simplify things, just explicitly specify the artifact names in the workflows --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Tyler Wilding <xtvaser@gmail.com>
2024-01-06 20:44:44 +00:00
artifactPrefixName:
required: true
type: string
os:
required: false
type: string
2024-02-04 15:34:42 +00:00
default: macos-14
2023-07-20 01:44:20 +00:00
patchesUrl:
required: false
type: string
default: https://github.com/PCSX2/pcsx2_patches/releases/latest/download
2023-07-20 01:44:20 +00:00
fetchTags:
required: false
type: boolean
default: false
stableBuild:
required: false
type: boolean
default: false
jobs:
build_macos:
name: ${{ inputs.jobName }}
runs-on: ${{ inputs.os }}
# Set some sort of timeout in the event of run-away builds. We are limited on concurrent jobs so, get rid of them.
2022-05-26 05:30:00 +00:00
timeout-minutes: 90
env:
POWERSHELL_TELEMETRY_OPTOUT: 1
2022-08-22 07:22:36 +00:00
CCACHE_BASEDIR: ${{ github.workspace }}
CCACHE_DIR: ${{ github.workspace }}/.ccache
CCACHE_COMPRESS: true
CCACHE_COMPRESSLEVEL: 9
CCACHE_MAXSIZE: 100M
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
submodules: recursive
# actions/checkout elides tags, fetch them primarily for releases
- name: Fetch Tags
2023-07-20 01:44:20 +00:00
if: ${{ inputs.fetchTags }}
run: git fetch --tags --no-recurse-submodules
- name: Add stable release identifier file
if: ${{ inputs.stableBuild == true || inputs.stableBuild == 'true' }}
shell: bash
run: |
echo "#define DEFAULT_UPDATER_CHANNEL \"stable\"" > ./pcsx2-qt/DefaultUpdaterChannel.h
cat ./pcsx2-qt/DefaultUpdaterChannel.h
2024-03-17 21:15:58 +00:00
- name: Use Xcode 15.2
run: sudo xcode-select -s /Applications/Xcode_15.2.app
- name: Prepare Artifact Metadata
id: artifact-metadata
shell: bash
env:
CI: migrate to upload-artifact@v4, download-artifact@v4 and labeler@v5 (#10431) * Bump actions/upload-artifact from 3 to 4 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * Bump actions/download-artifact from 3 to 4 Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * github: group github actions updates going forward * ci: update to labeler@v5 * ci: properly differentiate between windows build artifacts on PRs * ci: workaround flatpak-builder temporarily as well as test fix * ci: simplify things, just explicitly specify the artifact names in the workflows --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Tyler Wilding <xtvaser@gmail.com>
2024-01-06 20:44:44 +00:00
PREFIX: ${{ inputs.artifactPrefixName }}
EVENT_NAME: ${{ github.event_name }}
PR_TITLE: ${{ github.event.pull_request.title }}
PR_NUM: ${{ github.event.pull_request.number }}
PR_SHA: ${{ github.event.pull_request.head.sha }}
run: ./.github/workflows/scripts/common/name-artifacts.sh
- name: Install Packages
env:
HOMEBREW_NO_INSTALL_CLEANUP: 1
HOMEBREW_NO_ANALYTICS: 1
run: |
2024-02-04 15:34:42 +00:00
if ! brew install ccache nasm; then
brew update
2024-02-04 15:34:42 +00:00
brew install ccache nasm
fi
- name: Cache Dependencies
id: cache-deps
ci: Bump the ci-deps group with 5 updates (#10944) Bumps the ci-deps group with 5 updates: | Package | From | To | | --- | --- | --- | | [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) | `5` | `6` | | [actions/cache](https://github.com/actions/cache) | `3` | `4` | | [mathieudutour/github-tag-action](https://github.com/mathieudutour/github-tag-action) | `6.1` | `6.2` | | [softprops/action-gh-release](https://github.com/softprops/action-gh-release) | `1` | `2` | | [microsoft/setup-msbuild](https://github.com/microsoft/setup-msbuild) | `1` | `2` | Updates `peter-evans/create-pull-request` from 5 to 6 - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/v5...v6) Updates `actions/cache` from 3 to 4 - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v3...v4) Updates `mathieudutour/github-tag-action` from 6.1 to 6.2 - [Release notes](https://github.com/mathieudutour/github-tag-action/releases) - [Commits](https://github.com/mathieudutour/github-tag-action/compare/v6.1...v6.2) Updates `softprops/action-gh-release` from 1 to 2 - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](https://github.com/softprops/action-gh-release/compare/v1...v2) Updates `microsoft/setup-msbuild` from 1 to 2 - [Release notes](https://github.com/microsoft/setup-msbuild/releases) - [Changelog](https://github.com/microsoft/setup-msbuild/blob/main/building-release.md) - [Commits](https://github.com/microsoft/setup-msbuild/compare/v1...v2) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-type: direct:production update-type: version-update:semver-major dependency-group: ci-deps - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-major dependency-group: ci-deps - dependency-name: mathieudutour/github-tag-action dependency-type: direct:production update-type: version-update:semver-minor dependency-group: ci-deps - dependency-name: softprops/action-gh-release dependency-type: direct:production update-type: version-update:semver-major dependency-group: ci-deps - dependency-name: microsoft/setup-msbuild dependency-type: direct:production update-type: version-update:semver-major dependency-group: ci-deps ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-24 16:45:58 +00:00
uses: actions/cache@v4
with:
path: ~/deps
key: ${{ inputs.os }} deps ${{ hashFiles('.github/workflows/scripts/macos/build-dependencies.sh') }}
- name: Build Dependencies
if: steps.cache-deps.outputs.cache-hit != 'true'
run: |
.github/workflows/scripts/macos/build-dependencies.sh "$HOME/deps"
- name: Download patches
run: |
cd bin/resources
2023-07-20 01:44:20 +00:00
aria2c -Z "${{ inputs.patchesUrl }}/patches.zip"
2022-08-22 07:22:36 +00:00
# -- SETUP CCACHE - https://cristianadam.eu/20200113/speeding-up-c-plus-plus-github-actions-using-ccache/
- name: Prepare ccache timestamp
id: ccache_cache_timestamp
run: echo "timestamp=$(date -u "+%Y-%m-%d-%H;%M;%S")" >> $GITHUB_OUTPUT
2022-08-22 07:22:36 +00:00
- name: Cache ccache cache
ci: Bump the ci-deps group with 5 updates (#10944) Bumps the ci-deps group with 5 updates: | Package | From | To | | --- | --- | --- | | [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) | `5` | `6` | | [actions/cache](https://github.com/actions/cache) | `3` | `4` | | [mathieudutour/github-tag-action](https://github.com/mathieudutour/github-tag-action) | `6.1` | `6.2` | | [softprops/action-gh-release](https://github.com/softprops/action-gh-release) | `1` | `2` | | [microsoft/setup-msbuild](https://github.com/microsoft/setup-msbuild) | `1` | `2` | Updates `peter-evans/create-pull-request` from 5 to 6 - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/v5...v6) Updates `actions/cache` from 3 to 4 - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v3...v4) Updates `mathieudutour/github-tag-action` from 6.1 to 6.2 - [Release notes](https://github.com/mathieudutour/github-tag-action/releases) - [Commits](https://github.com/mathieudutour/github-tag-action/compare/v6.1...v6.2) Updates `softprops/action-gh-release` from 1 to 2 - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](https://github.com/softprops/action-gh-release/compare/v1...v2) Updates `microsoft/setup-msbuild` from 1 to 2 - [Release notes](https://github.com/microsoft/setup-msbuild/releases) - [Changelog](https://github.com/microsoft/setup-msbuild/blob/main/building-release.md) - [Commits](https://github.com/microsoft/setup-msbuild/compare/v1...v2) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-type: direct:production update-type: version-update:semver-major dependency-group: ci-deps - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-major dependency-group: ci-deps - dependency-name: mathieudutour/github-tag-action dependency-type: direct:production update-type: version-update:semver-minor dependency-group: ci-deps - dependency-name: softprops/action-gh-release dependency-type: direct:production update-type: version-update:semver-major dependency-group: ci-deps - dependency-name: microsoft/setup-msbuild dependency-type: direct:production update-type: version-update:semver-major dependency-group: ci-deps ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-24 16:45:58 +00:00
uses: actions/cache@v4
2022-08-22 07:22:36 +00:00
with:
path: .ccache
key: ${{ inputs.os }} ccache ${{ steps.ccache_cache_timestamp.outputs.timestamp }}
restore-keys: ${{ inputs.os }} ccache
2022-08-22 07:22:36 +00:00
- name: Generate CMake Files
2022-05-26 05:30:00 +00:00
run: |
2022-08-22 07:22:36 +00:00
cmake -DCMAKE_PREFIX_PATH="$HOME/deps" \
-DCMAKE_BUILD_TYPE=Release \
2024-02-04 15:34:42 +00:00
-DCMAKE_OSX_ARCHITECTURES="x86_64" \
2022-08-22 07:22:36 +00:00
-DDISABLE_ADVANCE_SIMD=ON \
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \
-DUSE_LINKED_FFMPEG=ON \
2022-08-22 07:22:36 +00:00
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON \
-B build .
- name: Build PCSX2
working-directory: build
2022-08-22 07:22:36 +00:00
run: |
ccache -p
ccache -s
ccache -z
make -j$(getconf _NPROCESSORS_ONLN) # macOS doesn't use make install
ccache -s
# Ensure there's no global constructors in multi-isa files
for dir in */CMakeFiles/GS-{avx,avx2}.dir; do
if find "$dir" -name "*.o" | xargs nm | grep _GLOBAL_; then
echo "::error::Multi-isa files must not have global constructors!"
exit 1
fi
done
- name: Run Tests
working-directory: build
run: make -j$(getconf _NPROCESSORS_ONLN) unittests
- name: Prepare Build Artifacts
run: |
TAG="$(git tag --points-at HEAD)"
if [ -z "$TAG" ]; then
APPNAME="${{ steps.artifact-metadata.outputs.artifact-name }}"
else
APPNAME="PCSX2-$TAG"
fi
2022-05-26 05:30:00 +00:00
mv build/pcsx2*/PCSX2.app "$APPNAME.app"
tar --options xz:compression-level=9 -cvJf "${{ steps.artifact-metadata.outputs.artifact-name }}.tar.xz" "$APPNAME.app"
mkdir ci-artifacts
cp "${{ steps.artifact-metadata.outputs.artifact-name }}.tar.xz" ci-artifacts/macOS.tar.xz
- name: Upload Artifact
CI: migrate to upload-artifact@v4, download-artifact@v4 and labeler@v5 (#10431) * Bump actions/upload-artifact from 3 to 4 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * Bump actions/download-artifact from 3 to 4 Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * github: group github actions updates going forward * ci: update to labeler@v5 * ci: properly differentiate between windows build artifacts on PRs * ci: workaround flatpak-builder temporarily as well as test fix * ci: simplify things, just explicitly specify the artifact names in the workflows --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Tyler Wilding <xtvaser@gmail.com>
2024-01-06 20:44:44 +00:00
uses: actions/upload-artifact@v4
with:
name: ${{ steps.artifact-metadata.outputs.artifact-name }}
path: "*.tar.xz"