aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2013-10-30 15:33:16 +0100
committerChristian Kandeler <christian.kandeler@digia.com>2013-10-30 17:09:39 +0100
commit420595bc0753d67460bf672207113337f50d9403 (patch)
tree635aa78cc86dc0c4f653b44eb80cfc9940ba8468
parent8371a8e47f0b43e50dc24cee1941dbad65aaa1c0 (diff)
Store the right build configuration.
The build config we serialized did not contain overridden values. Change-Id: Ie2841466dc49ad67e7b8f397398533e0e13df207 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
-rw-r--r--src/lib/language/loader.cpp4
-rw-r--r--src/lib/language/projectresolver.cpp18
-rw-r--r--src/lib/language/projectresolver.h9
3 files changed, 13 insertions, 18 deletions
diff --git a/src/lib/language/loader.cpp b/src/lib/language/loader.cpp
index fa047942b..29c080b60 100644
--- a/src/lib/language/loader.cpp
+++ b/src/lib/language/loader.cpp
@@ -104,9 +104,7 @@ TopLevelProjectPtr Loader::loadProject(const SetupProjectParameters &parameters)
parameters.overriddenValuesTree(),
parameters.buildConfigurationTree(),
true);
- const TopLevelProjectPtr project = m_projectResolver->resolve(loadResult,
- parameters.buildRoot(), parameters.overriddenValuesTree(),
- parameters.buildConfigurationTree());
+ const TopLevelProjectPtr project = m_projectResolver->resolve(loadResult, parameters);
// E.g. if the top-level project is disabled.
if (m_progressObserver)
diff --git a/src/lib/language/projectresolver.cpp b/src/lib/language/projectresolver.cpp
index f64978f66..29b50c190 100644
--- a/src/lib/language/projectresolver.cpp
+++ b/src/lib/language/projectresolver.cpp
@@ -101,18 +101,15 @@ static void checkForDuplicateProductNames(const TopLevelProjectConstPtr &project
}
TopLevelProjectPtr ProjectResolver::resolve(ModuleLoaderResult &loadResult,
- const QString &buildRoot, const QVariantMap &overriddenProperties,
- const QVariantMap &buildConfiguration)
+ const SetupProjectParameters &setupParameters)
{
- QBS_ASSERT(FileInfo::isAbsolute(buildRoot), return TopLevelProjectPtr());
+ QBS_ASSERT(FileInfo::isAbsolute(setupParameters.buildRoot()), return TopLevelProjectPtr());
if (m_logger.traceEnabled())
m_logger.qbsTrace() << "[PR] resolving " << loadResult.root->file()->filePath();
ProjectContext projectContext;
projectContext.loadResult = &loadResult;
- m_buildRoot = buildRoot;
- m_overriddenProperties = overriddenProperties;
- m_buildConfiguration = buildConfiguration;
+ m_setupParams = setupParameters;
m_productContext = 0;
m_moduleContext = 0;
resolveTopLevelProject(loadResult.root, &projectContext);
@@ -126,7 +123,7 @@ void ProjectResolver::checkCancelation() const
{
if (m_progressObserver && m_progressObserver->canceled()) {
throw ErrorInfo(Tr::tr("Project resolving canceled for configuration %1.")
- .arg(TopLevelProject::deriveId(m_buildConfiguration)));
+ .arg(TopLevelProject::deriveId(m_setupParams.finalBuildConfigurationTree())));
}
}
@@ -182,8 +179,9 @@ void ProjectResolver::resolveTopLevelProject(Item *item, ProjectContext *project
if (m_progressObserver)
m_progressObserver->setMaximum(projectContext->loadResult->productInfos.count());
const TopLevelProjectPtr project = TopLevelProject::create();
- project->setBuildConfiguration(m_buildConfiguration);
- project->buildDirectory = TopLevelProject::deriveBuildDirectory(m_buildRoot, project->id());
+ project->setBuildConfiguration(m_setupParams.finalBuildConfigurationTree());
+ project->buildDirectory
+ = TopLevelProject::deriveBuildDirectory(m_setupParams.buildRoot(), project->id());
projectContext->project = project;
resolveProject(item, projectContext);
project->usedEnvironment = m_engine->usedEnvironment();
@@ -298,7 +296,7 @@ void ProjectResolver::resolveProduct(Item *item, ProjectContext *projectContext)
item->location());
}
- ModuleLoader::overrideItemProperties(item, product->name, m_overriddenProperties);
+ ModuleLoader::overrideItemProperties(item, product->name, m_setupParams.overriddenValuesTree());
m_productsByName.insert(product->name, product);
product->enabled = m_evaluator->boolValue(item, QLatin1String("condition"));
product->additionalFileTags
diff --git a/src/lib/language/projectresolver.h b/src/lib/language/projectresolver.h
index b57a5a57e..645aeba77 100644
--- a/src/lib/language/projectresolver.h
+++ b/src/lib/language/projectresolver.h
@@ -34,6 +34,7 @@
#include "filetags.h"
#include "language.h"
#include <logging/logger.h>
+#include <tools/setupprojectparameters.h>
#include <QMap>
#include <QSet>
@@ -57,8 +58,8 @@ public:
~ProjectResolver();
void setProgressObserver(ProgressObserver *observer);
- TopLevelProjectPtr resolve(ModuleLoaderResult &loadResult, const QString &buildRoot,
- const QVariantMap &overriddenProperties, const QVariantMap &buildConfiguration);
+ TopLevelProjectPtr resolve(ModuleLoaderResult &loadResult,
+ const SetupProjectParameters &setupParameters);
private:
struct ProjectContext
@@ -121,15 +122,13 @@ private:
Logger m_logger;
ScriptEngine *m_engine;
ProgressObserver *m_progressObserver;
- QString m_buildRoot;
- QVariantMap m_overriddenProperties;
- QVariantMap m_buildConfiguration;
ProductContext *m_productContext;
ModuleContext *m_moduleContext;
QMap<QString, ResolvedProductPtr> m_productsByName;
QHash<ResolvedProductPtr, Item *> m_productItemMap;
mutable QHash<FileContextConstPtr, ResolvedFileContextPtr> m_fileContextMap;
QMap<QString, QVariantMap> m_exports;
+ SetupProjectParameters m_setupParams;
typedef void (ProjectResolver::*ItemFuncPtr)(Item *item, ProjectContext *projectContext);
typedef QMap<QByteArray, ItemFuncPtr> ItemFuncMap;