diff options
author | Robert Maynard <robert.maynard@kitware.com> | 2016-11-09 20:39:55 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-11-14 21:40:48 (GMT) |
commit | 4b316097103e0f30220fd579bce28163d38458bf (patch) | |
tree | 41f6eaeac78241d46c3a889d7cbb76a796329799 /Source/cmMakefileTargetGenerator.cxx | |
parent | ae05fcc63f37b71cd9b07a2aade03a2a84fa22c4 (diff) | |
download | CMake-4b316097103e0f30220fd579bce28163d38458bf.zip CMake-4b316097103e0f30220fd579bce28163d38458bf.tar.gz CMake-4b316097103e0f30220fd579bce28163d38458bf.tar.bz2 |
CUDA: Add support for the CUDA_SEPARABLE_COMPILATION target property
Diffstat (limited to 'Source/cmMakefileTargetGenerator.cxx')
-rw-r--r-- | Source/cmMakefileTargetGenerator.cxx | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 7dfb70f..2e5173d 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -596,13 +596,22 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( // Construct the compile rules. { - std::string compileRuleVar = "CMAKE_"; - compileRuleVar += lang; - compileRuleVar += "_COMPILE_OBJECT"; - std::string compileRule = - this->Makefile->GetRequiredDefinition(compileRuleVar); std::vector<std::string> compileCommands; - cmSystemTools::ExpandListArgument(compileRule, compileCommands); + if (lang == "CUDA") { + std::string cmdVar; + if (this->GeneratorTarget->GetProperty("CUDA_SEPARABLE_COMPILATION")) { + cmdVar = std::string("CMAKE_CUDA_COMPILE_SEPARABLE_COMPILATION"); + } else { + cmdVar = std::string("CMAKE_CUDA_COMPILE_WHOLE_COMPILATION"); + } + std::string compileRule = this->Makefile->GetRequiredDefinition(cmdVar); + cmSystemTools::ExpandListArgument(compileRule, compileCommands); + } else { + const std::string cmdVar = + std::string("CMAKE_") + lang + "_COMPILE_OBJECT"; + std::string compileRule = this->Makefile->GetRequiredDefinition(cmdVar); + cmSystemTools::ExpandListArgument(compileRule, compileCommands); + } if (this->Makefile->IsOn("CMAKE_EXPORT_COMPILE_COMMANDS") && lang_can_export_cmds && compileCommands.size() == 1) { |