From f1e846fddece96d76d4d6b53ff1ca8ed197af550 Mon Sep 17 00:00:00 2001 From: Daniel Eiband Date: Sat, 14 Sep 2019 14:16:14 +0200 Subject: cmMakefile: Extract custom command validation method --- Source/cmMakefile.cxx | 27 +++++++++++++++++++-------- Source/cmMakefile.h | 2 ++ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 564ac56..6462c26 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -821,6 +821,22 @@ void cmMakefile::ConfigureFinalPass() } } +bool cmMakefile::ValidateCustomCommand( + const cmCustomCommandLines& commandLines) const +{ + // TODO: More strict? + for (cmCustomCommandLine const& cl : commandLines) { + if (!cl.empty() && !cl[0].empty() && cl[0][0] == '"') { + std::ostringstream e; + e << "COMMAND may not contain literal quotes:\n " << cl[0] << "\n"; + this->IssueMessage(MessageType::FATAL_ERROR, e.str()); + return false; + } + } + + return true; +} + void cmMakefile::AddCustomCommandToTarget( const std::string& target, const std::vector& byproducts, const std::vector& depends, @@ -959,14 +975,9 @@ cmSourceFile* cmMakefile::AddCustomCommandToOutput( return nullptr; } - // Validate custom commands. TODO: More strict? - for (cmCustomCommandLine const& cl : commandLines) { - if (!cl.empty() && !cl[0].empty() && cl[0][0] == '"') { - std::ostringstream e; - e << "COMMAND may not contain literal quotes:\n " << cl[0] << "\n"; - this->IssueMessage(MessageType::FATAL_ERROR, e.str()); - return nullptr; - } + // Validate custom commands. + if (!this->ValidateCustomCommand(commandLines)) { + return nullptr; } // Always create the output sources and mark them generated. diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 28f5452..4a1af7d 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -1067,6 +1067,8 @@ private: bool atOnly, const char* filename, long line, bool replaceAt) const; + bool ValidateCustomCommand(const cmCustomCommandLines& commandLines) const; + void CreateGeneratedSources(const std::vector& outputs); /** -- cgit v0.12