Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable CI builds for ARM64 on Windows #24

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/macos-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ jobs:
kf_fullver: "5.116.0"
qt_version: "5.15.2"
kf_cmake_args: ""
- kf_version: "6.8"
kf_fullver: "6.8.0"
qt_version: "6.8.1"
- kf_version: "6.10"
kf_fullver: "6.10.0"
qt_version: "6.8.2"
kf_cmake_args: "-DBUILD_WITH_QT6=ON"

steps:
Expand Down
156 changes: 136 additions & 20 deletions .github/workflows/win-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ jobs:
kf_cmake_args: ""
build_installer: "$false"
deploy_openssl: "$true"
- kf_version: "6.8"
kf_fullver: "6.8.0"
qt_version: "6.8.1"
- kf_version: "6.10"
kf_fullver: "6.10.0"
qt_version: "6.8.2"
qt_arch: "msvc2022_64"
kf_cmake_args: "-DBUILD_WITH_QT6=ON"
build_installer: "$true"
Expand All @@ -41,14 +41,14 @@ jobs:
arch: x64
- name: Build Qt Libs
run: |
cd "${Env:RUNNER_WORKSPACE}"
mkdir build_deps
cd build_deps
curl -LO https://download.kde.org/stable/frameworks/${{ matrix.cfg.kf_version }}/extra-cmake-modules-${{ matrix.cfg.kf_fullver }}.tar.xz
curl -LO https://download.kde.org/stable/frameworks/${{ matrix.cfg.kf_version }}/syntax-highlighting-${{ matrix.cfg.kf_fullver }}.tar.xz
cmake -E tar xf extra-cmake-modules-${{ matrix.cfg.kf_fullver }}.tar.xz
cd extra-cmake-modules-${{ matrix.cfg.kf_fullver }}
mkdir build
cd build
mkdir build && cd build
cmake -G "NMake Makefiles" `
"-DCMAKE_PREFIX_PATH=${Env:RUNNER_WORKSPACE}/Qt/${{ matrix.cfg.qt_version }}/${{ matrix.cfg.qt_arch }}" `
"-DCMAKE_INSTALL_PREFIX=${Env:RUNNER_WORKSPACE}/Qt/${{ matrix.cfg.qt_version }}/${{ matrix.cfg.qt_arch }}" `
Expand All @@ -66,11 +66,10 @@ jobs:
cmake --build . --target install
- name: Build qtextpad
run: |
mkdir build
cd build
mkdir build && cd build
cmake -G "NMake Makefiles" `
"-DCMAKE_PREFIX_PATH=${Env:RUNNER_WORKSPACE}/Qt/${{ matrix.cfg.qt_version }}/${{ matrix.cfg.qt_arch }}" `
"-DCMAKE_INSTALL_PREFIX=${Env:GITHUB_WORKSPACE}/dist/qtextpad-win64" `
"-DCMAKE_INSTALL_PREFIX=${Env:GITHUB_WORKSPACE}/dist/qtextpad-x64" `
-DCMAKE_BUILD_TYPE=Release ..
cmake --build .
cmake --build . --target install
Expand All @@ -79,34 +78,151 @@ jobs:
$buildver = ((git describe --dirty) | Out-String).Trim()
$buildver += "-qt" + "${{ matrix.cfg.qt_version }}"[0]
cd "${Env:GITHUB_WORKSPACE}\dist"
windeployqt qtextpad-win64\qtextpad.exe --release --no-opengl-sw --no-system-d3d-compiler
windeployqt qtextpad-x64\qtextpad.exe --release --no-opengl-sw --no-system-d3d-compiler
copy -Path "${Env:GITHUB_WORKSPACE}\COPYING", `
"${Env:RUNNER_WORKSPACE}\Qt\${{ matrix.cfg.qt_version }}\${{ matrix.cfg.qt_arch }}\bin\KF*SyntaxHighlighting.dll" `
-Destination qtextpad-win64
-Destination qtextpad-x64
cmake -E copy_directory "${Env:RUNNER_WORKSPACE}\Qt\${{ matrix.cfg.qt_version }}\${{ matrix.cfg.qt_arch }}\bin\data" `
qtextpad-win64\data
windeployqt qtextpad-win64\KF*SyntaxHighlighting.dll --release --no-opengl-sw --no-system-d3d-compiler
qtextpad-x64\data
windeployqt qtextpad-x64\KF*SyntaxHighlighting.dll --release --no-opengl-sw --no-system-d3d-compiler

# OpenSSL libs are required for the online repository update in Qt5,
# but Qt6 can use the Windows SChannel backend instead
if (${{ matrix.cfg.deploy_openssl }}) {
copy -Path `
"C:\Program Files\OpenSSL\bin\libcrypto-1_1-x64.dll", `
"C:\Program Files\OpenSSL\bin\libssl-1_1-x64.dll" `
-Destination qtextpad-win64
} elseif (Test-Path qtextpad-win64\tls\qopensslbackend.dll) {
del qtextpad-win64\tls\qopensslbackend.dll
-Destination qtextpad-x64
} elseif (Test-Path qtextpad-x64\tls\qopensslbackend.dll) {
del qtextpad-x64\tls\qopensslbackend.dll
}

cmake -E tar cf "..\qtextpad-win64-${buildver}.zip" --format=zip qtextpad-win64
cmake -E tar cf "..\qtextpad-x64-${buildver}.zip" --format=zip qtextpad-x64
cd ..\win32
cmake -E tar xf "..\qtextpad-win64-${buildver}.zip"
cmake -E tar xf "..\qtextpad-x64-${buildver}.zip"
if (${{ matrix.cfg.build_installer }}) {
iscc setup.iss
cmake -E rename qtextpad-win64.exe "..\qtextpad-win64-${buildver}.exe"
cmake -E rename qtextpad-x64.exe "..\qtextpad-x64-${buildver}.exe"
}
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: QTextPad-win64-qt${{ matrix.cfg.qt_version }}
path: qtextpad-win64-*.*
name: QTextPad-x64-qt${{ matrix.cfg.qt_version }}
path: qtextpad-x64-*.*

build-arm64:
runs-on: windows-2022
name: "Windows-arm64-Qt${{ matrix.cfg.qt_version }}"
strategy:
matrix:
cfg:
- kf_version: "6.10"
kf_fullver: "6.10.0"
qt_version: "6.8.2"

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
arch: win64_msvc2022_arm64_cross_compiled
version: ${{ matrix.cfg.qt_version }}

# First build katehighlightingindexer for x64 so we can use it for cross-compilation
- name: Add MSVC to PATH (x64)
uses: ilammy/msvc-dev-cmd@v1
with:
arch: x64
- name: Build katehighlightingindexer
run: |
cd "${Env:RUNNER_WORKSPACE}"
mkdir build_deps
cd build_deps
curl -LO https://download.kde.org/stable/frameworks/${{ matrix.cfg.kf_version }}/extra-cmake-modules-${{ matrix.cfg.kf_fullver }}.tar.xz
curl -LO https://download.kde.org/stable/frameworks/${{ matrix.cfg.kf_version }}/syntax-highlighting-${{ matrix.cfg.kf_fullver }}.tar.xz
cmake -E tar xf extra-cmake-modules-${{ matrix.cfg.kf_fullver }}.tar.xz
cd extra-cmake-modules-${{ matrix.cfg.kf_fullver }}
mkdir build-host && cd build-host
cmake -G "NMake Makefiles" `
"-DCMAKE_PREFIX_PATH=${Env:RUNNER_WORKSPACE}/Qt/${{ matrix.cfg.qt_version }}/msvc2022_64" `
"-DCMAKE_INSTALL_PREFIX=${Env:RUNNER_WORKSPACE}/Qt/${{ matrix.cfg.qt_version }}/msvc2022_64" `
-DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_QT6=ON ..
cmake --build . --target install
cd ..\..
cmake -E tar xf syntax-highlighting-${{ matrix.cfg.kf_fullver }}.tar.xz
cd syntax-highlighting-${{ matrix.cfg.kf_fullver }}
mkdir build-host && cd build-host
cmake -G "NMake Makefiles" `
"-DCMAKE_PREFIX_PATH=${Env:RUNNER_WORKSPACE}/Qt/${{ matrix.cfg.qt_version }}/msvc2022_64" `
"-DCMAKE_INSTALL_PREFIX=${Env:RUNNER_WORKSPACE}/Qt/${{ matrix.cfg.qt_version }}/msvc2022_64" `
-DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_QT6=ON ..
cmake --build . --target katehighlightingindexer
"${Env:RUNNER_WORKSPACE}\Qt\${{ matrix.cfg.qt_version }}\msvc2022_64\bin\windeployqt.exe" `
bin\katehighlightingindexer.exe --release --no-opengl-sw --no-system-d3d-compiler

# Now build for ARM64
- name: Add MSVC to PATH (arm64)
uses: ilammy/msvc-dev-cmd@v1
with:
arch: amd64_arm64
- name: Build Qt Libs
run: |
cd "${Env:RUNNER_WORKSPACE}\build_deps"
cd extra-cmake-modules-${{ matrix.cfg.kf_fullver }}
mkdir build && cd build
cmake -G "NMake Makefiles" `
"-DQT_HOST_PATH=${Env:RUNNER_WORKSPACE}/Qt/${{ matrix.cfg.qt_version }}/msvc2022_64" `
"-DCMAKE_PREFIX_PATH=${Env:RUNNER_WORKSPACE}/Qt/${{ matrix.cfg.qt_version }}/msvc2022_arm64" `
"-DCMAKE_INSTALL_PREFIX=${Env:RUNNER_WORKSPACE}/Qt/${{ matrix.cfg.qt_version }}/msvc2022_arm64" `
-DCMAKE_CROSS_COMPILING=ON -DCMAKE_SYSTEM_NAME=Windows `
-DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_QT6=ON ..
cmake --build . --target install
cd ..\..\syntax-highlighting-${{ matrix.cfg.kf_fullver }}
mkdir build && cd build
cmake -G "NMake Makefiles" `
"-DQT_HOST_PATH=${Env:RUNNER_WORKSPACE}/Qt/${{ matrix.cfg.qt_version }}/msvc2022_64" `
"-DCMAKE_PREFIX_PATH=${Env:RUNNER_WORKSPACE}/Qt/${{ matrix.cfg.qt_version }}/msvc2022_arm64" `
"-DCMAKE_INSTALL_PREFIX=${Env:RUNNER_WORKSPACE}/Qt/${{ matrix.cfg.qt_version }}/msvc2022_arm64" `
-DCMAKE_CROSS_COMPILING=ON -DCMAKE_SYSTEM_NAME=Windows `
"-DKATEHIGHLIGHTINGINDEXER_EXECUTABLE=${Env:RUNNER_WORKSPACE}/build_deps/syntax-highlighting-${{ matrix.cfg.kf_fullver }}/build-host/bin/katehighlightingindexer.exe" `
-DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_QT6=ON ..
cmake --build .
cmake --build . --target install
- name: Build qtextpad
run: |
mkdir build
cd build
cmake -G "NMake Makefiles" `
"-DQT_HOST_PATH=${Env:RUNNER_WORKSPACE}/Qt/${{ matrix.cfg.qt_version }}/msvc2022_64" `
"-DCMAKE_PREFIX_PATH=${Env:RUNNER_WORKSPACE}/Qt/${{ matrix.cfg.qt_version }}/msvc2022_arm64" `
"-DCMAKE_INSTALL_PREFIX=${Env:GITHUB_WORKSPACE}/dist/qtextpad-arm64" `
-DCMAKE_CROSS_COMPILING=ON -DCMAKE_SYSTEM_NAME=Windows `
-DCMAKE_BUILD_TYPE=Release ..
cmake --build .
cmake --build . --target install
- name: Package qtextpad
run: |
$buildver = ((git describe --dirty) | Out-String).Trim()
$buildver += "-qt" + "${{ matrix.cfg.qt_version }}"[0]
cd "${Env:GITHUB_WORKSPACE}\dist"
windeployqt qtextpad-arm64\qtextpad.exe --release --no-opengl-sw --no-system-d3d-compiler
copy -Path "${Env:GITHUB_WORKSPACE}\COPYING", `
"${Env:RUNNER_WORKSPACE}\Qt\${{ matrix.cfg.qt_version }}\msvc2022_arm64\bin\KF*SyntaxHighlighting.dll" `
-Destination qtextpad-arm64
cmake -E copy_directory "${Env:RUNNER_WORKSPACE}\Qt\${{ matrix.cfg.qt_version }}\msvc2022_arm64\bin\data" `
qtextpad-arm64\data
windeployqt qtextpad-arm64\KF*SyntaxHighlighting.dll --release --no-opengl-sw --no-system-d3d-compiler
del qtextpad-arm64\tls\qopensslbackend.dll

cmake -E tar cf "..\qtextpad-arm64-${buildver}.zip" --format=zip qtextpad-arm64
cd ..\win32
cmake -E tar xf "..\qtextpad-arm64-${buildver}.zip"
iscc setup-arm64.iss
cmake -E rename qtextpad-arm64.exe "..\qtextpad-arm64-${buildver}.exe"
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: QTextPad-arm64-qt${{ matrix.cfg.qt_version }}
path: qtextpad-arm64-*.*
2 changes: 1 addition & 1 deletion src/aboutdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ AboutDialog::AboutDialog(QWidget *parent)
aboutText->setText(tr(
"<b>QTextPad %1</b><br />"
"<br />"
"Copyright \xC2\xA9 2020 - 2024 Michael Hansen<br />"
"Copyright \xC2\xA9 2020 - 2025 Michael Hansen<br />"
"<br />"
"<a href=\"https://github.com/zrax/qtextpad\">https://github.com/zrax/qtextpad</a><br />"
).arg(QTextPadVersion::versionString()));
Expand Down
Loading
Loading