From a4b30b8b25038bd1bb2262eaf3afc582982dd230 Mon Sep 17 00:00:00 2001 From: Bill Hoffman Date: Fri, 25 Jul 2008 18:00:47 -0400 Subject: BUG: fix source file extension bug that broke Second life build --- Source/cmSourceFileLocation.cxx | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Source/cmSourceFileLocation.cxx b/Source/cmSourceFileLocation.cxx index ad2f40c..274c0ed 100644 --- a/Source/cmSourceFileLocation.cxx +++ b/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(); + } + } + } } //---------------------------------------------------------------------------- -- cgit v0.12