summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2014-11-26 16:14:49 -0500
committerBrad King <brad.king@kitware.com>2014-11-26 17:03:40 -0500
commit84d124e8f02d5bba60d3491d4c5d7cb68aa91192 (patch)
tree80667afd4138057e180c7fbaf21267b53bfe4445
parentd2f2a2e226a8717d6fdb6df0ed4858d1629f557c (diff)
downloadcmake-84d124e8f02d5bba60d3491d4c5d7cb68aa91192.tar.gz
Fix lookup of source names after conversion to their actual case (#15259)
Since commit v3.1.0-rc1~688^2~15 (cmTarget: Add a method to obtain list of filenames for sources, 2014-03-17) we have code paths that lookup sources by strings containing their own full path after normalization to the actual case on disk. This fails in the case that a cmSourceFile has already been created with a different case in the filename. The comparison of the directory works because it is always normalized. Only the comparison of the file name fails. Fix this by using a case-insensitive comparison of source file names on platforms that do not have case-sensitive filesystems.
-rw-r--r--Source/cmSourceFileLocation.cxx3
1 files changed, 2 insertions, 1 deletions
diff --git a/Source/cmSourceFileLocation.cxx b/Source/cmSourceFileLocation.cxx
index 1c2454e697..004fd1f502 100644
--- a/Source/cmSourceFileLocation.cxx
+++ b/Source/cmSourceFileLocation.cxx
@@ -216,7 +216,8 @@ bool cmSourceFileLocation::Matches(cmSourceFileLocation const& loc)
// Both extensions are similarly ambiguous. Since only the old fixed set
// of extensions will be tried, the names must match at this point to be
// the same file.
- if(this->Name.size() != loc.Name.size() || this->Name != loc.Name)
+ if(this->Name.size() != loc.Name.size() ||
+ !cmSystemTools::ComparePath(this->Name, loc.Name))
{
return false;
}