/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #pragma once #include "cmConfigure.h" // IWYU pragma: keep #include #include #include #include #include #include "cmGeneratorTarget.h" #include "cmLocalGenerator.h" class cmGlobalGenerator; class cmSourceFile; class cmCustomCommand; class cmMakefile; class cmTargetTraceDependencies { public: cmTargetTraceDependencies(cmGeneratorTarget* target); void Trace(); private: cmGeneratorTarget* GeneratorTarget; cmMakefile* Makefile; cmLocalGenerator* LocalGenerator; cmGlobalGenerator const* GlobalGenerator; using SourceEntry = cmGeneratorTarget::SourceEntry; SourceEntry* CurrentEntry; std::queue SourceQueue; std::set SourcesQueued; using NameMapType = std::map; NameMapType NameMap; std::vector NewSources; void QueueSource(cmSourceFile* sf); void FollowName(std::string const& name); void FollowNames(std::vector const& names); bool IsUtility(std::string const& dep); void CheckCustomCommand(cmCustomCommand const& cc); void CheckCustomCommands(const std::vector& commands); };