/* 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); }