summaryrefslogtreecommitdiffstats
path: root/qmake
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@nokia.com>2012-02-21 12:56:47 +0100
committerQt by Nokia <qt-info@nokia.com>2012-03-02 21:33:08 +0100
commitdce3821b8a6dfbb041d7ecec8b97c960b0e08c51 (patch)
tree6284c89a29c19bd188cf89fe2c0adbebf7e98074 /qmake
parentcd6e90c70ac13065257422088ffa01537ed9c685 (diff)
make evaluation of spec+cache independent of build pass context
don't inject the build pass specific variables into the project even before evaluating the .spec file and the .qmake.cache. they are not supposed to base configuration on that - feature files should do that later. the immediate advantage of this is that base_vars is never manipulated upfront any more, which allows for cleaner setup paths. also, we can do more caching of the spec+cache contents. Change-Id: I19d7f8bec1fb7c3b54121e26794340b287055ebf Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Diffstat (limited to 'qmake')
-rw-r--r--qmake/generators/metamakefile.cpp4
-rw-r--r--qmake/project.cpp4
-rw-r--r--qmake/project.h3
3 files changed, 8 insertions, 3 deletions
diff --git a/qmake/generators/metamakefile.cpp b/qmake/generators/metamakefile.cpp
index 55ab0a5af5..39dd4ab797 100644
--- a/qmake/generators/metamakefile.cpp
+++ b/qmake/generators/metamakefile.cpp
@@ -243,13 +243,13 @@ MakefileGenerator
basecfgs = project->values(build + ".CONFIG");
basecfgs += build;
basecfgs += "build_pass";
- basevars["CONFIG"] = basecfgs;
basevars["BUILD_PASS"] = QStringList(build);
QStringList buildname = project->values(build + ".name");
basevars["BUILD_NAME"] = (buildname.isEmpty() ? QStringList(build) : buildname);
//create project
- QMakeProject *build_proj = new QMakeProject(project->properties(), basevars);
+ QMakeProject *build_proj = new QMakeProject(project->properties());
+ build_proj->setExtraVars(basevars);
build_proj->setExtraConfigs(basecfgs);
build_proj->read(project->projectFile());
diff --git a/qmake/project.cpp b/qmake/project.cpp
index 8aa3ed2ed6..208d5b7d3e 100644
--- a/qmake/project.cpp
+++ b/qmake/project.cpp
@@ -1292,6 +1292,10 @@ QMakeProject::read(uchar cmd)
vars = base_vars; // start with the base
+ for (QHash<QString, QStringList>::ConstIterator it = extra_vars.constBegin();
+ it != extra_vars.constEnd(); ++it)
+ vars.insert(it.key(), it.value());
+
if(cmd & ReadFeatures) {
debug_msg(1, "Processing default_pre: %s", vars["CONFIG"].join("::").toLatin1().constData());
doProjectInclude("default_pre", IncludeFlagFeature, vars);
diff --git a/qmake/project.h b/qmake/project.h
index 43623a3974..4c99825317 100644
--- a/qmake/project.h
+++ b/qmake/project.h
@@ -85,7 +85,7 @@ class QMakeProject
QMakeProperty *prop;
void reset();
QStringList extra_configs;
- QHash<QString, QStringList> vars, base_vars;
+ QHash<QString, QStringList> vars, base_vars, extra_vars;
bool parse(const QString &text, QHash<QString, QStringList> &place, int line_count=1);
enum IncludeStatus {
@@ -119,6 +119,7 @@ public:
QMakeProject(QMakeProperty *p, const QHash<QString, QStringList> &nvars) { init(p, &nvars); }
~QMakeProject();
+ void setExtraVars(const QHash<QString, QStringList> &_vars) { extra_vars = _vars; }
void setExtraConfigs(const QStringList &_cfgs) { extra_configs = _cfgs; }
enum { ReadProFile=0x01, ReadSetup=0x02, ReadFeatures=0x04, ReadAll=0xFF };