mirror of
https://github.com/transmission/transmission.git
synced 2026-02-14 23:19:34 +00:00
* fix: hicpp-use-auto,modernize-use-auto * refactor: make Prefs::getKey() a static method refactor: make Prefs::isCore() a static method refactor: make Prefs::type() a static method * refactor: Application takes a Prefs& arg, not a std::unique_ptr<Prefs> arg * fix: bugprone-exception-escape save settings by calling prefs.save() from main() * refactor: load settings by calling prefs.load() from main() * refactor: use preferred declaration order in Prefs * fixup! fix: bugprone-exception-escape * refactor: add Prefs::current_values() * refactor: clean up namespace use in Prefs.cc * feat: add QString, QDateTime serializers * test: add scaffolding for testing Qt code test: add tests for Prefs * refactor: remove unused #includes * build: add clang-tidy rules to tests/qt/ * refactor: clean up the new test code a little * chore: add missing copyright statement * ci: ensure Qt6Test is installed build: check for QTest when ENABLE_TESTS + ENABLE_QT are ON * fixup! feat: add QString, QDateTime serializers * fix: Wswitch warning * build: do not disable tests in release/windows/build-qt5.psl, build-qt6.psl * ci: set QT_QPA_PLATFORM for running new Qt tests * test: build cleanly in Qt 5.15 * fixup! fixup! feat: add QString, QDateTime serializers fix QDateTime serializer on macOS * fixup! ci: set QT_QPA_PLATFORM for running new Qt tests install xcb-util-cursor on alpine
154 lines
6.3 KiB
PowerShell
154 lines
6.3 KiB
PowerShell
#!/usr/bin/env pwsh
|
|
|
|
$global:Qt6Version = '6.10.1'
|
|
|
|
$global:Qt6Deps = @(
|
|
'DBus'
|
|
'OpenSsl'
|
|
'Zlib'
|
|
)
|
|
|
|
function global:Build-Qt6([string] $PrefixDir, [string] $Arch, [string] $DepsPrefixDir) {
|
|
$Filename = "qt-everywhere-src-${Qt6Version}.zip" # tar.xz has some names truncated (e.g. .../double-conversion.h -> .../double-conv)
|
|
$Url = "https://qt.mirror.constant.com/archive/qt/$($Qt6Version -replace '\.\d+$', '')/${Qt6Version}/single/${Filename}"
|
|
|
|
$ArchiveBase = "qt-everywhere-src-${Qt6Version}"
|
|
$UnpackFlags = @(
|
|
(Join-Path $ArchiveBase qtactiveqt '*')
|
|
(Join-Path $ArchiveBase qtbase '*')
|
|
(Join-Path $ArchiveBase qtsvg '*')
|
|
(Join-Path $ArchiveBase qttools '*')
|
|
(Join-Path $ArchiveBase qttranslations '*')
|
|
(Join-Path $ArchiveBase .gitmodules)
|
|
(Join-Path $ArchiveBase cmake)
|
|
(Join-Path $ArchiveBase CMakeLists.txt)
|
|
(Join-Path $ArchiveBase configure.bat)
|
|
(Join-Path $ArchiveBase configure.json)
|
|
(Join-Path $ArchiveBase qt.pro)
|
|
)
|
|
|
|
$SourceDir = Invoke-DownloadAndUnpack $Url $Filename $UnpackFlags
|
|
$BuildDir = Join-Path $SourceDir .build
|
|
|
|
$ConfigOptions = @(
|
|
'-opensource'
|
|
'-confirm-license'
|
|
'-prefix'; $PrefixDir
|
|
'-disable-deprecated-up-to'; '0x060000'
|
|
'-release'
|
|
'-force-debug-info'
|
|
'-unity-build'
|
|
'-dbus'
|
|
'-ssl'
|
|
'-openssl'
|
|
'-system-zlib'
|
|
'-qt-pcre'
|
|
'-qt-libpng'
|
|
'-qt-libjpeg'
|
|
'-no-opengl'
|
|
'-no-feature-androiddeployqt'
|
|
'-no-feature-assistant'
|
|
'-no-feature-brotli'
|
|
'-no-feature-clang'
|
|
'-no-feature-commandlinkbutton'
|
|
'-no-feature-concurrent'
|
|
'-no-feature-cpp-winrt'
|
|
'-no-feature-datawidgetmapper'
|
|
'-no-feature-designer'
|
|
'-no-feature-dial'
|
|
'-no-feature-direct2d'
|
|
'-no-feature-directwrite3'
|
|
'-no-feature-distancefieldgenerator'
|
|
'-no-feature-dockwidget'
|
|
'-no-feature-emojisegmenter'
|
|
'-no-feature-fontcombobox'
|
|
'-no-feature-fontdialog'
|
|
'-no-feature-gestures'
|
|
'-no-feature-keysequenceedit'
|
|
'-no-feature-lcdnumber'
|
|
'-no-feature-listwidget'
|
|
'-no-feature-mdiarea'
|
|
'-no-feature-networkdiskcache'
|
|
'-no-feature-networklistmanager'
|
|
'-no-feature-opengl'
|
|
'-no-feature-pdf'
|
|
'-no-feature-pixeltool'
|
|
'-no-feature-printsupport'
|
|
'-no-feature-qdbus'
|
|
'-no-feature-qtattributionsscanner'
|
|
'-no-feature-qtdiag'
|
|
'-no-feature-qtgui-threadpool'
|
|
'-no-feature-qtplugininfo'
|
|
'-no-feature-raster-64bit'
|
|
'-no-feature-schannel'
|
|
'-no-feature-scroller'
|
|
'-no-feature-sharedmemory'
|
|
'-no-feature-splashscreen'
|
|
'-no-feature-sql'
|
|
'-no-feature-sqlmodel'
|
|
'-no-feature-syntaxhighlighter'
|
|
'-no-feature-systemsemaphore'
|
|
'-no-feature-tablewidget'
|
|
'-no-feature-textmarkdownreader'
|
|
'-no-feature-textmarkdownwriter'
|
|
'-no-feature-textodfwriter'
|
|
'-no-feature-toolbox'
|
|
# '-no-feature-treewidget'
|
|
'-no-feature-tuiotouch'
|
|
'-no-feature-undocommand'
|
|
'-no-feature-vkgen'
|
|
'-no-feature-vulkan'
|
|
'-no-feature-whatsthis'
|
|
'-no-feature-windeployqt'
|
|
'-no-feature-wizard'
|
|
'-no-feature-zstd'
|
|
'-nomake'; 'examples'
|
|
'-nomake'; 'tests'
|
|
'-I'; (Join-Path $DepsPrefixDir include).Replace('\', '/')
|
|
'-L'; (Join-Path $DepsPrefixDir lib).Replace('\', '/')
|
|
'--'
|
|
"-DCMAKE_PREFIX_PATH=${DepsPrefixDir}"
|
|
)
|
|
|
|
# No need in GUI and some other tools
|
|
Edit-TextFile (Join-Path $SourceDir qttools src CMakeLists.txt) 'TARGET Qt::Widgets' 'QT_FEATURE_designer'
|
|
Edit-TextFile (Join-Path $SourceDir qttools src CMakeLists.txt) 'add_subdirectory[(]qdoc[)]' ''
|
|
Edit-TextFile (Join-Path $SourceDir qttools src linguist CMakeLists.txt) 'add_subdirectory[(](linguist|lprodump)[)]' ''
|
|
|
|
# No need in 'testcon' QtAx tool
|
|
Edit-TextFile (Join-Path $SourceDir qtactiveqt CMakeLists.txt) 'OR NOT TARGET Qt::PrintSupport' ''
|
|
Edit-TextFile (Join-Path $SourceDir qtactiveqt CMakeLists.txt) 'PrintSupport' ''
|
|
Edit-TextFile (Join-Path $SourceDir qtactiveqt tools CMakeLists.txt) 'add_subdirectory[(]testcon[)]' ''
|
|
|
|
# Fix unity build (due to https://github.com/qt/qtbase/commit/a6ac84731776381ee5ac6b6306acdc4418e900d9)
|
|
Edit-TextFile (Join-Path $SourceDir qtbase src corelib text qbytearray.h) 'Q_PRESUME.+;' ''
|
|
Edit-TextFile (Join-Path $SourceDir qtbase src corelib text qstring.h) 'Q_PRESUME.+;' ''
|
|
Edit-TextFile (Join-Path $SourceDir qtbase src corelib tools qlist.h) 'Q_PRESUME.+;' ''
|
|
|
|
# Fix build (including because of disabled features)
|
|
Edit-TextFile (Join-Path $SourceDir qtbase src gui text windows qwindowsfontdatabasebase_p.h) 'unique_ptr<QCustomFontFileLoader>' 'unique_ptr<int>'
|
|
Edit-TextFile (Join-Path $SourceDir qtactiveqt src activeqt container qaxwidget.cpp) '.*<(qdockwidget|qwhatsthis)[.]h>|QWhatsThis::[a-zA-Z]+[(][)]' ''
|
|
Edit-TextFile (Join-Path $SourceDir qtactiveqt src activeqt control qaxserverbase.cpp) '.*<qwhatsthis[.]h>|QWhatsThis::[a-zA-Z]+[(][)]' ''
|
|
|
|
Invoke-NativeCommand cmake -E remove_directory $BuildDir
|
|
$env:PATH = @(
|
|
(Join-Path $PrefixDir bin)
|
|
(Join-Path $DepsPrefixDir bin)
|
|
(Join-Path $BuildDir qtbase lib)
|
|
$env:PATH
|
|
) -join [System.IO.Path]::PathSeparator
|
|
|
|
New-Item -Path $BuildDir -ItemType Directory -ErrorAction Ignore | Out-Null
|
|
Push-Location -Path $BuildDir
|
|
Invoke-VcEnvCommand (Join-Path $SourceDir configure) @ConfigOptions
|
|
Invoke-VcEnvCommand cmake --build .
|
|
Invoke-VcEnvCommand cmake --install .
|
|
Pop-Location
|
|
|
|
# install target doesn't copy PDBs for release DLLs
|
|
Get-Childitem -Path (Join-Path $BuildDir qtbase lib) | `
|
|
ForEach-Object { if ($_ -is [System.IO.DirectoryInfo] -or $_.Name -like '*.pdb') { Copy-Item -Path $_.FullName -Destination (Join-Path $PrefixDir lib) -Filter '*.pdb' -Recurse -Force } }
|
|
Get-Childitem -Path (Join-Path $BuildDir qtbase plugins) | `
|
|
ForEach-Object { if ($_ -is [System.IO.DirectoryInfo] -or $_.Name -like '*.pdb') { Copy-Item -Path $_.FullName -Destination (Join-Path $PrefixDir plugins) -Filter '*.pdb' -Recurse -Force } }
|
|
}
|