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 &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(); @@ -1607,6 +1627,12 @@ QMakeProject::read(uchar cmd) return true; } +void +QMakeProject::setupProject() +{ + setTemplate(vars["TEMPLATE"]); +} + void QMakeProject::loadDefaults() { @@ -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 11d0eb4a27..0fb8048935 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();