excerpt from "Qt4Project: Do a build_pass evaluation"
authorDaniel Teske <daniel.teske@digia.com>
Tue, 23 Oct 2012 15:40:10 +0000 (17:40 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Tue, 28 May 2013 10:50:39 +0000 (12:50 +0200)
sync up the implementation with qtcreator

Change-Id: I3673dd93b37b10102a0c1f1ce053e1aef8aaf53f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
(cherry picked from qtcreator/95169eb8e39c6f43b7e74fbb18d4db19a38b0124)
Reviewed-by: hjk <hjk121@nokiamail.com>
src/linguist/shared/profileevaluator.cpp
src/linguist/shared/profileevaluator.h
src/linguist/shared/qmakeevaluator.cpp
src/linguist/shared/qmakeevaluator.h

index b391200..3d135cd 100644 (file)
@@ -222,6 +222,21 @@ void ProFileEvaluator::setCumulative(bool on)
 }
 #endif
 
+void ProFileEvaluator::setExtraVars(const QHash<QString, QStringList> &extraVars)
+{
+    ProValueMap map;
+    QHash<QString, QStringList>::const_iterator it = extraVars.constBegin();
+    QHash<QString, QStringList>::const_iterator end = extraVars.constEnd();
+    for ( ; it != end; ++it)
+        map.insert(ProKey(it.key()), ProStringList(it.value()));
+    d->setExtraVars(map);
+}
+
+void ProFileEvaluator::setExtraConfigs(const QStringList &extraConfigs)
+{
+     d->setExtraConfigs(ProStringList(extraConfigs));
+}
+
 void ProFileEvaluator::setOutputDir(const QString &dir)
 {
     d->m_outputDir = dir;
index 854b42d..50ec282 100644 (file)
@@ -84,6 +84,8 @@ public:
 #ifdef PROEVALUATOR_CUMULATIVE
     void setCumulative(bool on); // Default is false
 #endif
+    void setExtraVars(const QHash<QString, QStringList> &extraVars);
+    void setExtraConfigs(const QStringList &extraConfigs);
     void setOutputDir(const QString &dir); // Default is empty
 
     bool loadNamedSpec(const QString &specDir, bool hostSpec);
index 98f3018..51d42e4 100644 (file)
@@ -1350,11 +1350,9 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::visitProFile(
             loadDefaults();
     }
 
-#ifdef QT_BUILD_QMAKE
     for (ProValueMap::ConstIterator it = m_extraVars.constBegin();
          it != m_extraVars.constEnd(); ++it)
         m_valuemapStack.first().insert(it.key(), it.value());
-#endif
 
     m_handler->aboutToEval(currentProFile(), pro, type);
     m_profileStack.push(pro);
@@ -1366,11 +1364,9 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::visitProFile(
 
         evaluateCommand(m_option->precmds, fL1S("(command line)"));
 
-#ifdef QT_BUILD_QMAKE
         // After user configs, to override them
         if (!m_extraConfigs.isEmpty())
-            evaluateCommand("CONFIG += " + m_extraConfigs.join(' '), fL1S("(extra configs)"));
-#endif
+            evaluateCommand(fL1S("CONFIG += ") + m_extraConfigs.join(QLatin1Char(' ')), fL1S("(extra configs)"));
     }
 
     debugMsg(1, "visiting file %s", qPrintable(pro->fileName()));
@@ -1380,13 +1376,11 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::visitProFile(
     if (flags & LoadPostFiles) {
         evaluateCommand(m_option->postcmds, fL1S("(command line -after)"));
 
-#ifdef QT_BUILD_QMAKE
         // Again, to ensure the project does not mess with us.
         // Specifically, do not allow a project to override debug/release within a
         // debug_and_release build pass - it's too late for that at this point anyway.
         if (!m_extraConfigs.isEmpty())
-            evaluateCommand("CONFIG += " + m_extraConfigs.join(' '), fL1S("(extra configs)"));
-#endif
+            evaluateCommand(fL1S("CONFIG += ") + m_extraConfigs.join(QLatin1Char(' ')), fL1S("(extra configs)"));
 
         evaluateFeatureFile(QLatin1String("default_post.prf"));
 
index 2eb7623..dee73d1 100644 (file)
@@ -112,10 +112,8 @@ public:
                    QMakeHandler *handler);
     ~QMakeEvaluator();
 
-#ifdef QT_BUILD_QMAKE
     void setExtraVars(const ProValueMap &extraVars) { m_extraVars = extraVars; }
     void setExtraConfigs(const ProStringList &extraConfigs) { m_extraConfigs = extraConfigs; }
-#endif
     void setOutputDir(const QString &outputDir) { m_outputDir = outputDir; }
 
     ProStringList values(const ProKey &variableName) const;
@@ -268,10 +266,8 @@ public:
     QStack<Location> m_locationStack; // All execution location changes
     QStack<ProFile *> m_profileStack; // Includes only
 
-#ifdef QT_BUILD_QMAKE
     ProValueMap m_extraVars;
     ProStringList m_extraConfigs;
-#endif
     QString m_outputDir;
 
     int m_listCount;