summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2023-12-05 20:50:17 (GMT)
committerBrad King <brad.king@kitware.com>2023-12-05 20:50:56 (GMT)
commitfc6508921cf291308b7270f19c14d373225bfd37 (patch)
tree18d8393c2fd50ee98e9282d14f58360efe15a737
parent03d86f9d9ce0d55ac297ea876245f0e5ac539cd0 (diff)
downloadCMake-fc6508921cf291308b7270f19c14d373225bfd37.zip
CMake-fc6508921cf291308b7270f19c14d373225bfd37.tar.gz
CMake-fc6508921cf291308b7270f19c14d373225bfd37.tar.bz2
cmComputeLinkInformation: Restore soname lookup for non-imported targets
In commit 7351d590ee (cmTarget: Add a way to represent imported shared library stubs, 2023-07-17, v3.28.0-rc1~344^2) we accidentally stopped passing the SONAME of a non-imported SHARED library to our runtime search path ordering logic. Unfortunately I have not found a way to add a test case for this, but it at least shouldn't regress existing tests or those added by that commit.
-rw-r--r--Source/cmComputeLinkInformation.cxx23
-rw-r--r--Source/cmGeneratorTarget.h1
2 files changed, 12 insertions, 12 deletions
diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx
index c58dc68..1b69f6e 100644
--- a/Source/cmComputeLinkInformation.cxx
+++ b/Source/cmComputeLinkInformation.cxx
@@ -2363,20 +2363,21 @@ void cmComputeLinkInformation::AddLibraryRuntimeInfo(
if (target->GetType() != cmStateEnums::SHARED_LIBRARY) {
return;
}
- auto const* info = target->GetImportInfo(this->Config);
+
+ // Skip targets that do not have a known runtime artifact.
+ if (!target->HasKnownRuntimeArtifactLocation(this->Config)) {
+ return;
+ }
// Try to get the soname of the library. Only files with this name
// could possibly conflict.
- const char* soname =
- (!info || info->SOName.empty()) ? nullptr : info->SOName.c_str();
-
- // If this shared library has a known runtime artifact (IMPORTED_LOCATION),
- // include its location in the runtime path ordering.
- if (!info || !info->Location.empty()) {
- this->OrderRuntimeSearchPath->AddRuntimeLibrary(fullPath, soname);
- if (this->LinkWithRuntimePath) {
- this->OrderLinkerSearchPath->AddRuntimeLibrary(fullPath, soname);
- }
+ std::string soName = target->GetSOName(this->Config);
+ const char* soname = soName.empty() ? nullptr : soName.c_str();
+
+ // Include this library in the runtime path ordering.
+ this->OrderRuntimeSearchPath->AddRuntimeLibrary(fullPath, soname);
+ if (this->LinkWithRuntimePath) {
+ this->OrderLinkerSearchPath->AddRuntimeLibrary(fullPath, soname);
}
}
diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h
index e6513a1..c13b2f6 100644
--- a/Source/cmGeneratorTarget.h
+++ b/Source/cmGeneratorTarget.h
@@ -1098,7 +1098,6 @@ private:
std::string SharedDeps;
};
- friend cmComputeLinkInformation;
using ImportInfoMapType = std::map<std::string, ImportInfo>;
mutable ImportInfoMapType ImportInfoMap;
void ComputeImportInfo(std::string const& desired_config,