Merge topic 'cuda-external'

7b74213461 CUDA: Fix crash on linking to a CUDA target without CUDA enabled

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2704
This commit is contained in:
Brad King 2018-12-06 13:38:45 +00:00 committed by Kitware Robot
commit 0780a8f57a
6 changed files with 20 additions and 1 deletions

View File

@ -84,6 +84,10 @@ void cmMakefileExecutableTargetGenerator::WriteDeviceExecutableRule(
bool relink)
{
#ifdef CMAKE_BUILD_WITH_CMAKE
if (!this->GlobalGenerator->GetLanguageEnabled("CUDA")) {
return;
}
const std::string cuda_lang("CUDA");
cmGeneratorTarget::LinkClosure const* closure =
this->GeneratorTarget->GetLinkClosure(this->ConfigName);

View File

@ -557,6 +557,10 @@ std::vector<std::string> cmNinjaNormalTargetGenerator::ComputeLinkCmd()
void cmNinjaNormalTargetGenerator::WriteDeviceLinkStatement()
{
if (!this->GetGlobalGenerator()->GetLanguageEnabled("CUDA")) {
return;
}
cmGeneratorTarget& genTarget = *this->GetGeneratorTarget();
// determine if we need to do any device linking for this target

View File

@ -3319,7 +3319,8 @@ bool cmVisualStudio10TargetGenerator::ComputeLinkOptions(
std::vector<std::string> vsTargetVec;
this->AddLibraries(cli, libVec, vsTargetVec, config);
if (std::find(linkClosure->Languages.begin(), linkClosure->Languages.end(),
"CUDA") != linkClosure->Languages.end()) {
"CUDA") != linkClosure->Languages.end() &&
this->CudaOptions[config] != nullptr) {
switch (this->CudaOptions[config]->GetCudaRuntime()) {
case cmVisualStudioGeneratorOptions::CudaRuntimeStatic:
libVec.push_back("cudadevrt.lib");

View File

@ -0,0 +1,8 @@
enable_language(C)
add_library(ext_cuda IMPORTED STATIC)
set_property(TARGET ext_cuda PROPERTY IMPORTED_LOCATION "/does_not_exist")
set_property(TARGET ext_cuda PROPERTY IMPORTED_LINK_INTERFACE_LANGUAGES "CUDA")
add_executable(main empty.c)
target_link_libraries(main ext_cuda)

View File

@ -6,3 +6,5 @@ run_cmake(link-libraries-TARGET_FILE-genex)
run_cmake(link-libraries-TARGET_FILE-genex-ok)
run_cmake(DetermineFail)
run_cmake(ExternalCUDA)

View File