From d0c9225a7e7aa6c6c85eb9fc97dcaf34b1b6a33a Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 10 Jun 2022 11:34:33 -0400 Subject: Utilities/Release: Add script to build Qt 6.3.0 Windows binaries These may be used to build CMake binaries for Windows. --- Utilities/Release/win/qt-6.3.0-win-msvc.ps1 | 135 ++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100755 Utilities/Release/win/qt-6.3.0-win-msvc.ps1 (limited to 'Utilities/Release') diff --git a/Utilities/Release/win/qt-6.3.0-win-msvc.ps1 b/Utilities/Release/win/qt-6.3.0-win-msvc.ps1 new file mode 100755 index 0000000000..265b26e9a6 --- /dev/null +++ b/Utilities/Release/win/qt-6.3.0-win-msvc.ps1 @@ -0,0 +1,135 @@ +# 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 '^(?[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" -- cgit v1.2.1