Utilities/Release: Update to Qt 6.10.1 on Windows builds

Now that we require Windows 10 for our official binaries,
we can use a more recent version of Qt.
This commit is contained in:
Brad King
2025-12-08 20:51:04 -05:00
parent b9ec8d7fcb
commit 1fef953655
8 changed files with 23 additions and 189 deletions

View File

@@ -9,5 +9,7 @@ set(CMAKE_C_FLAGS "-D_WIN32_WINNT=0x0A00 -DNTDDI_VERSION=0x0A000000" CACHE STRIN
set(CMAKE_CXX_FLAGS "-GR -EHsc -D_WIN32_WINNT=0x0A00 -DNTDDI_VERSION=0x0A000000" CACHE STRING "")
set(CMAKE_EXE_LINKER_FLAGS "-machine:x86 -subsystem:console,6.02" CACHE STRING "")
include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_package_common_x86.cmake")
set(qt "$ENV{CI_PROJECT_DIR}/.gitlab/qt")
set(CMAKE_PREFIX_PATH "${qt}" CACHE STRING "")
include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_package_common.cmake")

View File

@@ -1,13 +0,0 @@
set(qt "$ENV{CI_PROJECT_DIR}/.gitlab/qt")
set(CMake_QT_STATIC_QWindowsIntegrationPlugin_LIBRARIES
${qt}/plugins/platforms/qwindows.lib
${qt}/plugins/styles/qwindowsvistastyle.lib
${qt}/lib/Qt5EventDispatcherSupport.lib
${qt}/lib/Qt5FontDatabaseSupport.lib
${qt}/lib/Qt5ThemeSupport.lib
${qt}/lib/qtfreetype.lib
${qt}/lib/qtlibpng.lib
imm32.lib
wtsapi32.lib
CACHE STRING "")
set(CMAKE_PREFIX_PATH "${qt}" CACHE STRING "")

View File

@@ -9,5 +9,7 @@ set(CMAKE_C_FLAGS "-D_WIN32_WINNT=0x0A00 -DNTDDI_VERSION=0x0A000000" CACHE STRIN
set(CMAKE_CXX_FLAGS "-GR -EHsc -D_WIN32_WINNT=0x0A00 -DNTDDI_VERSION=0x0A000000" CACHE STRING "")
set(CMAKE_EXE_LINKER_FLAGS "-machine:x64 -subsystem:console,6.02" CACHE STRING "")
include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_package_common_x86.cmake")
set(qt "$ENV{CI_PROJECT_DIR}/.gitlab/qt")
set(CMAKE_PREFIX_PATH "${qt}" CACHE STRING "")
include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_package_common.cmake")

View File

@@ -17,16 +17,16 @@ if ("$ENV{CMAKE_CONFIGURATION}" MATCHES "windows.*package")
set(qt_url_root "https://cmake.org/files/dependencies/qt")
set(qt_url_path "")
if ("$ENV{CMAKE_CONFIGURATION}" MATCHES "windows_x86_64_package")
list(APPEND qt_files "qt-5.15.10-win-x86_64-msvc_v142-1.zip")
set(qt_subdir "qt-5.15.10-win-x86_64-msvc_v142-1")
list(APPEND qt_files "qt-6.10.1-win-x86_64-msvc_v145-1.zip")
set(qt_subdir "qt-6.10.1-win-x86_64-msvc_v145-1")
elseif ("$ENV{CMAKE_CONFIGURATION}" MATCHES "windows_i386_package")
list(APPEND qt_files "qt-5.15.10-win-i386-msvc_v142-1.zip")
set(qt_subdir "qt-5.15.10-win-i386-msvc_v142-1")
list(APPEND qt_files "qt-6.10.1-win-i386-msvc_v145-1.zip")
set(qt_subdir "qt-6.10.1-win-i386-msvc_v145-1")
elseif ("$ENV{CMAKE_CONFIGURATION}" MATCHES "windows_arm64_package")
list(APPEND qt_files "qt-6.3.0-win-arm64-msvc_v143-1.zip")
set(qt_subdir "qt-6.3.0-win-arm64-msvc_v143-1")
list(APPEND qt_files "qt-6.3.0-win-x86_64-msvc_v143-1.zip")
set(qt_host_subdir "qt-6.3.0-win-x86_64-msvc_v143-1")
list(APPEND qt_files "qt-6.10.1-win-arm64-msvc_v145-1.zip")
set(qt_subdir "qt-6.10.1-win-arm64-msvc_v145-1")
list(APPEND qt_files "qt-6.10.1-win-x86_64-msvc_v145-1.zip")
set(qt_host_subdir "qt-6.10.1-win-x86_64-msvc_v145-1")
else ()
message(FATAL_ERROR "Unknown arch to use for Qt")
endif()

View File

@@ -13,9 +13,6 @@ set("5.15.1-0-202009071110qtbase-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_6
set("qt-5.9.9-macosx10.10-x86_64-arm64.tar.xz_hash" d4449771afa0bc6a809c14f1e6d939e7732494cf059503ae451e2bfe8fc60cc1)
set("6.9.3-0-202509261207qtbase-MacOS-MacOS_15-Clang-MacOS-MacOS_15-X86_64-ARM64.7z_hash" 805144e619b7c7b0e9c985d929e1f290241d88b884218db3ad7d56bd579d6b4a)
set("qt-5.15.10-win-i386-msvc_v142-1.zip_hash" c158cebc054d3f4f09733772a8a04789e2884912d45782e8c0c5e6a0b2773e92)
set("qt-5.15.10-win-x86_64-msvc_v142-1.zip_hash" d55c017aef359f6aa8c592b18ba13cc120c749417b55671548970690126cd139)
set("qt-6.3.0-win-arm64-msvc_v143-1.zip_hash" f794c035fd4ff9f04468e1787a60d93d7496119c0060c3173a76d24a6b551b14)
set("qt-6.3.0-win-i386-msvc_v143-1.zip_hash" 972bc707f78d11b44f360643ca4d0c898e761f7add43b96117d958c70d84a443)
set("qt-6.3.0-win-x86_64-msvc_v143-1.zip_hash" 4fb0aaebe184f40392f1bb246469dca591bfdfb8f915e19f921476222473ac90)
set("qt-6.10.1-win-arm64-msvc_v145-1.zip_hash" 59e150883f31c0e31a2890f06b6e434ad44505dba876fda4a7c0994c9b0bdfe1)
set("qt-6.10.1-win-i386-msvc_v145-1.zip_hash" 09100628aecb7cdde07040d7437c09830ed8c17720960b10339b114cb4bbf18b)
set("qt-6.10.1-win-x86_64-msvc_v145-1.zip_hash" 931f2354c715b30bc0ac35028f9d778aa552aa8a66580fc73c6a32384c5fa042)

View File

@@ -1,26 +0,0 @@
diff --git a/lib/cmake/Qt5Core/Qt5CoreConfig.cmake b/lib/cmake/Qt5Core/Qt5CoreConfig.cmake
index 5bad1af..25bf3e3 100644
--- a/lib/cmake/Qt5Core/Qt5CoreConfig.cmake
+++ b/lib/cmake/Qt5Core/Qt5CoreConfig.cmake
@@ -264,7 +264,7 @@ if (NOT TARGET Qt5::Core)
return()
endif()
- set(_Qt5Core_LIB_DEPENDENCIES "")
+ set(_Qt5Core_LIB_DEPENDENCIES "${_qt5Core_install_prefix}/lib/qtpcre2.lib;netapi32.lib;version.lib")
if(NOT Qt5_EXCLUDE_STATIC_DEPENDENCIES)
diff --git a/lib/cmake/Qt5Widgets/Qt5WidgetsConfig.cmake b/lib/cmake/Qt5Widgets/Qt5WidgetsConfig.cmake
index d9966ad..308e4cb 100644
--- a/lib/cmake/Qt5Widgets/Qt5WidgetsConfig.cmake
+++ b/lib/cmake/Qt5Widgets/Qt5WidgetsConfig.cmake
@@ -264,7 +264,7 @@ if (NOT TARGET Qt5::Widgets)
return()
endif()
- set(_Qt5Widgets_LIB_DEPENDENCIES "Qt5::Gui;Qt5::Core")
+ set(_Qt5Widgets_LIB_DEPENDENCIES "Qt5::Gui;Qt5::Core;dwmapi.lib;uxtheme.lib")
if(NOT Qt5_EXCLUDE_STATIC_DEPENDENCIES)

View File

@@ -1,121 +0,0 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file LICENSE.rst or https://cmake.org/licensing for details.
# Run this script on a Windows host to generate Qt binaries.
# Set the PATH environment variable to contain the locations of cmake and git.
param (
[string]$cmake = 'cmake',
[string]$git = 'git',
[switch]$trace
)
if ($trace -eq $true) {
Set-PSDebug -Trace 1
}
$ErrorActionPreference = 'Stop'
$ProgressPreference = 'SilentlyContinue'
if ($env:VSCMD_ARG_TGT_ARCH -eq "x64") {
$arch = "x86_64";
} elseif ($env:VSCMD_ARG_TGT_ARCH -eq "x86") {
$arch = "i386";
} else {
Write-Host "VSCMD_ARG_TGT_ARCH env var not recognized. Run this from a Visual Studio Command Prompt."
exit 1
}
if ($env:VCToolsVersion -match '^(?<version>[0-9][0-9]\.[0-9])') {
$toolset = "msvc_v" + $Matches.version -replace '\.', ''
} else {
Write-Host "VCToolsVersion env var not set. Run this from a Visual Studio Command Prompt."
}
$srcname = "qt-everywhere-src-5.15.10"
$pkgname = "qt-5.15.10-win-$arch-$toolset-1"
$topdir = $pwd.Path
$srcdir = Join-Path $topdir $srcname
$blddir = Join-Path $topdir "$pkgname-build"
$prefix = Join-Path $topdir $pkgname
# JOM
if ( -not (Test-Path -Path "jom")) {
Invoke-WebRequest -Uri "http://download.qt-project.org/official_releases/jom/jom_1_1_4.zip" -OutFile jom.zip
if ($(Get-FileHash "jom.zip").Hash -ne 'd533c1ef49214229681e90196ed2094691e8c4a0a0bef0b2c901debcb562682b') {
Write-Host "jom hash does not match"
exit 1
}
Expand-Archive -Path jom.zip -DestinationPath jom
Remove-Item jom.zip
}
$jom = "$topdir\jom\jom.exe"
# Qt Source
if ( -not (Test-Path -Path $srcdir)) {
Invoke-WebRequest -Uri "https://download.qt.io/archive/qt/5.15/5.15.10/single/qt-everywhere-opensource-src-5.15.10.tar.xz" -OutFile qt.tar.xz
if ($(Get-FileHash "qt.tar.xz").Hash -ne 'b545cb83c60934adc9a6bbd27e2af79e5013de77d46f5b9f5bb2a3c762bf55ca') {
Write-Host "qt hash does not match"
exit 1
}
& $cmake -E tar xvf qt.tar.xz
Remove-Item qt.tar.xz
}
# Build Qt
if ( -not (Test-Path -Path $blddir)) {
New-Item -ItemType Directory -Path $blddir
Set-Location -Path "$blddir"
& ..\$srcname\configure.bat `
-prefix $prefix `
-static `
-static-runtime `
-release `
-opensource -confirm-license `
-platform win32-msvc `
-mp `
-gui `
-widgets `
-qt-pcre `
-qt-zlib `
-qt-libpng `
-qt-libjpeg `
-no-gif `
-no-icu `
-no-pch `
-no-angle `
-no-opengl `
-no-dbus `
-no-harfbuzz `
-no-accessibility `
-skip declarative `
-skip multimedia `
-skip qtcanvas3d `
-skip qtconnectivity `
-skip qtdeclarative `
-skip qtlocation `
-skip qtmultimedia `
-skip qtsensors `
-skip qtserialbus `
-skip qtserialport `
-skip qtsvg `
-skip qtwayland `
-skip qtwebchannel `
-skip qtwebengine `
-skip qtwebsockets `
-skip qtxmlpatterns `
-nomake examples -nomake tests
& $jom -J $env:NUMBER_OF_PROCESSORS
}
# Install Qt
if ( -not (Test-Path -Path $prefix)) {
& $jom install
# Patch the installation.
Set-Location -Path $prefix
& $git apply -v (Join-Path $PSScriptRoot qt-5.15.10-win-x86-msvc-install.patch)
}
# Package Qt
Set-Location -Path $topdir
& $cmake -E tar cf "$pkgname.zip" "--format=zip" "$pkgname"

View File

@@ -23,30 +23,23 @@ else()
return()
endif()
set(srcname "qtbase-everywhere-src-6.3.0")
set(pkgname "qt-6.3.0-win-${arch}-${toolset}-1")
set(pkgname_host "qt-6.3.0-win-x86_64-${toolset}-1")
set(srcname "qtbase-everywhere-src-6.10.1")
set(pkgname "qt-6.10.1-win-${arch}-${toolset}-1")
set(pkgname_host "qt-6.10.1-win-x86_64-${toolset}-1")
set(topdir "${CMAKE_CURRENT_BINARY_DIR}")
set(srcdir "${topdir}/${srcname}")
set(blddir "${topdir}/${pkgname}-build")
set(blddir "${topdir}/${pkgname}-b")
set(prefix "${topdir}/${pkgname}")
set(prefix_host "${topdir}/${pkgname_host}")
# Qt Source
if (NOT EXISTS "${srcdir}")
file(DOWNLOAD "https://download.qt.io/official_releases/qt/6.3/6.3.0/submodules/qtbase-everywhere-src-6.3.0.tar.xz" qt.tar.xz
EXPECTED_HASH SHA256=b865aae43357f792b3b0a162899d9bf6a1393a55c4e5e4ede5316b157b1a0f99)
file(DOWNLOAD "https://download.qt.io/official_releases/qt/6.10/6.10.1/submodules/qtbase-everywhere-src-6.10.1.tar.xz" qt.tar.xz
EXPECTED_HASH SHA256=5a6226f7e23db51fdc3223121eba53f3f5447cf0cc4d6cb82a3a2df7a65d265d)
file(ARCHIVE_EXTRACT INPUT qt.tar.xz)
file(REMOVE qt.tar.xz)
endif()
# Download and use LLVM's clang-cl to compiler for arm64
if (arch STREQUAL "arm64" AND CMAKE_ARGV3 STREQUAL "clang-cl")
set(ENV{PATH} "c:/Program Files/LLVM/bin;$ENV{PATH}")
set(ENV{CC} "clang-cl --target=arm64-pc-windows-msvc")
set(ENV{CXX} "clang-cl --target=arm64-pc-windows-msvc")
endif()
# Build Qt
if (NOT EXISTS "${blddir}")
file(MAKE_DIRECTORY "${blddir}")