summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2009-09-17 12:42:31 (GMT)
committerBrad King <brad.king@kitware.com>2009-09-17 12:42:31 (GMT)
commitc87a35a32661ab473e486ceaa54bb1e8fadecacd (patch)
treead5d696af4a60f3bb0c204718e176bc124eb2a0f
parentef8434284ff8126d2aa8d627aa9c7dd4d54a06ed (diff)
downloadCMake-c87a35a32661ab473e486ceaa54bb1e8fadecacd.zip
CMake-c87a35a32661ab473e486ceaa54bb1e8fadecacd.tar.gz
CMake-c87a35a32661ab473e486ceaa54bb1e8fadecacd.tar.bz2
Do not call CollapseFullPath for PDB file names
Some vendor tools convert PDB file names given on the command line to lower-case before creating the file. When CMake places a mixed-case PDB file name into the build system, the file does not exist the first time and it is written with mixed case. After the first build though the native tool has created a lower-case version of the file. If CMake does CollapseFullPath again, the file exists so the actual-case lookup gets the lower-case name. This causes the build files to change so the project rebuilds. The solution is to avoid calling CollapseFullPath for files generated by the build. In the case of PDB files we already construct them from paths that have been collapsed, so we can just skip the call altogether. See issue #9350.
-rw-r--r--Source/cmMakefileExecutableTargetGenerator.cxx2
-rw-r--r--Source/cmMakefileLibraryTargetGenerator.cxx2
-rw-r--r--Source/cmMakefileTargetGenerator.cxx2
3 files changed, 3 insertions, 3 deletions
diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx
index c269afc..f74813e 100644
--- a/Source/cmMakefileExecutableTargetGenerator.cxx
+++ b/Source/cmMakefileExecutableTargetGenerator.cxx
@@ -161,7 +161,7 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink)
std::string targetFullPathImport = outpathImp + targetNameImport;
std::string targetOutPathPDB =
this->Convert(targetFullPathPDB.c_str(),
- cmLocalGenerator::FULL,
+ cmLocalGenerator::NONE,
cmLocalGenerator::SHELL);
// Convert to the output path to use in constructing commands.
std::string targetOutPath =
diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx
index 9a5f7fd..10bdbc7 100644
--- a/Source/cmMakefileLibraryTargetGenerator.cxx
+++ b/Source/cmMakefileLibraryTargetGenerator.cxx
@@ -426,7 +426,7 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules
// Construct the output path version of the names for use in command
// arguments.
std::string targetOutPathPDB =
- this->Convert(targetFullPathPDB.c_str(),cmLocalGenerator::FULL,
+ this->Convert(targetFullPathPDB.c_str(),cmLocalGenerator::NONE,
cmLocalGenerator::SHELL);
std::string targetOutPath =
this->Convert(targetFullPath.c_str(),cmLocalGenerator::START_OUTPUT,
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx
index e4dac5f..79660b5 100644
--- a/Source/cmMakefileTargetGenerator.cxx
+++ b/Source/cmMakefileTargetGenerator.cxx
@@ -613,7 +613,7 @@ cmMakefileTargetGenerator
targetFullPathPDB += this->Target->GetPDBName(this->ConfigName);
}
targetOutPathPDB =
- this->Convert(targetFullPathPDB.c_str(),cmLocalGenerator::FULL,
+ this->Convert(targetFullPathPDB.c_str(),cmLocalGenerator::NONE,
cmLocalGenerator::SHELL);
}
cmLocalGenerator::RuleVariables vars;