/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #ifndef cmcmd_h #define cmcmd_h #include "cmConfigure.h" // IWYU pragma: keep #include "cmCryptoHash.h" #include #include class cmcmd { public: /** * Execute commands during the build process. Supports options such * as echo, remove file etc. */ static int ExecuteCMakeCommand(std::vector&); // define co-compile command handlers they must be public // because they are used in a std::function map static int HandleIWYU(const std::string& runCmd, const std::string& sourceFile, const std::vector& orig_cmd); static int HandleTidy(const std::string& runCmd, const std::string& sourceFile, const std::vector& orig_cmd); static int HandleLWYU(const std::string& runCmd, const std::string& sourceFile, const std::vector& orig_cmd); static int HandleCppLint(const std::string& runCmd, const std::string& sourceFile, const std::vector& orig_cmd); static int HandleCppCheck(const std::string& runCmd, const std::string& sourceFile, const std::vector& orig_cmd); protected: static int HandleCoCompileCommands(std::vector& args); static int HashSumFile(std::vector& args, cmCryptoHash::Algo algo); static int SymlinkLibrary(std::vector& args); static int SymlinkExecutable(std::vector& args); static bool SymlinkInternal(std::string const& file, std::string const& link); static int ExecuteEchoColor(std::vector& args); static int ExecuteLinkScript(std::vector& args); static int WindowsCEEnvironment(const char* version, const std::string& name); static int VisualStudioLink(std::vector const& args, int type); }; #endif