cmMakefile: Extract custom command validation method

This commit is contained in:
Daniel Eiband
2019-09-14 14:16:14 +02:00
parent 4926ab2454
commit f1e846fdde
2 changed files with 21 additions and 8 deletions

View File

@@ -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<std::string>& byproducts,
const std::vector<std::string>& 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.

View File

@@ -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<std::string>& outputs);
/**