From c3b083b521b8eabb7b3c9849711f889e270a1304 Mon Sep 17 00:00:00 2001
From: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Date: Thu, 31 Oct 2013 18:01:29 +0100
Subject: [PATCH] move setting of _QMAKE_{SUPER,CONF,CACHE}_ to a more logical
 location

there is no point in setting the variables already when peeking into
the caches, as that is done in a separate evaluator anyway.
it also makes no sense to have them set while loading the spec itself,
as it's not permitted to do anything with the caches.
so set them at the next convenient point, which is right before actually
loading the caches.

Change-Id: I3717ddf94353dc04e12c52e542f16ed27b578e14
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
(cherry picked from qtbase/0f68222e9ebdf42778d4bb84260268764eb55b30)
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
---
 src/shared/proparser/qmakeevaluator.cpp | 49 +++++++++++++------------
 1 file changed, 25 insertions(+), 24 deletions(-)

diff --git a/src/shared/proparser/qmakeevaluator.cpp b/src/shared/proparser/qmakeevaluator.cpp
index 0df4406391a..e3f58aaca54 100644
--- a/src/shared/proparser/qmakeevaluator.cpp
+++ b/src/shared/proparser/qmakeevaluator.cpp
@@ -1181,23 +1181,18 @@ bool QMakeEvaluator::loadSpec()
         QMakeEvaluator evaluator(m_option, m_parser, m_vfs, m_handler);
         evaluator.m_sourceRoot = m_sourceRoot;
         evaluator.m_buildRoot = m_buildRoot;
-        if (!m_superfile.isEmpty()) {
-            valuesRef(ProKey("_QMAKE_SUPER_CACHE_")) << ProString(m_superfile);
-            if (evaluator.evaluateFile(
-                    m_superfile, QMakeHandler::EvalConfigFile, LoadProOnly) != ReturnTrue)
-                return false;
+
+        if (!m_superfile.isEmpty() && evaluator.evaluateFile(
+                m_superfile, QMakeHandler::EvalConfigFile, LoadProOnly|LoadHidden) != ReturnTrue) {
+            return false;
         }
-        if (!m_conffile.isEmpty()) {
-            valuesRef(ProKey("_QMAKE_CONF_")) << ProString(m_conffile);
-            if (evaluator.evaluateFile(
-                    m_conffile, QMakeHandler::EvalConfigFile, LoadProOnly) != ReturnTrue)
-                return false;
+        if (!m_conffile.isEmpty() && evaluator.evaluateFile(
+                m_conffile, QMakeHandler::EvalConfigFile, LoadProOnly|LoadHidden) != ReturnTrue) {
+            return false;
         }
-        if (!m_cachefile.isEmpty()) {
-            valuesRef(ProKey("_QMAKE_CACHE_")) << ProString(m_cachefile);
-            if (evaluator.evaluateFile(
-                    m_cachefile, QMakeHandler::EvalConfigFile, LoadProOnly) != ReturnTrue)
-                return false;
+        if (!m_cachefile.isEmpty() && evaluator.evaluateFile(
+                m_cachefile, QMakeHandler::EvalConfigFile, LoadProOnly|LoadHidden) != ReturnTrue) {
+            return false;
         }
         if (qmakespec.isEmpty()) {
             if (!m_hostBuild)
@@ -1231,19 +1226,25 @@ bool QMakeEvaluator::loadSpec()
   cool:
     m_qmakespec = QDir::cleanPath(qmakespec);
 
-    if (!m_superfile.isEmpty()
-        && evaluateFile(m_superfile, QMakeHandler::EvalConfigFile, LoadProOnly|LoadHidden) != ReturnTrue) {
-        return false;
+    if (!m_superfile.isEmpty()) {
+        valuesRef(ProKey("_QMAKE_SUPER_CACHE_")) << ProString(m_superfile);
+        if (evaluateFile(
+                m_superfile, QMakeHandler::EvalConfigFile, LoadProOnly|LoadHidden) != ReturnTrue)
+            return false;
     }
     if (!loadSpecInternal())
         return false;
-    if (!m_conffile.isEmpty()
-        && evaluateFile(m_conffile, QMakeHandler::EvalConfigFile, LoadProOnly) != ReturnTrue) {
-        return false;
+    if (!m_conffile.isEmpty()) {
+        valuesRef(ProKey("_QMAKE_CONF_")) << ProString(m_conffile);
+        if (evaluateFile(
+                m_conffile, QMakeHandler::EvalConfigFile, LoadProOnly) != ReturnTrue)
+            return false;
     }
-    if (!m_cachefile.isEmpty()
-        && evaluateFile(m_cachefile, QMakeHandler::EvalConfigFile, LoadProOnly) != ReturnTrue) {
-        return false;
+    if (!m_cachefile.isEmpty()) {
+        valuesRef(ProKey("_QMAKE_CACHE_")) << ProString(m_cachefile);
+        if (evaluateFile(
+                m_cachefile, QMakeHandler::EvalConfigFile, LoadProOnly) != ReturnTrue)
+            return false;
     }
     return true;
 }
-- 
GitLab