aboutsummaryrefslogtreecommitdiffstats
path: root/src/tools
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@qt.io>2019-06-18 18:26:27 +0200
committerMarco Bubke <marco.bubke@qt.io>2019-06-27 12:32:12 +0000
commite031ada154ba94e13af104a1e32be0f94754ba12 (patch)
treebf91a4c733dcb3c321f3cf5d80cd75fcc0762bae /src/tools
parentcbfd9dc16b41176ce5a79bd9e11a336e853573a0 (diff)
Clang: Watch only PCH sources
We watched all sources but we do not want to watch the sources of the project part because they are not used to build a PCH. Change-Id: I700cd6077fc54230c9be94d620043cf3f10cf9ea Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h11
-rw-r--r--src/tools/clangpchmanagerbackend/source/builddependenciesstorageinterface.h2
-rw-r--r--src/tools/clangpchmanagerbackend/source/pchcreator.cpp9
-rw-r--r--src/tools/clangpchmanagerbackend/source/usedmacrofilter.h5
-rw-r--r--src/tools/clangrefactoringbackend/source/symbolindexer.cpp2
5 files changed, 16 insertions, 13 deletions
diff --git a/src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h b/src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h
index 8c8c51a6cd..187a27cf89 100644
--- a/src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h
+++ b/src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h
@@ -66,10 +66,9 @@ public:
}
}
- FilePathIds fetchSources(ProjectPartId projectPartId) const override
+ FilePathIds fetchPchSources(ProjectPartId projectPartId) const override
{
- return fetchProjectPartsFilesStatement.template values<FilePathId>(1024,
- projectPartId.projectPathId);
+ return fetchPchSourcesStatement.template values<FilePathId>(1024, projectPartId.projectPathId);
}
void insertOrUpdateFileStatuses(const FileStatuses &fileStatuses) override
@@ -252,8 +251,10 @@ public:
"CONFLICT(sourceId, projectPartId) DO UPDATE SET sourceType = ?003, "
"hasMissingIncludes = ?004",
database};
- mutable ReadStatement fetchProjectPartsFilesStatement{
- "SELECT sourceId FROM projectPartsFiles WHERE projectPartId = ? ORDER BY sourceId", database};
+ mutable ReadStatement fetchPchSourcesStatement{
+ "SELECT sourceId FROM projectPartsFiles WHERE projectPartId = ? AND sourceType IN (0, 1, "
+ "3, 4) ORDER BY sourceId",
+ database};
mutable ReadStatement fetchSourceDependenciesStatement{
"WITH RECURSIVE collectedDependencies(sourceId) AS (VALUES(?) UNION "
"SELECT dependencySourceId FROM sourceDependencies, "
diff --git a/src/tools/clangpchmanagerbackend/source/builddependenciesstorageinterface.h b/src/tools/clangpchmanagerbackend/source/builddependenciesstorageinterface.h
index 1166564b32..a1c20811aa 100644
--- a/src/tools/clangpchmanagerbackend/source/builddependenciesstorageinterface.h
+++ b/src/tools/clangpchmanagerbackend/source/builddependenciesstorageinterface.h
@@ -56,7 +56,7 @@ public:
virtual UsedMacros fetchUsedMacros(FilePathId sourceId) const = 0;
virtual ProjectPartId fetchProjectPartId(Utils::SmallStringView projectPartName) = 0;
virtual void updatePchCreationTimeStamp(long long pchCreationTimeStamp, ProjectPartId projectPartId) = 0;
- virtual FilePathIds fetchSources(ProjectPartId projectPartId) const = 0;
+ virtual FilePathIds fetchPchSources(ProjectPartId projectPartId) const = 0;
protected:
~BuildDependenciesStorageInterface() = default;
diff --git a/src/tools/clangpchmanagerbackend/source/pchcreator.cpp b/src/tools/clangpchmanagerbackend/source/pchcreator.cpp
index cd7b492868..15c9a19547 100644
--- a/src/tools/clangpchmanagerbackend/source/pchcreator.cpp
+++ b/src/tools/clangpchmanagerbackend/source/pchcreator.cpp
@@ -114,7 +114,7 @@ void PchCreator::generatePch(PchTask &&pchTask)
{
m_projectPartPch.projectPartId = pchTask.projectPartId();
m_projectPartPch.lastModified = QDateTime::currentSecsSinceEpoch();
-
+ m_sources = std::move(pchTask.sources);
if (pchTask.includes.empty())
return;
@@ -127,10 +127,9 @@ void PchCreator::generatePch(PchTask &&pchTask)
m_clangTool.addFile(std::move(headerFilePath), content.clone(), std::move(commandLine));
bool success = generatePch(NativeFilePath{headerFilePath}, content);
- if (success) {
- m_sources = pchTask.sources;
- m_projectPartPch.pchPath = std::move(pchOutputPath);
- }
+
+ if (success)
+ m_projectPartPch.pchPath = std::move(pchOutputPath);
}
const ProjectPartPch &PchCreator::projectPartPch()
diff --git a/src/tools/clangpchmanagerbackend/source/usedmacrofilter.h b/src/tools/clangpchmanagerbackend/source/usedmacrofilter.h
index 9db3c683b9..2d16b484a1 100644
--- a/src/tools/clangpchmanagerbackend/source/usedmacrofilter.h
+++ b/src/tools/clangpchmanagerbackend/source/usedmacrofilter.h
@@ -128,23 +128,26 @@ private:
case SourceType::TopSystemInclude:
topSystemIncludes.emplace_back(source.sourceId);
systemIncludes.emplace_back(source.sourceId);
+ sources.emplace_back(source.sourceId);
break;
case SourceType::SystemInclude:
systemIncludes.emplace_back(source.sourceId);
+ sources.emplace_back(source.sourceId);
break;
case SourceType::TopProjectInclude:
topProjectIncludes.emplace_back(source.sourceId);
projectIncludes.emplace_back(source.sourceId);
+ sources.emplace_back(source.sourceId);
break;
case SourceType::ProjectInclude:
projectIncludes.emplace_back(source.sourceId);
+ sources.emplace_back(source.sourceId);
break;
case SourceType::UserInclude:
case SourceType::Source:
break;
}
- sources.emplace_back(source.sourceId);
}
static Utils::SmallStringVector filterUsedMarcos(const UsedMacros &usedMacros,
diff --git a/src/tools/clangrefactoringbackend/source/symbolindexer.cpp b/src/tools/clangrefactoringbackend/source/symbolindexer.cpp
index 299088aa4b..4f3a6f172f 100644
--- a/src/tools/clangrefactoringbackend/source/symbolindexer.cpp
+++ b/src/tools/clangrefactoringbackend/source/symbolindexer.cpp
@@ -145,7 +145,7 @@ void SymbolIndexer::updateProjectPart(ProjectPartContainer &&projectPart)
}
m_pathWatcher.updateIdPaths(
- {{projectPartId, m_buildDependencyStorage.fetchSources(projectPartId)}});
+ {{projectPartId, m_buildDependencyStorage.fetchPchSources(projectPartId)}});
m_symbolIndexerTaskQueue.addOrUpdateTasks(std::move(symbolIndexerTask));
m_symbolIndexerTaskQueue.processEntries();
}