| /* 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 <functional> |
| #include <iosfwd> |
| #include <string> |
| #include <vector> |
| |
| #include "cmDepends.h" |
| |
| class cmLocalUnixMakefileGenerator3; |
| |
| /** \class cmDepends |
| * \brief Dependencies files manager. |
| * |
| * This class is responsible for maintaining a compiler_depends.make file in |
| * the build tree corresponding to an object file. |
| */ |
| class cmDependsCompiler |
| { |
| public: |
| cmDependsCompiler() = default; |
| ~cmDependsCompiler() = default; |
| |
| /** should this be verbose in its output */ |
| void SetVerbose(bool verb) { this->Verbose = verb; } |
| |
| /** Set the local generator for the directory in which we are |
| scanning dependencies. This is not a full local generator; it |
| has been setup to do relative path conversions for the current |
| directory. */ |
| void SetLocalGenerator(cmLocalUnixMakefileGenerator3* lg) |
| { |
| this->LocalGenerator = lg; |
| } |
| |
| /** Read dependencies for the target file. Return true if |
| dependencies didn't changed and false if not. |
| Up-to-date Dependencies will be stored in deps. */ |
| bool CheckDependencies( |
| const std::string& internalDepFile, |
| const std::vector<std::string>& depFiles, |
| cmDepends::DependencyMap& dependencies, |
| const std::function<bool(const std::string&)>& isValidPath); |
| |
| /** Write dependencies for the target file. */ |
| void WriteDependencies(const cmDepends::DependencyMap& dependencies, |
| std::ostream& makeDepends, |
| std::ostream& internalDepends); |
| |
| /** Clear dependencies for the target so they will be regenerated. */ |
| void ClearDependencies(const std::vector<std::string>& depFiles); |
| |
| private: |
| bool Verbose = false; |
| cmLocalUnixMakefileGenerator3* LocalGenerator = nullptr; |
| }; |