Fix qmake's pro file cache to interact correctly with write_file

When writing a file with write_file() we have to inform the pro file parser
cache to discard the file if it's existent in the cache, to ensure that
calling include() after write_file() always works.

Change-Id: I7d09269a57de55ca30b0e11dd40770de9f919f64
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
(cherry picked from qtbase/f45d6414ad6ef1d75f049a61411cd954bcae29c3)
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
remove support for non-lowercased $$eXpaNd() functions

we have been warning about such functions for a while now, now execute.
the qmake language is (generally) case-sensitive, so this wasn't all
that useful anyway.

Change-Id: I1388ac2d5a1104389aeb3347e739a0d5e69e138d
Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org>
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
(cherry picked from qtbase/b04192d94b9fb680f99ae38ff008919c0ad371ea)
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
remove the entirely insane whitespace compression

it was merely an artifact of using QString::simplified() on the
unparsed (!) project code. there is no reason why anyone should actually
rely on it, so just remove it.

Change-Id: If9b957c4b1263f3990a2331f8851bb1c06154ea8
Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
(cherry picked from qtbase/c3c4f1eb5301a4fda17a9a48012df45f9a0ee7a3)
don't allow overloading of built-in functions

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>
(cherry picked from qtbase/849f1f9efda601bcfd3760256205a2014e0bc936)
fix non-bootstrapped $$system()'s line end conversions on windows

Change-Id: I026da1312bc28619dc7aa5974b7f4c00710517ac
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
(cherry picked from qtbase/d92fd4ca54ae71e9c0190d15df9c131435a4be68)
make error() abort the qmake run, not just the current file

Change-Id: I82fc55680f9ffb227e25acb39c797596225ba89e
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
(cherry picked from qtbase/0da7f097249f71726140a38647bb4824b09fad7b)
qmake: add ProStringList::join(QChar)

Same reasoning as for 68e04c3ac148bcbe71f2deeb7288563f6cdbcab5 applies.

Adding the overload was easier than to teach a Perl script to distinguish
between QStringList and ProStringList instances...

Change-Id: I6de6ecf21fdad135ac213b5c794927a9bc120a92
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
(cherry picked from qtbase/cbf447069cfeb799ff5e09902be065d77f2e7707)
(cherry picked from qtbase/98a73e16012f75934ce4b6e4c85fb4d6a2ad0a28)
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Use ProStringList::join(QChar) overload where applicable

Change-Id: I9c9964703dedfdab6e7bfac80be22bd5570e2e49
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
(cherry picked from qtbase/f4d47945ba17db276e94046473816014ed0342e9)
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Added note about apparent memory leak

Change-Id: I1772548f574144141c29540e1573ce60c657b9f6
Reviewed-by: David Schulz <david.schulz@digia.com>