diff options
author | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2012-02-21 12:56:47 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-02 21:33:08 +0100 |
commit | dce3821b8a6dfbb041d7ecec8b97c960b0e08c51 (patch) | |
tree | 6284c89a29c19bd188cf89fe2c0adbebf7e98074 /qmake | |
parent | cd6e90c70ac13065257422088ffa01537ed9c685 (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.cpp | 4 | ||||
-rw-r--r-- | qmake/project.cpp | 4 | ||||
-rw-r--r-- | qmake/project.h | 3 |
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 }; |