summaryrefslogtreecommitdiffstats
path: root/Source/cmAddCustomCommandCommand.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmAddCustomCommandCommand.cxx')
-rw-r--r--Source/cmAddCustomCommandCommand.cxx22
1 files changed, 22 insertions, 0 deletions
diff --git a/Source/cmAddCustomCommandCommand.cxx b/Source/cmAddCustomCommandCommand.cxx
index c056b43..a9f948c 100644
--- a/Source/cmAddCustomCommandCommand.cxx
+++ b/Source/cmAddCustomCommandCommand.cxx
@@ -204,6 +204,27 @@ bool cmAddCustomCommandCommand::InitialPass(
return false;
}
+ if ( !this->Makefile->CanIWriteThisFile(output.c_str()) )
+ {
+ std::string e = "attempted to have a file: " + output +
+ " in a source directory as an output of custom command.";
+ this->SetError(e.c_str());
+ cmSystemTools::SetFatalErrorOccured();
+ return false;
+ }
+ std::vector<std::string>::iterator oit;
+ for ( oit = outputs.begin(); oit != outputs.end(); ++ oit )
+ {
+ if ( !this->Makefile->CanIWriteThisFile(oit->c_str()) )
+ {
+ std::string e = "attempted to have a file: " + *oit +
+ " in a source directory as an output of custom command.";
+ this->SetError(e.c_str());
+ cmSystemTools::SetFatalErrorOccured();
+ return false;
+ }
+ }
+
std::string::size_type pos = output.find_first_of("#<>");
if(pos != output.npos)
{
@@ -213,6 +234,7 @@ bool cmAddCustomCommandCommand::InitialPass(
this->SetError(msg.str().c_str());
return false;
}
+
// Choose which mode of the command to use.
if(source.empty() && output.empty())
{