Browse Source

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.
Stephen Kelly 10 years ago
parent
commit
8d9f39f4c3
1 changed files with 13 additions and 1 deletions
  1. 13 1
      Source/cmIncludeCommand.cxx

+ 13 - 1
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())