From f173ca21ca2d0e101451f2ffdbe822374ded21ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?At=C4=B1lhan=20Emre=20Dursuno=C4=9Flu?= Date: Mon, 18 Sep 2023 14:49:48 +0300 Subject: cmBinUtilsLinuxELFLinker: Cache ldconfig results Running GetLDConfigPaths in every ScanDependencies is expensive. --- Source/cmBinUtilsLinuxELFLinker.cxx | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Source/cmBinUtilsLinuxELFLinker.cxx b/Source/cmBinUtilsLinuxELFLinker.cxx index 5972202..e2a8f92 100644 --- a/Source/cmBinUtilsLinuxELFLinker.cxx +++ b/Source/cmBinUtilsLinuxELFLinker.cxx @@ -73,6 +73,9 @@ bool cmBinUtilsLinuxELFLinker::Prepare() if (ldConfigTool == "ldconfig") { this->LDConfigTool = cm::make_unique(this->Archive); + if (!this->LDConfigTool->GetLDConfigPaths(this->LDConfigPaths)) { + return false; + } } else { std::ostringstream e; e << "Invalid value for CMAKE_LDCONFIG_TOOL: " << ldConfigTool; @@ -132,12 +135,8 @@ bool cmBinUtilsLinuxELFLinker::ScanDependencies( parentRpaths.end()); } - std::vector ldConfigPaths; - if (!this->LDConfigTool->GetLDConfigPaths(ldConfigPaths)) { - return false; - } - searchPaths.insert(searchPaths.end(), ldConfigPaths.begin(), - ldConfigPaths.end()); + searchPaths.insert(searchPaths.end(), this->LDConfigPaths.begin(), + this->LDConfigPaths.end()); for (auto const& dep : needed) { if (!this->Archive->IsPreExcluded(dep)) { -- cgit v0.12