diff --git a/.github/workflows/macos_build.yml b/.github/workflows/macos_build.yml index 863522b042..9c51998f43 100644 --- a/.github/workflows/macos_build.yml +++ b/.github/workflows/macos_build.yml @@ -14,13 +14,16 @@ on: required: false type: string default: x64 + gui: + required: true + type: string 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. - timeout-minutes: 60 + timeout-minutes: 90 env: POWERSHELL_TELEMETRY_OPTOUT: 1 BUILDCACHE_COMPRESS_FORMAT: ZSTD @@ -40,7 +43,7 @@ jobs: shell: bash env: OS: macos - GUI_FRAMEWORK: wxWidgets + GUI_FRAMEWORK: ${{ inputs.gui }} ARCH: ${{ inputs.platform }} SIMD: '' EVENT_NAME: ${{ github.event_name }} @@ -67,14 +70,18 @@ jobs: uses: actions/cache@v3 with: path: ~/deps - key: ${{ inputs.os }} ${{ inputs.platform }} deps ${{ hashFiles('.github/workflows/scripts/macos/build-dependencies.sh') }} + key: ${{ inputs.os }} ${{ inputs.platform }} ${{ inputs.gui }} deps ${{ hashFiles('.github/workflows/scripts/macos/build-dependencies.sh') }} - name: Build Dependencies if: steps.cache-deps.outputs.cache-hit != 'true' + env: + GUI: ${{ inputs.gui }} run: .github/workflows/scripts/macos/build-dependencies.sh - name: Generate CMake Files - run: cmake -DCMAKE_PREFIX_PATH="$HOME/deps" -DCMAKE_BUILD_TYPE=Release -DUSE_OPENGL=OFF -DDISABLE_ADVANCE_SIMD=ON -DLTO_PCSX2_CORE=ON -DUSE_SYSTEM_LIBS=OFF -DUSE_SYSTEM_SDL2=ON -B build . + run: | + QT_BUILD=$([ "${{ inputs.gui }}" == "Qt" ] && echo "ON" || echo "OFF") + cmake -DCMAKE_PREFIX_PATH="$HOME/deps" -DCMAKE_BUILD_TYPE=Release -DQT_BUILD="$QT_BUILD" -DUSE_OPENGL=OFF -DDISABLE_ADVANCE_SIMD=ON -DLTO_PCSX2_CORE=ON -DUSE_SYSTEM_LIBS=OFF -DUSE_SYSTEM_SDL2=ON -B build . - name: Build PCSX2 working-directory: build @@ -86,17 +93,17 @@ jobs: - name: Prepare Build Artifacts run: | - cp /usr/local/lib/libMoltenVK.dylib build/pcsx2/PCSX2.app/Contents/Frameworks/ + cp /usr/local/lib/libMoltenVK.dylib build/pcsx2*/PCSX2.app/Contents/Frameworks/ TAG="$(git tag --points-at HEAD)" if [ -z "$TAG" ]; then APPNAME="${{ steps.artifact-metadata.outputs.artifact-name }}" else APPNAME="PCSX2-$TAG" fi - mv build/pcsx2/PCSX2.app "$APPNAME.app" + mv build/pcsx2*/PCSX2.app "$APPNAME.app" tar cvzf "${{ steps.artifact-metadata.outputs.artifact-name }}.tar.gz" "$APPNAME.app" mkdir ci-artifacts - cp "${{ steps.artifact-metadata.outputs.artifact-name }}.tar.gz" ci-artifacts/macOS.tar.gz + cp "${{ steps.artifact-metadata.outputs.artifact-name }}.tar.gz" ci-artifacts/macOS-${{ inputs.gui }}.tar.gz - name: Upload Artifact uses: actions/upload-artifact@v3 diff --git a/.github/workflows/macos_build_matrix.yml b/.github/workflows/macos_build_matrix.yml index 95ef7ef969..8b26d682c8 100644 --- a/.github/workflows/macos_build_matrix.yml +++ b/.github/workflows/macos_build_matrix.yml @@ -9,9 +9,17 @@ on: - master jobs: - build_macos_default: + build_macos_wx: name: "Defaults" uses: ./.github/workflows/macos_build.yml with: jobName: "wxWidgets" + gui: "wxWidgets" + secrets: inherit + build_macos_qt: + name: "Defaults" + uses: ./.github/workflows/macos_build.yml + with: + jobName: "Qt" + gui: "Qt" secrets: inherit diff --git a/.github/workflows/release_pipeline.yml b/.github/workflows/release_pipeline.yml index 1773b407f5..94bf7d9c9a 100644 --- a/.github/workflows/release_pipeline.yml +++ b/.github/workflows/release_pipeline.yml @@ -59,12 +59,22 @@ jobs: secrets: inherit # MacOS - build_macos_default: + build_macos_wx: if: github.repository == 'PCSX2/pcsx2' - name: "MacOS - Defaults" + name: "MacOS" uses: ./.github/workflows/macos_build.yml with: jobName: "wxWidgets" + gui: "wxWidgets" + secrets: inherit + + build_macos_qt: + if: github.repository == 'PCSX2/pcsx2' + name: "MacOS" + uses: ./.github/workflows/macos_build.yml + with: + jobName: "Qt" + gui: "Qt" secrets: inherit # Upload the Artifacts @@ -76,7 +86,8 @@ jobs: - build_wx_avx2 - build_qt_sse4 - build_qt_avx2 - - build_macos_default + - build_macos_wx + - build_macos_qt name: "Upload Artifacts" runs-on: ubuntu-latest steps: diff --git a/.github/workflows/scripts/macos/build-dependencies.sh b/.github/workflows/scripts/macos/build-dependencies.sh index 224bbc8b88..d7e414c854 100755 --- a/.github/workflows/scripts/macos/build-dependencies.sh +++ b/.github/workflows/scripts/macos/build-dependencies.sh @@ -2,7 +2,11 @@ set -e -export MACOSX_DEPLOYMENT_TARGET=10.13 +if [ "$GUI" == "Qt" ]; then + export MACOSX_DEPLOYMENT_TARGET=10.14 +else + export MACOSX_DEPLOYMENT_TARGET=10.13 +fi INSTALLDIR="$HOME/deps" NPROCS="$(getconf _NPROCESSORS_ONLN)" SDL=SDL2-2.0.22 @@ -12,6 +16,7 @@ SAMPLERATE=libsamplerate-0.1.9 PORTAUDIO=pa_stable_v190700_20210406 SOUNDTOUCH=soundtouch-2.3.1 WXWIDGETS=3.1.6 +QT=6.2.4 mkdir deps-build cd deps-build @@ -29,6 +34,9 @@ fe7cbf3127882e3fc7259a75a0cb585620272c51745d3852ab9dd87960697f2e $SDL.tar.gz 47efbf42c77c19a05d22e627d42873e991ec0c1357219c0d74ce6a2948cb2def $PORTAUDIO.tgz 6900996607258496ce126924a19fe9d598af9d892cf3f33d1e4daaa9b42ae0b1 $SOUNDTOUCH.tar.gz 4980e86c6494adcd527a41fc0a4e436777ba41d1893717d7b7176c59c2061c25 wxWidgets-$WXWIDGETS.tar.bz2 +d9924d6fd4fa5f8e24458c87f73ef3dfc1e7c9b877a5407c040d89e6736e2634 qtbase-everywhere-src-$QT.tar.xz +17f40689c4a1706a1b7db22fa92f6ab79f7b698a89e100cab4d10e19335f8267 qttools-everywhere-src-$QT.tar.xz +bd1aac74a892c60b2f147b6d53bb5b55ab7a6409e63097d38198933f8024fa51 qttranslations-everywhere-src-$QT.tar.xz EOF curl -L \ @@ -39,6 +47,9 @@ curl -L \ -O "http://files.portaudio.com/archives/$PORTAUDIO.tgz" \ -O "https://www.surina.net/soundtouch/$SOUNDTOUCH.tar.gz" \ -O "https://github.com/wxWidgets/wxWidgets/releases/download/v$WXWIDGETS/wxWidgets-$WXWIDGETS.tar.bz2" \ + -O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtbase-everywhere-src-$QT.tar.xz" \ + -O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttools-everywhere-src-$QT.tar.xz" \ + -O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttranslations-everywhere-src-$QT.tar.xz" \ shasum -a 256 --check SHASUMS @@ -91,13 +102,53 @@ make -C build "-j$NPROCS" make -C build install cd .. -echo "Installing wx..." -tar xf "wxWidgets-$WXWIDGETS.tar.bz2" -cd "wxWidgets-$WXWIDGETS" -./configure --prefix "$INSTALLDIR" --with-macosx-version-min="$MACOSX_DEPLOYMENT_TARGET" --enable-clipboard --enable-dnd --enable-std_string --with-cocoa --with-libiconv --with-libjpeg --with-libpng --with-zlib --without-libtiff --without-regex -make "-j$NPROCS" -make install -cd .. +if [ "$GUI" == "wxWidgets" ]; then + echo "Installing wx..." + tar xf "wxWidgets-$WXWIDGETS.tar.bz2" + cd "wxWidgets-$WXWIDGETS" + ./configure --prefix "$INSTALLDIR" --with-macosx-version-min="$MACOSX_DEPLOYMENT_TARGET" --enable-clipboard --enable-dnd --enable-std_string --with-cocoa --with-libiconv --with-libjpeg --with-libpng --with-zlib --without-libtiff --without-regex + make "-j$NPROCS" + make install + cd .. +fi + +if [ "$GUI" == "Qt" ]; then + echo "Installing Qt Base..." + tar xf "qtbase-everywhere-src-$QT.tar.xz" + cd "qtbase-everywhere-src-$QT" + cmake -B build -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DCMAKE_BUILD_TYPE=Release -DFEATURE_optimize_size=ON -DFEATURE_dbus=OFF -DFEATURE_framework=OFF -DFEATURE_icu=OFF -DFEATURE_opengl=OFF -DFEATURE_printsupport=OFF -DFEATURE_sql=OFF + make -C build "-j$NPROCS" + make -C build install + cd .. + echo "Installing Qt Tools..." + tar xf "qttools-everywhere-src-$QT.tar.xz" + cd "qttools-everywhere-src-$QT" + # Linguist relies on a library in the Designer target, which takes 5-7 minutes to build on the CI + # Avoid it by not building Linguist, since we only need the tools that come with it + patch -u src/linguist/CMakeLists.txt <