summaryrefslogtreecommitdiffstats
path: root/Utilities/Release
diff options
context:
space:
mode:
authorCristian Adam <cristian.adam@gmail.com>2022-06-17 10:46:00 (GMT)
committerBrad King <brad.king@kitware.com>2022-06-17 15:04:10 (GMT)
commite0d9ee0cc4de5198bfb98b038402208604feec62 (patch)
tree5f5f77d1cb675aeb06db5b4db9574d9e56fd8571 /Utilities/Release
parent81104d7ce8db8b07ebc26b0789cde4b20f48d720 (diff)
downloadCMake-e0d9ee0cc4de5198bfb98b038402208604feec62.zip
CMake-e0d9ee0cc4de5198bfb98b038402208604feec62.tar.gz
CMake-e0d9ee0cc4de5198bfb98b038402208604feec62.tar.bz2
Utilities/Release: Simplify script to build Qt 6.3.0 Windows binaries
Revise and simplify the script from commit d0c9225a7e (Utilities/Release: Add script to build Qt 6.3.0 Windows binaries, 2022-06-10, v3.24.0-rc1~4^2~5). For `cmake-gui` we only need QtBase. Also, convert to a `.cmake` script. Issue: #21902
Diffstat (limited to 'Utilities/Release')
-rwxr-xr-xUtilities/Release/win/qt-6.3.0-win-msvc.ps1135
-rw-r--r--Utilities/Release/win/qtbase-6.3.0-win-msvc.cmake121
2 files changed, 121 insertions, 135 deletions
diff --git a/Utilities/Release/win/qt-6.3.0-win-msvc.ps1 b/Utilities/Release/win/qt-6.3.0-win-msvc.ps1
deleted file mode 100755
index 265b26e..0000000
--- a/Utilities/Release/win/qt-6.3.0-win-msvc.ps1
+++ /dev/null
@@ -1,135 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
-# file Copyright.txt 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',
- [string]$ninja = 'ninja',
- [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";
-} elseif ($env:VSCMD_ARG_TGT_ARCH -eq "arm64") {
- $arch = "arm64";
-} 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-6.3.0"
-$pkgname = "qt-6.3.0-win-$arch-$toolset-1"
-$pkgname_host = "qt-6.3.0-win-x86_64-$toolset-1"
-$topdir = $pwd.Path
-$srcdir = Join-Path $topdir $srcname
-$blddir = Join-Path $topdir "$pkgname-build"
-$prefix = Join-Path $topdir $pkgname
-$prefix_host = Join-Path $topdir "$pkgname_host"
-
-# Qt Source
-if ( -not (Test-Path -Path $srcdir)) {
- Invoke-WebRequest -Uri "https://download.qt.io/official_releases/qt/6.3/6.3.0/single/qt-everywhere-src-6.3.0.tar.xz" -OutFile qt.tar.xz
- if ($(Get-FileHash "qt.tar.xz").Hash -ne 'cd2789cade3e865690f3c18df58ffbff8af74cc5f01faae50634c12eb52dd85b') {
- 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"
- if ($arch -eq "arm64") {
- $qt_platform = "win32-arm64-msvc"
- $qt_host_path = "-qt-host-path", "$prefix_host"
- } else {
- $qt_platform = "win32-msvc"
- $qt_host_path = $null
- }
- & ..\$srcname\configure.bat `
- -prefix $prefix `
- -static `
- -static-runtime `
- -release `
- -opensource -confirm-license `
- -platform $qt_platform `
- $qt_host_path `
- -gui `
- -widgets `
- -qt-doubleconversion `
- -qt-freetype `
- -qt-harfbuzz `
- -qt-pcre `
- -qt-zlib `
- -qt-libpng `
- -qt-libjpeg `
- -no-gif `
- -no-tiff `
- -no-webp `
- -no-icu `
- -no-pch `
- -no-opengl `
- -no-dbus `
- -no-accessibility `
- -no-feature-androiddeployqt `
- -no-feature-assistant `
- -no-feature-designer `
- -no-feature-linguist `
- -no-feature-pixeltool `
- -no-feature-printsupport `
- -no-feature-qtattributionsscanner `
- -no-feature-qtdiag `
- -no-feature-qtplugininfo `
- -no-feature-sql `
- -no-feature-windeployqt `
- -skip qtconnectivity `
- -skip qtdeclarative `
- -skip qtdoc `
- -skip qtlottie `
- -skip qtmqtt `
- -skip qtmultimedia `
- -skip qtopcua `
- -skip qtquick3d `
- -skip qtquicktimeline `
- -skip qtscxml `
- -skip qtsensors `
- -skip qtserialport `
- -skip qtsvg `
- -skip qtvirtualkeyboard `
- -skip qtwayland `
- -skip qtwebchannel `
- -skip qtwebengine `
- -skip qtwebsockets `
- -skip qtwebview `
- -nomake examples `
- -nomake tests
- & $ninja
-}
-
-# Install Qt
-if ( -not (Test-Path -Path $prefix)) {
- & $ninja install
-}
-
-# Package Qt
-Set-Location -Path $topdir
-& $cmake -E tar cf "$pkgname.zip" "--format=zip" "$pkgname"
diff --git a/Utilities/Release/win/qtbase-6.3.0-win-msvc.cmake b/Utilities/Release/win/qtbase-6.3.0-win-msvc.cmake
new file mode 100644
index 0000000..ae3651d
--- /dev/null
+++ b/Utilities/Release/win/qtbase-6.3.0-win-msvc.cmake
@@ -0,0 +1,121 @@
+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# Run this script in a Visual Studio Command Prompt to generate Qt binaries.
+
+cmake_minimum_required(VERSION 3.23)
+
+if ("$ENV{VSCMD_ARG_TGT_ARCH}" STREQUAL "x64")
+ set(arch "x86_64")
+elseif ("$ENV{VSCMD_ARG_TGT_ARCH}" STREQUAL "x86")
+ set(arch "i386")
+elseif ("$ENV{VSCMD_ARG_TGT_ARCH}" STREQUAL "arm64")
+ set(arch "arm64")
+else()
+ message("VSCMD_ARG_TGT_ARCH env var not recognized. Run this from a Visual Studio Command Prompt.")
+ return()
+endif()
+
+if ("$ENV{VCToolsVersion}" MATCHES [[^([0-9][0-9])\.([0-9])]])
+ set(toolset "msvc_v${CMAKE_MATCH_1}${CMAKE_MATCH_2}")
+else()
+ message( "VCToolsVersion='$ENV{VCToolsVersion}' env var not recognized. Run this from a Visual Studio Command Prompt.")
+ 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(topdir "${CMAKE_CURRENT_BINARY_DIR}")
+set(srcdir "${topdir}/${srcname}")
+set(blddir "${topdir}/${pkgname}-build")
+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(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}")
+ if ("${arch}" STREQUAL "arm64")
+ set(qt_platform "win32-arm64-msvc")
+ set(qt_host_path -qt-host-path "${prefix_host}")
+ else()
+ set(qt_platform "win32-msvc")
+ unset(qt_host_path)
+ endif()
+
+ execute_process(
+ RESULT_VARIABLE result
+ WORKING_DIRECTORY "${blddir}"
+ COMMAND
+ ${srcdir}/configure.bat
+ -prefix ${prefix}
+ -static
+ -static-runtime
+ -release
+ -opensource -confirm-license
+ -platform ${qt_platform}
+ ${qt_host_path}
+ -gui
+ -widgets
+ -qt-doubleconversion
+ -qt-freetype
+ -qt-harfbuzz
+ -qt-pcre
+ -qt-zlib
+ -qt-libpng
+ -qt-libjpeg
+ -no-gif
+ -no-icu
+ -no-pch
+ -no-opengl
+ -no-dbus
+ -no-accessibility
+ -no-feature-androiddeployqt
+ -no-feature-printsupport
+ -no-feature-sql
+ -nomake examples
+ -nomake tests
+ )
+ if(NOT result EQUAL 0)
+ message(FATAL_ERROR "configure.bat failed: ${result}")
+ endif()
+
+ execute_process(
+ RESULT_VARIABLE result
+ WORKING_DIRECTORY "${blddir}"
+ COMMAND ninja
+ )
+ if(NOT result EQUAL 0)
+ message(FATAL_ERROR "ninja failed: ${result}")
+ endif()
+endif()
+
+# Install Qt
+if (NOT EXISTS "${prefix}")
+ execute_process(
+ RESULT_VARIABLE result
+ WORKING_DIRECTORY "${blddir}"
+ COMMAND ninja install
+ )
+ if(NOT result EQUAL 0)
+ message(FATAL_ERROR "ninja install failed: ${result}")
+ endif()
+endif()
+
+# Package Qt
+file(ARCHIVE_CREATE OUTPUT "${pkgname}.zip" PATHS "${pkgname}" FORMAT "zip")