Commit Graph

90 Commits

Author SHA1 Message Date
Oswald Buddenhagen
c5e87aa0c1 make $$shell_{path,quote}() use correct path separator
follow suit with qmake ...

Change-Id: I0221f6c81bc770c37f501d79c31860549c0c0076
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-08-28 14:37:32 +02:00
Oswald Buddenhagen
43aa104e94 fix non-global s///
QString::replace(QRegExp) pretty much always detaches, so the equality
check was bogus.

Change-Id: Iee9043c1ee3083edaf289886ac11b3e3a501d623
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-08-28 14:33:33 +02:00
Oswald Buddenhagen
2debcc2881 make code run from $$fromfile() & infile() find features
there is actually a qmake test for that.

don't copy anything which is related to loading a qmakespec to the new
evaluator, though - either it will actually load a spec (include(,into))
anyway, or it has a clean slate ($$fromfile() and infile()) and anything
spec-related would be pointless.

Change-Id: I291201a2bf823e863b3ec94be91762954612417d
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-08-28 14:33:22 +02:00
Oswald Buddenhagen
fe87e222fb unbreak infinite recursion check for fromfile() & co.
i broke this by switching to using a separate evaluator. the new
evaluator has an empty file stack, so the check would be pointless.
fix it by recoding and traversing the call chain.

Change-Id: Icb1f19adc6e66a865cd5be78eeb1c10072b4f8fc
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-08-28 14:33:16 +02:00
Orgad Shaneh
07aec935b7 Fix warnings
MSVC warns about pm being unused (because settings() is static)

Change-Id: I750804cc52edc71649545bc03f798a6802c87c7d
Reviewed-by: Laszlo Papp <lpapp@kde.org>
Reviewed-by: hjk <qthjk@ovi.com>
2012-08-07 22:22:29 +02:00
Joerg Bornemann
e0e430e1dc fix Windows build in qmakeevaluator.cpp
Change-Id: I83ffaa923acb6abbd0e8996492f90696795901cf
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-06 17:46:39 +02:00
Oswald Buddenhagen
dd60f95ff3 fix warning: make impossible condition explicit
Change-Id: Ib96b9f117e8a18d91b5e3470f82186dbe84bd320
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-06 15:05:29 +02:00
Oswald Buddenhagen
bdd8cf300b introduce ProKey class
while this is actually just an alias for ProString (with explicit
zero-cost conversions only), it nicely illustrates the use of particular
variables. it also serves to hide the NoHash hack from public view.

Change-Id: Iaf9283c64f320ad84a77d9573d1fde6d401c49df
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-06 15:05:17 +02:00
Oswald Buddenhagen
8b0844d032 fix basic variables not being initialized any more
QMAKE_INTERNAL_INCLUDED_FEATURES is added even before loading the first
prf file, so the check for an empty value map would never trigger. use a
flag variable instead.

Change-Id: If0af31d8466eadb90eca2a2e4024eff03b54e3b1
Reviewed-by: hjk <qthjk@ovi.com>
2012-08-03 13:59:05 +02:00
Yuchen Deng
a3323de814 Fix cross compilation
Change-Id: I092277ae6e9a35910ee9cbaa1806e0d848339bbb
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-02 16:51:48 +02:00
Oswald Buddenhagen
5bd33a7999 add cache() function
follow suit with qmake ...

Change-Id: I8be9b0ecdc45c6358fe00d03ea5d9e77c631c3bb
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-02 13:49:21 +02:00
Oswald Buddenhagen
48e0923095 cache mkspecPaths
instead of re-generating mkspecPaths on each use (which is exactly once
for the makespec itself and additionally any queries of $$[QMAKE_MKSPECS]),
do it only once.
now projects don't need to inherit the root env's m_qmakepath any more,
as they are guaranteed not to need rebuilding the cache. instead, they
must inherit the cache, obviously.

Change-Id: Id8e80279a11e8d975b73fd542ecc36d24c57f2f4
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-02 13:47:38 +02:00
Oswald Buddenhagen
4a9702e921 make sure featureRoots is pre-cached in the root envs
just clearing the cache to signal the need for reconstruction is a pretty
safe way to ensure that every subproject will do the same work.
now projects don't need to inherit the root env's m_qmakefeatures any more,
as they are guaranteed not to need rebuilding the cache.

Change-Id: Ibc0b2d39dabf4a47430975ad30c6b32689de7854
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-02 13:46:57 +02:00
Oswald Buddenhagen
5fecb00738 remove unneeded initializations of basic variables
03a84a7e5 re-introduced them unnecessarily after 55cad4a42 made them to be
evaluated by the parser already.

Change-Id: I1a121567fdd791f5c47c23babc4946a11b3e1f31
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-08-02 13:45:57 +02:00
Oswald Buddenhagen
2545468f10 make sure every project file evaluation has basic variables set up
now that the basic variables are not magic any more, we need to make
sure they are initialized.

Change-Id: I75a9b66b95f84599fb9af1f4787a752319344fcb
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-02 13:45:45 +02:00
Robert Loehning
c45ae0e288 Fixes arguments in string
Change-Id: I825141db85aaf5f9eb1d0f0fbe0d7bb9836b350e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-02 10:51:01 +02:00
Oswald Buddenhagen
f1a3a2d00c don't set m_sourceRoot if it equals m_buildRoot
Change-Id: I3e20c2a9b4455f7e9fcc60202166d1a8a079cba2
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:48:05 +02:00
Oswald Buddenhagen
369fdc3aee optimization & clarification of m_skipLevel use
as the branch evaluation in non-cumulative mode nowadays actually skips
code instead of merely incrementing m_skipLevel, !m_cumulative implies
!m_skipLevel. based on that we can eliminate some always true/false
conditionals, and hard-wire m_skipLevel to zero if
PROEVALUATOR_CUMULATIVE is not #defined.

Change-Id: I19569ff96f21a5074f677b873ed800a6818f1a6b
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:47:47 +02:00
Oswald Buddenhagen
76db45fafe make error() actually cancel execution in non-cumulative mode
Change-Id: I50289cdfe906c923076a4a2dc57f7ca35c8e9b90
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:45:57 +02:00
Oswald Buddenhagen
9d5ff668ef add requires() function and REQUIRES magic variable
follow suit with qmake ...

Change-Id: I6afc3898a01cc9926b9652b7f0f66becc255f01b
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:45:06 +02:00
Oswald Buddenhagen
e739841c63 implement if() by means of precompilation
the performance is about the same (depending on the expression type it's
better or worse), but a lot of code just disappears.

Change-Id: I60eb9b87f23cc811d3f9577841c38966ecfd8e43
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:44:55 +02:00
Oswald Buddenhagen
bb063b35f4 don't ignore parsing errors in eval() and on the command line
to optimally support cumulative mode, the parser will happily return a
bytecode object even when parsing failed, so errors must be treated
later.

Change-Id: I1a5c0ca9bf46a93d7359f590f0dd0ddc96baba0a
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:44:25 +02:00
Oswald Buddenhagen
160e608f5a make visitProBlock() return the last condition's state
will need it later.

eval() needs to be taught to ignore the return code, as qmake stupidly
does. as a side effect, flow control statements inside eval() don't have
an effect outside eval() any more, which is only sane.

Change-Id: I924e9d687f693a224dd7fa73af4a9bc69247e2df
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:44:13 +02:00
Oswald Buddenhagen
40ec38735e unify error messages
- start with capital letter (unless it's a function name)
- end with period

Change-Id: I62350ca2c632cf27334fe6acad2ad0487eef74a4
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:41:05 +02:00
Oswald Buddenhagen
397cfb700b normalize the output of $$find()
follow suit with qt5 qmake. this is actually wrong for qt4 qmake, but i
boldly assume that it doesn't matter.

Change-Id: I7e0ced1f335fde28f56fa6c5a4a1a581ec7e9ad0
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:40:17 +02:00
Oswald Buddenhagen
e781031b1e propagate QMAKE_INTERNAL_INCLUDED_FILES from evaluateFileInto()
no matter how little we actually use from the included files, we need to
record that we included them in the first place.

Change-Id: If09efc78f6aff4189101b21bfa040c28cefbb579
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:39:30 +02:00
Oswald Buddenhagen
7c10134437 add support for option(host_build)
Change-Id: I7b16d13b0f94d0a2e4b4743a40dad9bd8b8b9698
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:38:09 +02:00
Oswald Buddenhagen
3f7fdd192c use QT_HOST_DATA/get to access the qmake files
Change-Id: I0cdfcacb6e5e6f98914a87d8a1418f839f0c0da0
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-08-01 16:37:47 +02:00
Oswald Buddenhagen
ff276840de querying unknown properties is not an error, so don't report one
as far as qmake is concerned, anyway

Change-Id: I3b974e495ece4f4c30b737198c74dacfda8dbd0f
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:37:38 +02:00
Oswald Buddenhagen
a93e24fd0d implement qmake language and deprecation warnings
Change-Id: Ia5dd0c408ace4e779da898ffb60e9ca12a383225
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:09:49 +02:00
Oswald Buddenhagen
0af96c128a revamp message callbacks
instead of having a bazillion different callbacks, have only one with a
type parameter. the drain typically multiplexes all into one stream anyway.

Change-Id: I963daefc5a266c91334a4cc599570ed26b603d5d
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-08-01 16:09:33 +02:00
Eike Ziller
e0e8cf3ada Contact -> qt-project.org
Change-Id: I7134d7de30bcf9f9dcfad42520dd45ee083a852d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-19 13:23:21 +02:00
Oswald Buddenhagen
64471a9c4d populate QMAKE_INTERNAL_INCLUDED_FILES
... like qmake does.

Change-Id: I61b5234cdfa19744aa304d3fc15d541145b9f4a3
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-10 11:09:41 +02:00
Oswald Buddenhagen
8d7546d006 allow setting QMAKEPATH and QMAKEFEATURES in .qmake.cache
follow suit with qmake ...

Change-Id: Idc957b607bbc87f92c8729946b208f9c24a23b4b
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-09 21:18:12 +02:00
Oswald Buddenhagen
ce71932ca2 export QMAKESPEC to the project
follow suit with qmake ...

Change-Id: Ib0de27394fc71d01a57eae770da55c5b5aa35f17
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-07-09 21:17:58 +02:00
Oswald Buddenhagen
267e572842 use real qmakespec as basis for finding features
follow suit with qmake ...

Change-Id: Ibc5a97703af1c5f57149b6a5feab16215bc7f9e7
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-09 21:17:49 +02:00
Oswald Buddenhagen
0e6f6e3ca5 make $$QMAKE_QMAKE available to projects
not setting it outside the main project processing, as it's even less
likely to be needed there.

Change-Id: Ia7afe3a53bf0977d739bf23d7cd79e3a2aee8867
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-09 21:17:36 +02:00
Oswald Buddenhagen
0a348dd8e2 use QT_HOST_* where appropriate
for x-builds, the host binaries and data may be in a different place
than the ones for the target.
we have fallback code for qt 4, so we can use the new variables
unconditionally.

this patch may be incomplete - there are still some uses which *may*
need changing.

Change-Id: Ia96c4ea99c5c7fc62bbe32d0283c82eef5c1eefd
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-07-09 21:14:58 +02:00
Oswald Buddenhagen
da26368d9e make qmake property map ProString-based
Change-Id: I3c25642b885171a47e8fd27e39e5d470d9f24db3
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-09 21:14:40 +02:00
Oswald Buddenhagen
5b788ea23f consistently use source and build roots for mkspec & feature searches
follow suit with qmake ...

Change-Id: I508039840372a9f53616e8a665aa4cae619983f6
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-09 21:14:20 +02:00
Oswald Buddenhagen
be47cd2e96 de-duplicate code a bit
Change-Id: I0be34a47d77e63f6298c77aba468df0413635afa
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-09 21:14:06 +02:00
Oswald Buddenhagen
d4900ceddc explicitly look for mkspecs/ directories
follow suit with qmake ...

Change-Id: Ia4f28cf200076824043e4626d4144a6d34e68623
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-09 21:13:56 +02:00
Oswald Buddenhagen
a0515b3b55 read .qmake.super files
follow suit with qmake ...

Change-Id: I8e7f3e3379f6109c8211a69cb397c75c19d880ab
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-09 21:13:46 +02:00
Oswald Buddenhagen
5ba6019385 read .qmake.conf files
follow suit with qmake ...

Change-Id: Ic81ea048e043adcb6cc66b1dc64038c948310db8
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-09 21:13:35 +02:00
Oswald Buddenhagen
0df494a5a1 reshuffle prepareProject() code a bit
looks more like qmake's code now.
deals better with not-yet-existing output directories as well
(QDir::cdUp() does not work with those).

Change-Id: I062e581b7a9062f176a9bf8c686bf48b19ed0975
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-09 21:13:25 +02:00
Oswald Buddenhagen
20baedf3b5 do .qmake.cache search per sub-project
follow suit with qmake ...

Change-Id: I40ed12d8cba4ae39b80f47e34c370f40656b9d83
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-09 21:13:13 +02:00
Oswald Buddenhagen
bc4c499684 eliminate EvalIntoMode
it's a relic from times of entanglement with ProFileEvaluator.

Change-Id: I903c1a8a21fcb4a0c9029d0245fba56043e62718
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-09 21:12:51 +02:00
Orgad Shaneh
eff2789348 QtSupport: Compile with QT_NO_CAST_FROM_ASCII
Change-Id: I509e2280932477eed8ede5c9cf5d07305bb9ebdb
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-07-05 16:24:41 +02:00
Oswald Buddenhagen
0baa1368fb fix compile on windows
Change-Id: Ida259851e5e25472c4f225c4d063b5cfa7e75475
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-07-04 16:09:17 +02:00
Oswald Buddenhagen
d78fd3933b add groundwork for supporting -t and -tp qmake options
Change-Id: Ibb1aafdaeaf8ee53bb11436d2f2ca8ccbf0ffc3c
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-04 14:16:03 +02:00