diff options
Diffstat (limited to 'src/tools/clangpchmanagerbackend/source/pchtaskgenerator.cpp')
-rw-r--r-- | src/tools/clangpchmanagerbackend/source/pchtaskgenerator.cpp | 35 |
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 |