Fixed resolution of QMAKESPEC on Windows.
authorRohan McGovern <rohan.mcgovern@nokia.com>
Thu, 23 Feb 2012 00:43:25 +0000 (10:43 +1000)
committerQt by Nokia <qt-info@nokia.com>
Thu, 23 Feb 2012 20:51:24 +0000 (21:51 +0100)
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>
qmake/project.cpp

index 2029e06..a862033 100644 (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
             // qmake.conf at the end of the default/qmake.conf in the QMAKESPEC_ORG variable.
             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);
 #endif
                 int lastSlash = spec->lastIndexOf(QLatin1Char('/'));
                 if (lastSlash != -1)
-                    spec->remove(lastSlash + 1);
+                    spec->remove(0, lastSlash + 1);
             }
         }
     }