aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language/projectresolver.cpp
diff options
context:
space:
mode:
authorMaxim Zaitsev <maxim.m.zaitsev@gmail.com>2014-03-04 02:46:31 +0400
committerJoerg Bornemann <joerg.bornemann@digia.com>2014-03-12 15:27:44 +0100
commit9c8997413fb7d744e1d1b62b5c926cb089eb0d52 (patch)
tree566370cd102144ed4cb3c0000cf2998cf3dd974c /src/lib/corelib/language/projectresolver.cpp
parent91d4e47fc8eb506b3a906d75a838a28b2c3a38e4 (diff)
Add new qml item Scanner
This item allows to write custom dependency scanners in modules. Change-Id: I6cb49969973ee29896d1909e7a16bf5da50f8aef Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src/lib/corelib/language/projectresolver.cpp')
-rw-r--r--src/lib/corelib/language/projectresolver.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/lib/corelib/language/projectresolver.cpp b/src/lib/corelib/language/projectresolver.cpp
index 869b8c63e..081ccd55d 100644
--- a/src/lib/corelib/language/projectresolver.cpp
+++ b/src/lib/corelib/language/projectresolver.cpp
@@ -403,6 +403,7 @@ void ProjectResolver::resolveModule(const QStringList &moduleName, Item *item,
mapping["Rule"] = &ProjectResolver::resolveRule;
mapping["FileTagger"] = &ProjectResolver::resolveFileTagger;
mapping["Transformer"] = &ProjectResolver::resolveTransformer;
+ mapping["Scanner"] = &ProjectResolver::resolveScanner;
mapping["PropertyOptions"] = &ProjectResolver::ignoreItem;
mapping["Depends"] = &ProjectResolver::ignoreItem;
mapping["Probe"] = &ProjectResolver::ignoreItem;
@@ -768,6 +769,23 @@ void ProjectResolver::resolveTransformer(Item *item, ProjectContext *projectCont
m_productContext->product->transformers += rtrafo;
}
+void ProjectResolver::resolveScanner(Item *item, ProjectResolver::ProjectContext *projectContext)
+{
+ checkCancelation();
+ if (!m_evaluator->boolValue(item, QLatin1String("condition"))) {
+ m_logger.qbsTrace() << "[PR] scanner condition is false";
+ return;
+ }
+
+ ResolvedScannerPtr scanner = ResolvedScanner::create();
+ scanner->module = m_moduleContext ? m_moduleContext->module : projectContext->dummyModule;
+ scanner->inputs = m_evaluator->fileTagsValue(item, QLatin1String("inputs"));
+ scanner->recursive = m_evaluator->boolValue(item, QLatin1String("recursive"));
+ scanner->searchPathsScript = scriptFunctionValue(item, QLatin1String("searchPaths"));
+ scanner->scanScript = scriptFunctionValue(item, QLatin1String("scan"));
+ m_productContext->product->scanners += scanner;
+}
+
void ProjectResolver::resolveExport(Item *item, ProjectContext *projectContext)
{
Q_UNUSED(projectContext);