# 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', [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 '^(?[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"