give load()/include() with target and infile()/$$fromfile() a clean environment

follow suit to qmake ...

Change-Id: If9aa8b14e8b54768faef9151727bdb29fa1ed64b
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
This commit is contained in:
Oswald Buddenhagen
2012-05-04 19:26:32 +02:00
parent 75ebcfad4b
commit 2f4171459c
3 changed files with 7 additions and 14 deletions

View File

@@ -416,8 +416,7 @@ ProStringList QMakeEvaluator::evaluateExpandFunction(
QHash<ProString, ProStringList> vars; QHash<ProString, ProStringList> vars;
QString fn = resolvePath(m_option->expandEnvVars(args.at(0).toQString(m_tmp1))); QString fn = resolvePath(m_option->expandEnvVars(args.at(0).toQString(m_tmp1)));
fn.detach(); fn.detach();
if (evaluateFileInto(fn, QMakeHandler::EvalAuxFile, if (evaluateFileInto(fn, QMakeHandler::EvalAuxFile, &vars, EvalProOnly))
&vars, &m_functionDefs, EvalProOnly))
ret = vars.value(map(args.at(1))); ret = vars.value(map(args.at(1)));
} }
break; break;
@@ -704,8 +703,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateConditionalFunction(
QHash<ProString, ProStringList> vars; QHash<ProString, ProStringList> vars;
QString fn = resolvePath(m_option->expandEnvVars(args.at(0).toQString(m_tmp1))); QString fn = resolvePath(m_option->expandEnvVars(args.at(0).toQString(m_tmp1)));
fn.detach(); fn.detach();
if (!evaluateFileInto(fn, QMakeHandler::EvalAuxFile, if (!evaluateFileInto(fn, QMakeHandler::EvalAuxFile, &vars, EvalProOnly))
&vars, &m_functionDefs, EvalProOnly))
return ReturnFalse; return ReturnFalse;
if (args.count() == 2) if (args.count() == 2)
return returnBool(vars.contains(args.at(1))); return returnBool(vars.contains(args.at(1)));
@@ -995,7 +993,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateConditionalFunction(
} else { } else {
QHash<ProString, ProStringList> symbols; QHash<ProString, ProStringList> symbols;
if ((ok = evaluateFileInto(fn, QMakeHandler::EvalAuxFile, if ((ok = evaluateFileInto(fn, QMakeHandler::EvalAuxFile,
&symbols, 0, EvalWithSetup))) { &symbols, EvalWithSetup))) {
QHash<ProString, ProStringList> newMap; QHash<ProString, ProStringList> newMap;
for (QHash<ProString, ProStringList>::ConstIterator for (QHash<ProString, ProStringList>::ConstIterator
it = m_valuemapStack.top().constBegin(), it = m_valuemapStack.top().constBegin(),

View File

@@ -882,7 +882,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::visitProFile(
qmake_cache = resolvePath(qmake_cache); qmake_cache = resolvePath(qmake_cache);
QHash<ProString, ProStringList> cache_valuemap; QHash<ProString, ProStringList> cache_valuemap;
if (evaluateFileInto(qmake_cache, QMakeHandler::EvalConfigFile, if (evaluateFileInto(qmake_cache, QMakeHandler::EvalConfigFile,
&cache_valuemap, 0, EvalProOnly)) { &cache_valuemap, EvalProOnly)) {
if (m_option->qmakespec.isEmpty()) { if (m_option->qmakespec.isEmpty()) {
const ProStringList &vals = cache_valuemap.value(ProString("QMAKESPEC")); const ProStringList &vals = cache_valuemap.value(ProString("QMAKESPEC"));
if (!vals.isEmpty()) if (!vals.isEmpty())
@@ -1963,22 +1963,17 @@ bool QMakeEvaluator::evaluateFeatureFile(const QString &fileName)
bool QMakeEvaluator::evaluateFileInto( bool QMakeEvaluator::evaluateFileInto(
const QString &fileName, QMakeHandler::EvalFileType type, const QString &fileName, QMakeHandler::EvalFileType type,
QHash<ProString, ProStringList> *values, ProFunctionDefs *funcs, EvalIntoMode mode) QHash<ProString, ProStringList> *values, EvalIntoMode mode)
{ {
QMakeEvaluator visitor(m_option, m_parser, m_handler); QMakeEvaluator visitor(m_option, m_parser, m_handler);
#ifdef PROEVALUATOR_CUMULATIVE #ifdef PROEVALUATOR_CUMULATIVE
visitor.m_cumulative = false; visitor.m_cumulative = false;
#endif #endif
visitor.m_outputDir = m_outputDir; visitor.m_outputDir = m_outputDir;
// visitor.m_valuemapStack.top() = *values;
if (funcs)
visitor.m_functionDefs = *funcs;
if (!visitor.evaluateFile(fileName, type, if (!visitor.evaluateFile(fileName, type,
(mode == EvalWithSetup) ? LoadAll : LoadProOnly)) (mode == EvalWithSetup) ? LoadAll : LoadProOnly))
return false; return false;
*values = visitor.m_valuemapStack.top(); *values = visitor.m_valuemapStack.top();
// if (funcs)
// *funcs = visitor.m_functionDefs;
return true; return true;
} }

View File

@@ -133,8 +133,8 @@ public:
bool evaluateFeatureFile(const QString &fileName); bool evaluateFeatureFile(const QString &fileName);
enum EvalIntoMode { EvalProOnly, EvalWithSetup }; enum EvalIntoMode { EvalProOnly, EvalWithSetup };
bool evaluateFileInto(const QString &fileName, QMakeHandler::EvalFileType type, bool evaluateFileInto(const QString &fileName, QMakeHandler::EvalFileType type,
QHash<ProString, ProStringList> *values, ProFunctionDefs *defs, QHash<ProString, ProStringList> *values, // output-only
EvalIntoMode mode); // values are output-only, defs are input-only EvalIntoMode mode);
void evalError(const QString &msg) const; void evalError(const QString &msg) const;
QList<ProStringList> prepareFunctionArgs(const ushort *&tokPtr); QList<ProStringList> prepareFunctionArgs(const ushort *&tokPtr);