diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2013-10-30 15:33:16 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2013-10-30 17:09:39 +0100 |
commit | 420595bc0753d67460bf672207113337f50d9403 (patch) | |
tree | 635aa78cc86dc0c4f653b44eb80cfc9940ba8468 | |
parent | 8371a8e47f0b43e50dc24cee1941dbad65aaa1c0 (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.cpp | 4 | ||||
-rw-r--r-- | src/lib/language/projectresolver.cpp | 18 | ||||
-rw-r--r-- | src/lib/language/projectresolver.h | 9 |
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 ¶meters) 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; |