Merge topic 'find_library-arch-unknown'

e7f78309e7 find_library: Construct paths by removing 'unknown' from library arch

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !7921
This commit is contained in:
Brad King
2022-12-05 17:56:57 +00:00
committed by Kitware Robot

View File

@@ -179,12 +179,27 @@ void cmSearchPath::AddPrefixPaths(const std::vector<std::string>& paths,
cmValue arch =
this->FC->Makefile->GetDefinition("CMAKE_LIBRARY_ARCHITECTURE");
if (cmNonempty(arch)) {
std::string archNoUnknown = arch;
auto unknownAtPos = archNoUnknown.find("-unknown-");
bool foundUnknown = unknownAtPos != std::string::npos;
if (foundUnknown) {
// Replace "-unknown-" with "-".
archNoUnknown.replace(unknownAtPos, 9, "-");
}
if (this->FC->Makefile->IsDefinitionSet("CMAKE_SYSROOT") &&
this->FC->Makefile->IsDefinitionSet(
"CMAKE_PREFIX_LIBRARY_ARCHITECTURE")) {
if (foundUnknown) {
this->AddPathInternal(cmStrCat('/', archNoUnknown, dir, subdir),
cmStrCat('/', archNoUnknown, prefix), base);
}
this->AddPathInternal(cmStrCat('/', *arch, dir, subdir),
cmStrCat('/', *arch, prefix), base);
} else {
if (foundUnknown) {
this->AddPathInternal(cmStrCat(dir, subdir, '/', archNoUnknown),
prefix, base);
}
this->AddPathInternal(cmStrCat(dir, subdir, '/', *arch), prefix,
base);
}