summaryrefslogtreecommitdiffstats
path: root/Source/cmcmd.h
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2017-08-28 22:25:13 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2017-09-13 21:44:49 (GMT)
commit3bbe95f58a8fb83e56ca9023ef01b9e70b391b05 (patch)
tree786b5d6a10a78bff00f6daee00271bdfac3e570f /Source/cmcmd.h
parent3ea87bce69d1b6120b227fed3838f1bc9ab45db1 (diff)
downloadCMake-3bbe95f58a8fb83e56ca9023ef01b9e70b391b05.zip
CMake-3bbe95f58a8fb83e56ca9023ef01b9e70b391b05.tar.gz
CMake-3bbe95f58a8fb83e56ca9023ef01b9e70b391b05.tar.bz2
Clean up iwyu code to not be one big if statement.
This commit changes the internal -E__run_iwyu to be -E__run_co_compile. This is used for co-compile commands. These are tools that want to mirror the compiler. For each compiler invocation the tool will be invoked first. This started as a way to implement include what you use (iwyu), but has expanded to include cpplint, cppcheck and others. Likely there will be more in the future as well. This commit implements each one in its own function and provides a way to add additional ones in the future with less work.
Diffstat (limited to 'Source/cmcmd.h')
-rw-r--r--Source/cmcmd.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/Source/cmcmd.h b/Source/cmcmd.h
index faac1d2..541fe05 100644
--- a/Source/cmcmd.h
+++ b/Source/cmcmd.h
@@ -18,7 +18,26 @@ public:
*/
static int ExecuteCMakeCommand(std::vector<std::string>&);
+ // 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<std::string>& orig_cmd);
+ static int HandleTidy(const std::string& runCmd,
+ const std::string& sourceFile,
+ const std::vector<std::string>& orig_cmd);
+ static int HandleLWYU(const std::string& runCmd,
+ const std::string& sourceFile,
+ const std::vector<std::string>& orig_cmd);
+ static int HandleCppLint(const std::string& runCmd,
+ const std::string& sourceFile,
+ const std::vector<std::string>& orig_cmd);
+ static int HandleCppCheck(const std::string& runCmd,
+ const std::string& sourceFile,
+ const std::vector<std::string>& orig_cmd);
+
protected:
+ static int HandleCoCompileCommands(std::vector<std::string>& args);
static int HashSumFile(std::vector<std::string>& args,
cmCryptoHash::Algo algo);
static int SymlinkLibrary(std::vector<std::string>& args);