| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
| file LICENSE.rst or https://cmake.org/licensing for details. */ | |
| #pragma once | |
| #include "cmConfigure.h" // IWYU pragma: keep | |
| #include <functional> | |
| #include <set> | |
| #include <string> | |
| #include <utility> | |
| #include <vector> | |
| #include <cm/optional> | |
| #include "cmCustomCommandLines.h" | |
| #include "cmListFileCache.h" | |
| class cmCustomCommand; | |
| class cmLocalGenerator; | |
| class cmCustomCommandGenerator | |
| { | |
| std::string GetInternalDepfileName(std::string const&, | |
| std::string const&) const; | |
| cmCustomCommand const* CC; | |
| std::string OutputConfig; | |
| std::string CommandConfig; | |
| std::string Target; | |
| cmLocalGenerator* LG; | |
| bool OldStyle; | |
| bool MakeVars; | |
| cmCustomCommandLines CommandLines; | |
| std::vector<std::vector<std::string>> EmulatorsWithArguments; | |
| std::vector<std::string> Outputs; | |
| std::vector<std::string> Byproducts; | |
| std::vector<std::string> Depends; | |
| std::string WorkingDirectory; | |
| std::set<BT<std::pair<std::string, bool>>> Utilities; | |
| std::function<std::string(std::string const&, std::string const&)> | |
| ComputeInternalDepfile; | |
| void FillEmulatorsWithArguments(); | |
| std::vector<std::string> GetCrossCompilingEmulator(unsigned int c) const; | |
| char const* GetArgv0Location(unsigned int c) const; | |
| public: | |
| cmCustomCommandGenerator( | |
| cmCustomCommand const& cc, std::string config, cmLocalGenerator* lg, | |
| bool transformDepfile = true, cm::optional<std::string> crossConfig = {}, | |
| std::function<std::string(std::string const&, std::string const&)> | |
| computeInternalDepfile = {}); | |
| cmCustomCommandGenerator(cmCustomCommandGenerator const&) = delete; | |
| cmCustomCommandGenerator(cmCustomCommandGenerator&&) = default; | |
| cmCustomCommandGenerator& operator=(cmCustomCommandGenerator const&) = | |
| delete; | |
| cmCustomCommandGenerator& operator=(cmCustomCommandGenerator&&) = default; | |
| cmCustomCommand const& GetCC() const { return *(this->CC); } | |
| unsigned int GetNumberOfCommands() const; | |
| std::string GetCommand(unsigned int c) const; | |
| void AppendArguments(unsigned int c, std::string& cmd) const; | |
| cm::optional<std::string> GetComment() const; | |
| std::string GetWorkingDirectory() const; | |
| std::vector<std::string> const& GetOutputs() const; | |
| std::vector<std::string> const& GetByproducts() const; | |
| std::vector<std::string> const& GetDepends() const; | |
| std::set<BT<std::pair<std::string, bool>>> const& GetUtilities() const; | |
| bool HasOnlyEmptyCommandLines() const; | |
| std::string GetDepfile() const; | |
| std::string GetFullDepfile() const; | |
| std::string GetInternalDepfile() const; | |
| std::string const& GetOutputConfig() const { return this->OutputConfig; } | |
| std::string const& GetCommandConfig() const { return this->CommandConfig; } | |
| std::string StoreContentToFile(std::string const& content) const; | |
| }; |