summaryrefslogtreecommitdiffstats
path: root/qmake
Commit message (Collapse)AuthorAgeFilesLines
* qmake: Fix iOS code signing after QSettings behavior changeAlexandru Croitor2020-10-061-3/+8
| | | | | | | | | | | | | | | | 6d9ec41f6fef7af0129d13fc99fffc7a548f6125 changed the behavior of QSettings::NativeFormat for .plist files. Previously an array of values was flattened into a multi-key QMap. Now that QMap doesn't support multiple values for the same key, the array is returned as QVariantList. Adjust the code to take that into account. Task-number: QTBUG-87218 Change-Id: I0cbf8ac7ef10b81539a29d1e68a09a40d3fe74ca Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Android: rename Android's package name for Qt 6Assam Boudjelthia2020-10-031-1/+1
| | | | | | | | | | Rename Android package name org.qtproject.qt5.android to org.qtproject.qt.android to avoid inconsistency with Qt 6 name. Also, we include the major version number in the jar target. Task-number: QTBUG-86969 Change-Id: Ibb68947289be1079911b34ea157bf089cc52c47f Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Android: set default API level to 23 in docsAssam Boudjelthia2020-09-231-1/+1
| | | | | | | | | Android minimum API level for Qt 6 is 23, this reflects that to some instances that still mention 21. Change-Id: I996f3ed3af14dca114129351d6ea06afcb8f45f5 Reviewed-by: Andy Shaw <andy.shaw@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: Regenerate projects to use new qt_internal_ APIAlexandru Croitor2020-09-232-13/+13
| | | | | | | | | | | Modify special case locations to use the new API as well. Clean up some stale .prev files that are not needed anymore. Clean up some project files that are not used anymore. Task-number: QTBUG-86815 Change-Id: I9947da921f98686023c6bb053dfcc101851276b5 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* CMake: Regenerate projectsAlexandru Croitor2020-09-222-3/+3
| | | | | | | | | Clean up the state of the projects, before changing the internal CMake API function names. Task-number: QTBUG-86815 Change-Id: I90f1b21b8ae4439a4a293872c3bb728dab44a50d Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qmake: Make use of QHash deterministicKai Koehne2020-09-191-1/+3
| | | | | | | | | As a build tool, qmake should produce deterministic outputs. Pick-to: 5.15 Task-number: QTBUG-86675 Change-Id: Ifc855d6ddf025cdad3aa57aee79beabf9c6008e2 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qmake: Support multiple /MERGE:from=to options in MSVC generatorJoerg Bornemann2020-09-181-1/+7
| | | | | | | | | | | | Any but the last /MERGE:from=to option passed to QMAKE_LFLAGS was ignored. Now, the first options gets a <MergeSections> tag and all further options are added as AdditionalOptions, because vcxproj files / the VS property editor do not support multiple MergeSections entries. Pick-to: 5.15 Fixes: QTBUG-86062 Change-Id: I65bddf0b8c7ed6c162008d6ad1b58c2aba2d07d9 Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* qmake: Compile fixJarek Kobus2020-09-181-1/+1
| | | | | | | This code, after applying it to linguist, didn't compile. Change-Id: I25011a44ca059a149f041f8f07848232883140cc Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Rename QLibraryInfo::location() to path()Lars Knoll2020-09-122-3/+3
| | | | | | | | As per ### Qt6 comment. Also rename the LibraryLocation enum to LibraryPath. Change-Id: I556025a19c5bcdf2ff52598eaba32269522d4128 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Cleanup ProString::append/prependLars Knoll2020-09-102-55/+38
| | | | | | | | | | Don't use evil hacks that make assumptions about QString internals. Change-Id: I663602d197f0fcf62886dbfb9a87547097cdab04 Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* Use QList instead of QVector in qmakeJarek Kobus2020-09-0511-22/+22
| | | | | | | Task-number: QTBUG-84469 Change-Id: I4a3da94702f1dad1ee10b1ba3c6712b6f40338c9 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Reimplement QSequentialIterable using QMetaSequenceUlf Hermann2020-09-035-1/+11
| | | | | Change-Id: Ie721a5f0caa697c4bf15a81f3762cf79d3c54f5a Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Add a QMetaSequence interfaceUlf Hermann2020-09-014-1/+12
| | | | | | | | | | | | | | | This is in line with QMetaType and will be used to implement a mutable QSequentialIterable. Later on, a QMetaAssociation will be added as well, to implement a mutable QAssociativeIterable. The code here represents the minimal set of functionality needed to have a practical sequential container. The functionality is not completely orthogonal. In particular, the index based operations could be implemented in terms of iterator-based operations. Task-number: QTBUG-81716 Change-Id: Ibd41eb7db248a774673c701549d9a03cbf2e48b6 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Remove MSVC workaround for QPolygonMarcel Krems2020-08-292-2/+1
| | | | | Change-Id: I62f7c6da7629dcdfda653a136d3bcd483359c86c Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Android: add option to get app arguments with AndroidManifest.xmlAssam Boudjelthia2020-08-281-0/+13
| | | | | | | | | | | AndroidManifest.xml file and the Android plugin already has a way to provide commandline-arguments to app with the tag "android.app.arguments". This change allow to set it from qmake/cmake and allow Qt Creator to use that. Task-number: QTCREATORBUG-23712 Change-Id: I3e680f40fd36ba6aaac7f344fb9509d2c3360e74 Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
* Doc: Improve documentation of ANDROID_EXTRA_PLUGINS qmake variableTopi Reinio2020-08-251-4/+35
| | | | | | | | | | | Clarify that the variable must point to a directory with a specific structure, and how the name mangling is applied to the deployed plugins. Pick-to: 5.15 Fixes: QTBUG-60022 Change-Id: I949cd73f65f86d4902eeab41fa7e5c6e6ffe44c3 Reviewed-by: BogDan Vatra <bogdan@kdab.com>
* Automatically register data/debug stream operations in QMetaTypeLars Knoll2020-08-241-0/+1
| | | | | | | | | | | | | | | | | | | | | | And remove the old manual registration code for those operators. Add some special handling for long/ulong, as these types could be streamed as a QVariant so far, but are not directly streamable through QDataStream. [ChangeLog][QtCore][QMetaType] The QMetaType::registerStreamOperators() and QMetaType::registerDebugStreamOperator() methods have been removed. The streaming operators for a type are now automatically registered together with the type registration. This implies that the operators should be visible wherever the type is visible and being used. [ChangeLog][Behavior Incompatible Changes] Because the QDataStream and QDebug serialization operators are automatically registered with QMetaType, the declarations of those functions must be present at any point where the type is used with QMetaType and QVariant. Change-Id: I4a0732651b20319af4a8397ff90b848ca4580d99 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Doc: Drop dependency on qtgraphicaleffectsPaul Wicking2020-08-201-1/+0
| | | | | | | qtgraphicaleffects is not part of 6.0, drop the doc dependency. Change-Id: I64a355860e0a3a92fa0ffe5ed960796f2e756d61 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Document qmake variable ANDROID_TARGET_ARCHKai Koehne2020-08-191-8/+8
| | | | | | | | | ANDROID_ABI is only available in CMake. In qmake, the variable is called ANDROID_TARGET_ARCH. Fixes: QTBUG-85542 Change-Id: I0f3f7320b08a4fe6448dd40c294254c644cfb3ee Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Disentangle QIODevice dependenciesLars Knoll2020-08-151-0/+1
| | | | | | | | | | | | | | | | | Move the QIODevice::OpenMode enum into a base class, so that we can remove the full QIODevice (and thus QObject) dependency from qdatastream.h and qtextstream.h. This is required so that we can include QDataStream in qmetatype.h without getting circular dependencies. As a nice side effect, QDataStream and QTextStream can now inherit QIODeviceBase and provide the OpenMode enum directly in their class scope. Change-Id: Ifa68b7b1d8d95687ed032f6c9206f92e63bfacdf Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* Long Live QMap as a refcounted std::map!Giuseppe D'Angelo2020-08-064-5/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... and QMultiMap as std::multimap. Just use the implementation from the STL; we can't really claim that our code is much better than STL's, or does things any differently (de facto they're both red-black trees). Decouple QMultiMap from QMap, by making it NOT inherit from QMap any longer. This completes the deprecation started in 5.15: QMap now does not store duplicated keys any more. Something to establish is where to put the QExplictlySharedDataPointer replcement that is in there as an ad-hoc solution. There's a number of patches in-flight by Marc that try to introduce the same (or very similar) functionality. Miscellanea changes to the Q(Multi)Map code itself: * consistently use size_type instead of int; * pass iterators by value; * drop QT_STRICT_ITERATORS; * iterators implictly convert to const_iterators, and APIs take const_iterators; * iterators are just bidirectional and not random access; * added noexcept where it makes sense; * "inline" dropped (churn); * qMapLessThanKey dropped (undocumented, 0 hits in Qt, 1 hit in KDE); * operator== on Q(Multi)Map requires operator== on the key type (we're checking for equality, not equivalence!). Very few breakages occur in qtbase. [ChangeLog][Potentially Source-Incompatible Changes] QMap does not support multiple equivalent keys any more. Any related functionality has been removed from QMap, following the deprecation that happened in Qt 5.15. Use QMultiMap for this use case. [ChangeLog][Potentially Source-Incompatible Changes] QMap and QMultiMap iterators random-access API have been removed. Note that the iterators have always been just bidirectional; moving an iterator by N positions can still be achieved using std::next or std::advance, at the same cost as before (O(N)). [ChangeLog][Potentially Source-Incompatible Changes] QMultiMap does not inherit from QMap any more. Amongst other things, this means that iterators on a QMultiMap now belong to the QMultiMap class (and not to the QMap class); new Java iterators have been added. Change-Id: I5a0fe9b020f92c21b37065a1defff783b5d2b7a9 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* iOS: Add a variable to customize where the launch image is taken fromAndy Shaw2020-07-223-0/+23
| | | | | | | | | | | | | For those who are providing their own launch images for their iOS projects then QMAKE_IOS_LAUNCH_SCREEN can be set to point to the location where the launch image to be used over the default. [ChangeLog][Platform Specific Changes][iOS] Added support for specifying a launch image to be used for an iOS project. This can be achieved by using QMAKE_IOS_LAUNCH_SCREEN. Change-Id: Ibb236655b282132ab5eee747986a93abb9802200 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Move QRegExp and its remaining mentions out of QtCoreSona Kurazyan2020-07-139-15/+4
| | | | | | Task-number: QTBUG-85235 Change-Id: Ibd6c98d952c1bb9916b64715c6430fb0d3fe3843 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Silence some warnings about fallthroughFriedemann Kleint2020-07-091-1/+2
| | | | | | | | src/corelib/text/qunicodetools.cpp:1243:13: warning: this statement may fall through [-Wimplicit-fallthrough=] src/corelib/text/qunicodetools.cpp:1247:55: warning: this statement may fall through [-Wimplicit-fallthrough=] Change-Id: I441000db46cb6d85a5dcd0534ea2168b39a3f3bd Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Add ; to Q_UNUSEDLars Schmertmann2020-07-073-5/+5
| | | | | | | | This is required to remove the ; from the macro with Qt 6. Task-number: QTBUG-82978 Change-Id: I3f0b6717956ca8fa486bed9817b89dfa19f5e0e1 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Use qsizetype in QListLars Knoll2020-07-061-1/+1
| | | | | | | | | | | | | | | | | | | | The change creates a slight source incompatibility. The main things to take care of are * code using printf statements on list.size(). Using qsizetype in printf statements will always require a cast to work on both 32 and 64 bit. * A few places where overloads now get ambiguous. One example is QRandomGenerator::bounded() that has overloads for int, uint and double, but not int64. * Streaming list.size() to a QDataStream will change the format depending on the architecture. [ChangeLog][QtCore][QList] QList now uses qsizetype to index into elements. Change-Id: Iaff562a4d072b97f458417b670f95971bd47cbc6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Get rid of shared null for QByteArray, QString and QVectorLars Knoll2020-07-062-2/+2
| | | | | | | | | | | | | | As a side effect, data() can now return a nullptr. This has the potential to cause crashes in existig code. To work around this, return an empty string from QString::data() and QByteArray::data() for now. For Qt 6 (and once all our internal issues are fixed), data() will by default return a nullptr for a null QString, but we'll offer a #define to enable backwards compatible behavior. Change-Id: I4f66d97ff1dce3eb99a239f1eab9106fa9b1741a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* MinGW: Use a response file for long include pathsOrgad Shaneh2020-07-063-7/+28
| | | | | Change-Id: I55ce73ad08473bca27c7ab5730f633fb77c9b8cd Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Makefile: Deduplicate logic for response file nameOrgad Shaneh2020-07-064-40/+32
| | | | | | | + verify that the file was actually written. Change-Id: I14a3c0b75f41f926b469109a1d7f2f80368ec9bb Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* QMake: fixup a mistake when porting to QREGiuseppe D'Angelo2020-07-061-1/+1
| | | | | | | | | | The original expression seems to have been accidentally changed during the port. Amends a1947aeffe158a0ea7de3ced1bf8d6a4719a27ef. Change-Id: I87821e1e025621a5efaf7a1e4f946fd3109fb256 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Remove unused variables in MSVC generator after WinRT removalTor Arne Vestbø2020-06-291-3/+0
| | | | | Change-Id: I2b7e1dbecc17d61c9126145bea95947dab38e7d1 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Move QTextCodec support out of QtCoreKarsten Heimrich2020-06-202-4/+0
| | | | | | | | | | * Assume UTF-8 on all Unix like systems * Export some functions to be able to compile QTextCodec once moved to Qt5Compat. Task-number: QTBUG-75665 Change-Id: I52ec47a848bc0ba72e9c7689668b1bcc5d736c29 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* CMake: Use intelcet flags for bootstrap and qmakeAlexandru Croitor2020-06-181-0/+1
| | | | | | | | | This should fix build failures on Ubuntu 20.04. Amends fa98adbd04de9d44ce921436b92589a41f285dcd Change-Id: Iff399faff0cf06f5b88d756b1f632b8798069578 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qmake: Fix generation of Visual Studio projectsOliver Wolff2020-06-171-0/+8
| | | | | | | | | | | | While removing winrt code too much code was removed. The ProjectConfiguration is needed for every Visual Studio project. This patch amends 45b0f1be686cfba8dcecb9be5c875cae59c69276 Fixes: QTBUG-85086 Change-Id: Ic8b42583a159d5b69c0c4e82f46dd98ad8e54ce2 Reviewed-by: Miguel Costa <miguel.costa@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* CMake: Fix usage of gc_binaries featureAlexandru Croitor2020-06-121-1/+1
| | | | | | | | | | | | | | | | The qt_internal_apply_gc_binaries function should apply both compile and link flags, not just link flags. The flags should be applied publically to all consumers of Bootstrap regardless if the gc_binaries feature is enabled. The flags should be applied publically to Core only in case if the feature is enabled (aka for static builds only). Change-Id: Id42af0d9b527004d74c04eff2c9e3c2be1e76aac Fixes: QTBUG-84461 Task-number: QTBUG-83929 Reviewed-by: Cristian Adam <cristian.adam@qt.io>
* Remove winrtOliver Wolff2020-06-065-317/+56
| | | | | | | | | Macros and the await helper function from qfunctions_winrt(_p).h are needed in other Qt modules which use UWP APIs on desktop windows. Task-number: QTBUG-84434 Change-Id: Ice09c11436ad151c17bdccd2c7defadd08c13925 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* qmake: Stop using -isystem flagDmitry Shachnev2020-06-062-14/+3
| | | | | | | | | | | This option changes the order of include paths, which can cause problems of various kinds. See https://bugs.debian.org/958479 for an example. The benefit of that option is minimal for what it was intended. Pick-to: 5.15 5.12 Change-Id: I80eeabd09764df290b60bc59aeb2f90d07723608 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Port qmake from QStringRef to QStringViewLars Knoll2020-06-0518-108/+107
| | | | | | Change-Id: Ie07a976cd3c634e04c8b9b1e0a6cacd4c2d94939 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* CMake: Make it possible to build tools when cross-compilingLeander Beernaert2020-06-022-17/+21
| | | | | | | | | | | | | | | | | | | This patch allows tools to be built for the target platform when the QT_BUILD_TOOLS_WHEN_CROSSCOMPILING parameter is set at configuration time. To avoid naming conflicts, the target tools are suffixed with "_native". The qt_get_tool_target_name() function can be used to get the tool name for both scenarios (cross and non-cross compilation). Extend pro2cmake to refer to the right target name for tools. The relevant write_XXX functions have a new target_ref parameter that will be "${target_name}" for tools and literally the target name for everything else. Fixes: QTBUG-81901 Change-Id: If4efbc1fae07a4a3a044dd09c9c06be6d517825e Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Mark qmake as Qt tool in qmake/qmake.proJoerg Bornemann2020-05-293-4/+6
| | | | | | | | | ...and re-regenerate qmake/CMakeLists.txt. This removes one special case and is necessary for a subsequent patch that changes how pro2cmake converts Qt tools. Change-Id: Ie87b7841f3c29de3f2c8907e82975b6272f096cc Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: Re-generate qmake/CMakeLists.txtJoerg Bornemann2020-05-292-32/+50
| | | | | Change-Id: Ifb1fadbd0f2ea13068085e7e47d0b883efff7380 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Fix qmake.proJoerg Bornemann2020-05-291-1/+1
| | | | | | | | | | The registry.cpp file is in the library subdirectory. This doesn't contribute to the qmake or CMake build, but it removes the need for a special case in qmake/CMakeLists.txt. Change-Id: I66a566f0d1e0b82791822ca55a7de037369536a7 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Remove last remainings of Qt Quick 1 importsKai Koehne2020-05-251-1/+0
| | | | | | | amends e1fd6074935cd0be0 Change-Id: I4587ae287635bc9718325a24bee728f1c1938978 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Remove qxmlstream from qmake compileLars Knoll2020-05-254-16/+1
| | | | | | | It's not used at all. Change-Id: Ia30befd497cc337221dfad89c201822b5bb7fd7c Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Make utf8_source the default for qmake buildsLars Knoll2020-05-141-2/+2
| | | | | | | | | | | | | | We now assume that source code is encoded in UTF-8 by default on all platforms (and verify this with an auto test). Provide a CONFIG+=no_utf8_source option for backwards compatibility. [ChangeLog][qmake] qmake will tell the compiler that source code is encoded in utf-8 by default. This mainly has an effect on Windows, where MSVC still assumes source code is encoded in the current ANSI code page. Use CONFIG+=no_utf8_source to get back the Qt 5 behavior. Change-Id: I6dcafcaeefdea7d3907ccb723aeb7d23ccc0f04f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Move the UTF conversion methods to qstringconverterLars Knoll2020-05-144-10/+10
| | | | | | | | | | | | | | Separate them from the qutfcodec, so that the codec can later on be moved out of Qt Core. Fix the QUtf methods to take qsizetype instead of int for length arguments. This also makes it possible to not build QTextCodec into the bootstrap lib anymore. Change-Id: I0b4f83139d61b19c651520a2f3a5012aa7e85cb8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Android: add ANDROID_ABIS qmake snippetAssam Boudjelthia2020-05-131-0/+10
| | | | | | | | | | Add snippet on how to use ANDROID_ABIS inside the .pro file. Pick-to: 5.15 Task-number: QTCREATORBUG-24014 Change-Id: Id3bb960c04ea6480b06878121ad33f89c03e5642 Reviewed-by: BogDan Vatra <bogdan@kdab.com> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* Disable the PCRE Jit when compiling qmakeLars Knoll2020-05-123-3/+5
| | | | | | | | | I'm getting compile errors with gcc 9.3 without this, and it makes sense to disable the JIT in bootstrapped builds anyway. Change-Id: Ife867bd2d6fd0bf133edae4903bb6b6d295db547 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qmake: fix a few deprecated QChar(non-char-type) warningsMarc Mutz2020-05-123-9/+9
| | | | | | | | The QChar ctors from non-char-types are going to be deprecated. Change-Id: I17d7916fb1dac9889ead61daca846b1257d17312 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qmake: Remove the DISCARDABLE flag for icon resourcesYuhang Zhao2020-05-111-1/+1
| | | | | | | | | | According to [1] the DISCARDABLE attribute is for 16-bit Windows, and it is ignored. We can drop it. [1] https://docs.microsoft.com/en-us/windows/win32/menurc/common-resource-attributes Change-Id: I70e5b0441a9d20f6c76c3d7a84947f8bce5c8fbd Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>