diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2016-12-08 12:47:57 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@qt.io> | 2017-01-10 10:00:09 +0000 |
commit | 4004e5688b49e0c7e97e9f4773c3d3c76c0059ee (patch) | |
tree | 125b596236fa93feddc37599e28b4db0268b26d6 /src/lib/corelib/buildgraph/depscanner.cpp | |
parent | 4265033a34e1ecd06f9d51b72ab8d595d5eb28be (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.cpp | 35 |
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) { |