From 075d4a6d5d2dffd27d8a822d78e923798984d903 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 23 Apr 2012 14:13:07 +0200 Subject: [PATCH] make $$TEMPLATE magic on write instead of on read Change-Id: I03a68993dd7d4488f8212132a9d492d135295b9e Reviewed-by: Joerg Bornemann --- qmake/project.cpp | 42 ++++++++++++++++++++++++++---------------- qmake/project.h | 1 + 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/qmake/project.cpp b/qmake/project.cpp index 1a5b7e7..80fd228 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -639,6 +639,23 @@ QStringList qmake_mkspec_paths() return ret; } +static void +setTemplate(QStringList &varlist) +{ + if (!Option::user_template.isEmpty()) { // Don't permit override + varlist = QStringList(Option::user_template); + } else { + if (varlist.isEmpty()) + varlist << "app"; + else + varlist.erase(varlist.begin() + 1, varlist.end()); + } + if (!Option::user_template_prefix.isEmpty() + && !varlist.first().startsWith(Option::user_template_prefix)) { + varlist.first().prepend(Option::user_template_prefix); + } +} + QMakeProject::~QMakeProject() { if(own_prop) @@ -1208,6 +1225,8 @@ QMakeProject::parse(const QString &t, QHash &place, int nu } if(var == "REQUIRES") // special case to get communicated to backends! doProjectCheckReqs(vallist, place); + else if (var == QLatin1String("TEMPLATE")) + setTemplate(varlist); } return true; } @@ -1504,6 +1523,7 @@ QMakeProject::read(uchar cmd) } else { vars = base_vars; // start with the base } + setupProject(); } for (QHash::ConstIterator it = extra_vars.constBegin(); @@ -1608,6 +1628,12 @@ QMakeProject::read(uchar cmd) } void +QMakeProject::setupProject() +{ + setTemplate(vars["TEMPLATE"]); +} + +void QMakeProject::loadDefaults() { vars["LITERAL_WHITESPACE"] << QLatin1String("\t"); @@ -3751,22 +3777,6 @@ QStringList &QMakeProject::values(const QString &_var, QHash[%s]", qPrintable(var), qPrintable(place[var].join("::"))); return place[var]; diff --git a/qmake/project.h b/qmake/project.h index 11d0eb4..0fb8048 100644 --- a/qmake/project.h +++ b/qmake/project.h @@ -115,6 +115,7 @@ class QMakeProject void init(QMakeProperty *); void cleanup(); void loadDefaults(); + void setupProject(); QStringList &values(const QString &v, QHash &place); QStringList qmakeFeaturePaths(); -- 2.7.4