summaryrefslogtreecommitdiffstats
path: root/Source/cmIncludeCommand.cxx
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2001-06-21 14:36:01 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2001-06-21 14:36:01 (GMT)
commit43c2a895689129cfdf424d8877cd35ad05433dc7 (patch)
tree4a916154f226a5f877463b4a41275ae2c6b96e78 /Source/cmIncludeCommand.cxx
parent3221b4e3febe95e8db500ccd2062daa08154e381 (diff)
downloadCMake-43c2a895689129cfdf424d8877cd35ad05433dc7.zip
CMake-43c2a895689129cfdf424d8877cd35ad05433dc7.tar.gz
CMake-43c2a895689129cfdf424d8877cd35ad05433dc7.tar.bz2
ENH: add optional include and only allow one file per INCLUDE
Diffstat (limited to 'Source/cmIncludeCommand.cxx')
-rw-r--r--Source/cmIncludeCommand.cxx22
1 files changed, 15 insertions, 7 deletions
diff --git a/Source/cmIncludeCommand.cxx b/Source/cmIncludeCommand.cxx
index bfbcb05..1b440de 100644
--- a/Source/cmIncludeCommand.cxx
+++ b/Source/cmIncludeCommand.cxx
@@ -20,18 +20,26 @@
// cmIncludeCommand
bool cmIncludeCommand::InitialPass(std::vector<std::string>& args)
{
- if (args.size()< 1)
+ if (args.size()< 1 || args.size() > 2)
{
- this->SetError("called with wrong number of arguments.");
+ this->SetError("called with wrong number of arguments. "
+ "Include only takes one file.");
}
- for( unsigned int i=0; i< args.size(); i++)
+ m_Makefile->ExpandVariablesInString( args[0]);
+ bool exists = cmSystemTools::FileExists(args[0].c_str());
+ if(args.size() == 2 && args[1] == "OPTIONAL" && !exists)
{
- m_Makefile->ExpandVariablesInString( args[i]);
- m_Makefile->ReadListFile( m_Makefile->GetCurrentListFile(),
- args[i].c_str());
+ return true;
}
-
+ if(!exists)
+ {
+ std::string error = "Include file not found: " + args[0];
+ this->SetError(error.c_str());
+ return false;
+ }
+ m_Makefile->ReadListFile( m_Makefile->GetCurrentListFile(),
+ args[0].c_str());
return true;
}