aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/buildgraph/depscanner.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2016-12-08 12:47:57 +0100
committerJoerg Bornemann <joerg.bornemann@qt.io>2017-01-10 10:00:09 +0000
commit4004e5688b49e0c7e97e9f4773c3d3c76c0059ee (patch)
tree125b596236fa93feddc37599e28b4db0268b26d6 /src/lib/corelib/buildgraph/depscanner.cpp
parent4265033a34e1ecd06f9d51b72ab8d595d5eb28be (diff)
Make scanning information persistent
This way, a change in some artifact or dependency will not cause re- scanning of tons of other header files anymore. Task-number: QBS-1052 Change-Id: I1713da416b47b19275641cbbacd0a5c9da866578 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src/lib/corelib/buildgraph/depscanner.cpp')
-rw-r--r--src/lib/corelib/buildgraph/depscanner.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/lib/corelib/buildgraph/depscanner.cpp b/src/lib/corelib/buildgraph/depscanner.cpp
index fb5d776d8..95d0adcf5 100644
--- a/src/lib/corelib/buildgraph/depscanner.cpp
+++ b/src/lib/corelib/buildgraph/depscanner.cpp
@@ -58,6 +58,13 @@
namespace qbs {
namespace Internal {
+QString DependencyScanner::id() const
+{
+ if (m_id.isEmpty())
+ m_id = createId();
+ return m_id;
+}
+
static QStringList collectCppIncludePaths(const QVariantMap &modules)
{
QStringList result;
@@ -128,6 +135,20 @@ const void *PluginDependencyScanner::key() const
return m_plugin;
}
+QString PluginDependencyScanner::createId() const
+{
+ return QString::fromLatin1(m_plugin->name);
+}
+
+bool PluginDependencyScanner::areModulePropertiesCompatible(const PropertyMapConstPtr &m1,
+ const PropertyMapConstPtr &m2) const
+{
+ // This changes when our C++ scanner starts taking defines into account.
+ Q_UNUSED(m1);
+ Q_UNUSED(m2);
+ return true;
+}
+
UserDependencyScanner::UserDependencyScanner(const ResolvedScannerConstPtr &scanner,
const Logger &logger)
: m_scanner(scanner),
@@ -172,6 +193,20 @@ const void *UserDependencyScanner::key() const
return m_scanner.data();
}
+QString UserDependencyScanner::createId() const
+{
+ return m_scanner->scanScript->sourceCode;
+}
+
+bool UserDependencyScanner::areModulePropertiesCompatible(const PropertyMapConstPtr &m1,
+ const PropertyMapConstPtr &m2) const
+{
+ // TODO: This should probably be made more fine-grained. Perhaps the Scanner item
+ // could declare the relevant properties, or we could figure them out automatically
+ // somehow.
+ return m1 == m2 || m1->value() == m2->value();
+}
+
QStringList UserDependencyScanner::evaluate(Artifact *artifact, const ScriptFunctionPtr &script)
{
if (artifact->product.data() != m_product) {