mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-22 06:59:01 -06:00
Propagate backtraces from LINK_LIBRARIES through to link line items
Since commit d4d0dd0f6a (cmLinkLineComputer: Add ComputeLinkLibs
overload with backtraces, 2019-09-13, v3.16.0-rc1~87^2~4), backtraces
have been collected by `ComputeLinkLibs` by looking back through the
link implementation libraries for one matching the text of the link line
item. This is slow in projects with long link lines.
Instead, teach `cmComputeLinkDepends` and `cmComputeLinkInformation` to
carry backtrace information explicitly along with the text of each item.
Fixes: #20322
This commit is contained in:
@@ -115,18 +115,18 @@ void cmLinkLineDeviceComputer::ComputeLinkLibraries(
|
||||
// These should be passed to nvlink. Other extensions need to be left
|
||||
// out because nvlink may not understand or need them. Even though it
|
||||
// can tolerate '.so' or '.dylib' it cannot tolerate '.so.1'.
|
||||
if (cmHasLiteralSuffix(item.Value, ".a") ||
|
||||
cmHasLiteralSuffix(item.Value, ".lib")) {
|
||||
if (cmHasLiteralSuffix(item.Value.Value, ".a") ||
|
||||
cmHasLiteralSuffix(item.Value.Value, ".lib")) {
|
||||
linkLib.Value += this->ConvertToOutputFormat(
|
||||
this->ConvertToLinkReference(item.Value));
|
||||
this->ConvertToLinkReference(item.Value.Value));
|
||||
}
|
||||
} else if (item.Value == "-framework") {
|
||||
// This is the first part of '-framework Name' where the framework
|
||||
// name is specified as a following item. Ignore both.
|
||||
skipItemAfterFramework = true;
|
||||
continue;
|
||||
} else if (cmLinkItemValidForDevice(item.Value)) {
|
||||
linkLib.Value += item.Value;
|
||||
} else if (cmLinkItemValidForDevice(item.Value.Value)) {
|
||||
linkLib.Value += item.Value.Value;
|
||||
}
|
||||
|
||||
if (emitted.insert(linkLib.Value).second) {
|
||||
|
||||
Reference in New Issue
Block a user