aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language/projectresolver.cpp
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2014-05-14 12:21:04 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2014-05-14 16:40:30 +0200
commitbbe0de32340289407e8d0770ce95f274c448e8be (patch)
tree37e0e3e1351423b99c6ed51ee98d4d7a36a96de5 /src/lib/corelib/language/projectresolver.cpp
parent3bc7c3ca15e6ab416aef7343afe13acfd3a2fa61 (diff)
make product.buildDirectory available in Probe item
As a consequence product.name is evaluated very early and cannot depend on module properties and such. Autotests that used product.name as verification script had to be adjusted accordingly. Task-number: QBS-393 Change-Id: I62ae1a92313af54d9eb15e88b7457388584f7556 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'src/lib/corelib/language/projectresolver.cpp')
-rw-r--r--src/lib/corelib/language/projectresolver.cpp14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/lib/corelib/language/projectresolver.cpp b/src/lib/corelib/language/projectresolver.cpp
index b559454d5..346658bf2 100644
--- a/src/lib/corelib/language/projectresolver.cpp
+++ b/src/lib/corelib/language/projectresolver.cpp
@@ -280,13 +280,10 @@ void ProjectResolver::resolveProduct(Item *item, ProjectContext *projectContext)
projectContext->project->products += product;
productContext.product = product;
product->name = m_evaluator->stringValue(item, QLatin1String("name"));
- if (product->name.isEmpty()) {
- product->name = FileInfo::completeBaseName(item->file()->filePath());
- item->setProperty(QLatin1String("name"), VariantValue::create(product->name));
- }
m_logger.qbsTrace() << "[PR] resolveProduct " << product->name;
- item->setProperty(QLatin1String("buildDirectory"),
- VariantValue::create(product->buildDirectory()));
+
+ // product->buildDirectory() isn't valid yet, because the productProperties map is not ready.
+ productContext.buildDirectory = m_evaluator->stringValue(item, QLatin1String("buildDirectory"));
if (std::find_if(item->modules().begin(), item->modules().end(),
ModuleNameEquals(product->name)) != item->modules().end()) {
@@ -314,8 +311,9 @@ void ProjectResolver::resolveProduct(Item *item, ProjectContext *projectContext)
product->sourceDirectory = m_evaluator->stringValue(item, QLatin1String("sourceDirectory"));
const QString destDirKey = QLatin1String("destinationDirectory");
product->destinationDirectory = m_evaluator->stringValue(item, destDirKey);
+
if (product->destinationDirectory.isEmpty()) {
- product->destinationDirectory = product->buildDirectory();
+ product->destinationDirectory = productContext.buildDirectory;
} else {
product->destinationDirectory = FileInfo::resolvePath(
product->topLevelProject()->buildDirectory,
@@ -747,7 +745,7 @@ void ProjectResolver::resolveTransformer(Item *item, ProjectContext *projectCont
if (Q_UNLIKELY(fileName.isEmpty()))
throw ErrorInfo(Tr::tr("Artifact fileName must not be empty."));
artifact->absoluteFilePath
- = FileInfo::resolvePath(m_productContext->product->buildDirectory(), fileName);
+ = FileInfo::resolvePath(m_productContext->buildDirectory, fileName);
artifact->fileTags = m_evaluator->fileTagsValue(child, QLatin1String("fileTags"));
if (artifact->fileTags.isEmpty())
artifact->fileTags.insert(unknownFileTag());