diff --git a/qmake/library/qmakeevaluator.cpp b/qmake/library/qmakeevaluator.cpp index 7c20bb8492..386bd6cc40 100644 --- a/qmake/library/qmakeevaluator.cpp +++ b/qmake/library/qmakeevaluator.cpp @@ -1819,7 +1819,7 @@ ProString QMakeEvaluator::first(const ProKey &variableName) const QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateFile( const QString &fileName, QMakeHandler::EvalFileType type, LoadFlags flags) { - if (ProFile *pro = m_parser->parsedProFile(fileName, true)) { + if (ProFile *pro = m_parser->parsedProFile(fileName, QMakeParser::ParseUseCache)) { m_locationStack.push(m_current); VisitReturn ok = visitProFile(pro, type, flags); m_current = m_locationStack.pop(); diff --git a/qmake/library/qmakeparser.cpp b/qmake/library/qmakeparser.cpp index 35533864eb..67594625dc 100644 --- a/qmake/library/qmakeparser.cpp +++ b/qmake/library/qmakeparser.cpp @@ -152,10 +152,10 @@ QMakeParser::QMakeParser(ProFileCache *cache, QMakeVfs *vfs, QMakeParserHandler initialize(); } -ProFile *QMakeParser::parsedProFile(const QString &fileName, bool cache) +ProFile *QMakeParser::parsedProFile(const QString &fileName, ParseFlags flags) { ProFile *pro; - if (cache && m_cache) { + if ((flags & ParseUseCache) && m_cache) { ProFileCache::Entry *ent; #ifdef PROPARSER_THREAD_SAFE QMutexLocker locker(&m_cache->mutex); diff --git a/qmake/library/qmakeparser.h b/qmake/library/qmakeparser.h index e3da05cc9e..e9b0b76b3c 100644 --- a/qmake/library/qmakeparser.h +++ b/qmake/library/qmakeparser.h @@ -87,11 +87,17 @@ public: // Call this from a concurrency-free context static void initialize(); + enum ParseFlag { + ParseDefault = 0, + ParseUseCache = 1 + }; + Q_DECLARE_FLAGS(ParseFlags, ParseFlag) + QMakeParser(ProFileCache *cache, QMakeVfs *vfs, QMakeParserHandler *handler); enum SubGrammar { FullGrammar, TestGrammar, ValueGrammar }; // fileName is expected to be absolute and cleanPath()ed. - ProFile *parsedProFile(const QString &fileName, bool cache = false); + ProFile *parsedProFile(const QString &fileName, ParseFlags flags = ParseDefault); ProFile *parsedProBlock(const QString &contents, const QString &name, int line = 0, SubGrammar grammar = FullGrammar); @@ -184,6 +190,8 @@ private: friend class ProFileCache; }; +Q_DECLARE_OPERATORS_FOR_FLAGS(QMakeParser::ParseFlags) + class QMAKE_EXPORT ProFileCache { public: