summaryrefslogtreecommitdiffstats
path: root/Source/cmcmd.h
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2013-10-03 21:28:00 (GMT)
committerBrad King <brad.king@kitware.com>2013-10-03 21:30:28 (GMT)
commitc04995b46eb93d39f97ee12ab63a5479c0b79b41 (patch)
tree11041fd33983392669cd2f57f9be46d92e791cad /Source/cmcmd.h
parente27523a834641fe4d9b8267db54f7c8837aca437 (diff)
downloadCMake-c04995b46eb93d39f97ee12ab63a5479c0b79b41.zip
CMake-c04995b46eb93d39f97ee12ab63a5479c0b79b41.tar.gz
CMake-c04995b46eb93d39f97ee12ab63a5479c0b79b41.tar.bz2
cmake: Split -E command implementation into separate source file
Move the cmake::ExecuteCMakeCommand static method and all the static methods it calls out of the 'cmake' class to a separate 'cmcmd' class. Build the latter as part of the main cmake executable with cmakemain.cxx and not in CMakeLib. Drop unused header includes from "cmake.cxx". By moving this implementation out of cmake.cxx we avoid carrying it around in all the executables that use class 'cmake'. It is needed only for the main "cmake -E" functionality.
Diffstat (limited to 'Source/cmcmd.h')
-rw-r--r--Source/cmcmd.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/Source/cmcmd.h b/Source/cmcmd.h
new file mode 100644
index 0000000..4517ebf
--- /dev/null
+++ b/Source/cmcmd.h
@@ -0,0 +1,54 @@
+/*============================================================================
+ CMake - Cross Platform Makefile Generator
+ Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
+
+ Distributed under the OSI-approved BSD License (the "License");
+ see accompanying file Copyright.txt for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even the
+ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the License for more information.
+============================================================================*/
+
+#ifndef cmcmd_h
+#define cmcmd_h
+
+#include "cmStandardIncludes.h"
+
+class cmcmd
+{
+public:
+
+ /**
+ * Execute commands during the build process. Supports options such
+ * as echo, remove file etc.
+ */
+ static int ExecuteCMakeCommand(std::vector<std::string>&);
+protected:
+
+ static int SymlinkLibrary(std::vector<std::string>& args);
+ static int SymlinkExecutable(std::vector<std::string>& args);
+ static bool SymlinkInternal(std::string const& file,
+ std::string const& link);
+ static int ExecuteEchoColor(std::vector<std::string>& args);
+ static int ExecuteLinkScript(std::vector<std::string>& args);
+ static int WindowsCEEnvironment(const char* version,
+ const std::string& name);
+ static int VisualStudioLink(std::vector<std::string>& args, int type);
+ static int VisualStudioLinkIncremental(std::vector<std::string>& args,
+ int type,
+ bool verbose);
+ static int VisualStudioLinkNonIncremental(std::vector<std::string>& args,
+ int type,
+ bool hasManifest,
+ bool verbose);
+ static int ParseVisualStudioLinkCommand(std::vector<std::string>& args,
+ std::vector<cmStdString>& command,
+ std::string& targetName);
+ static bool RunCommand(const char* comment,
+ std::vector<cmStdString>& command,
+ bool verbose,
+ int* retCodeOut = 0);
+};
+
+#endif