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