diff options
author | Nils Gladitz <nilsgladitz@gmail.com> | 2015-03-09 11:12:13 (GMT) |
---|---|---|
committer | Nils Gladitz <nilsgladitz@gmail.com> | 2015-03-09 11:45:38 (GMT) |
commit | 242c396656783b1b3d542b14bc62710a46a87518 (patch) | |
tree | 8d460b76a2b377433b774815b1914d9b4b86043a /Source/cmMakefile.cxx | |
parent | bdb00b36133c64a36fbba7fd6c648725062b6732 (diff) | |
download | CMake-242c396656783b1b3d542b14bc62710a46a87518.zip CMake-242c396656783b1b3d542b14bc62710a46a87518.tar.gz CMake-242c396656783b1b3d542b14bc62710a46a87518.tar.bz2 |
add_custom_command: Diagnose MAIN_DEPENDENCY limitation.
The new policy CMP0057 diagnoses reuse of the same MAIN_DEPENDENCY across
multiple custom commands.
Diffstat (limited to 'Source/cmMakefile.cxx')
-rw-r--r-- | Source/cmMakefile.cxx | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index ccfe2b1..6de1c61 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -985,6 +985,33 @@ cmMakefile::AddCustomCommandToOutput(const std::vector<std::string>& outputs, } else { + std::ostringstream e; + cmake::MessageType messageType = cmake::AUTHOR_WARNING; + bool issueMessage = false; + + switch(this->GetPolicyStatus(cmPolicies::CMP0057)) + { + case cmPolicies::WARN: + e << (this->GetPolicies()-> + GetPolicyWarning(cmPolicies::CMP0057)) << "\n"; + issueMessage = true; + case cmPolicies::OLD: + break; + case cmPolicies::NEW: + case cmPolicies::REQUIRED_IF_USED: + case cmPolicies::REQUIRED_ALWAYS: + issueMessage = true; + messageType = cmake::FATAL_ERROR; + break; + } + + if(issueMessage) + { + e << "\"" << main_dependency << "\" can only be specified as a " + "custom command MAIN_DEPENDENCY once."; + IssueMessage(messageType, e.str()); + } + // The existing custom command is different. We need to // generate a rule file for this new command. file = 0; |