浏览代码

BUG: fix source file extension bug that broke Second life build

Bill Hoffman 17 年之前
父节点
当前提交
a4b30b8b25
共有 1 个文件被更改,包括 30 次插入0 次删除
  1. 30 0
      Source/cmSourceFileLocation.cxx

+ 30 - 0
Source/cmSourceFileLocation.cxx

@@ -100,6 +100,36 @@ void cmSourceFileLocation::UpdateExtension(const char* name)
     this->Name = cmSystemTools::GetFilenameName(name);
     this->AmbiguousExtension = false;
     }
+  else
+    {
+    // This is not a known extension.  See if the file exists on disk as
+    // named.
+    std::string tryPath;
+    if(this->AmbiguousDirectory)
+      {
+      // Check the source tree only because a file in the build tree should
+      // be specified by full path at least once.  We do not want this
+      // detection to depend on whether the project has already been built.
+      tryPath = this->Makefile->GetCurrentDirectory();
+      tryPath += "/";
+      }
+    tryPath += this->Directory;
+    tryPath += "/";
+    tryPath += this->Name;
+    if(cmSystemTools::FileExists(tryPath.c_str(), true))
+      {
+      // We found a source file named by the user on disk.  Trust it's
+      // extension.
+      this->Name = cmSystemTools::GetFilenameName(name);
+      this->AmbiguousExtension = false;
+
+      // If the directory was ambiguous, it isn't anymore.
+      if(this->AmbiguousDirectory)
+        {
+        this->DirectoryUseSource();
+        }
+      }
+    }
 }
 
 //----------------------------------------------------------------------------