summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2023-12-06 13:48:52 (GMT)
committerKitware Robot <kwrobot@kitware.com>2023-12-06 13:49:04 (GMT)
commitfb54e957d6a382310c0ec53b3f4d00d04cef6e85 (patch)
treeb0dddffd808fa41ba0853c8c846f1be58ba173ab /Source
parent71d308f2a4e8653abbe18721bda5add4925ff148 (diff)
parentfc6508921cf291308b7270f19c14d373225bfd37 (diff)
downloadCMake-fb54e957d6a382310c0ec53b3f4d00d04cef6e85.zip
CMake-fb54e957d6a382310c0ec53b3f4d00d04cef6e85.tar.gz
CMake-fb54e957d6a382310c0ec53b3f4d00d04cef6e85.tar.bz2
Merge topic 'imported-implib-only'
fc6508921c cmComputeLinkInformation: Restore soname lookup for non-imported targets 03d86f9d9c cmGeneratorTarget: Add helper to check for known runtime artifact Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: buildbot <buildbot@kitware.com> Acked-by: Robert Maynard <robertjmaynard@gmail.com> Merge-request: !9041
Diffstat (limited to 'Source')
-rw-r--r--Source/cmComputeLinkInformation.cxx23
-rw-r--r--Source/cmGeneratorTarget.cxx13
-rw-r--r--Source/cmGeneratorTarget.h2
3 files changed, 26 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.cxx b/Source/cmGeneratorTarget.cxx
index 9082fe6..0868190 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -1283,6 +1283,19 @@ bool cmGeneratorTarget::CanCompileSources() const
return this->Target->CanCompileSources();
}
+bool cmGeneratorTarget::HasKnownRuntimeArtifactLocation(
+ std::string const& config) const
+{
+ if (!this->IsRuntimeBinary()) {
+ return false;
+ }
+ if (!this->IsImported()) {
+ return true;
+ }
+ ImportInfo const* info = this->GetImportInfo(config);
+ return info && !info->Location.empty();
+}
+
const std::string& cmGeneratorTarget::GetLocationForBuild() const
{
static std::string location;
diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h
index e41edcf..cfb08fa 100644
--- a/Source/cmGeneratorTarget.h
+++ b/Source/cmGeneratorTarget.h
@@ -58,6 +58,7 @@ public:
bool IsImported() const;
bool IsImportedGloballyVisible() const;
bool CanCompileSources() const;
+ bool HasKnownRuntimeArtifactLocation(std::string const& config) const;
const std::string& GetLocation(const std::string& config) const;
/** Get the full path to the target's main artifact, if known. */
@@ -1107,7 +1108,6 @@ private:
std::string SharedDeps;
};
- friend cmComputeLinkInformation;
using ImportInfoMapType = std::map<std::string, ImportInfo>;
mutable ImportInfoMapType ImportInfoMap;
void ComputeImportInfo(std::string const& desired_config,