From 6507337b47ab220e201eab5b5228fb38b16e8343 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 12 Jun 2012 21:34:58 +0200 Subject: [PATCH] make $$TEMPLATE magic on write instead of on read follow suit with qmake ... even if the implementation is somewhat trivial due to TEMPLATE_PREFIX not existing here yet. Change-Id: Ifc3eda63ae278ad33b83a0570266950304f77679 Reviewed-by: Daniel Teske Reviewed-by: Oswald Buddenhagen --- src/shared/proparser/qmakeevaluator.cpp | 22 +++++++++++++++++----- src/shared/proparser/qmakeevaluator.h | 3 +++ 2 files changed, 20 insertions(+), 5 deletions(-) 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);