Skip to content
Snippets Groups Projects
Commit e67963ed authored by Brad King's avatar Brad King
Browse files

cmFindLibraryCommand: Refactor AddArchitecturePath logic

Use boolean variables to save results and rename variables to more
closely represent their roles.
parent 2b1cdd85
No related branches found
No related tags found
No related merge requests found
......@@ -77,31 +77,41 @@ void cmFindLibraryCommand::AddArchitecturePath(
bool fresh)
{
std::string::size_type pos = dir.find("lib/", start_pos);
if (pos != std::string::npos) {
std::string cur_dir = dir.substr(0, pos + 3);
// Follow "lib<suffix>".
std::string next_dir = cur_dir + suffix;
if (cmSystemTools::FileIsDirectory(next_dir)) {
next_dir += dir.substr(pos + 3);
std::string::size_type next_pos = pos + 3 + strlen(suffix) + 1;
this->AddArchitecturePath(next_dir, next_pos, suffix);
// Check for "lib".
std::string lib = dir.substr(0, pos + 3);
bool use_lib = cmSystemTools::FileIsDirectory(lib);
// Check for "lib<suffix>" and use it first.
std::string libX = lib + suffix;
bool use_libX = cmSystemTools::FileIsDirectory(libX);
if (use_libX) {
libX += dir.substr(pos + 3);
std::string::size_type libX_pos = pos + 3 + strlen(suffix) + 1;
this->AddArchitecturePath(libX, libX_pos, suffix);
}
// Follow "lib".
if (cmSystemTools::FileIsDirectory(cur_dir)) {
if (use_lib) {
this->AddArchitecturePath(dir, pos + 3 + 1, suffix, false);
}
}
if (fresh) {
// Check for <dir><suffix>/.
std::string cur_dir = dir + suffix + "/";
if (cmSystemTools::FileIsDirectory(cur_dir)) {
this->SearchPaths.push_back(cur_dir);
// Check for the original unchanged path.
bool use_dir = cmSystemTools::FileIsDirectory(dir);
// Check for <dir><suffix>/ and use it first.
std::string dirX = dir + suffix;
bool use_dirX = cmSystemTools::FileIsDirectory(dirX);
if (use_dirX) {
dirX += "/";
this->SearchPaths.push_back(dirX);
}
// Now add the original unchanged path
if (cmSystemTools::FileIsDirectory(dir)) {
if (use_dir) {
this->SearchPaths.push_back(dir);
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment