diff --git a/src/shared/proparser/qmakeevaluator.cpp b/src/shared/proparser/qmakeevaluator.cpp index a42be0079a1..c883f6526d0 100644 --- a/src/shared/proparser/qmakeevaluator.cpp +++ b/src/shared/proparser/qmakeevaluator.cpp @@ -819,6 +819,16 @@ void QMakeEvaluator::visitProVariable( break; } } + + if (varName == statics.strTEMPLATE) + setTemplate(); +} + +void QMakeEvaluator::setTemplate() +{ + ProStringList &values = valuesRef(statics.strTEMPLATE); + if (values.isEmpty()) + values.append(ProString("app", NoHash)); } void QMakeEvaluator::loadDefaults() @@ -993,6 +1003,11 @@ bool QMakeEvaluator::loadSpec() return true; } +void QMakeEvaluator::setupProject() +{ + setTemplate(); +} + void QMakeEvaluator::visitCmdLine(const QString &cmds) { if (!cmds.isEmpty()) { @@ -1056,6 +1071,8 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::visitProFile( m_handler->aboutToEval(currentProFile(), pro, type); m_profileStack.push(pro); if (flags & LoadPreFiles) { + setupProject(); + evaluateFeatureFile(QLatin1String("default_pre.prf")); ProStringList &tgt = m_valuemapStack.top()[ProString("TARGET")]; @@ -1745,11 +1762,6 @@ ProStringList QMakeEvaluator::values(const ProString &variableName) const } ProStringList result = valuesDirect(variableName); - if (result.isEmpty()) { - if (variableName == statics.strTEMPLATE) { - result.append(ProString("app", NoHash)); - } - } return result; } diff --git a/src/shared/proparser/qmakeevaluator.h b/src/shared/proparser/qmakeevaluator.h index f5f2d9c41df..870933aa04e 100644 --- a/src/shared/proparser/qmakeevaluator.h +++ b/src/shared/proparser/qmakeevaluator.h @@ -109,6 +109,7 @@ public: bool prepareProject(); bool loadSpec(); void initFrom(const QMakeEvaluator &other); + void setupProject(); void visitCmdLine(const QString &cmds); VisitReturn visitProFile(ProFile *pro, QMakeHandler::EvalFileType type, LoadFlags flags); @@ -123,6 +124,8 @@ public: ProValueMap *findValues(const ProString &variableName, ProValueMap::Iterator *it); ProStringList valuesDirect(const ProString &variableName) const; + void setTemplate(); + ProStringList split_value_list(const QString &vals, const ProFile *source = 0); ProStringList expandVariableReferences(const ProString &value, int *pos = 0, bool joined = false); ProStringList expandVariableReferences(const ushort *&tokPtr, int sizeHint = 0, bool joined = false);