From 43c2a895689129cfdf424d8877cd35ad05433dc7 Mon Sep 17 00:00:00 2001 From: Bill Hoffman Date: Thu, 21 Jun 2001 10:36:01 -0400 Subject: [PATCH] ENH: add optional include and only allow one file per INCLUDE --- Source/cmIncludeCommand.cxx | 22 +++++++++++++++------- Source/cmIncludeCommand.h | 3 ++- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/Source/cmIncludeCommand.cxx b/Source/cmIncludeCommand.cxx index bfbcb0558..1b440dec9 100644 --- a/Source/cmIncludeCommand.cxx +++ b/Source/cmIncludeCommand.cxx @@ -20,18 +20,26 @@ // cmIncludeCommand bool cmIncludeCommand::InitialPass(std::vector& 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; } diff --git a/Source/cmIncludeCommand.h b/Source/cmIncludeCommand.h index 99f9bd131..c60fbefb2 100644 --- a/Source/cmIncludeCommand.h +++ b/Source/cmIncludeCommand.h @@ -69,7 +69,8 @@ public: virtual const char* GetFullDocumentation() { return - "INCLUDE(file1 file2)\n"; + "INCLUDE(file1 [OPTIONAL])\nIf OPTIONAL is present, then do not complain " + "if the file does not exist."; } cmTypeMacro(cmIncludeCommand, cmCommand);