mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-22 06:59:01 -06:00
CUDA: Device linking use now link options
properties LINK_OPTIONS and INTERFACE_LINK_OPTIONS are propagated to the device link step. To control which options are selected for normal link and device link steps, the $<DEVICE_LINK> and $<HOST_LINK> generator expressions can be used. Fixes: #18265
This commit is contained in:
@@ -122,31 +122,15 @@ void cmMakefileExecutableTargetGenerator::WriteDeviceExecutableRule(
|
||||
}
|
||||
|
||||
// Build a list of compiler flags and linker flags.
|
||||
std::string flags;
|
||||
std::string langFlags;
|
||||
std::string linkFlags;
|
||||
|
||||
// Add flags to create an executable.
|
||||
// Add symbol export flags if necessary.
|
||||
if (this->GeneratorTarget->IsExecutableWithExports()) {
|
||||
std::string export_flag_var =
|
||||
cmStrCat("CMAKE_EXE_EXPORTS_", linkLanguage, "_FLAG");
|
||||
this->LocalGenerator->AppendFlags(
|
||||
linkFlags, this->Makefile->GetSafeDefinition(export_flag_var));
|
||||
}
|
||||
|
||||
this->LocalGenerator->AppendFlags(linkFlags,
|
||||
this->LocalGenerator->GetLinkLibsCMP0065(
|
||||
linkLanguage, *this->GeneratorTarget));
|
||||
|
||||
// Add language feature flags.
|
||||
this->LocalGenerator->AddLanguageFlagsForLinking(
|
||||
flags, this->GeneratorTarget, linkLanguage, this->GetConfigName());
|
||||
langFlags, this->GeneratorTarget, linkLanguage, this->GetConfigName());
|
||||
|
||||
this->LocalGenerator->AddArchitectureFlags(
|
||||
flags, this->GeneratorTarget, linkLanguage, this->GetConfigName());
|
||||
|
||||
// Add target-specific linker flags.
|
||||
this->GetTargetLinkFlags(linkFlags, linkLanguage);
|
||||
// Add device-specific linker flags.
|
||||
this->GetDeviceLinkFlags(linkFlags, linkLanguage);
|
||||
|
||||
// Construct a list of files associated with this executable that
|
||||
// may need to be cleaned.
|
||||
@@ -226,7 +210,7 @@ void cmMakefileExecutableTargetGenerator::WriteDeviceExecutableRule(
|
||||
vars.ObjectDir = objectDir.c_str();
|
||||
vars.Target = target.c_str();
|
||||
vars.LinkLibraries = linkLibs.c_str();
|
||||
vars.Flags = flags.c_str();
|
||||
vars.LanguageCompileFlags = langFlags.c_str();
|
||||
vars.LinkFlags = linkFlags.c_str();
|
||||
vars.TargetCompilePDB = targetOutPathCompilePDB.c_str();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user