aboutsummaryrefslogtreecommitdiffstats
path: root/src/tools/clangpchmanagerbackend/source/pchtaskgenerator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/clangpchmanagerbackend/source/pchtaskgenerator.cpp')
-rw-r--r--src/tools/clangpchmanagerbackend/source/pchtaskgenerator.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/tools/clangpchmanagerbackend/source/pchtaskgenerator.cpp b/src/tools/clangpchmanagerbackend/source/pchtaskgenerator.cpp
index 5067d9e265..7fe75d4779 100644
--- a/src/tools/clangpchmanagerbackend/source/pchtaskgenerator.cpp
+++ b/src/tools/clangpchmanagerbackend/source/pchtaskgenerator.cpp
@@ -26,6 +26,7 @@
#include "pchtaskgenerator.h"
#include "builddependenciesproviderinterface.h"
+#include "pchtaskqueueinterface.h"
#include "pchtasksmergerinterface.h"
#include "usedmacrofilter.h"
@@ -88,4 +89,38 @@ void PchTaskGenerator::removeProjectParts(const ProjectPartIds &projectsPartIds)
m_pchTasksMergerInterface.removePchTasks(projectsPartIds);
}
+void PchTaskGenerator::addNonSystemProjectParts(ProjectPartContainers &&projectParts,
+ Utils::SmallStringVector &&)
+{
+ PchTasks pchTasks;
+ pchTasks.reserve(projectParts.size());
+
+ m_progressCounter.addTotal(static_cast<int>(projectParts.size()));
+
+ for (auto &projectPart : projectParts) {
+ BuildDependency buildDependency = m_buildDependenciesProvider.create(projectPart);
+ UsedMacroFilter filter{buildDependency.sources,
+ buildDependency.usedMacros,
+ projectPart.compilerMacros};
+
+ pchTasks.emplace_back(projectPart.projectPartId,
+ std::move(filter.topProjectIncludes),
+ std::move(filter.systemIncludes),
+ std::move(filter.projectIncludes),
+ std::move(filter.userIncludes),
+ std::move(filter.sources),
+ std::move(filter.projectCompilerMacros),
+ std::move(filter.projectUsedMacros),
+ projectPart.toolChainArguments,
+ projectPart.systemIncludeSearchPaths,
+ projectPart.projectIncludeSearchPaths,
+ projectPart.language,
+ projectPart.languageVersion,
+ projectPart.languageExtension);
+ m_progressCounter.addProgress(1);
+ }
+
+ m_pchTaskQueue.addProjectPchTasks(std::move(pchTasks));
+}
+
} // namespace ClangBackEnd