summaryrefslogtreecommitdiffstats
path: root/qmake/generators/makefile.h
Commit message (Collapse)AuthorAgeFilesLines
* qmake: Apply modernize-use-nullptrAlessandro Portale2018-08-081-1/+1
| | | | | | | Use nullptr instead of 0. Change-Id: Ib3120b9c424a274a2d4dd4c42ec5d7cd5bdead65 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* qmake: Apply modernize-use-overrideAlessandro Portale2018-08-081-4/+4
| | | | | | | Add overrides to functions, except for destructors. Change-Id: I6e4640aa95a5c97d6bd6f6d8692d3290c421344e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* qmake: fix lookup of .prl files for libs specified by full filenameOswald Buddenhagen2018-07-161-0/+5
| | | | | | | | | | | | | | | | | | | under windows, libraries can have a numeric suffix derived from VERSION, and (under MinGW) a unix-like "lib" prefix - neither of which .prl files have. therefore, we had to make the back-mapping from the library to the .prl file reverse-engineer the original TARGET's name. we verify whether we actually got the right file by comparing the target specified inside the .prl file with what we started from. this fixes linking of transitive deps of static deps. the alternative of changing the .prl naming pattern to avoid the back-mapping was discarded, as a) it would be backwards incompatible and b) it would break project-internal -lfoo references to versioned libs. Change-Id: Ia9b899fe6a5700fee528bd1dacf130caf083cdd6 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* qmake: slightly optimize processPrlFile() callsOswald Buddenhagen2018-07-161-1/+1
| | | | | | | | | add a parameter that indicates whether the passed filename can be only the basename of a prl file. if so, we can skip the other attempts at interpreting the file name. that's not only faster, but also clearer. Change-Id: I6f6da3f4485216021282a08acaefb53e60e7242a Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qmake: escape colons and hashmarks in dependency pathsOswald Buddenhagen2018-06-251-2/+2
| | | | | | | | | | | | | | | | | | | these characters can appear in file names, but are meta characters in dependency context. they have different semantics in make commands, so this required some reshuffling in the windows generator (which just treated dependencies and commands the same way). we don't actually escape colons for nmake, because it has magic treatment of drive letters anyway (and colons cannot appear elsewhere). also, if a target's filename gets quoted, batch rules will blow up. therefore, "funny" file names are really only supported as inputs - which is just enough to make resource embedding work. Task-number: QTBUG-22863 Task-number: QTBUG-68635 Change-Id: I473b0bf47d045298fd2ae481a29de603a3c1be30 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qmake: use consistent path separators in makefile dependenciesOswald Buddenhagen2018-06-121-0/+2
| | | | | | | Task-number: QTBUG-65072 Change-Id: I3456d9b2cdfa9c65be5933f592abb640f81c39f2 Reviewed-by: Liang Qi <liang.qi@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* don't pass qmake configure arguments to sub-projectsOswald Buddenhagen2017-01-061-1/+1
| | | | | | | | | | | | | the arguments after '--' are by definition meant only for the top-level project, as that's where configure is invoked from. passing them to sub-projects just adds noise to the make output and misleads users. note that this specifically does not support qmake -r, which will break if the subprojects rely on the arguments being absent. this isn't a problem, because the qt build doesn't support qmake -r anyway. Change-Id: I7ecff6212ce3137526005fc324a4a7ae45e3345e Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qmake: Mark MakefileGenerator::Compiler as Q_MOVABLE_TYPEMarc Mutz2016-08-151-0/+3
| | | | | Change-Id: I6469ffe3027c8519e80b71f5014f7bd9474e836b Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-06-201-0/+2
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | And blacklisted a few tests in tst_QUdpSocket. Conflicts: src/android/jar/src/org/qtproject/qt5/android/QtNative.java src/corelib/global/qglobal.cpp src/corelib/global/qsystemdetection.h src/corelib/io/qfileselector.cpp src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp tests/auto/network/socket/qudpsocket/BLACKLIST Task-number: QTBUG-54205 Change-Id: I11dd1c90186eb1b847d45be87a26041f61d89ef6
| * qmake: Fix missing newlines in generated vcxproj filesMat Sutcliffe2016-06-161-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | A bug in the Windows C Runtime causes text mode pipes to drop newlines sometimes. This bug was hidden because of another bug in rcc which caused newlines to be redundantly duplicated. When the latter bug was fixed (commit 53d5811b) the former bug was exposed, causing invalid vcxproj files to be generated. The Windows bug is described here: https://connect.microsoft.com/VisualStudio/feedback/details/1902345 The workaround is to avoid text mode, and do the conversion of "\r\n" to "\n" ourselves (which we were already doing anyway). Change-Id: I792599a4cd7822f109fa921f02207fb1b144b1d1 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.6' into devLiang Qi2016-01-261-0/+4
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java src/dbus/qdbusconnection_p.h src/dbus/qdbusintegrator.cpp src/dbus/qdbusintegrator_p.h tests/auto/corelib/io/qdir/qdir.pro tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp Change-Id: I3d3fd07aed015c74b1f545f1327aa73d5f365fcc
| * Work around MinGW-make's magic prefixing of paths.Frederik Gladhorn2016-01-211-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When building QNX on MS-Windows, make magically adds the Msys root as prefix to variables whose values look like paths; this applies to both environment variables and variables given values on the command-line. When we don't actually want to install under the Msys root, this is unwelcome "help". So (for MinGW's make) support a magic prefix of our own, @msyshack@, that'll make a path value for INSTALL_ROOT not look like a path to make; we can then strip it off when we come to use it. Change-Id: I951ad3c8fe3e5cfb49e6e361d7fff779f3a9d716 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
* | Updated license headersJani Heikkinen2016-01-211-17/+12
|/ | | | | | | | | | | | | From Qt 5.7 -> tools & applications are lisenced under GPL v3 with some exceptions, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new GPL-EXCEPT header instead of LGPL21 one (in those files which will be under GPL 3 with exceptions) Change-Id: I42a473ddc97101492a60b9287d90979d9eb35ae1 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* MakefileGenerator::processSources() doesn't need to be virtual.Edward Welbourne2015-11-131-1/+1
| | | | | | | | Only VcprojGenerator over-rode it; and did so with a replacement identical to the one on the base, so there was no point to it. Change-Id: I5b899372247809c82b1cae25817e06c5849cd10d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* merge MingwMakefileGenerator::findLibraries() into Win32MakefileGeneratorOswald Buddenhagen2015-10-021-0/+2
| | | | | | | | as a side effect, this makes the extensions used for searching libraries configurable under windows (QMAKE_LIB_EXTENSIONS). Change-Id: I3e64304fcadbfe74d601b50a70a73180c894503e Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* merge processPrlFiles() into findLibraries()Oswald Buddenhagen2015-10-021-3/+2
| | | | | | | | seems pointless to tear apart the functions, on the way duplicating some boilerplate. Change-Id: Ide3697ca1c931e8de607ac48c21cecce4781fe13 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* make fileFixify() calling convention somewhat saneOswald Buddenhagen2015-04-211-9/+16
| | | | | | | | | | instead of allowing arbitrary input and output base paths, restrict them to the project input and output dirs (in any permutation), which are the only cases ever used anyway. this permits much clearer call sites, and allows later optimizations. Change-Id: I48d149a4417af5c858e66ec57c476a5bc6b17f17 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* remove pointless argument to build_args()Oswald Buddenhagen2015-04-211-1/+1
| | | | | | | it's always empty. Change-Id: Icd97b5ac5b77c119174fdce2671f69c88c607428 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* fix quoting issues. all of them. (*)Oswald Buddenhagen2015-02-171-4/+8
| | | | | | | | | | | | | | | | | | | | | | instead of quoting more or less random variable contents early, consistently quote everything only right before it is needed. this way we can be sure that everything is correctly quoted, but not over-quoted. this removed the need for the insanity that unescapeFilePath() and similar ad-hoc contraptions were. this had the somewhat counter-intuitive effect that it was possible to remove escapeFilePath() calls from PBX::writeSettings() calls - these were actually only unescaping. [ChangeLog][qmake][Important Behavior Changes] A lot of quoting issues have been fixed. As a side effect, qmake has become more sensitive to over-quoted file names in project files. (*) ok, maybe not. close enough. Task-number: fatal: out of memory Change-Id: I8c51cfffb59ccd156b46bd5c56754c480667443a Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* fix filename handling in replaceExtraCompilerVariables()Oswald Buddenhagen2015-02-171-17/+22
| | | | | | | | | | | fixing and escaping is now a tri-state option: - none (this removes the need to unescape the result right afterwards in some cases) - local shell (for system()) - target shell (for Makefile) Change-Id: I5b78d9b70630fe4484dc964eff5f62793da35764 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* Update copyright headersJani Heikkinen2015-02-111-7/+7
| | | | | | | | | | | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Outdated header.LGPL removed (use header.LGPL21 instead) Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing combination. New header.LGPL-COMM taken in the use file which were using old header.LGPL3 (src/plugins/platforms/android/extract.cpp) Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license combination Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
* rename fileVarGlue() => fixFileVarGlue()Oswald Buddenhagen2015-02-041-1/+1
| | | | | | | ... because it also fixes the path, and we'll need the "plain" name later. Change-Id: I86da8f53e44a68005c413c4b78b1b1682746e22e Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* prune dead fixifySpecdir() functionOswald Buddenhagen2015-02-021-1/+0
| | | | | Change-Id: I3bc7f8de86213b1e1d99bdb2749589dbe3851eee Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* remove pointless double initialization guardsOswald Buddenhagen2015-02-021-1/+1
| | | | | | | this isn't some fuzzy logic, the call sequence is well determined. Change-Id: I1696b49ed687da83d2969efcfe23ac6565630020 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* Update license headers and add new license filesMatti Paaso2014-09-241-19/+11
| | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 - Removed LICENSE.GPL Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2 Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
* qmake: generate make dist target for subdir projectsJ-P Nurmi2014-06-021-2/+2
| | | | | | | | | | | | | The original dist target no longer copies files around, but merely does the final packaging. It depends on a new recursive distdir target, which handles copying distfiles to the distdir. [ChangeLog][Tools][qmake] Added 'make dist' target for subdirs projects (unix only) Task-number: QTBUG-21910 Change-Id: Ib59139c3fe196caf832d8dcefab484ab91f1f5ce Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* qmake: share the default variablesJ-P Nurmi2014-05-271-0/+1
| | | | | | | | | Eliminate duplicate code => collect the default variables to MakefileGenerator::writeDefaultVariables(). Task-number: QTBUG-21910 Change-Id: Ia03ce0240dd9a101ad9d35db636cd88f38a49320 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* qmake: fix const correctnessJ-P Nurmi2013-12-101-10/+10
| | | | | | | | | Partial cherry-pick of https://qt.gitorious.org/qt/jpnurmi-qt/commit/8c4ef19 Task-number: QTBUG-21910 Change-Id: Ieb833a977fc00d2637f8419278698c82b6086e2f Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* adequately shell-escape generated sed commandsOswald Buddenhagen2013-11-231-0/+1
| | | | | Change-Id: I39c8c4ab3da69bd21beace56f5cf3070301ac015 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* de-duplicate code for writing dummy makefilesOswald Buddenhagen2013-08-271-0/+1
| | | | | | | | | | as a side effect, this fixes the generators that were more bitrotted (nmake and even more mingw). Task-number: QTBUG-30644 #close Change-Id: Iefa3f07125884412d091aa12b44935e5b1fb858a Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Merge remote-tracking branch 'gerrit/release' into stableSamuel Rødal2013-03-211-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure mkspecs/features/qt_module_headers.prf mkspecs/features/qt_tool.prf src/angle/angle.pro src/tools/bootstrap/bootstrap.pro tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp Change-Id: Ide5759fe419a50f1c944211a48f7c66f662684e0
| * fix parallelized "jom install"Oswald Buddenhagen2013-03-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | unlike unix' mkdir -p, windows' md complains if the directory already exists. the workaround is a quite complex command, so the so far used concept for assembling the command line from pieces was replaced with a single template. for symmetry, adapt the makefile existence check to the new concept as well. QMAKE_CHK_EXISTS and QMAKE_MKDIR_CMD were added, with hard-coded fallbacks (ugly). QMAKE_CHK_FILE_EXISTS and QMAKE_CHK_EXISTS_GLUE (introduced in 5.0.0) are simply deleted again. QMAKE_CHK_DIR_EXISTS and QMAKE_MKDIR remain for legacy reasons, as qmake emits them into the Makefiles, and custom commands may rely on their presence. Task-number: QTBUG-28132 Change-Id: I3d049cb5d26947e5c3d102d0c2da33afb2a95140 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Janne Anttila <janne.anttila@digia.com> Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* | Make .prl file generation work for iOS again.Morten Johan Sørvig2013-03-061-1/+1
|/ | | | | | | | | | | | | d28073d9 creates a distinction between "mac" and "macx". The latter is not set on iOS, which caused MakefileGenerator::target_mode to be set to TARG_UNIX_MODE. Check for the "mac" active config instead of "macx". Rename TARG_MACX_MODE -> TARG_MAC_MODE. Change-Id: I7192788c33f5723034ba76da2492379dd454f0ab Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* consolidate generation of metafile install targetsMark Brand2013-01-251-0/+2
| | | | | | | | | Metafiles such as .prl and .pc files contain paths that have to be adjusted during installation. The same code is used for unix and windows so move it into the base class. Change-Id: I82db89ec83820a4fa0214ba15e7cd63438f6dc91 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Update copyright year in Digia's license headersSergio Ahumada2013-01-181-1/+1
| | | | | Change-Id: Ic804938fc352291d011800d21e549c10acac66fb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-221-24/+24
| | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: If1cc974286d29fd01ec6c19dd4719a67f4c3f00e Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* introduce qmake variable abstractionsOswald Buddenhagen2012-09-071-10/+18
| | | | | | | | this is preparation for adapting to a new evaluator. Change-Id: I6fc59f5525735754a00afa6629fbfe257e84db97 Reviewed-by: Daniel Teske <daniel.teske@nokia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* micro-optimize: use POD-initializable lists of variable namesOswald Buddenhagen2012-08-281-2/+2
| | | | | Change-Id: I3732fef509b358949ef90002dbfc1960360afef8 Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
* remove unused checkMultipleDefinition()Oswald Buddenhagen2012-08-281-1/+0
| | | | | Change-Id: I533c2091333942f145063ad04f4420b7a2de0a37 Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
* revamp preparation of command line for qmake calls in makefilesOswald Buddenhagen2012-08-141-1/+1
| | | | | | | | | | | | | instead of re-assembling a list from the variables, take the original command line minus some explicitly stripped out options. this is way less code and poses no synchronization problem between the two parts. as a "side effect", variables obtained from $QMAKEFLAGS won't multiply with each makefile nesting level, as the generated command line won't replicate data obtained from the environment. Change-Id: I5d1ce0f11efb338f60405529f9818910103b1b0e Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* Remove references to Borland and bmakeAndy Shaw2012-08-011-2/+2
| | | | | | | | | Remove references to an old compiler that has not been supported for a long time. Also remove Borland specific configuration flags which have no meaning elsewhere. Change-Id: I3634a52b78f737ea972073e14c2b6669dcd0ae63 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* inline MakefileGenerator::processPrlVariable()Oswald Buddenhagen2012-07-311-1/+0
| | | | | | | | the visitor-pattern like approach is not needed any more Change-Id: I990db681cbeee91d89ecba97745a8104595247e7 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* make the windows prl processing more like the unix variantOswald Buddenhagen2012-07-311-1/+1
| | | | | | | | it's more elegant, and more similar code is better. Change-Id: I2b8b036cb70a932fd171e23cf7d3389188401924 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* Fix qmake hash function to use XORRafael Roquetto2012-07-251-1/+1
| | | | | | | | | Use XOR instead of OR in order to avoid saturating all bits when computing the hash value. Change-Id: I50b1a044eb827239dae1c04732ca6a065f6233b4 Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* automatically fix separators in QMAKE_{DIST,}CLEANOswald Buddenhagen2012-07-161-0/+1
| | | | | | | it's a tad insane to expect the user to do that Change-Id: I75c68f2a28656c9ba2e3fabcc79718b899b29ce7 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* assume windows shell iff dir separator is backslashOswald Buddenhagen2012-06-271-1/+1
| | | | | Change-Id: I411a4d6691e18b818ee7d1ced7f126f97af0902f Reviewed-by: Mark Brand <mabrand@mabrand.nl>
* revamp handling of qmake target modeOswald Buddenhagen2012-06-271-0/+2
| | | | | | | | | | | the project evaluator becomes oblivious of the target mode. the mode is set up in spec_post.prf according to the spec. $$QMAKE_TARGET contains the feature suffixes to search, and is also contained in $$CONFIG. the target_mode variable itself becomes private to the Makefile class. Change-Id: I3c06d9dab536b753343cec6c5c491d3203e50bd8 Reviewed-by: Mark Brand <mabrand@mabrand.nl>
* clean up specdir()Oswald Buddenhagen2012-06-261-1/+2
| | | | | | | | | the only callers which used non-default arguments are gone now, so remove the arguments entirely. this also enables us to re-enable result caching. Change-Id: I62f76e17e531a4eeafddb9b29716ca0a0eb3dbea Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* fix -spec/-xspec argument re-assemblyOswald Buddenhagen2012-06-261-0/+1
| | | | | | | | | | the specs in Option are now only fixifiable absolute paths if an actual path was passed on the command line - otherwise these are just names, and we should pass them on verbatim. Change-Id: I5b3535dadf2d6b2b3116331e6636f6e363a5361f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* revamp automatic makefile generation for sub-projectsOswald Buddenhagen2012-06-191-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | instead of making the "real" targets depend on the makefiles, add conditional makefile generation to the targets themselves. this causes makefile generation to follow the recursion order determined by the project, which is important when dealing with prl and module pri files. a side effect of this is that qmake and make calls are interleaved now, which is entirely different from a 'qmake -r' run. on the downside, calling make with multiple targets which operate on the same subprojects without prior makefile generation will make a mess, as the qmake calls will be racing. this should be no problem, as qmake does not generate recursive targets where this would be useful - at least by default. it is not sufficient to just order the creation of the makefiles non-recursively (e.g., by using gnu-specific order-only-prerequisites), as an interrupted and subsequently resumed build would happily skip the nested makefiles. workable alternative approaches would be walking the entire tree in a pre-pass to ensure makefile presence (which is incredibly slow) or creating additional stamp files only after recursing and having the makefiles depend on them (which is ugly). Task-number: QTBUG-23376 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Change-Id: I88d3e7610215677d362026de316513d3bea04b06