diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 44e9ea9193..6f9cf9e50e 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -510,8 +510,6 @@ add_library( cmake.cxx cmake.h - cmCommand.cxx - cmCommand.h cmCommands.cxx cmCommands.h cmAddCompileDefinitionsCommand.cxx diff --git a/Source/cmCommand.cxx b/Source/cmCommand.cxx deleted file mode 100644 index 0c2734e0fb..0000000000 --- a/Source/cmCommand.cxx +++ /dev/null @@ -1,59 +0,0 @@ -/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying - file Copyright.txt or https://cmake.org/licensing for details. */ -#include "cmCommand.h" - -#include - -#include "cmExecutionStatus.h" -#include "cmMakefile.h" - -struct cmListFileArgument; - -void cmCommand::SetExecutionStatus(cmExecutionStatus* status) -{ - this->Status = status; - this->Makefile = &status->GetMakefile(); -} - -bool cmCommand::InvokeInitialPass(const std::vector& args, - cmExecutionStatus& status) -{ - std::vector expandedArguments; - if (!this->Makefile->ExpandArguments(args, expandedArguments)) { - // There was an error expanding arguments. It was already - // reported, so we can skip this command without error. - return true; - } - return this->InitialPass(expandedArguments, status); -} - -void cmCommand::SetError(const std::string& e) -{ - this->Status->SetError(e); -} - -cmLegacyCommandWrapper::cmLegacyCommandWrapper(std::unique_ptr cmd) - : Command(std::move(cmd)) -{ -} - -cmLegacyCommandWrapper::cmLegacyCommandWrapper( - cmLegacyCommandWrapper const& other) - : Command(other.Command->Clone()) -{ -} - -cmLegacyCommandWrapper& cmLegacyCommandWrapper::operator=( - cmLegacyCommandWrapper const& other) -{ - this->Command = other.Command->Clone(); - return *this; -} - -bool cmLegacyCommandWrapper::operator()( - std::vector const& args, cmExecutionStatus& status) const -{ - auto cmd = this->Command->Clone(); - cmd->SetExecutionStatus(&status); - return cmd->InvokeInitialPass(args, status); -} diff --git a/Source/cmCommand.h b/Source/cmCommand.h deleted file mode 100644 index f5a5190229..0000000000 --- a/Source/cmCommand.h +++ /dev/null @@ -1,97 +0,0 @@ -/* 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 -#include -#include - -class cmExecutionStatus; -class cmMakefile; -struct cmListFileArgument; - -/** \class cmCommand - * \brief Superclass for all commands in CMake. - * - * cmCommand is the base class for all commands in CMake. A command - * manifests as an entry in CMakeLists.txt and produces one or - * more makefile rules. Commands are associated with a particular - * makefile. This base class cmCommand defines the API for commands - * to support such features as enable/disable, inheritance, - * documentation, and construction. - */ -class cmCommand -{ -public: - /** - * Construct the command. By default it has no makefile. - */ - cmCommand() = default; - - /** - * Need virtual destructor to destroy real command type. - */ - virtual ~cmCommand() = default; - - cmCommand(cmCommand const&) = delete; - cmCommand& operator=(cmCommand const&) = delete; - - /** - * Specify the makefile. - */ - cmMakefile* GetMakefile() { return this->Makefile; } - - void SetExecutionStatus(cmExecutionStatus* s); - cmExecutionStatus* GetExecutionStatus() { return this->Status; } - - /** - * This is called by the cmMakefile when the command is first - * encountered in the CMakeLists.txt file. It expands the command's - * arguments and then invokes the InitialPass. - */ - bool InvokeInitialPass(const std::vector& args, - cmExecutionStatus& status); - - /** - * This is called when the command is first encountered in - * the CMakeLists.txt file. - */ - virtual bool InitialPass(std::vector const& args, - cmExecutionStatus&) = 0; - - /** - * This is a virtual constructor for the command. - */ - virtual std::unique_ptr Clone() = 0; - - /** - * Set the error message - */ - void SetError(const std::string& e); - -protected: - cmMakefile* Makefile = nullptr; - -private: - cmExecutionStatus* Status = nullptr; -}; - -class cmLegacyCommandWrapper -{ -public: - explicit cmLegacyCommandWrapper(std::unique_ptr cmd); - - cmLegacyCommandWrapper(cmLegacyCommandWrapper const& other); - cmLegacyCommandWrapper& operator=(cmLegacyCommandWrapper const& other); - - cmLegacyCommandWrapper(cmLegacyCommandWrapper&&) = default; - cmLegacyCommandWrapper& operator=(cmLegacyCommandWrapper&&) = default; - - bool operator()(std::vector const& args, - cmExecutionStatus& status) const; - -private: - std::unique_ptr Command; -}; diff --git a/Source/cmState.cxx b/Source/cmState.cxx index b716dc7305..706f4e6cd0 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -13,7 +13,6 @@ #include "cmsys/RegularExpression.hxx" #include "cmCacheManager.h" -#include "cmCommand.h" #include "cmDefinitions.h" #include "cmExecutionStatus.h" #include "cmGlobCacheEntry.h" @@ -397,12 +396,6 @@ void cmState::SetIsGeneratorMultiConfig(bool b) this->IsGeneratorMultiConfig = b; } -void cmState::AddBuiltinCommand(std::string const& name, - std::unique_ptr command) -{ - this->AddBuiltinCommand(name, cmLegacyCommandWrapper(std::move(command))); -} - void cmState::AddBuiltinCommand(std::string const& name, Command command) { assert(name == cmSystemTools::LowerCase(name)); diff --git a/Source/cmState.h b/Source/cmState.h index 4dc982f0e0..62395112e2 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -27,7 +27,6 @@ #include "cmValue.h" class cmCacheManager; -class cmCommand; class cmGlobVerificationManager; class cmMakefile; class cmStateSnapshot; @@ -177,8 +176,6 @@ public: // Returns a command from its name, or nullptr Command GetCommandByExactName(std::string const& name) const; - void AddBuiltinCommand(std::string const& name, - std::unique_ptr command); void AddBuiltinCommand(std::string const& name, Command command); void AddBuiltinCommand(std::string const& name, BuiltinCommand command); void AddFlowControlCommand(std::string const& name, Command command); diff --git a/bootstrap b/bootstrap index db894ea183..b41197f8ff 100755 --- a/bootstrap +++ b/bootstrap @@ -315,7 +315,6 @@ CMAKE_CXX_SOURCES="\ cmCMakePolicyCommand \ cmCPackPropertiesGenerator \ cmCacheManager \ - cmCommand \ cmCommandArgumentParserHelper \ cmCommands \ cmCommonTargetGenerator \