|
@@ -77,15 +77,15 @@ std::string cmLinkLineDeviceComputer::ComputeLinkLibraries(
|
|
|
|
|
|
std::string out;
|
|
|
if (item.IsPath) {
|
|
|
- // nvcc understands absolute paths to libraries ending in '.a' should
|
|
|
- // be passed to nvlink. Other extensions like '.so' or '.dylib' are
|
|
|
- // rejected by the nvcc front-end even though nvlink knows to ignore
|
|
|
- // them. Bypass the front-end via '-Xnvlink'.
|
|
|
- if (!cmHasLiteralSuffix(item.Value, ".a")) {
|
|
|
- out += "-Xnvlink ";
|
|
|
+ // nvcc understands absolute paths to libraries ending in '.a' or '.lib'.
|
|
|
+ // 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")) {
|
|
|
+ out += this->ConvertToOutputFormat(
|
|
|
+ this->ConvertToLinkReference(item.Value));
|
|
|
}
|
|
|
- out +=
|
|
|
- this->ConvertToOutputFormat(this->ConvertToLinkReference(item.Value));
|
|
|
} else if (cmLinkItemValidForDevice(item.Value)) {
|
|
|
out += item.Value;
|
|
|
}
|