You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
3.3 KiB
122 lines
3.3 KiB
# 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"
|