summaryrefslogtreecommitdiffstats
path: root/qmake/generators/makefile.cpp
Commit message (Collapse)AuthorAgeFilesLines
* fix quoting of qmake parameters in 'qmake' targetOswald Buddenhagen2015-05-221-1/+1
| | | | | | | | we need to do full shell quoting, not the limited whitespace quoting. Task-number: QTBUG-46224 Change-Id: I41bc9aee556ca680dce0875b58159a31db962452 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* fix wrong path separators in extra compiler commandsOswald Buddenhagen2015-05-081-1/+1
| | | | | Change-Id: I19a2c53c301becbbe5b70e47067f9a3355f7b04a Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* automatically distclean internally generated artifactsOswald Buddenhagen2015-04-231-2/+8
| | | | | | | specifically, .prl, .pc, and .la files, and QMAKE_SUBSTITUTES outputs. Change-Id: I27685125668f0ec2aa81a8f003d3605accf2ab36 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* don't fail to fix path separators in extra compilers' clean targetsOswald Buddenhagen2015-04-231-2/+4
| | | | | | | | this affects only files explicitly listed via the .clean member without placeholders, so more or less a corner case. Change-Id: I7bd55948130aaee116d1a4bebbad0c445b76197b Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* untangle handling extra compiler .clean member, take 2Oswald Buddenhagen2015-04-231-5/+4
| | | | | | | | | | fixes clean targets of (most) extra compilers being empty. amends commit 0812b5b3188. Task-number: QTBUG-45132 Change-Id: I069bca124587df261597a4f8183a4695cd834e29 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* fix {ALL,CLEAN,DISTCLEAN}_DEPS writeout to makefileOswald Buddenhagen2015-04-231-3/+3
| | | | | | | | it helps enormously to put spaces between target names ... Task-number: QTBUG-45533 Change-Id: Ic41f8287c6c37761b1be3ad7c383b5c7fb714b12 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* make fileFixify() calling convention somewhat saneOswald Buddenhagen2015-04-211-40/+37
| | | | | | | | | | 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>
* make fileFixify(FileFixifyAbsolute) pay attention to in_dirOswald Buddenhagen2015-04-211-1/+6
| | | | | | | | ... instead of sheepishly assuming qmake_pwd(). it also canonicalizes consistently with the relative output path now. Change-Id: I86231f7259179020643405f3c0e696a74031aa4e Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* fileFixify(): remove bizarre canonicalizationOswald Buddenhagen2015-04-211-3/+0
| | | | | | | | | | | | it would trigger only if the input file name was already absolute, matched the native path separator, and some (likely) other conditions. as this behavior was almost unpredictable, it would be not very useful. so save ourselves the headache and just remove it. Change-Id: Ic457f487f6d0ce9f7a5f192859c9efa9c2de2b63 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* remove pointless argument to build_args()Oswald Buddenhagen2015-04-211-2/+2
| | | | | | | it's always empty. Change-Id: Icd97b5ac5b77c119174fdce2671f69c88c607428 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* untangle handling extra compiler .clean memberOswald Buddenhagen2015-02-171-13/+17
| | | | | | | | | it's easy when it is a simple list of files (or just absent). however, it can also contain expandos, and in this case it's definitely not a good idea to treat it partly (but not really) as a single shell command. Change-Id: I7ef32a56f276b06579fc7094357c5f7612eaf205 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* remove pointless fixPathToTargetOS() callsOswald Buddenhagen2015-02-171-11/+8
| | | | | | | | | | it makes no sense to call it on paths that are fixified right before or after, as fileFixify() calls it itself. and verifyExtraCompiler() calls normalizePath() on its file argument. Change-Id: I8fb21e129fd29428d1855de73483087842bc1bdd Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* replace incorrect uses of fixPathToLocalOS() (mostly)Oswald Buddenhagen2015-02-171-33/+33
| | | | | | | | | | | | | | | | | | | | | | | in most cases, it actually means normalizePath() (because the file name is used with qt i/o functions afterwards). this affects QMakeLocalFile::local() as well, so many not immediately obvious places are affected as well. there was also one case of fixPathToTargetOS() falling into this category. this is mostly a no-op, as the qt functions are agnostic to the path separator. in some other cases (in particular in the vcproj generator), it actually means fixPathToTargetOS(). this is mostly a no-op as well, as the two functions are equal except on msys anyway. in the <meta file>FileName() functions, the use of a fixPath*() function is bogus in the first place - fileFixify() already does fixPathToTargetOS(), and this is correct when the file name is used verbatim in a make command (which it is). otherwise it's irrelevant. Change-Id: I26712da8f888c704f8b7f42dbe24c941b6ad031d Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* fix quoting issues. all of them. (*)Oswald Buddenhagen2015-02-171-64/+81
| | | | | | | | | | | | | | | | | | | | | | 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-26/+36
| | | | | | | | | | | 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>
* make quoting in the prl writer more robustOswald Buddenhagen2015-02-051-10/+25
| | | | | Change-Id: Idd9f64ac608b7e4ed840d5d9925bf741e03d78ab Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* don't re-implement QDir::mkpath()Oswald Buddenhagen2015-02-041-35/+1
| | | | | Change-Id: Ic5cd5d3048c19047f22641698acbf678301d366e Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* rename fileVarGlue() => fixFileVarGlue()Oswald Buddenhagen2015-02-041-3/+3
| | | | | | | ... 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-7/+0
| | | | | Change-Id: I3bc7f8de86213b1e1d99bdb2749589dbe3851eee Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* prune pointless assignments of QString::replace() and remove() resultsOswald Buddenhagen2015-02-021-4/+4
| | | | | | | they operate in-place. Change-Id: Iab6f2f6a9f6f67b9d70feb77ec719e424909022d Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* optimize filePrefixRoot()Oswald Buddenhagen2015-02-021-4/+6
| | | | | | | more efficient use of string functions. Change-Id: I3d95d6379eaab025b18449b706f93631a2132aad Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* values(foo).first() => first(foo)Oswald Buddenhagen2015-02-021-3/+3
| | | | | Change-Id: Ic5bb8ae3166c76299881970f83d20206bec704bc Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* don't verify compilers twiceOswald Buddenhagen2015-02-021-2/+1
| | | | | Change-Id: Iad214f8a14c29b633752935e31125a6f4b512f4b Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* remove pointless double initialization guardsOswald Buddenhagen2015-02-021-7/+1
| | | | | | | this isn't some fuzzy logic, the call sequence is well determined. Change-Id: I1696b49ed687da83d2969efcfe23ac6565630020 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* avoid direct use of QLibraryInfo as much as possibleOswald Buddenhagen2015-02-021-2/+1
| | | | | Change-Id: Ic1f5f5167181b15bc67bf4c6a1001532d0058b45 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2015-01-211-11/+19
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/global/global.pri src/corelib/global/qcompilerdetection.h src/corelib/global/qglobal.h src/corelib/tools/qdatetime.cpp src/plugins/platforms/xcb/qxcbscreen.h src/plugins/platforms/xcb/qxcbwindow.h src/widgets/dialogs/qcolordialog.cpp src/widgets/dialogs/qcolordialog_p.h tools/configure/configureapp.cpp Change-Id: Ie9d6e9df13e570da0a90a67745a0d05f46c532af
| * centralize/unify/sanitize INCLUDEPATH "enrichment"Oswald Buddenhagen2015-01-111-9/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | instead of having each generator do its own magic (little surprisingly, with different outcomes), add "stuff" to the search path in one place used by all generators. this has several consequences: - (unless disabled via CONFIG+=no_include_pwd) $$PWD is now consistently prepended by all generators. most notably, this was entirely missing from the MSVC generators (both nmake and VS) - despite them needing it most. this also affects Xcode projects. - $$OUT_PWD (if different from $$PWD) is now added right after $$PWD, not at the end. this precedence clarification only makes sense, given that qmake tries to make shadow builds as transparent as possible. - the qmakespec's dir is now consistently appended. the UNIX and PBX generators prepended it, while the rest already appended. few files actually include qplatformdefs.h, so having it late in the search path seems reasonable. - the effect of CONFIG+=depend_includepath is now fully consistent with the actual include path. Change-Id: I5f7570183351ade29342ea74fef706a0738842bf Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * remove pointless pwd fallbacksOswald Buddenhagen2015-01-111-2/+0
| | | | | | | | | | | | | | | | neither qmake_getpwd()'s return value nor a fileFixify()'d version of it can be empty. Change-Id: Ic3b7d20becc57209b9dbe71ad9dc8e7547d435b1 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | remove dead codeJoerg Bornemann2015-01-131-17/+3
|/ | | | | | | | | | | | | | | | | | In ancient times, the existence of QMAKE_RUN_CXX_IMP determined the use of implicit rules. The code path for implicit rules was turned off in 2006 (0287fe3c), which probably was a refactoring artifact. Later, implicit rules were enabled again using a different approach. These days, the non-existence of QMAKE_RUN_CXX determines the use of implicit rules. We remove the dead code path now and rely on the latter condition. One part of the dead code is a feature that turns off inference rules if the OBJECTS_DIR is set or source file names do not match expectations. If somebody ever missed this, it has been reimplemented otherwise. Or not. Change-Id: If3ce9904d9c1df6e4048c58c2452854cce7fa206 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* qmake: Add .qmake.stash/super to QMAKE_DISTCLEAN when owned by projectTor Arne Vestbø2014-12-031-0/+16
| | | | | | | | | | | | Running 'make distclean' should remove all files generated by qmake, including .qmake.stash/super. These files are considered owned by a particular project (and hence a candidate for distclean), if it lives in the same directory as the output dir of the project. Task-number: QTBUG-42678 Change-Id: I224e9bac039eeacb6561e18acc7f8e867da5dab8 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@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>
* Fix QMAKE_EXTRA_COMPILERS' depend_command being ignoredGiuseppe D'Angelo2014-05-301-1/+1
| | | | | | | | | | A typo caused qmake to stop output dependency information added by the depend_command clause. Task-number: QTBUG-13334 Change-Id: I00fabc87438ce94e80341e6f88aa2e0eaab57e19 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* qmake: share the default variablesJ-P Nurmi2014-05-271-14/+20
| | | | | | | | | 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>
* remove unused macro definitionJoerg Bornemann2014-05-131-5/+0
| | | | | Change-Id: Ic2451dd7ae352b9e515c52c20a43495066fb72c8 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* remove automagic command path fixing misfeatureJoerg Bornemann2014-05-121-52/+4
| | | | | | | | | | | | | | | | | | | Qmake tried to extract the actual executable part of an extra compiler's commands and depend_command value and then "fix" it by replacing the directory separators in it with their local versions and calling QDir::cleanPath on it. This misfeature was implemented incompletely and led to unexpected results (see the numerous attempts to fix QTBUG-16372). The user is responsible for passing a correct command by calling the shell_quote or shell_escape functions if necessary. Change-Id: Ic4bfe9eeb697775cd99c865e7a9d335e63605dea Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* make use of QDir::NoDotAndDotDotJoerg Bornemann2014-04-291-6/+4
| | | | | Change-Id: Ib4bdc0d4051fed25dec7dc030658b4d0822a37bd Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* fix default QMAKE_PKGCONFIG_LIBDIROswald Buddenhagen2014-04-151-1/+1
| | | | | | | | | it needs neither native separators, nor a trailing separator. the QMAKE_PKGCONFIG_INCDIR default was already ok. Change-Id: I1048b3870fd3ca09aa76b41aecda7d90402aa64a Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* don't emit -L/-F/-I with system dirs to .pc filesOswald Buddenhagen2014-04-151-5/+11
| | | | | | Change-Id: Idecb6f8ba61872c23856a8c7e22305c01c67f0b9 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Davide Pesavento <davidepesa@gmail.com>
* qmake: change a linker option in .pc file from -llibhoge to -lhogeTasuku Suzuki2014-03-261-1/+1
| | | | | Change-Id: Ib4d01bf190eec753f1b5e37e8e5871514e43ac71 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* qmake: Add DISTCLEAN_DEPS variableAndrew Knight2014-01-301-0/+2
| | | | | | | | This variable works like CLEAN_DEPS, but applies to the distclean target. Change-Id: Ia30e8932b9acd6529298728dd5d0e038b0208d66 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Add support for using -isystem in qmakeThiago Macieira2014-01-201-0/+2
| | | | | | | | | This commit will make qmake use -isystem automatically for any compilers that declare support for it for any paths that are listed in QMAKE_DEFAULT_INCDIRS. Change-Id: I36fefc6d5bba61671f65669f0ea42704b3c3cf31 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-12-161-1/+12
|\ | | | | | | | | | | | | | | | | Conflicts: src/gui/kernel/qplatformtheme.h tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp Change-Id: Iecd3343d6a050b8764f78d809c4a1532aeba69e5
| * Merge remote-tracking branch 'origin/release' into stableFrederik Gladhorn2013-12-051-1/+12
| |\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure mkspecs/macx-ios-clang/features/default_post.prf tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp Change-Id: Iaba97eed2272bccf54289640b8197d40e22f7bf5
| | * properly replace windows paths in installed meta filesOswald Buddenhagen2013-12-041-1/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | it's bogus in the first place that the meta files contain windows paths, but straightening that out is a prohibitive effort. so instead generate additional s/// commands which take care of these paths. fwiw, the generated s///i command is a gnu extension. but as we are doing this on windows only where we are using our built-in sed command anyway, this should be fine. Task-number: QTBUG-33794 Change-Id: I46fcc598db12816ee56b5371ab184f6277eb3a22 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* | | qmake: remove bogus commentJ-P Nurmi2013-12-101-2/+0
| | | | | | | | | | | | | | | | | | | | | the respective code was removed in 375edf7 Change-Id: Ie31ef4bc8970b5396f50f1c4963f378df816242a 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>
* / complete implementation of force_debug_infoOswald Buddenhagen2013-12-031-2/+2
|/ | | | | | | | | that means further detaching the generation and installation of debug info from the thing calling itself A Debug Build. Task-number: QTBUG-32412 Change-Id: I4d79d1ae4806c8e4a2d6a7ccd030fb88385dd7d4 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* adequately shell-escape generated sed commandsOswald Buddenhagen2013-11-231-1/+11
| | | | | Change-Id: I39c8c4ab3da69bd21beace56f5cf3070301ac015 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Fix mkdir command in Windows shell for paths with forward-slashesEskil Abrahamsen Blomfeldt2013-11-211-1/+1
| | | | | | | | | | | | In particular this triggers in some cases of package building where we are using a Qt version which for some reason has forward slashes in its install prefix. Any mkdir command run with this Qt build will fail because only backslashes are recognized as path separators. Task-number: QTBUG-34886 Change-Id: I2f957c6d348852ec555a67a35ae39921523b7b3e Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>