Apple text-based stubs: ensure runpath is correctly defined

This is a complement to !8204.
This commit is contained in:
Marc Chevrier
2023-06-04 15:29:42 +02:00
parent 326bd503ed
commit bfa5b430b3
3 changed files with 26 additions and 3 deletions
+17 -2
View File
@@ -1175,7 +1175,14 @@ void cmComputeLinkInformation::AddItem(LinkEntry const& entry)
LinkEntry libEntry{ entry };
libEntry.Item = lib;
this->AddTargetItem(libEntry);
this->AddLibraryRuntimeInfo(lib.Value, tgt);
if (tgt->IsApple() && tgt->HasImportLibrary(config)) {
// Use the library rather than the tbd file for runpath computation
this->AddLibraryRuntimeInfo(
tgt->GetFullPath(config, cmStateEnums::RuntimeBinaryArtifact, true),
tgt);
} else {
this->AddLibraryRuntimeInfo(lib.Value, tgt);
}
if (tgt && tgt->GetType() == cmStateEnums::SHARED_LIBRARY &&
this->Target->IsDLLPlatform()) {
this->AddRuntimeDLL(tgt);
@@ -1261,7 +1268,15 @@ void cmComputeLinkInformation::AddSharedDepItem(LinkEntry const& entry)
? cmStateEnums::ImportLibraryArtifact
: cmStateEnums::RuntimeBinaryArtifact;
lib = tgt->GetFullPath(this->Config, artifact);
this->AddLibraryRuntimeInfo(lib, tgt);
if (tgt->IsApple() && tgt->HasImportLibrary(this->Config)) {
// Use the library rather than the tbd file for runpath computation
this->AddLibraryRuntimeInfo(
tgt->GetFullPath(this->Config, cmStateEnums::RuntimeBinaryArtifact,
true),
tgt);
} else {
this->AddLibraryRuntimeInfo(lib, tgt);
}
} else {
lib = item.Value;
this->AddLibraryRuntimeInfo(lib);