| /* 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 <utility> |
| |
| #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<cmListFileArgument>& args, |
| cmExecutionStatus& status) |
| { |
| std::vector<std::string> 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<cmCommand> 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<cmListFileArgument> const& args, cmExecutionStatus& status) const |
| { |
| auto cmd = this->Command->Clone(); |
| cmd->SetExecutionStatus(&status); |
| return cmd->InvokeInitialPass(args, status); |
| } |