summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2022-03-31 12:47:17 (GMT)
committerKitware Robot <kwrobot@kitware.com>2022-03-31 12:47:25 (GMT)
commit8ef1fffa452330a6e82164db7a6e6cdc0011e566 (patch)
treee17c219b8c4df491aa19a30ea69d7ce56abf1baa
parentf9215a42ba12c31a9d96847f72ea8d3fb9b99f1a (diff)
parentf7c6b9833c55257d2b83e2cb5678139ba52df3dc (diff)
downloadCMake-8ef1fffa452330a6e82164db7a6e6cdc0011e566.zip
CMake-8ef1fffa452330a6e82164db7a6e6cdc0011e566.tar.gz
CMake-8ef1fffa452330a6e82164db7a6e6cdc0011e566.tar.bz2
Merge topic 'ninja_compile_database_understand_new_cuda_lang_variables'
f7c6b9833c CUDA: Ninja generator generates valid compile database Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: buildbot <buildbot@kitware.com> Merge-request: !7129
-rw-r--r--Source/cmNinjaTargetGenerator.cxx34
-rw-r--r--Tests/CudaOnly/WithDefs/CMakeLists.txt2
2 files changed, 21 insertions, 15 deletions
diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx
index dd7d244..e61b4b6 100644
--- a/Source/cmNinjaTargetGenerator.cxx
+++ b/Source/cmNinjaTargetGenerator.cxx
@@ -1678,28 +1678,32 @@ void cmNinjaTargetGenerator::ExportObjectCompileCommand(
compileObjectVars.Includes = includes.c_str();
// Rule for compiling object file.
- std::vector<std::string> compileCmds;
+ std::string cudaCompileMode;
if (language == "CUDA") {
- std::string cmdVar;
if (this->GeneratorTarget->GetPropertyAsBool(
"CUDA_SEPARABLE_COMPILATION")) {
- cmdVar = "CMAKE_CUDA_COMPILE_SEPARABLE_COMPILATION";
- } else if (this->GeneratorTarget->GetPropertyAsBool(
- "CUDA_PTX_COMPILATION")) {
- cmdVar = "CMAKE_CUDA_COMPILE_PTX_COMPILATION";
+ const std::string& rdcFlag =
+ this->Makefile->GetRequiredDefinition("_CMAKE_CUDA_RDC_FLAG");
+ cudaCompileMode = cmStrCat(cudaCompileMode, rdcFlag, " ");
+ }
+ if (this->GeneratorTarget->GetPropertyAsBool("CUDA_PTX_COMPILATION")) {
+ const std::string& ptxFlag =
+ this->Makefile->GetRequiredDefinition("_CMAKE_CUDA_PTX_FLAG");
+ cudaCompileMode = cmStrCat(cudaCompileMode, ptxFlag);
} else {
- cmdVar = "CMAKE_CUDA_COMPILE_WHOLE_COMPILATION";
+ const std::string& wholeFlag =
+ this->Makefile->GetRequiredDefinition("_CMAKE_CUDA_WHOLE_FLAG");
+ cudaCompileMode = cmStrCat(cudaCompileMode, wholeFlag);
}
- const std::string& compileCmd =
- this->GetMakefile()->GetRequiredDefinition(cmdVar);
- cmExpandList(compileCmd, compileCmds);
- } else {
- const std::string cmdVar = cmStrCat("CMAKE_", language, "_COMPILE_OBJECT");
- const std::string& compileCmd =
- this->GetMakefile()->GetRequiredDefinition(cmdVar);
- cmExpandList(compileCmd, compileCmds);
+ compileObjectVars.CudaCompileMode = cudaCompileMode.c_str();
}
+ std::vector<std::string> compileCmds;
+ const std::string cmdVar = cmStrCat("CMAKE_", language, "_COMPILE_OBJECT");
+ const std::string& compileCmd =
+ this->Makefile->GetRequiredDefinition(cmdVar);
+ cmExpandList(compileCmd, compileCmds);
+
std::unique_ptr<cmRulePlaceholderExpander> rulePlaceholderExpander(
this->GetLocalGenerator()->CreateRulePlaceholderExpander());
diff --git a/Tests/CudaOnly/WithDefs/CMakeLists.txt b/Tests/CudaOnly/WithDefs/CMakeLists.txt
index 02f043f..39bcd91 100644
--- a/Tests/CudaOnly/WithDefs/CMakeLists.txt
+++ b/Tests/CudaOnly/WithDefs/CMakeLists.txt
@@ -1,6 +1,8 @@
cmake_minimum_required(VERSION 3.18)
project(WithDefs CUDA)
+set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+
set(release_compile_defs DEFREL)
#Goal for this example: