Commit Graph

59 Commits

Author SHA1 Message Date
Oswald Buddenhagen
1ea709889e fix path separator in system() for bootstrapped builds on windows
Change-Id: Ic472eb88f9d253fc182fb5c776560443c810321f
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-09-03 19:43:40 +02:00
Oswald Buddenhagen
93b8270bd9 make use of real environment a separate option
only creator needs to set an own environment - the testreader, lupdate
and qmake don't.

Change-Id: I4ff561a3008d423969a3f331bdc5d16b281a020b
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-09-03 19:42:37 +02:00
Oswald Buddenhagen
3c740066b7 avoid indexed access to elements of the value map stack
this makes us independent from the random access performance of the
underlying container.

Change-Id: I0e655320ad607ac43ef6797e52e6179570c155f4
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-09-03 19:41:06 +02:00
Oswald Buddenhagen
c17c479bb9 factor out evaluateBuiltin{Expand,Conditional} (again)
will need a second entry path, so it's better to have them separate

Change-Id: I52bce5de536fd0ef5d6773d8177550b8d6202d1d
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-09-03 19:39:56 +02:00
Oswald Buddenhagen
79fcd3f448 evaluateFile() => evaluateFileChecked(), evaluateFileDirect() => evaluateFile()
this is a more natural naming scheme

Change-Id: I376b16d14924d6c816b4eeab5169f54890164388
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-09-03 17:58:06 +02:00
Oswald Buddenhagen
00e9be4246 make messages from dynamic code tell a useful location
"(eval)" does not exactly help to find the error source.

Change-Id: Iecd03e6a4909ca6d7eab846844ca4415ebfa3429
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-09-03 17:56:24 +02:00
Oswald Buddenhagen
d0bc069e07 remove unnecessary parameter from evaluateFileInto()
all callers use the same value, so just inline it in the function.

Change-Id: Icc3f1301ec332cb18f5011b8abfb20703e94a491
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-09-03 17:55:23 +02:00
Oswald Buddenhagen
0ad234b691 add tracing facilities to evaluator
as other output code which is enabled only in full qmake mode, this
prints directly to the console.

Change-Id: I6a1578818512fa3b0773faf276a1d56881eb06d7
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-09-03 17:54:57 +02:00
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
fddd20ffad fix return() sanity check
the value map stack always has at least one map on it.

Change-Id: I836de07a14754b995403065443d3758bfc6a8683
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-28 14:34:00 +02:00
Oswald Buddenhagen
12e9472934 unbreak $$system() in bootstrapped mode
Change-Id: I43eb4a7a94b6df3d964b7bfd1747f953f436ba10
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-08-28 14:33:37 +02:00
Oswald Buddenhagen
b9829ab0a6 fix leaking of raw data in a bunch of new expand functions
Change-Id: Ifa7e481e7d84c50ca52c780f84156e0a5c8d9e98
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-08-15 12:11:17 +02:00
Oswald Buddenhagen
e15f1cee01 make $$relative_path() minimize already relative paths
follow suit with qmake ...

Change-Id: I8346bff6e31dcd32b182dd489b85636da6283e2a
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-08-15 09:19:32 +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
c07695a423 add missing map() call
the other branch in the function also does it

Change-Id: I74e27fa0bb997b95df904f5be48d1f251814c323
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-08-06 15:04:42 +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
10a87a96c3 add "blob" and "lines" modes to $$cat() and $$system()
follow suit with qmake ...

Change-Id: I091c2f10f547d8f339a2f0cadf5a49cfe0a88cea
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-02 13:45:14 +02:00
Oswald Buddenhagen
212a12f312 directly forward system() output to console
this makes it identical to the bootstrapped path used by qmake itself.

this applies only to full qmake mode.

Change-Id: I7100315fe95d0ee900f6bea2552c9292e3d1a07d
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-02 13:45:03 +02:00
Oswald Buddenhagen
fa91da2d41 add write_file() function
follow suit with qmake ...

Change-Id: I4e57e160b811b6496adf208b49f1dd0df0b57563
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:49:02 +02:00
Oswald Buddenhagen
b7c3b390f5 add touch() function
follow suit with qmake ...

Change-Id: I906bf83bbbb106cddd8becd85faef8e1c4c5d64f
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:48:49 +02:00
Oswald Buddenhagen
5febcd2ddc add mkpath() function
follow suit with qmake ...

Change-Id: I9ad3b3a6765b5e44cb9da87401f29c838d59491d
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:48:31 +02:00
Oswald Buddenhagen
1c98f30e80 add log() function
follow suit with qmake ...

using fputs() instead of the fancy handler functions, as this is only for
qmake, which would just print to stdout anyway.

Change-Id: I0433d8157ce8c6e580b3fec6f622896b972f7b48
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:48:20 +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
459d6f8e40 don't print an empty line if system() produces no stderr
Change-Id: I88d85c70334de2a5f913b6c67d0d253094979fd8
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:47:04 +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
986c953ac6 minor speedup of message()/warning()/error()
properly identify the function in the dispatcher, to save an additional
string comparison later.

Change-Id: I6bb88bf620f5f47416d8f58cf00050913fc3aa4b
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:45:45 +02:00
Oswald Buddenhagen
5249053473 bring isEmpty() semantics in line with qmake
qmake doesn't check if there is exactly one empty element - be it
because (theoretically) there can be no empty elements.

Change-Id: I603f2a472c02d270eafd1b3f6f9adae4349b3af0
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:45:37 +02:00
Oswald Buddenhagen
d77f76374a make defined() support testing definedness of variables
follow suit with qmake ...

Change-Id: I9b8a7b64df812c4c5a5ee25eaf931629feca0689
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:45:28 +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
3d629b1a2b add $$system_quote() & $$shell_quote() functions
follow suit with qmake ...

Change-Id: I3db37ba73cb709d8baf200600ae29241bc26bee5
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:43:57 +02:00
Oswald Buddenhagen
3522a3e050 add $$system_path() & $$shell_path() functions
follow suit with qmake ...

Change-Id: I41ceb93b234eafd5202c618a7af36e35278ad79f
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:43:27 +02:00
Oswald Buddenhagen
6c9c086632 add $$clean_path() function
follow suit with qmake ...

Change-Id: Ic80bab44704baf8a265b0ebead6f0ec024653f73
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:43:04 +02:00
Oswald Buddenhagen
58a431fac9 add $$absolute_path() & $$relative_path() functions
follow suit with qmake ...

Change-Id: Idbe30c40ef86286b871d678900c963b5d9d851c4
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:42:50 +02:00
Oswald Buddenhagen
187751f967 add $$shadowed() function
follow suit with qmake ...

Change-Id: Ic97576eaf74dfd58e8d8cd2f8034dac3963b92c4
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:42:39 +02:00
Oswald Buddenhagen
b475ae43de add $$enumerate_vars() function
follow suit with qmake ...

Change-Id: I28649e443e91c061e1452674dfc2a101b097da7f
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:42:19 +02:00
Oswald Buddenhagen
f1d7836ec0 add $$prompt() function
follow suit with qmake ...

this doesn't use any of the fancy handler functions for printing the
message, as it doesn't seem worth it: the read is done directly from
stdin anyway, and everything else would be overengineered, given the
purpose - this is probably the most useless qmake function ever.

Change-Id: I4831bfc06ce2623c4090d13c04be286bc18f1b5d
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:42:10 +02:00
Oswald Buddenhagen
115b898d8c add $$val_escape() function
follow suit with qmake ...

Change-Id: I2262b48f5989c7969a59f7d41b5a308fc5f52c29
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:41:55 +02:00
Oswald Buddenhagen
24feed1bb4 add $$reverse() function
follow suit with qmake ...

Change-Id: I21da3676713101df1be956946c6543f7ae388f5f
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-08-01 16:41:25 +02:00
Oswald Buddenhagen
dc3ed21141 add $$format_number() function
follow suit with qmake ...

Change-Id: Ie51c44cb38baa32c9c519bd7fec660f4c87f78f4
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-08-01 16:41:19 +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
780c0eac10 fix $$split()'s argument check
Change-Id: I2cd6dc1ad571497f540360d17dadd5e4b300ef4a
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-08-01 16:40:01 +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
aca1c4bd50 introduce PROEVALUATOR_FULL #define
if this is enabled, the evaluator implements all functionality
necessary for qmake. without it, functionality which is unnecessary or
outright dangerous in qt creator or lupdate context is omitted.

Change-Id: I233cfa6daf2e4451f9f1d3d14711be2a7cfe4293
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-07-09 21:18:29 +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