summaryrefslogtreecommitdiffstats
path: root/qmake/project.cpp
Commit message (Collapse)AuthorAgeFilesLines
* fix host vs. makefile directory separator messOswald Buddenhagen2012-07-281-34/+62
| | | | | | | | | | | | | | | | | the system path separator and shell are bound to the host system (system() will use cmd even on mingw with sh.exe in path). the makefiles otoh may depend on what the qmakespec defines. consequently, add $$system_path() and $$system_quote() (for use with system() & $$system()). $$native_path() is renamed to $$shell_path() and should be used with $$shell_quote() to produce command lines in makefiles. $$QMAKE_DIR_SEP needs to be applied to Option::dir_sep right after parsing the spec, so it is available to $$shell_{path,quote}(). Change-Id: If3db4849e7f96068cf03a32348a24f3a72d6292c Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* ifdef out the "clears variables previously set" warningOswald Buddenhagen2012-07-061-0/+2
| | | | | | | | it produces way too many false positives to be useful. Change-Id: Iefa423f96fa5574267b1468abb5efc8454ab54a3 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* export QMAKESPEC to the projectOswald Buddenhagen2012-07-031-0/+1
| | | | | | | | | | this makes it unnecessary to dump qmakespec to .qmake.cache and qmodule.pri. Task-number: QTBUG-22700 Change-Id: I678c7ee7df2512184b9cd06d7a3be8bbd0b0da15 Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* fix bugs surrounding reading super cache when no local cache is presentOswald Buddenhagen2012-06-301-3/+2
| | | | | | | | we would ignore the early read variables and fail to export the super cache's path to the project. Change-Id: I3c467802b4af22f73be05b25dbd8ccb6196d28a8 Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* use source root also for finding featuresOswald Buddenhagen2012-06-271-0/+2
| | | | | Change-Id: I108914c6d2c6d06414156584aeb3a1afb0f5838d Reviewed-by: Mark Brand <mabrand@mabrand.nl>
* move cachefile_depth calculation out of project evaluatorOswald Buddenhagen2012-06-271-5/+1
| | | | | | | it has no business there Change-Id: I6d1a4b55b5acacc470cc109a6c69a907abbba312 Reviewed-by: Mark Brand <mabrand@mabrand.nl>
* remove possibility to request project recursion from within a pro file againOswald Buddenhagen2012-06-271-4/+1
| | | | | | | | | | the feature was implemented for the abld/sbs2 generators only, and is of course undocumented. this reverts most of commit e795e61ef93f8080f9938ac49f2fca306644af85. Change-Id: Ibd1726b036ce6c45f8e678ea996218f774f8aed2 Reviewed-by: Mark Brand <mabrand@mabrand.nl>
* reduce a bit of code dupe while assembling feature search pathOswald Buddenhagen2012-06-271-13/+9
| | | | | | | | instead of having a bunch of nested loops, collect into a temporary list and process it at the end. Change-Id: I97e5642f7e13f7c7b69eae00833e61cdf46a02ed Reviewed-by: Mark Brand <mabrand@mabrand.nl>
* repurpose deprecated -E switchOswald Buddenhagen2012-06-271-12/+17
| | | | | | | | | instead of dumping the variables as we are going, dump everything at the end. this is potentially useful, as opposed to the previous functionality which was redundant with -d. Change-Id: Icf14703cb93e03f7079dfc0266b219ad9c902133 Reviewed-by: Mark Brand <mabrand@mabrand.nl>
* make a bunch of functions constOswald Buddenhagen2012-06-271-1/+1
| | | | | | | values() and variables() get both const and non-const overloads Change-Id: Idfabea1acc488bf78f24edb831681ee07f0074c4 Reviewed-by: Mark Brand <mabrand@mabrand.nl>
* make magicValues() constOswald Buddenhagen2012-06-271-6/+3
| | | | | | | the weird debugging feature is not used anyway Change-Id: I07f481a94f2b2ab2a5b61270f0e00183cefd4cd1 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* don't use backwards compat mapping for generator accessesOswald Buddenhagen2012-06-271-1/+1
| | | | | | | | we can rely on only user code needing variable mapping, so apply it only in the evaluator. Change-Id: I6fc58e7bcf24cf0fa8783d5341ab1e7b9f001c88 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* introduce magicValues() functionOswald Buddenhagen2012-06-271-2/+8
| | | | | | | | | the only place where the two remaining magic values need to be referencable is doVariableReplaceExpand(), so make a separate function and use it only in that place. Change-Id: I6e2fcfa3a4f16727d90ace56eb88fc99ef272ffc Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* make $$PWD non-magic on readOswald Buddenhagen2012-06-271-4/+3
| | | | | | | like the other variables, we can just store it in the hash. Change-Id: I49ad39dca8d498119b27f16ea4bdc44ae698d72e Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* set $$_DATE_ only on project startupOswald Buddenhagen2012-06-271-3/+1
| | | | | | | | | this changes the semantics a bit - it will be the datetime of qmake startup rather than the time a particular file is processed. i'd argue that this is insignificant. Change-Id: I75918967bef25038ce54aa81ab03c027384c0268 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* deprecate $$IN_PWDOswald Buddenhagen2012-06-271-2/+3
| | | | | | | | it suggests a symmetry to $$OUT_PWD which simply isn't there. the shorter alias $$PWD is much more popular anyway. Change-Id: Iefbfd56f1a3e526f15c9d6cd1bf59778be6f2f8d Reviewed-by: Mark Brand <mabrand@mabrand.nl>
* make project-related variables non-magicOswald Buddenhagen2012-06-271-11/+5
| | | | | | | | $$_PRO_FILE_, $$_PRO_FILE_PWD_ and $$OUT_PWD can be cleanly initialized. no need for magic. Change-Id: I2e339d17bae42ecb573c2f82c716f6be15a35b98 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* move initialization of $$TARGET to setupProject()Oswald Buddenhagen2012-06-271-4/+2
| | | | | | | that's what we have it for Change-Id: Ib734b97d337a82c73b086dfeb2b263171f2a02b7 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* make $$TEMPLATE magic on write instead of on readOswald Buddenhagen2012-06-271-16/+26
| | | | | Change-Id: I03a68993dd7d4488f8212132a9d492d135295b9e Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* make a bunch of invariant variables non-magicOswald Buddenhagen2012-06-271-126/+102
| | | | | | | | instead of resolving them on-demand, just initialize the value hash with them. less magic and faster. Change-Id: I28cb6c21ae6ae60a33734f62acdef0794420ba8f Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* don't make $$TEMPLATE_PREFIX available any moreOswald Buddenhagen2012-06-271-4/+0
| | | | | | | | this is a purely internal variable. projects are supposed to query $$TEMPLATE only. Change-Id: I32a3aa7012a4fedcf6e77e2e1302ed978baac700 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* move initialization of numerous variables to spec_pre.prfOswald Buddenhagen2012-06-271-12/+0
| | | | | | | | this is cleaner by design and allows removing some hacks. Change-Id: I3270195b5d62caa476ffde7c1e1ef43cec99c565 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Reviewed-by: Mark Brand <mabrand@mabrand.nl>
* use real qmakespec as basis for finding featuresOswald Buddenhagen2012-06-271-4/+3
| | | | | | | | | | doesn't make much of a difference on unix (as the default specs are just symlinks). on windows, it makes the gross hack used for finding spec-specific wince default_post.prfs unnecessary. Change-Id: Id403dce5be487e1ae22c1f54b8095a6afdd98bc8 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* resolve real qmakespec name right after loading itOswald Buddenhagen2012-06-271-35/+10
| | | | | | | | this is cleaner than resolving it on-demand, as it avoids statics (with potential side effects on dynamic spec switching). Change-Id: I2bc15a4c3108376e1b4a01351875fe0c445ee5d5 Reviewed-by: Mark Brand <mabrand@mabrand.nl>
* remove support for loading features relative to current directoryOswald Buddenhagen2012-06-271-3/+2
| | | | | | | | | | | it's completely counterproductive. just include() the file instead. i don't think anyone knew about this "feature", so just removing it. as a side effect this removes the repeated existence check of already found feature files, as we can use a clean else-if cascade. Change-Id: I5d38d38d0a897f2e8857ac68d5649fd4367941c4 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* revamp handling of qmake target modeOswald Buddenhagen2012-06-271-60/+7
| | | | | | | | | | | 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>
* read spec_pre and spec_post featuresOswald Buddenhagen2012-06-271-0/+2
| | | | | | | | these are read before the qmakespec and before the cache, resp. this will allow moving some hard-wired logic out of qmake. Change-Id: I6a63050d7798bc30a4add8c009bcd801a29a0deb Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* prune feature search paths which don't actually existOswald Buddenhagen2012-06-271-1/+6
| | | | | | | | this should significantly cut down the time wasted looking for files in non-existing directories, in particular on windows. Change-Id: I7ab3523fe8c028e3787ebc78e4543ab04f53448e Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* eliminate some use of base_varsOswald Buddenhagen2012-06-271-14/+16
| | | | | | | | | this limits references to this variable to its setup and explicit cache manipulation. Change-Id: I88dd2418051501abea201f223da7759a15f1c249 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Reviewed-by: Mark Brand <mabrand@mabrand.nl>
* don't let the make spec determine the host mode any moreOswald Buddenhagen2012-06-271-28/+16
| | | | | | | | | | | (some of) the generators are (moderately) x-platform, so it makes no sense to nail the host platform to a generator (and thus a spec). overriding the host platform is only a debugging mesasure anyway, so one can use the (now undocumented) -unix/-macx/-win32 options for that. Change-Id: If2a059f1feeb2c726e5838625ede1c7add829985 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Reviewed-by: Mark Brand <mabrand@mabrand.nl>
* fix somewhat common edge case in $$shadowed()Oswald Buddenhagen2012-06-261-2/+5
| | | | | | | | | | | | if source and build dir are direct children of the common root and we are shadowing the top-level source dir, there is of course no trailing slash to match. Change-Id: I8a34a6a72d16cb21d77d056e037235af9b32a008 Reviewed-by: Davide Pesavento <davidepesa@gmail.com> Reviewed-by: Andreas Hartmetz <ahartmetz@gmail.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Fix return type of isActiveConfig("host_build")Simon Hausmann2012-06-241-1/+1
| | | | | | | | The return type of isActiveConfig is a boolean, so return that when host_build is queried. Change-Id: I6d1420b49b09e51442c4b2d482e2f19b165081d8 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* normalize $$QMAKE_QMAKEOswald Buddenhagen2012-06-191-3/+2
| | | | | | | | | everything in the projects should be normalized. only the makefile generators need to adjust it to the native form. Change-Id: I06a4e997f32134d13949ec4a9dd1b44367aab7cb Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* look for mkspecs/ even below .qmake.cache/.conf-determined rootOswald Buddenhagen2012-06-191-19/+26
| | | | | | | otherwise a cache/config in an aggregator project may unduly hide the mkspecs/ of the aggregated project from qmake's view. Change-Id: Idb0b124de071822f8f55463d9f8a4d194ef3130e
* add support for a super cacheOswald Buddenhagen2012-06-191-13/+56
| | | | | | | | | | | | | | | | | qmake will now look for .qmake.super, just like it looks for .qmake.cache, and the cache() function has a mode to write this super cache. this allows the creation of aggregator projects like, say, qt5. a notable difference to the normal cache is that this file is *not* added as a dependency of the Makefile. this means that modifications done by later sub-projects will not cause a re-processing of earlier projects, and consequently that one should be cautious regarding what information to store there. another notable difference is that this file is read *before* the spec, so the spec can use the variables from the cache without resorting to $$fromfile() & co. Change-Id: I4807b6d34014261fa9eebd6f0ae128b802d86691 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* look for .qmake.conf filesOswald Buddenhagen2012-06-191-17/+25
| | | | | | | | | this is the source dir equivalent of .qmake.cache and can be checked into the repository. it can be used to make project-wide settings, or just to signal the presence of an mkspecs/ directory. Change-Id: I5f1cebad2aa2a89e78089341b2051613b6b7a613 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* find .qmake.cache for subprojects independentlyOswald Buddenhagen2012-06-191-38/+47
| | | | | | | | | | this allows the creation of aggregator projects, like, say, qt5. this is not expected to have a negative impact, as no project could reasonably expect a nested .qmake.cache to *not* take effect - in fact, if the project was processed stand-alone, it would already use it. Change-Id: I33f2935d309baba7e95465f2fefb8231c4f03eda Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* allow setting QMAKEPATH and QMAKEFEATURES in .qmake.cacheOswald Buddenhagen2012-06-191-0/+24
| | | | | Change-Id: Ie383abb57c06cb49d38345d64750837b8fe14c70 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* don't duplicate project_build_root's calculation needlesslyOswald Buddenhagen2012-06-191-7/+2
| | | | | Change-Id: Id2f343c450149b13b52c2cae8eb6eb4bfd73fc03 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* remove last traces of js supportOswald Buddenhagen2012-06-191-25/+10
| | | | | | | | don't even complain about trying to use js-based feature files. we have been doing that for long enough. Change-Id: Ib58ec204322442c488e8d780989f26b1e32595ed Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* make splitPathList() return an empty list for an empty stringOswald Buddenhagen2012-06-191-19/+9
| | | | | | | this makes the user code a bit cleaner Change-Id: I3713c73c5c19cf69341be65480917eda0b967b77 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* introduce /get property variantsOswald Buddenhagen2012-06-191-3/+5
| | | | | | | | | | | | | | | properties are now split into a write location $$[FOO] and a read location $$[FOO/get]. the write locations are hard-coded and configurable via qt.conf/Paths as before, while the read locations are configured via qt.conf/EffectivePaths. this finally provides a clean solution to the problem that during the qt build itself tools and libraries need to be taken from somewhere else than they are installed to. Change-Id: I956c43bd082afd465e690fe75d0bee3c2c0f7c25 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* add $$reverse() functionOswald Buddenhagen2012-06-191-1/+13
| | | | | | | | | returns the list with the order of the elements reversed. one can easily implement this with existing functions, but this is way faster and more readable. Change-Id: I12d306eb9fe58fc332622274ea6b658192529491 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* add $$shell_quote() functionOswald Buddenhagen2012-06-191-1/+71
| | | | | | | | to be used in system() calls and when assembling EXTRA_COMPILER and INSTALLS .commands by hand. Change-Id: Id706cd56aa267a9fb4b14e3416692b4716fafa5b Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
* add $$absolute_path() and $$relative_path()Oswald Buddenhagen2012-06-191-1/+19
| | | | | | | just exposes QDir::fooFilePath() wrapped into QDir::cleanPath() Change-Id: I7a7644084825fd8092a9910ac20f695c4d9351f6 Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
* add $$native_path() functionOswald Buddenhagen2012-06-191-1/+9
| | | | | | | more or less QDir::toNativeSeparators(QDir::cleanPath()) Change-Id: I52deee1e8086559eda5833b387a0cf64d21cbcd9 Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
* add $$clean_path() functionOswald Buddenhagen2012-06-191-1/+9
| | | | | | | just QDir::cleanPath() Change-Id: I2d51e2385939d8926c00f296537ab7f6757d9a79 Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
* add $$format_number() functionOswald Buddenhagen2012-06-191-1/+75
| | | | | Change-Id: I04266c1f5fb72af94073f3f508cee59085e365b6 Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
* add $$shadowed() functionOswald Buddenhagen2012-06-191-1/+10
| | | | | | | | | return the build directory corresponding to a given source directory. this is the identity function if not shadow-building. if input lies outside the source directory, return empty value. Change-Id: I2d2a6b1112bd19989fe29cfe19a12d39a0d208c1 Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
* add $$val_escape() functionOswald Buddenhagen2012-06-191-1/+13
| | | | | | | | this quotes the elements of a variable in a way suitable for re-parsing as qmake code. Change-Id: I0e6ea2478c43b5aeff45f485a48ac8c86705dd4a Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>