summaryrefslogtreecommitdiffstats
path: root/qmake/project.cpp
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@nokia.com>2012-04-23 14:13:07 +0200
committerOswald Buddenhagen <oswald.buddenhagen@nokia.com>2012-06-27 14:35:26 +0200
commit075d4a6d5d2dffd27d8a822d78e923798984d903 (patch)
tree9377a5f6cc8f0c12fcad1a7e6413f41a1fa3caca /qmake/project.cpp
parent602ef59e855ac86ea975aa40c533c51685c36bb0 (diff)
make $$TEMPLATE magic on write instead of on read
Change-Id: I03a68993dd7d4488f8212132a9d492d135295b9e Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Diffstat (limited to 'qmake/project.cpp')
-rw-r--r--qmake/project.cpp42
1 files changed, 26 insertions, 16 deletions
diff --git a/qmake/project.cpp b/qmake/project.cpp
index 1a5b7e7e76..80fd22841e 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<QString, QStringList> &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<QString, QStringList>::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<QString, QStringLis
} else if(var == QLatin1String("_PRO_FILE_PWD_")) {
var = ".BUILTIN." + var;
place[var] = QStringList(pfile.isEmpty() ? qmake_getpwd() : QFileInfo(pfile).absolutePath());
- } else if(var == QLatin1String("TEMPLATE")) {
- if(!Option::user_template.isEmpty()) {
- var = ".BUILTIN.USER." + var;
- place[var] = QStringList(Option::user_template);
- } else {
- QString orig_template, real_template;
- if(!place[var].isEmpty())
- orig_template = place[var].first();
- real_template = orig_template.isEmpty() ? "app" : orig_template;
- if(!Option::user_template_prefix.isEmpty() && !orig_template.startsWith(Option::user_template_prefix))
- real_template.prepend(Option::user_template_prefix);
- if(real_template != orig_template) {
- var = ".BUILTIN." + var;
- place[var] = QStringList(real_template);
- }
- }
}
//qDebug("REPLACE [%s]->[%s]", qPrintable(var), qPrintable(place[var].join("::")));
return place[var];