Skip to content

Commit b0e2234

Browse files
rbqvqReenigneArcher
andcommitted
ci(build/windows): add support for arm64
nsis does not support arm64, so we cannot create an installer at this time Signed-off-by: Coia Prant <[email protected]> Co-authored-by: ReenigneArcher <[email protected]>
1 parent e39a091 commit b0e2234

File tree

1 file changed

+48
-16
lines changed

1 file changed

+48
-16
lines changed

.github/workflows/CI.yml

Lines changed: 48 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -740,9 +740,23 @@ jobs:
740740
validate: false
741741

742742
build_win:
743-
name: Windows
743+
name: ${{ matrix.name }}
744744
needs: setup_release
745-
runs-on: windows-2022
745+
runs-on: ${{ matrix.os }}
746+
strategy:
747+
fail-fast: false
748+
matrix:
749+
include:
750+
- name: Windows-AMD64
751+
os: windows-2022
752+
arch: x86_64
753+
msystem: ucrt64
754+
toolchain: ucrt-x86_64
755+
- name: Windows-ARM64
756+
os: windows-11-arm
757+
arch: aarch64
758+
msystem: clangarm64
759+
toolchain: clang-aarch64
746760
steps:
747761
- name: Checkout
748762
uses: actions/checkout@v4
@@ -857,15 +871,15 @@ jobs:
857871
# if a dependency needs to be pinned, see https://github.com/LizardByte/build-deps/pull/186
858872
uses: msys2/setup-msys2@v2
859873
with:
860-
msystem: ucrt64
874+
msystem: ${{ matrix.msystem }}
861875
update: true
862876
install: >-
863877
wget
864878
865879
- name: Update Windows dependencies
866880
env:
867-
MSYSTEM: "ucrt64"
868-
TOOLCHAIN: "ucrt-x86_64"
881+
MSYSTEM: ${{ matrix.msystem }}
882+
TOOLCHAIN: ${{ matrix.toolchain }}
869883
shell: msys2 {0}
870884
run: |
871885
# variables
@@ -879,17 +893,22 @@ jobs:
879893
"mingw-w64-${TOOLCHAIN}-curl-winssl"
880894
"mingw-w64-${TOOLCHAIN}-gcc"
881895
"mingw-w64-${TOOLCHAIN}-graphviz"
882-
"mingw-w64-${TOOLCHAIN}-MinHook"
883896
"mingw-w64-${TOOLCHAIN}-miniupnpc"
884897
"mingw-w64-${TOOLCHAIN}-nlohmann-json"
885898
"mingw-w64-${TOOLCHAIN}-nodejs"
886-
"mingw-w64-${TOOLCHAIN}-nsis"
887899
"mingw-w64-${TOOLCHAIN}-onevpl"
888900
"mingw-w64-${TOOLCHAIN}-openssl"
889901
"mingw-w64-${TOOLCHAIN}-opus"
890902
"mingw-w64-${TOOLCHAIN}-toolchain"
891903
)
892904
905+
if [[ ${MSYSTEM} == "ucrt64" ]]; then
906+
dependencies+=(
907+
"mingw-w64-${TOOLCHAIN}-MinHook"
908+
"mingw-w64-${TOOLCHAIN}-nsis" # TODO: how to create an arm64 installer?
909+
)
910+
fi
911+
893912
# do not modify below this line
894913
895914
ignore_packages=()
@@ -975,27 +994,40 @@ jobs:
975994
-B build \
976995
-G Ninja \
977996
-S . \
978-
-DBUILD_WERROR=ON \
979997
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
980998
-DSUNSHINE_ASSETS_DIR=assets \
981999
-DSUNSHINE_PUBLISHER_NAME='${{ github.repository_owner }}' \
9821000
-DSUNSHINE_PUBLISHER_WEBSITE='https://app.lizardbyte.dev' \
9831001
-DSUNSHINE_PUBLISHER_ISSUE_URL='https://app.lizardbyte.dev/support'
9841002
ninja -C build
9851003
986-
- name: Package Windows
1004+
- name: Package Windows (Prepare)
9871005
shell: msys2 {0}
9881006
run: |
9891007
mkdir -p artifacts
1008+
1009+
- name: Package Windows (Installer)
1010+
if: runner.arch == 'X86' || runner.arch == 'X64'
1011+
shell: msys2 {0}
1012+
run: |
9901013
cd build
9911014
9921015
# package
9931016
cpack -G NSIS
1017+
1018+
# move
1019+
mv ./cpack_artifacts/Sunshine.exe ../artifacts/Sunshine-${{ matrix.os }}-installer.exe
1020+
1021+
- name: Package Windows (Portable)
1022+
shell: msys2 {0}
1023+
run: |
1024+
cd build
1025+
1026+
# package
9941027
cpack -G ZIP
9951028
9961029
# move
997-
mv ./cpack_artifacts/Sunshine.exe ../artifacts/sunshine-windows-installer.exe
998-
mv ./cpack_artifacts/Sunshine.zip ../artifacts/sunshine-windows-portable.zip
1030+
mv ./cpack_artifacts/Sunshine.zip ../artifacts/Sunshine-${{ matrix.os }}-portable.zip
9991031
10001032
- name: Run tests
10011033
id: test
@@ -1007,7 +1039,7 @@ jobs:
10071039
- name: Generate gcov report
10081040
id: test_report
10091041
# any except canceled or skipped
1010-
if: always() && (steps.test.outcome == 'success' || steps.test.outcome == 'failure')
1042+
if: always() && (steps.test.outcome == 'success' || steps.test.outcome == 'failure') && runner.arch == 'X86' || runner.arch == 'X64'
10111043
shell: msys2 {0}
10121044
working-directory: build
10131045
run: |
@@ -1031,7 +1063,7 @@ jobs:
10311063
disable_search: true
10321064
fail_ci_if_error: true
10331065
files: ./build/tests/test_results.xml
1034-
flags: ${{ runner.os }}
1066+
flags: ${{ matrix.name }}
10351067
handle_no_reports_found: true
10361068
token: ${{ secrets.CODECOV_TOKEN }}
10371069
verbose: true
@@ -1047,7 +1079,7 @@ jobs:
10471079
disable_search: true
10481080
fail_ci_if_error: true
10491081
files: ./build/coverage.xml
1050-
flags: ${{ runner.os }}
1082+
flags: ${{ matrix.name }}
10511083
token: ${{ secrets.CODECOV_TOKEN }}
10521084
verbose: true
10531085

@@ -1062,12 +1094,12 @@ jobs:
10621094
7z -r `
10631095
"-xr!CMakeFiles" `
10641096
"-xr!cpack_artifacts" `
1065-
a "../artifacts/sunshine-win32-debuginfo.7z" "*.dbg"
1097+
a "../artifacts/${{ matrix.name }}-debuginfo.7z" "*.dbg"
10661098
10671099
- name: Upload Artifacts
10681100
uses: actions/upload-artifact@v4
10691101
with:
1070-
name: sunshine-windows
1102+
name: Sunshine-${{ matrix.name }}
10711103
path: artifacts/
10721104
if-no-files-found: error
10731105

0 commit comments

Comments
 (0)