Fixed resolution of QMAKESPEC on Windows.

base_vars["QMAKESPEC_ORIGINAL"] is not guaranteed to be set the first
time resolveSpec is called, since an include() can wipe it out.  Change
it so that resolveSpec is called repeatedly until some
QMAKESPEC_ORIGINAL is set.

The code which attempted to remove all of the path up to the last / was
incorrect and must have been dead code (or its wrongness didn't matter)
until now.

Change-Id: I2b31ae10fc284ac7293c3cd95e5a2fd503ca7ab0
Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
This commit is contained in:
Rohan McGovern 2012-02-23 10:43:25 +10:00 committed by Qt by Nokia
parent 804e93462e
commit 8583bc914a

View File

@ -1528,12 +1528,15 @@ QMakeProject::resolveSpec(QString *spec, const QString &qmakespec)
// We can't resolve symlinks as they do on Unix, so configure.exe puts the source of the // We can't resolve symlinks as they do on Unix, so configure.exe puts the source of the
// qmake.conf at the end of the default/qmake.conf in the QMAKESPEC_ORG variable. // qmake.conf at the end of the default/qmake.conf in the QMAKESPEC_ORG variable.
const QStringList &spec_org = base_vars["QMAKESPEC_ORIGINAL"]; const QStringList &spec_org = base_vars["QMAKESPEC_ORIGINAL"];
if (!spec_org.isEmpty()) { if (spec_org.isEmpty()) {
// try again the next time around
*spec = QString();
} else {
*spec = spec_org.at(0); *spec = spec_org.at(0);
#endif #endif
int lastSlash = spec->lastIndexOf(QLatin1Char('/')); int lastSlash = spec->lastIndexOf(QLatin1Char('/'));
if (lastSlash != -1) if (lastSlash != -1)
spec->remove(lastSlash + 1); spec->remove(0, lastSlash + 1);
} }
} }
} }