From 8d9f39f4c324db01d5a60c5a783e1c44180c5c4c Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Mon, 27 Apr 2015 22:10:51 +0200 Subject: include: Ask for permission, rather than forgiveness. Check that a non-optional file exists before attempting to include it. This makes more sense than relying on an error case deeper within cmListFileCache. --- Source/cmIncludeCommand.cxx | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Source/cmIncludeCommand.cxx b/Source/cmIncludeCommand.cxx index 132b650..71dabaf 100644 --- a/Source/cmIncludeCommand.cxx +++ b/Source/cmIncludeCommand.cxx @@ -130,8 +130,20 @@ bool cmIncludeCommand gg->GenerateImportFile(fname_abs); } + std::string listFile = + cmSystemTools::CollapseFullPath(fname.c_str(), + this->Makefile->GetCurrentSourceDirectory()); + if(optional && !cmSystemTools::FileExists(listFile.c_str())) + { + if (!resultVarName.empty()) + { + this->Makefile->AddDefinition(resultVarName, "NOTFOUND"); + } + return true; + } + bool readit = - this->Makefile->ReadDependentFile(fname.c_str(), noPolicyScope); + this->Makefile->ReadDependentFile(listFile.c_str(), noPolicyScope); // add the location of the included file if a result variable was given if (!resultVarName.empty()) -- cgit v0.12