diff options
-rw-r--r-- | Source/cmLocalUnixMakefileGenerator3.cxx | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 340d50a..72cb2b6 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -929,9 +929,20 @@ cmLocalUnixMakefileGenerator3::CreateSafeUniqueObjectFileName(const char* sin) // Start with the original name. std::string ssin = sin; + // Avoid full paths by removing leading slashes. + std::string::size_type pos = 0; + for(;pos < ssin.size() && ssin[pos] == '/'; ++pos); + ssin = ssin.substr(pos); + + // Avoid full paths by removing colons. + cmSystemTools::ReplaceString(ssin, ":", "_"); + // Avoid relative paths that go up the tree. cmSystemTools::ReplaceString(ssin, "../", "__/"); + // Avoid spaces. + cmSystemTools::ReplaceString(ssin, " ", "_"); + // Mangle the name if necessary. if(m_Makefile->IsOn("CMAKE_MANGLE_OBJECT_FILE_NAMES")) { |