summaryrefslogtreecommitdiffstats
path: root/qmake
Commit message (Collapse)AuthorAgeFilesLines
* qmake: require a drive in a DOS path for it to be absoluteEdward Welbourne2018-01-183-21/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | For Q_OS_WIN, a path is only truly absolute if it includes a drive letter; merely starting with a slash is not enough. (We can't support UNC paths, so don't even try: qmake runs various commands in the source directory using CMD.exe, which doesn't support UNC as PWD.) This requires, when resolving a path relative to a root, transcribing the root's drive to such not-quite-absolute paths. Changed QMakeGlobals, $$absolute_path() and $$relative_path() to now use IoUtils::resolvePath() rather than delegating to QDir's absolute path method, since that doesn't correctly recognize the need for a drive letter (and qmake did run into problems with some paths, from splitPathList and a failing test, as a result). Moved existing ioUtils tests for handling of relative / absolute paths out into separate functions and expanded significantly. Fixed some existing tests to use an absolute path where one is needed; added two tests involving driveless (but rooted) paths; and fixed the test init to set a value for QT_HOST_DATA/src property (the lack of which lead to an assertion failure with this fix). Task-number: QTBUG-50839 Change-Id: I2bfc13c1bfbe1ae09997274622ea55cb3de31b43 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* qmake: set COPY_PHASE_STRIP to NO in Xcode generatorJake Petroules2018-01-051-2/+0
| | | | | | | | | | | | | Since Xcode 6.3, this must be set to NO because stripping on copy is no longer fully supported due to the potential of input binaries being code signed. In this case Xcode will simply ignore the strip step and issue a warning since stripping would invalidate the code signature. This change silences that annoying warning for release builds. Also, the setting assignment is moved from being hardcoded in the generator, to a QMAKE_MAC_XCODE_SETTINGS value. Change-Id: If25511edddc12b7b0407e2992d80884b7d6437dc Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
* qmake: replace invalid characters in generated bundle identifiersJake Petroules2018-01-051-1/+15
| | | | | | | | This problem does not affect the Xcode generator. Task-number: QTBUG-65477 Change-Id: I6194edc5b679edad9ae1a25e35b71e5df9bd4c95 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* qmake: Handle QMAKE_LINK_OBJECT_MAX being unset for static librariesMartin Storsjö2018-01-041-1/+2
| | | | | | | | This was missed in 8bebded9. Task-number: QTBUG-63637 Change-Id: I6be472430a9aa8f533def4fd6c14c8dbfe8b6f70 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* fix "make clean" of qmake in a builddir with spaces on mingwOswald Buddenhagen2017-12-141-1/+1
| | | | | Change-Id: Ice61a11250694afa66f263fa79a74ff9642ef285 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Stop blocking the ability to generate dSYM debug symbols with XcodeJake Petroules2017-12-141-3/+0
| | | | | | | | | | | | | | | | | | In Xcode, the default value for GCC_GENERATE_DEBUGGING_SYMBOLS is YES, which causes Xcode to emit debug symbol bundles (.dSYM) on macOS and iOS *if* DEBUG_INFORMATION_FORMAT is also set to dwarf-with-dsym. Since that setting is already set to an appropriate value with debug vs release builds, the default Xcode value for GCC_GENERATE_DEBUGGING_SYMBOLS is already correct and in effect the only thing qmake was doing was always setting GCC_GENERATE_DEBUGGING_SYMBOLS to a wrong value for release builds - it should be YES in all cases, to allow the .dSYM bundles to be generated in release mode, which is in fact the only case where they're really needed in the first place. Task-number: QTBUG-41246 Task-number: QTBUG-50896 Change-Id: I07639a3c4ff9f62d591cde3ad66748767d475e3b Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* qmake: Actually resolve QMAKE_SHELL_NULL_DEVICE when writing to MakefileOrgad Shaneh2017-10-161-1/+1
| | | | | | | This is C++, not qmake code. Amends 5fa6438633. Change-Id: Ie5b88c3a06dbe089948488ea3b4b297a08164113 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Qmake: Introduce and use QMAKE_{SYSTEM,SHELL}_NULL_DEVICE variable, take 2Orgad Shaneh2017-10-131-7/+1
| | | | | | | | | | SYSTEM is used for system() calls, while SHELL is used in the target Makefiles. Task-number: QTBUG-62985 Change-Id: Ia75d3939c59c98699359421166433e8b4a6ee35e Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Fix docs about QMAKESPEC in INCLUDEPATHMichal Klocek2017-09-251-2/+2
| | | | | | | | QMAKESPEC is added in makefile generator, it is not in INCLUDEPATH. Change-Id: I2451b3c7b30bc237157e68e5ce9de67f55e784b2 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* Win: Handle installation of read-only target files correctlyAndy Shaw2017-09-131-4/+19
| | | | | | | | | | | | When the source file is read-only then it would copy the file with that attribute set when it is installed. However this will cause a problem if it is installed a second time. Therefore the read-only attribute needs to be manually reset before installing and again before touching the file. Once the process is done then it is set back to be read-only to preserve the state of the original. Change-Id: I1c01f418ef3c9bd434acd2c2b8ee695544d7bb35 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* qmake: fix hypothetical raw data leak in $$replace()Oswald Buddenhagen2017-08-261-1/+5
| | | | | | | | | | | | | | | | | the replacement value may well constitute the whole output string - this is in fact common, given this rather typical usage pattern: BAR = $$replace(FOO, -flag, -otherflag) this must be considered when constructing the return value. compare 3c8134958c6. as of now, this is irrelevant, as QString::replace(QRegExp, QString) will always memcpy the replacement into a detached copy of the target, but one never knows. Change-Id: Ia1f271f45023746040fc28ce6d88a6609e05e5c2 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qmake: fix hypothetical raw data leaks relating to qt i/o classesOswald Buddenhagen2017-08-261-5/+9
| | | | | | | | technically, we should not rely on the i/o classes not storing the strings beyond the instantiated object's life time. Change-Id: I0990769b3cf86860184869036c096c531160e9be Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qmake: remove pointless use of raw data in $$[QMAKEFEATURES] accessOswald Buddenhagen2017-08-262-2/+1
| | | | | | | | | property values are de-facto guaranteed to be backed by full QStrings, so there is nothing to be gained from using the raw data optimization, while doing so risks raw data leaks. Change-Id: I3d43da9aaadd4d5811c4b1a9d7ac734049da423c Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qmake: remove seemingly pointless QString::detach() callsOswald Buddenhagen2017-08-261-2/+2
| | | | | | | | | | | | | it's not clear why detaching would be necessary; there is no danger of a raw data leak here. concatenating a QStringRef with a non-empty QLatin1String (the only expected use of this overload) will yield a detached QString anyway, so this makes little difference in practice. amends f137957e08. Change-Id: I521c0e89a8b0c1ae62b1450e81b0ae91a931bcfa Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qmake: prune obsolete QString::detach() callOswald Buddenhagen2017-08-261-3/+1
| | | | | | | | | no m_tmp is involved any more in this code path; it uses QStringRef. amends 11d957d04381. Change-Id: Ib272d61edfb150a549c5e6a9a60d53502702e802 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qmake: make more use of ProString built-insOswald Buddenhagen2017-08-263-19/+15
| | | | | | | saves some noisy toQString() uses. Change-Id: I62a9e2725c4baabac311124d19c7d8b40f54c8f7 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qmake: fix raw data detach avoidanceOswald Buddenhagen2017-08-263-12/+6
| | | | | | | | | the m_tmp array is a member, so the index toggle for accessing it also needs to be one - otherwise, odd iteration counts will defeat the mechanism. Change-Id: If7a800ed5a4b4168625daf1ebbd5d2d164569d8e Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qmake: fix excessive detaching of raw dataOswald Buddenhagen2017-08-261-3/+3
| | | | | | | | | | | | | ... in $$basename(), $$dirname(), and contains(). the latter case is marginal, as it only applies to mutuals which are regexes, which i don't remember ever seeing used. QRegExp saves a copy of the matched string, so it's necessary to alternate between two temporaries to avoid detaching. we already did that in most places. Change-Id: I97b8294585c17c76d1756f83971f42cb88353af0 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qmake: make yet more use of ProString::toQStringRef()Oswald Buddenhagen2017-08-265-15/+22
| | | | | | | | | in most cases, the main advantage is not using toQString(m_tmp), which reduces the possibility of raw data leaks. in cases where we used toQString() without temporary, this is a slight optimization. Change-Id: Ib343acffd383aa2c4fefab75fb52762fb534dfc6 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Adapt qmake's raw-string parser to avoid confusion by macrosEdward Welbourne2017-08-241-7/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | A macro name ending in R might expand to a string; if this precedes a string constant, we're juxtaposing the strings. My first parser for raw strings would mistake it for a raw string instead, ignoring the part of the identifier before R. Re-worked the exploration of what came before the string to catch these cases, too. The backwards parsing would also allow any messy jumble of [RLUu8]* as prefix for the string; but in fact R must (if present) be last in the prefix and *it* can have at most one prefix, [LUu] or u8. Anything else is an identifier that happens to precede the string. Reworked the parsing to allow only one prefix and not treat R specially unless it's immediately (modulo BSNL) before the string's open-quotes. Add link to the cppreference page about string literals, on which the grammar now parsed is based. Added a test for the issue this addresses. Verified that this fails on 5.6, dev and 5.9 without the fix. Expanded the existing test to cover R-with-prefix cases. Task-number: QTBUG-55633 Change-Id: I541486c2ec909cfb42050907c84bee83ead4a2f4 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Add MSVC manifest backup file to "clean" targetJoerg Bornemann2017-08-181-0/+1
| | | | | | | | The $${TARGET}_manifest.bak file was not removed on "nmake clean". Task-number: QTBUG-59827 Change-Id: Ia5b636f4917f3e7a2df8d753824b72e63d278005 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* qmake: don't limit command line length when not actually on windowsOswald Buddenhagen2017-08-151-1/+2
| | | | | | | | | | | | | QMAKE_LINK_OBJECT_MAX is actually a property of the host, not the target. this works around binutil's inability to use thin LTO objects in conjunction with an MRI script (https://sourceware.org/bugzilla/show_bug.cgi?id=21702). Task-number: QTBUG-61335 Change-Id: I90a1334b9c905c433b35546e8f3f3b5089d2c65b Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* Change source identifier type in ProStringOswald Buddenhagen2017-08-157-28/+53
| | | | | | | | | | | | | | | | | The strings remember in which file they were created/assigned. However, this used a non-counting reference to a ProFile, which could become dangling. If a subsequent ProFile re-used the exact same address, a string's source would be mis-identified, which would be fatal in conjunction with discard_from(). Since we actually need only a unique id for comparison, let's use an integer for that. Task-number: QTBUG-62434 Started-by: Simon Hausmann <simon.hausmann@qt.io> Change-Id: I395153afaf7c835d0119690ee7f4b915e6f90d4a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* qmake: fix warning about duplicate references in project fileJake Petroules2017-07-201-1/+5
| | | | | | | Task-number: QTBUG-59301 Change-Id: I2562b862465a52ecc56f551bcdb98fa7279ebfcf Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
* qmake: Remove last remains of WinCE supportOliver Wolff2017-07-191-3/+3
| | | | | | Change-Id: Ifc2ecee8464710efd02a38b3a9794104f15a0f04 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* winrt: qmake: Fix deployment rules of created solution filesOliver Wolff2017-07-191-2/+3
| | | | | | | | If these rules are not added to the solution, Visual Studio will complain, that the project has to be deployed before it can be run. Change-Id: I6d3fbc949c85b11a92f78e13e2f6a1b92a5cfdc7 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Doc: Update docs for QMAKE_MACOSX_DEPLOYMENT_TARGET in qmake ManualLeena Miettinen2017-07-171-6/+5
| | | | | | | | The old docs contained obsolete information. Also, the new docs match the new docs for the other Apple OS deployment targets. Change-Id: Id773fa2086f291d8a2552fe1b339ec1e13c19d74 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* Doc: Add Apple OS deployment targets to the qmake ManualLeena Miettinen2017-07-171-1/+25
| | | | | | | | | | | The following variables were not documented: - QMAKE_IOS_DEPLOYMENT_TARGET - QMAKE_TVOS_DEPLOYMENT_TARGET - QMAKE_WATCHOS_DEPLOYMENT_TARGET Change-Id: I5cfb6c0024d92e943aed882fd01bc2a4f2c7c042 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* qmake: Separate object_script by Makefile nameOrgad Shaneh2017-07-071-0/+4
| | | | | | | | | If several Makefiles are used in the same directory (for example, for multiple projects in the same directory or different build configurations), they all reference the same object_script, which is obviously wrong. Change-Id: I9b499ceb6b6bd6058f54b452fa44bfb2313eec26 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Pass the absolute path with the file when finding filesAndy Shaw2017-06-191-3/+4
| | | | | | | | | | | | When generating a project, the directories can be specified as arguments to the qmake call. As a result files can either be incorrectly added to the project with a leading slash, or can end up duplicated. By passing the absolute path with the file, it ensures that the file is added correctly and no duplicates occur as a result. Task-number: QTBUG-48342 Change-Id: If774de8d7f5cceca80042a25a3aa4e5b045249da Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qmake: Delete static library before calling ar on MinGWOrgad Shaneh2017-06-121-0/+7
| | | | | | | | | | | | This was already done on unix, but not for MinGW. If the archive already exists, it is appended rather than replaced. This can cause invalid references when whole-archive linking is used and some object file that was already linked was deleted. Change-Id: Ie265371f197d996d57002b248043736544ee641e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* qmake: Fix initialization order in VcprojGenerator ctorOrgad Shaneh2017-06-121-2/+2
| | | | | | | Detected by clang Change-Id: I17b49b1737ca4a9ab6608a5d8701a9e1c50af5ae Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* qmake: Use braces for struct initialization in MSVC object modelOrgad Shaneh2017-06-121-9/+9
| | | | | | | Detected by clang Change-Id: I4c5fbdb402f55ce40e84a6a40ead6c32a60cfa22 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
* qmake: Delete unused variables in MSBuild object modelOrgad Shaneh2017-06-121-27/+0
| | | | | | | | | Detected by clang. Remove also comments that reference unused variables. Change-Id: I6de54d96cd23b93eed6d109629a9462b7770e94e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* qmake: Avoid raw string comparisonOrgad Shaneh2017-06-121-1/+1
| | | | | | | | Detected by clang. Change-Id: I4c734d1af77a331d178ce91610ab08a8048fe410 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
* make mkspecs not mess up -rpath-linkOswald Buddenhagen2017-05-311-0/+2
| | | | | | | | | | | | | | | adding shared install paths via QMAKE_LFLAGS in the spec has the tiny side effect that they are searched _first_, which is generally a really bad idea - they should be _last_. for that purpose, introduce QMAKE_RPATHLINKDIR_POST, and migrate all specs to use it. QMAKE_RPATHDIR_POST is added for consistency, but not actually used. Task-number: QTBUG-59457 Change-Id: Iac6cda5e9111ef8cca454a69861fe8408bb40589 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* make mkspecs not mess up library and include search pathsOswald Buddenhagen2017-05-312-0/+5
| | | | | | | | | | | | | | adding shared install paths to QMAKE_{INCDIR,LIBDIR} in the spec has the tiny side effect that they are searched _first_, which is generally a really bad idea - they should be _last_. for that purpose, make QMAKE_{INCDIR,LIBDIR}_POST live up to their names (i.e., search them actually last) and migrate all affected specs to use them. Task-number: QTBUG-40825 Change-Id: Ie0de81c3cc49e193186d2fedd7d6c77590c8ef79 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix parsing of MSVC's /utf-8 option, take 2Joerg Bornemann2017-05-231-1/+1
| | | | | | | | The dash was missing. This commit amends 70e772079. Task-number: QTBUG-59431 Change-Id: I18f3519a502ca57336cafad574f8738f2e717740 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Do not warn about unknown MSVC compiler conformance optionsJoerg Bornemann2017-05-231-5/+1
| | | | | | | | | | | | Every /Zc:XXX option qmake doesn't know about yields a "WARNING: Could not parse Compiler option '-Zc:XXX'; added to AdditionalOptions." Put all /Zc:XXX options we don't handle into AdditionalOptions without printing a warning. There's no point in making all options known to qmake and updating them for every MSVC release. Change-Id: I319e027791a7b0a29d139ee3074ab1aed8ce8a63 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Simplify built-in qmake install commandSimon Hausmann2017-05-044-37/+31
| | | | | | | | As the directory installation command also works with files as a source we can unify the external commands, resulting in simpler command lines. Change-Id: I65013626eedbdb3ce1c77ed230d46edd1603b986 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* VS 2017: Fall back to "x86" as arch if it is not "arm" or "x64"Oliver Wolff2017-05-031-1/+1
| | | | | | | | | | | | The same as for other visual studio versions use "x86" as arch instead of win32. arch is used to determine library paths and these use x86 and not win32. As compilerArch is not used in MSVC 2017 it can be removed. Task-number: QTBUG-60530 Change-Id: I47157eb1d7ae9d913461210d34858ffb37c81586 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* Preserve last modification timestamps of installed directoriesSimon Hausmann2017-05-026-28/+103
| | | | | | | | | Similar to the two parent commits, this patchs preserves the time stamps of files we install as a result of recursive directory copying. Change-Id: Id5931a467196d5cd67acfa0deffc2488af8a3669 Task-number: QTBUG-59004 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Fix make install to be deterministicSimon Hausmann2017-04-282-13/+12
| | | | | | | | | | | The result of "make install" should be the same regardless of whether it has been run multiple times and the destination exists already. This is done by making the file installation calls always take canonical source and target paths and not look at the target directory. Task-number: QTBUG-60370 Change-Id: I83a584c0dbc4fd10c79976d4169bf6bc051884a1 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Fix precompiled headers on Apple platforms, with multiple architecturesJake Petroules2017-04-142-36/+58
| | | | | | | | | | The original commit only added support for GCC and Clang, but not ICC. Amends 73331eeb Change-Id: Id7638cf1b538edb1008fb3aa10754c1f517a994f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Preserve last modification timestamps of installed program filesSimon Hausmann2017-04-134-4/+19
| | | | | | | | | | Similar to the parent commit, this patch adds a unified code path in qmake itself for installing program files while preserving their original last modification timestamp. Change-Id: I7b7dcfa6228c2bfd48ea6036549398bb6f90032f Task-number: QTBUG-59004 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Merge remote-tracking branch 'origin/5.8' into 5.9Liang Qi2017-04-121-12/+12
|\ | | | | | | Change-Id: I3bd83a839b16822035ed56a5cffe77bd6bc3f08d
| * write Libs.private to .pc files only in static buildsOswald Buddenhagen2017-04-111-12/+12
| | | | | | | | | | | | | | | | | | | | projects using a dynamic build are not supposed to access this variable anyway. Task-number: QTBUG-51598 Change-Id: I81b55ea9ba460b80919f40ed7fe3d52129636b9e Reviewed-by: Michal Klocek <michal.klocek@qt.io> Reviewed-by: Jonathan Liu <net147@gmail.com>
* | Preserve last modification timestamps of installed filesSimon Hausmann2017-04-127-63/+139
| | | | | | | | | | | | | | | | | | | | | | On non-windows platforms, we use the "-p" parameter of install(1) to preserve the last modification timestamps of files. On Windows the use of copy does not preserve them. As a cross-platform solution, this patch introduces a simple built-in install command in qmake to copy files. Task-number: QTBUG-59004 Change-Id: I3064d29a2b8c7b009a1efbf8f00b84c079ea5417 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* | qmake: Do not mix canonical and non canonical pathsOliver Wolff2017-04-111-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | When having Qt sources in a symbolic link "shadowed" did not work because _PRO_FILE_PWD_ used canonical path, while source_root did not. Due to this mix it was possible that shadowedPath did not find any "common denominator" and always returned and empty string. The first place where things broke was while running config.tests. Task-number: QTBUG-59319 Change-Id: If73ecbc58290ee9113f887a73c312ebfb5e20a33 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* | Doc: Move $$files() documentation to "Built-in Replace Functions"Joerg Bornemann2017-04-041-5/+5
| | | | | | | | | | | | | | | | | | files is not a test function. Change-Id: I6d23dac5d1c87bd35961406dd62cc3cf37d652e3 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>