From 71cf206dc8f9e2876f309273e658fd7cddad427f Mon Sep 17 00:00:00 2001 From: Stenzek Date: Mon, 23 Sep 2024 21:19:35 +1000 Subject: [PATCH] CI: Add Windows SSE2 builds --- .github/workflows/rolling-release.yml | 108 +++++++++++++++++++++++--- 1 file changed, 99 insertions(+), 9 deletions(-) diff --git a/.github/workflows/rolling-release.yml b/.github/workflows/rolling-release.yml index f3fc60879..0899cbe80 100644 --- a/.github/workflows/rolling-release.yml +++ b/.github/workflows/rolling-release.yml @@ -19,7 +19,7 @@ on: workflow_dispatch: jobs: - windows-build: + windows-x64-build: name: Windows x64 Build runs-on: windows-2022 timeout-minutes: 120 @@ -98,13 +98,99 @@ jobs: run: | "C:\Program Files\7-Zip\7z.exe" a -r duckstation-windows-x64-release.zip ./bin/x64/* - - name: Upload x64 release artifact + - name: Upload x64 Release Artifact uses: actions/upload-artifact@v4.3.3 with: - name: "windows" + name: "windows-x64" path: "duckstation-windows-x64-release*.zip" + windows-x64-sse2-build: + name: Windows x64 SSE2 Build + runs-on: windows-2022 + timeout-minutes: 120 + steps: + - uses: actions/checkout@v4.1.6 + with: + fetch-depth: 0 + + - name: Cache Dependencies + id: cache-deps + uses: actions/cache@v4.0.2 + with: + path: | + dep/msvc/deps-arm64 + dep/msvc/deps-x64 + key: deps ${{ hashFiles('scripts/deps/build-dependencies-windows-arm64.bat', 'scripts/deps/build-dependencies-windows-x64.bat') }} + + - name: Build x64 Dependencies + if: steps.cache-deps.outputs.cache-hit != 'true' + env: + DEBUG: 0 + run: scripts/deps/build-dependencies-windows-x64.bat + + - name: Build ARM64 Dependencies + if: steps.cache-deps.outputs.cache-hit != 'true' + env: + DEBUG: 0 + run: scripts/deps/build-dependencies-windows-arm64.bat + + - name: Initialize Build Tag + shell: cmd + run: | + echo #pragma once > src/scmversion/tag.h + echo #define SCM_RELEASE_ASSET "duckstation-windows-x64-sse2-release.zip" >> src/scmversion/tag.h + echo #define SCM_RELEASE_TAGS {"latest", "preview"} >> src/scmversion/tag.h + + - name: Tag as Preview Release + if: github.ref == 'refs/heads/master' + shell: cmd + run: | + echo #define SCM_RELEASE_TAG "preview" >> src/scmversion/tag.h + + - name: Tag as Rolling Release Build + if: github.ref == 'refs/heads/dev' + shell: cmd + run: | + echo #define SCM_RELEASE_TAG "latest" >> src/scmversion/tag.h + + - name: Update RC Version Fields + shell: cmd + run: | + cd src\scmversion + call update_rc_version.bat + cd ..\.. + git update-index --assume-unchanged src/duckstation-qt/duckstation-qt.rc + + - name: Compile x64 Release Build + shell: cmd + run: | + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64 + msbuild duckstation.sln -t:Build -p:Platform=x64;Configuration=ReleaseLTCG-Clang-SSE2 + + - name: Create x64 Symbols Archive + shell: cmd + run: | + "C:\Program Files\7-Zip\7z.exe" a -r duckstation-windows-x64-sse2-release-symbols.zip ./bin/x64/*.pdb + + - name: Remove Extra Bloat Before Archiving + shell: cmd + run: | + del /Q bin\x64\*.pdb bin\x64\*.exp bin\x64\*.lib bin\x64\*.iobj bin\x64\*.ipdb bin\x64\common-tests* + rename bin\x64\updater-x64-ReleaseLTCG-SSE2.exe updater.exe + + - name: Create x64 Release Archive + shell: cmd + run: | + "C:\Program Files\7-Zip\7z.exe" a -r duckstation-windows-x64-sse2-release.zip ./bin/x64/* + + - name: Upload x64 Release Artifact + uses: actions/upload-artifact@v4.3.3 + with: + name: "windows-x64-sse2" + path: "duckstation-windows-x64-sse2-release*.zip" + + windows-arm64-build: name: Windows ARM64 Build runs-on: windows-2022 @@ -282,7 +368,7 @@ jobs: - name: Initialize Build Tag run: | echo '#pragma once' > src/scmversion/tag.h - echo '#define SCM_RELEASE_ASSET "DuckStation-x64.AppImage"' >> src/scmversion/tag.h + echo '#define SCM_RELEASE_ASSET "DuckStation-x64-SSE2.AppImage"' >> src/scmversion/tag.h echo '#define SCM_RELEASE_TAGS {"latest", "preview"}' >> src/scmversion/tag.h - name: Tag as Preview Release @@ -446,7 +532,7 @@ jobs: create-release: - needs: [windows-build, windows-arm64-build, linux-x64-appimage-build, linux-x64-sse2-appimage-build, linux-flatpak-build, macos-build] + needs: [windows-x64-build, windows-x64-sse2-build, windows-arm64-build, linux-x64-appimage-build, linux-x64-sse2-appimage-build, linux-flatpak-build, macos-build] runs-on: ubuntu-22.04 if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev' steps: @@ -467,8 +553,10 @@ jobs: prerelease: true title: "Latest Preview Build" files: | - ./artifacts/windows/duckstation-windows-x64-release.zip - ./artifacts/windows/duckstation-windows-x64-release-symbols.zip + ./artifacts/windows-x64/duckstation-windows-x64-release.zip + ./artifacts/windows-x64/duckstation-windows-x64-release-symbols.zip + ./artifacts/windows-x64-sse2/duckstation-windows-x64-sse2-release.zip + ./artifacts/windows-x64-sse2/duckstation-windows-x64-sse2-release-symbols.zip ./artifacts/windows-arm64/duckstation-windows-arm64-release.zip ./artifacts/windows-arm64/duckstation-windows-arm64-release-symbols.zip ./artifacts/linux-x64-appimage/DuckStation-x64.AppImage @@ -485,8 +573,10 @@ jobs: prerelease: false title: "Latest Rolling Release" files: | - ./artifacts/windows/duckstation-windows-x64-release.zip - ./artifacts/windows/duckstation-windows-x64-release-symbols.zip + ./artifacts/windows-x64/duckstation-windows-x64-release.zip + ./artifacts/windows-x64/duckstation-windows-x64-release-symbols.zip + ./artifacts/windows-x64-sse2/duckstation-windows-x64-sse2-release.zip + ./artifacts/windows-x64-sse2/duckstation-windows-x64-sse2-release-symbols.zip ./artifacts/windows-arm64/duckstation-windows-arm64-release.zip ./artifacts/windows-arm64/duckstation-windows-arm64-release-symbols.zip ./artifacts/linux-x64-appimage/DuckStation-x64.AppImage