diff --git a/src/shared/proparser/qmakeevaluator.cpp b/src/shared/proparser/qmakeevaluator.cpp
index fee5b3383df8b61fe4b693fdec0cc80342dd9dbc..b319606af24c42842f655260f5fc163b247ea464 100644
--- a/src/shared/proparser/qmakeevaluator.cpp
+++ b/src/shared/proparser/qmakeevaluator.cpp
@@ -1211,6 +1211,28 @@ void QMakeEvaluator::evaluateCommand(const QString &cmds, const QString &where)
     }
 }
 
+void QMakeEvaluator::evaluateConfigFeatures()
+{
+    QSet<QString> processed;
+    forever {
+        bool finished = true;
+        ProStringList configs = values(statics.strCONFIG);
+        for (int i = configs.size() - 1; i >= 0; --i) {
+            QString config = configs.at(i).toQString(m_tmp1).toLower();
+            if (!processed.contains(config)) {
+                config.detach();
+                processed.insert(config);
+                if (evaluateFeatureFile(config, true)) {
+                    finished = false;
+                    break;
+                }
+            }
+        }
+        if (finished)
+            break;
+    }
+}
+
 QMakeEvaluator::VisitReturn QMakeEvaluator::visitProFile(
         ProFile *pro, QMakeHandler::EvalFileType type, LoadFlags flags)
 {
@@ -1319,24 +1341,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::visitProFile(
 
         evaluateFeatureFile(QLatin1String("default_post.prf"));
 
-        QSet<QString> processed;
-        forever {
-            bool finished = true;
-            ProStringList configs = values(statics.strCONFIG);
-            for (int i = configs.size() - 1; i >= 0; --i) {
-                QString config = configs.at(i).toQString(m_tmp1).toLower();
-                if (!processed.contains(config)) {
-                    config.detach();
-                    processed.insert(config);
-                    if (evaluateFeatureFile(config, true)) {
-                        finished = false;
-                        break;
-                    }
-                }
-            }
-            if (finished)
-                break;
-        }
+        evaluateConfigFeatures();
     }
     m_profileStack.pop();
     valuesRef(ProKey("PWD")) = ProStringList(ProString(currentDirectory()));
diff --git a/src/shared/proparser/qmakeevaluator.h b/src/shared/proparser/qmakeevaluator.h
index b8d0bf461569e4ba7071e6a5aa4b5071a04ed334..ec7bf4f562dda75c2a03fe8464066b621f556777 100644
--- a/src/shared/proparser/qmakeevaluator.h
+++ b/src/shared/proparser/qmakeevaluator.h
@@ -159,6 +159,7 @@ public:
     bool evaluateFileInto(const QString &fileName,
                           ProValueMap *values, // output-only
                           LoadFlags flags);
+    void evaluateConfigFeatures();
     void message(int type, const QString &msg) const;
     void evalError(const QString &msg) const
             { message(QMakeHandler::EvalError, msg); }