diff options
Diffstat (limited to 'Source/cmComputeLinkInformation.cxx')
-rw-r--r-- | Source/cmComputeLinkInformation.cxx | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx index 5d44a6a..b80b3cb 100644 --- a/Source/cmComputeLinkInformation.cxx +++ b/Source/cmComputeLinkInformation.cxx @@ -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); |