Browse Source

cmMakefile: Extract custom command validation method

Daniel Eiband 6 years ago
parent
commit
f1e846fdde
2 changed files with 21 additions and 8 deletions
  1. 19 8
      Source/cmMakefile.cxx
  2. 2 0
      Source/cmMakefile.h

+ 19 - 8
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<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.

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