summaryrefslogtreecommitdiffstats
path: root/qmake/library/qmakeevaluator.cpp
Commit message (Collapse)AuthorAgeFilesLines
* make setting a bad $$[QMAKEFEATURES] not crash qmakeOswald Buddenhagen2013-10-071-2/+2
| | | | | | Task-number: QTBUG-29642 Change-Id: I9cc209eb313f03bf342bcb64b1de3005755700a7 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* qmake: Expose ARGC to qmake functions to be able to check argument countTor Arne Vestbø2013-09-211-0/+2
| | | | | | | | | ARGS already exists, but is a flattened list of the arguments, so both foo(bar, baz) and foo(bar baz) will give count(ARGS, 2), making it unreliable for validating arguments to qmake functions. Change-Id: I0bcc16614c64000169431327da48fd1a26708e67 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* lock baseEnv in cache()Oswald Buddenhagen2013-08-271-31/+29
| | | | | | | | | | | | sync up; this doesn't actually do anything in qmake. as we modify the environment, it must be properly locked. this implies that initFrom() also needs to be called with a lock. Task-number: QTCREATORBUG-9835 Change-Id: I48bae9af9adaa0518e5a9db0ba08ff057ae14f9f Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> (cherry picked from qtcreator/d022a2d19cecb00397c2a215fc4e3bf64b1e627b)
* always check for baseEnv init failureOswald Buddenhagen2013-08-271-0/+2
| | | | | | | | | | | | | sync up; this doesn't actually do anything in qmake. creator's file watcher can trigger many parallel, entirely non-hierarchical project reloads. if there is enough of them to exceed the thread pool size, some will be serialized already by qtconcurrent, not by our wait condition. these should notice a faulty spec, too. Change-Id: I8ce40cb90fbc28045127881d57ec94e125df79af Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> (cherry picked from qtcreator/759d0a69dd3973b4785b6f9412f46666a05cdf85)
* change reporting of missing filesOswald Buddenhagen2013-08-201-3/+4
| | | | | | | | | | use the new parser flags to report all i/o errors directly. as a notable side effect, the "WARNING" prefix is gone (even though it is still treated like that, which is mildly insane to start with). Change-Id: I084375d5e7a3314ae763795f7c318804a9fb84b6 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* avoid boolean argument trap: introduce QMakeParser::ParseFlagOswald Buddenhagen2013-08-201-1/+1
| | | | | | | Change-Id: I26ce032a1aa044e9a4da0c8708a4490b07374992 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> (cherry picked from qttools/066b08fc62c67d586996ea4e272ef05dd3865fac) (cherry picked from qttools/226f013441990aa4a58f7c82e284057cff659959)
* implement simple VFS to support caching during project parsingOswald Buddenhagen2013-08-071-10/+11
| | | | | | | | | | | | sync up with qt creator - for qmake itself, this is just a minor refactoring. Change-Id: I833253f81c3159056fab2ff888f293b36cc2ef56 Reviewed-by: Daniel Teske <daniel.teske@digia.com> (cherry picked from qtcreator/66802ef8bf7989dc025e34bf91d93576189c483c) (cherry picked from qtcreator/69542826fa643a0fed2fc9e717f072c2852dc017) (cherry picked from qtcreator/196424115338fb9a535810704b7d814d318b0462) Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* update m_featureRoots less aggressivelyOswald Buddenhagen2013-07-191-1/+2
| | | | | | | | | | | | | it's not necessary to immediately re-calculate the roots after assigning QMAKE_PLATFORM - it's sufficient to do it on-demand, so merely invalidate them. this avoids that we re-calculate them multiple times without ever using them in between while processing specs with distributed platform assignments. Change-Id: If508594764811b96a577fc81c5ded34ab0453148 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com> (cherry picked from qtcreator/28df27d924bb407791a76de8159c9ffa6efde283) Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* cache results of feature searchOswald Buddenhagen2013-07-191-23/+43
| | | | | | | | | | | | | looking up the same files in the same locations over and over again is a rather significant waste. in particular, looking up the CONFIG flags that don't correspond with features has a measurable impact on qt creator's project loading time. Task-number: QTCREATORBUG-9154 Change-Id: Ibae3d8b7797e706a6416a7d45c77734ab1281b51 Reviewed-by: Daniel Teske <daniel.teske@digia.com> (cherry picked from qtcreator/fa27cd79e05aed4ebd16d5648480cc7d48fefd43) Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* minor optimization: don't concatenate strings needlesslyOswald Buddenhagen2013-07-191-1/+2
| | | | | | | Change-Id: Iddec1a818ff9f3ad8b12491100883e433e4b8246 Reviewed-by: Daniel Teske <daniel.teske@digia.com> (cherry picked from qtcreator/12652c20711fd29dcba62b8d5ba71c077d8bd06c) Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Merge branch 'stable' into devSergio Ahumada2013-07-111-5/+8
|\ | | | | | | | | | | | | | | | | | | Conflicts: qmake/generators/mac/pbuilder_pbx.cpp src/corelib/json/qjsonwriter.cpp src/corelib/kernel/qeventdispatcher_blackberry.cpp src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm Change-Id: I24df576c4cbd18fa51b03122f71e32bb83b9028f
| * make split_value_list() even less sane againOswald Buddenhagen2013-07-031-5/+8
| | | | | | | | | | | | | | | | | | | | | | contrary to what one may expect, it's actually *not* supposed to remove the meta-characters it interprets. luckily, this function is not used much any more ... Task-number: QTBUG-31877 Change-Id: I2b60f9b173140da78db2b07b596cc2e5f6e6d555 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-06-271-3/+3
|\| | | | | | | | | | | | | | | Conflicts: configure mkspecs/features/create_cmake.prf Change-Id: I94aea83b83833395d5db399209e0e51b92ef23b5
| * Merge "Merge remote-tracking branch 'origin/release' into stable" into ↵Frederik Gladhorn2013-06-251-2/+2
| |\ | | | | | | | | | refs/staging/stable
| | * make Makefiles not depend on .qmake.superOswald Buddenhagen2013-06-151-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | this avoids that an empty rebuild after a complete build re-runs qmake everywhere again. according to 1f83f0cf2a this is the behavior i originally intended, but somehow it got lost when switching to the new interpreter. Change-Id: Id5158d7e272fdee4f4a041fb7c828295a0a86684 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
| * | Fix incorrect uname usage.Chris Stylianou2013-06-211-1/+1
| |/ | | | | | | | | | | | | | | | | The POSIX function uname() can return any non-negative value for success. - Example: Solaris 10 returns 1 on success. See: http://pubs.opengroup.org/onlinepubs/009695399/functions/uname.html Change-Id: Ic3d51f94a31d8b562b28a2d09df3d31b04c77dc8 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | don't copy mkspecs to build directoryOswald Buddenhagen2013-06-121-0/+2
| | | | | | | | | | | | | | instead, teach qmake to use the mkspecs dir from the source dir as well. Change-Id: I9edac11f8997fcb0594d0a67419d4733dd4ed86b Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* | remove pointless string conversionOswald Buddenhagen2013-06-121-2/+1
| | | | | | | | | | Change-Id: I1640083007ed0c428dfb8ab5ce8b68a7d7e2a749 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* | make .qmake.{super,cache,conf} find "anchored" featuresOswald Buddenhagen2013-06-121-0/+2
| | | | | | | | | | | | | | | | | | these files function as "anchors" for mkspecs/ and features/ directories used by projects which load these files. ironically, these files didn't see these feature files themselves. Change-Id: I590855eb4a9d2c72b9abfcaa431d2f85a719c6e2 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* | find features/ under mkspecs/ of source & build rootOswald Buddenhagen2013-06-121-2/+6
|/ | | | | | | | | | we were finding features/ directly in the source & build root, and we were finding features/ under mkspecs/ from $QMAKEPATH and other mkspecs locations, but we omitted the "transitive hull". this was counterintuitive. Change-Id: I9823e6606467c98f264c81385250da92311f51ca Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* QMakeEvaluator: Set pro file as source for internal variablesOrgad Shaneh2013-05-201-4/+5
| | | | | | | | | | Task-number: QTCREATORBUG-7006 Change-Id: I3f599f92d03b6f9fdf65b12cf4090e28cc497fbd Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> (cherry picked from qtcreator/6e3af2bf2e2833e0ecbc9b366af8e06abd7ecf96) Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Qt4Project: Do a build_pass evaluationDaniel Teske2013-05-201-8/+2
| | | | | | | | | | | | Some projects set TARGET or DESTDIR only in the build_pass Task-number: QTCREATORBUG-4273 Change-Id: I3673dd93b37b10102a0c1f1ce053e1aef8aaf53f Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Daniel Teske <daniel.teske@digia.com> (cherry picked from qtcreator/95169eb8e39c6f43b7e74fbb18d4db19a38b0124) Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Merge remote-tracking branch 'gerrit/release' into stableSamuel Rødal2013-03-211-3/+3
|\ | | | | | | | | | | | | | | | | | | | | | | 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
| * clean paths of found files in prepareProject()Oswald Buddenhagen2013-03-121-3/+3
| | | | | | | | | | | | | | | | any of the directories may be the root, which would lead to double slashes in the constructed filenames. Change-Id: I053e167a19b795b40e780fc29db356c7f24d286a Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* | make split_value_list() a bit less sane againOswald Buddenhagen2013-03-131-2/+7
| | | | | | | | | | | | | | | | | | let the backslash escape only quotes (and itself), after all - $$list() (one of the main users of this function) is commonly used with (windows) path lists, so letting it escape anything would make a royal mess. Change-Id: I2dae2e4508903e62c190c1497da68d53978118e7 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* | make split_value_list() saneOswald Buddenhagen2013-03-121-31/+33
| | | | | | | | | | | | | | | | | | don't count parentheses, don't nest quotes, don't create empty elements, let backslash uniformly escape. in short, behave like a sane parser. Change-Id: I29252fbe14fd6d28217450ec41cf8acfb2e30681 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Frederik Gladhorn2013-02-181-3/+3
|\| | | | | | | refs/staging/dev
| * remove automatic splitting from $$() expansionsOswald Buddenhagen2013-02-131-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | $$(FOO) would automatically split the contents of the environment variable at whitespace (and interpret quoting inside it). the way to prevent the splitting (but not the quote interpretation) would be using "$$(FOO)". this behavior is entirely unexpected and thus an incredibly effective source of quoting problems - according to a grep over the whole qt sources, there isn't a single case where things were done right. in qt creator, well over half the cases are wrong. also, the "feature" seems entirely pointless: nobody uses spaces as separators in environment variables. consequently, simply remove it, even in a patch release. i'm postulating that nobody will complain. Change-Id: I9ed3df1b0d1ef602acd78ceb118611d294561da6 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* | Update feature paths on assignment to QMAKE_PLATFORMTor Arne Vestbø2013-02-181-1/+3
|/ | | | | | | | | | | Instead of after parsing the makespecs, were we assumed QMAKE_PLATFORM had been set by the makespec and did an explicit update. Allows loading platform specific features from within a makespec after updating QMAKE_PLATFORM. Change-Id: I0eb3b7fb88ce48b00a384850c5d87223c06234d7 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@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>
* fix non-qmake build of the evaluatorOswald Buddenhagen2012-11-281-1/+1
| | | | | | Change-Id: Ibbd00b415318bda928b5e6f9831b214e2657e291 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> (cherry picked from qttools/769fa282ac8a4b98698dada6969452363e0eb415)
* rewrite default spec handlingOswald Buddenhagen2012-11-011-3/+11
| | | | | | | | | | instead of symlinking (on unix) or creating a forwarding spec (on windows), just put the default specs into (the bootstrapped) QLibraryInfo. Change-Id: I595500ef7399f77cb8ec117c4303bc0a2ffe505f Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.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>
* Use QStringList::join(QChar) overload where applicable [qmake]Marc Mutz2012-09-211-2/+2
| | | | | | | | | | This is an automated change performing the following replacements: join\("(.)"\) -> join('\1') join\(QLatin1String\("(.)"\)\) -> join(QLatin1Char('\1')) join\(QStringLiteral\("(.)"\)\) -> join(QLatin1Char('\1')) Change-Id: I9c9964703dedfdab6e7bfac80be22bd5570e2e49 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* make error() abort the qmake run, not just the current fileOswald Buddenhagen2012-09-211-42/+63
| | | | | | Change-Id: I82fc55680f9ffb227e25acb39c797596225ba89e Reviewed-by: Daniel Teske <daniel.teske@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* resolve only one level of symlinks, and only for the default specsOswald Buddenhagen2012-09-191-1/+6
| | | | | | | | otherwise we end up in the source tree, which is counterproductive. Task-number: QTBUG-26869 Change-Id: Id44a94f827dc285c75b9b243c8ef6478e668e3ff Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* fold m_qmakespecFull back into m_qmakespecOswald Buddenhagen2012-09-191-8/+8
| | | | | | | the original value is not used any more after the final resolution. Change-Id: Icadc219f045a1bbfd20506c4c72c53d1fb352969 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* don't allow overloading of built-in functionsOswald Buddenhagen2012-09-181-4/+16
| | | | | | | | | | the functions are not versioned or scoped, so user-defined overloads would mess up qmake's own feature files. it seems safer to break user projects than to allow the user to break qmake. Change-Id: I020a2e6416bbb6e2fd2ece339629d848c00c8398 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* qmake: Include own header firstSergio Ahumada2012-09-171-1/+1
| | | | | | | cpp files should include their own headers first (but below config.h) Change-Id: I10ef37854843ae6438d68f96ce5ee83eede33db5 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* don't pretend that break()/next()/return() are functionsOswald Buddenhagen2012-09-131-6/+18
| | | | | | | | | | | | | | it's a pretty braindead thing to implement control flow statements as (built-in) functions. as a "side effect", this fixes return() value handling for lists. (cherry picked from qtcreator/f53ed6c4b3feca59a94d4f0de8b1a7411122e30e) (cherry picked from qtcreator/f529e22ec38fb9a656d74394e484d2453cf42c69) Change-Id: I59c8efa0e4d65329327115f7f8ed20719e7f7546 Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* port qmake to qt creator's qmake language evaluatorOswald Buddenhagen2012-09-111-0/+1981
this is a monster commit which does the following things: - import the evaluator as-is from qt creator into qmake/library/ - integrate it into qmake's makefiles - overwrite proitems.h with actual special types - remove the parts of Option which are redundant with QMakeGlobals - make QMakeProperty a singleton owned by Option::globals. the dynamic handling so far made no sense. - make QMakeProject a subclass of QMakeEvaluator, with relatively few extensions the changes to existing qmake code outside project.* and option.* are minor. implementing the changes gradually would mean changing a lot of code which will be just replaced in the next commit, so i'm not wasting my time on it. Change-Id: I9746650423b8c5b3fbd8c3979a73228982a46195 Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>