mirror of
https://github.com/reactos/CMake.git
synced 2024-11-28 05:50:42 +00:00
CUDA: Populate compiler PDB placeholder during device linking
The device link step runs the host compiler internally so we need to use the proper compiler PDB file with MSVC.
This commit is contained in:
parent
d470cb7007
commit
02582b91ad
@ -230,6 +230,11 @@ void cmMakefileExecutableTargetGenerator::WriteDeviceExecutableRule(
|
||||
this->LocalGenerator->GetCurrentBinaryDirectory(), targetOutputReal),
|
||||
output);
|
||||
|
||||
std::string targetFullPathCompilePDB = this->ComputeTargetCompilePDB();
|
||||
std::string targetOutPathCompilePDB =
|
||||
this->LocalGenerator->ConvertToOutputFormat(targetFullPathCompilePDB,
|
||||
cmOutputConverter::SHELL);
|
||||
|
||||
vars.Language = linkLanguage.c_str();
|
||||
vars.Objects = buildObjs.c_str();
|
||||
vars.ObjectDir = objectDir.c_str();
|
||||
@ -237,6 +242,7 @@ void cmMakefileExecutableTargetGenerator::WriteDeviceExecutableRule(
|
||||
vars.LinkLibraries = linkLibs.c_str();
|
||||
vars.Flags = flags.c_str();
|
||||
vars.LinkFlags = linkFlags.c_str();
|
||||
vars.TargetCompilePDB = targetOutPathCompilePDB.c_str();
|
||||
|
||||
std::string launcher;
|
||||
|
||||
|
@ -366,12 +366,18 @@ void cmMakefileLibraryTargetGenerator::WriteDeviceLibraryRules(
|
||||
this->LocalGenerator->GetCurrentBinaryDirectory(), targetOutputReal),
|
||||
output);
|
||||
|
||||
std::string targetFullPathCompilePDB = this->ComputeTargetCompilePDB();
|
||||
std::string targetOutPathCompilePDB =
|
||||
this->LocalGenerator->ConvertToOutputFormat(targetFullPathCompilePDB,
|
||||
cmOutputConverter::SHELL);
|
||||
|
||||
vars.Objects = buildObjs.c_str();
|
||||
vars.ObjectDir = objectDir.c_str();
|
||||
vars.Target = target.c_str();
|
||||
vars.LinkLibraries = linkLibs.c_str();
|
||||
vars.ObjectsQuoted = buildObjs.c_str();
|
||||
vars.LinkFlags = linkFlags.c_str();
|
||||
vars.TargetCompilePDB = targetOutPathCompilePDB.c_str();
|
||||
|
||||
// Add language feature flags.
|
||||
std::string langFlags;
|
||||
|
@ -229,6 +229,7 @@ void cmNinjaNormalTargetGenerator::WriteDeviceLinkRule(bool useResponseFile)
|
||||
vars.SONameFlag = "$SONAME_FLAG";
|
||||
vars.TargetSOName = "$SONAME";
|
||||
vars.TargetPDB = "$TARGET_PDB";
|
||||
vars.TargetCompilePDB = "$TARGET_COMPILE_PDB";
|
||||
|
||||
vars.Flags = "$FLAGS";
|
||||
vars.LinkFlags = "$LINK_FLAGS";
|
||||
@ -716,6 +717,8 @@ void cmNinjaNormalTargetGenerator::WriteDeviceLinkStatement()
|
||||
this->ConvertToNinjaPath(objPath), cmOutputConverter::SHELL);
|
||||
EnsureDirectoryExists(objPath);
|
||||
|
||||
this->SetMsvcTargetPdbVariable(vars);
|
||||
|
||||
if (this->GetGlobalGenerator()->IsGCCOnWindows()) {
|
||||
// ar.exe can't handle backslashes in rsp files (implicitly used by gcc)
|
||||
std::string& linkLibraries = vars["LINK_LIBRARIES"];
|
||||
|
Loading…
Reference in New Issue
Block a user