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
This commit is contained in:
Brad King
2022-03-31 12:47:17 +00:00
committed by Kitware Robot
2 changed files with 22 additions and 16 deletions

View File

@@ -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";
} else {
cmdVar = "CMAKE_CUDA_COMPILE_WHOLE_COMPILATION";
const std::string& rdcFlag =
this->Makefile->GetRequiredDefinition("_CMAKE_CUDA_RDC_FLAG");
cudaCompileMode = cmStrCat(cudaCompileMode, rdcFlag, " ");
}
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);
if (this->GeneratorTarget->GetPropertyAsBool("CUDA_PTX_COMPILATION")) {
const std::string& ptxFlag =
this->Makefile->GetRequiredDefinition("_CMAKE_CUDA_PTX_FLAG");
cudaCompileMode = cmStrCat(cudaCompileMode, ptxFlag);
} else {
const std::string& wholeFlag =
this->Makefile->GetRequiredDefinition("_CMAKE_CUDA_WHOLE_FLAG");
cudaCompileMode = cmStrCat(cudaCompileMode, wholeFlag);
}
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());

View File

@@ -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: