summaryrefslogtreecommitdiffstats
path: root/Source/cmMakefileExecutableTargetGenerator.cxx
diff options
context:
space:
mode:
authorRobert Maynard <robert.maynard@kitware.com>2019-01-31 22:34:41 (GMT)
committerBrad King <brad.king@kitware.com>2019-02-05 16:09:48 (GMT)
commit850ef90a66a8f81369b3d11c74398ccaefbe5324 (patch)
treeff067fd297cbb3f4dd34938a36e5594c5dd23f36 /Source/cmMakefileExecutableTargetGenerator.cxx
parent6e91f5d6204e650c808b6585074faa248ee6e6a9 (diff)
downloadCMake-850ef90a66a8f81369b3d11c74398ccaefbe5324.zip
CMake-850ef90a66a8f81369b3d11c74398ccaefbe5324.tar.gz
CMake-850ef90a66a8f81369b3d11c74398ccaefbe5324.tar.bz2
CUDA: Honor CUDA_RESOLVE_DEVICE_SYMBOLS for more target types
`CUDA_RESOLVE_DEVICE_SYMBOLS` can be used with shared, module, and executable target types. This relaxation is to allow for better interoperability with linkers that automatically do CUDA device symbol resolution and have no way to disable it.
Diffstat (limited to 'Source/cmMakefileExecutableTargetGenerator.cxx')
-rw-r--r--Source/cmMakefileExecutableTargetGenerator.cxx8
1 files changed, 7 insertions, 1 deletions
diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx
index e576b5f..e8ae5ae 100644
--- a/Source/cmMakefileExecutableTargetGenerator.cxx
+++ b/Source/cmMakefileExecutableTargetGenerator.cxx
@@ -95,7 +95,13 @@ void cmMakefileExecutableTargetGenerator::WriteDeviceExecutableRule(
const bool hasCUDA =
(std::find(closure->Languages.begin(), closure->Languages.end(),
cuda_lang) != closure->Languages.end());
- if (!hasCUDA) {
+
+ bool doDeviceLinking = true;
+ if (const char* resolveDeviceSymbols =
+ this->GeneratorTarget->GetProperty("CUDA_RESOLVE_DEVICE_SYMBOLS")) {
+ doDeviceLinking = cmSystemTools::IsOn(resolveDeviceSymbols);
+ }
+ if (!hasCUDA || !doDeviceLinking) {
return;
}