From 0d494a031cd1cfc32ea713d0d01d83b91ee29398 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 7 Apr 2005 14:30:48 -0400 Subject: ENH: Adding automatic generation of several 64-bit search path forms. --- Source/cmMakefile.cxx | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 1f5ed8a..84ccc78 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -2191,16 +2191,29 @@ std::string cmMakefile::FindLibrary(const char* name, std::vector path64; if(size == 8) { - // add a 64 to the name of all the search paths + // Convert each search path to possible 32- and 64-bit versions + // of the names. Check for the existence of each one here to + // avoid repeating the check for every file search. for(std::vector::iterator i = path.begin(); i != path.end(); ++i) { std::string s = *i; - s += "64"; - path64.push_back(s); + std::string s2 = *i; + cmSystemTools::ReplaceString(s, "lib/", "lib64/"); + if(cmSystemTools::FileIsDirectory(s.c_str())) + { + path64.push_back(s); + } + s2 += "64"; + if(cmSystemTools::FileIsDirectory(s2.c_str())) + { + path64.push_back(s2); + } + if(cmSystemTools::FileIsDirectory(i->c_str())) + { + path64.push_back(*i); + } } - // now append the regular names - path64.insert(path64.end(), path.begin(), path.end()); // now look for the library in the 64 bit path return cmSystemTools::FindLibrary(name, path64); } -- cgit v0.12