diff options
author | Raul Tambre <raul@tambre.ee> | 2021-11-06 11:19:51 (GMT) |
---|---|---|
committer | Raul Tambre <raul@tambre.ee> | 2021-11-07 19:28:08 (GMT) |
commit | 15fde4c420e0fa469077fad020b9fdc071796f70 (patch) | |
tree | 464136dac024f24ea261e877a54d95d073d08cce | |
parent | cf7e68087d005051ec07cb21c2aed2963a3d5c4e (diff) | |
download | CMake-15fde4c420e0fa469077fad020b9fdc071796f70.zip CMake-15fde4c420e0fa469077fad020b9fdc071796f70.tar.gz CMake-15fde4c420e0fa469077fad020b9fdc071796f70.tar.bz2 |
CUDA: Use local shorthands for variables in Clang device link code
Helps reduce wrapping of lines making code more readable.
-rw-r--r-- | Source/cmMakefileTargetGenerator.cxx | 26 | ||||
-rw-r--r-- | Source/cmNinjaNormalTargetGenerator.cxx | 22 |
2 files changed, 22 insertions, 26 deletions
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 4e5913e..67beaad 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -1530,9 +1530,9 @@ void cmMakefileTargetGenerator::WriteDeviceLinkRule( return; } + cmLocalUnixMakefileGenerator3* localGen{ this->LocalGenerator }; std::vector<std::string> architectures = cmExpandedList(architecturesStr); - std::string const& relPath = - this->LocalGenerator->GetHomeRelativeOutputPath(); + std::string const& relPath = localGen->GetHomeRelativeOutputPath(); // Ensure there are no duplicates. const std::vector<std::string> linkDeps = [&]() -> std::vector<std::string> { @@ -1552,12 +1552,12 @@ void cmMakefileTargetGenerator::WriteDeviceLinkRule( const std::string objectDir = this->GeneratorTarget->ObjectDirectory; const std::string relObjectDir = - this->LocalGenerator->MaybeRelativeToCurBinDir(objectDir); + localGen->MaybeRelativeToCurBinDir(objectDir); // Construct a list of files associated with this executable that // may need to be cleaned. std::vector<std::string> cleanFiles; - cleanFiles.push_back(this->LocalGenerator->MaybeRelativeToCurBinDir(output)); + cleanFiles.push_back(localGen->MaybeRelativeToCurBinDir(output)); std::string profiles; std::vector<std::string> fatbinaryDepends; @@ -1594,8 +1594,8 @@ void cmMakefileTargetGenerator::WriteDeviceLinkRule( " -arch=sm_", architecture, registerFileCmd, " -o=$@ ", cmJoin(linkDeps, " ")); - this->LocalGenerator->WriteMakeRule(*this->BuildFileStream, nullptr, cubin, - linkDeps, { command }, false); + localGen->WriteMakeRule(*this->BuildFileStream, nullptr, cubin, linkDeps, + { command }, false); } // Combine all architectures into a single fatbinary. @@ -1609,9 +1609,8 @@ void cmMakefileTargetGenerator::WriteDeviceLinkRule( const std::string fatbinaryOutputRel = cmStrCat(relPath, relObjectDir, "cmake_cuda_fatbin.h"); - this->LocalGenerator->WriteMakeRule(*this->BuildFileStream, nullptr, - fatbinaryOutputRel, fatbinaryDepends, - { fatbinaryCommand }, false); + localGen->WriteMakeRule(*this->BuildFileStream, nullptr, fatbinaryOutputRel, + fatbinaryDepends, { fatbinaryCommand }, false); // Compile the stub that registers the kernels and contains the // fatbinaries. @@ -1630,13 +1629,12 @@ void cmMakefileTargetGenerator::WriteDeviceLinkRule( std::string compileCmd = this->GetLinkRule("CMAKE_CUDA_DEVICE_LINK_COMPILE"); std::unique_ptr<cmRulePlaceholderExpander> rulePlaceholderExpander( - this->LocalGenerator->CreateRulePlaceholderExpander()); - rulePlaceholderExpander->ExpandRuleVariables(this->LocalGenerator, - compileCmd, vars); + localGen->CreateRulePlaceholderExpander()); + rulePlaceholderExpander->ExpandRuleVariables(localGen, compileCmd, vars); commands.emplace_back(compileCmd); - this->LocalGenerator->WriteMakeRule(*this->BuildFileStream, nullptr, output, - { fatbinaryOutputRel }, commands, false); + localGen->WriteMakeRule(*this->BuildFileStream, nullptr, output, + { fatbinaryOutputRel }, commands, false); // Clean all the possible executable names and symlinks. this->CleanFiles.insert(cleanFiles.begin(), cleanFiles.end()); diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index 228df7f..01efcd0 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -744,9 +744,10 @@ void cmNinjaNormalTargetGenerator::WriteDeviceLinkStatements( return deps; }(); + cmGlobalNinjaGenerator* globalGen{ this->GetGlobalGenerator() }; const std::string objectDir = cmStrCat(this->GeneratorTarget->GetSupportDirectory(), - this->GetGlobalGenerator()->ConfigDirectory(config)); + globalGen->ConfigDirectory(config)); const std::string ninjaOutputDir = this->ConvertToNinjaPath(objectDir); cmNinjaBuild fatbinary(this->LanguageLinkerCudaFatbinaryRule(config)); @@ -777,26 +778,23 @@ void cmNinjaNormalTargetGenerator::WriteDeviceLinkStatements( cmStrCat(" -im=profile=sm_", architecture, ",file=", cubin); fatbinary.ExplicitDeps.emplace_back(cubin); - this->GetGlobalGenerator()->WriteBuild(this->GetCommonFileStream(), dlink); + globalGen->WriteBuild(this->GetCommonFileStream(), dlink); } // Combine all architectures into a single fatbinary. fatbinary.Outputs = { cmStrCat(ninjaOutputDir, "/cmake_cuda_fatbin.h") }; - this->GetGlobalGenerator()->WriteBuild(this->GetCommonFileStream(), - fatbinary); + globalGen->WriteBuild(this->GetCommonFileStream(), fatbinary); // Compile the stub that registers the kernels and contains the fatbinaries. + cmLocalNinjaGenerator* localGen{ this->GetLocalGenerator() }; cmNinjaBuild dcompile(this->LanguageLinkerCudaDeviceCompileRule(config)); dcompile.Outputs = { output }; dcompile.ExplicitDeps = { cmStrCat(ninjaOutputDir, "/cmake_cuda_fatbin.h") }; - dcompile.Variables["FATBIN"] = - this->GetLocalGenerator()->ConvertToOutputFormat( - cmStrCat(objectDir, "/cmake_cuda_fatbin.h"), cmOutputConverter::SHELL); - dcompile.Variables["REGISTER"] = - this->GetLocalGenerator()->ConvertToOutputFormat( - cmStrCat(objectDir, "/cmake_cuda_register.h"), cmOutputConverter::SHELL); - this->GetGlobalGenerator()->WriteBuild(this->GetCommonFileStream(), - dcompile); + dcompile.Variables["FATBIN"] = localGen->ConvertToOutputFormat( + cmStrCat(objectDir, "/cmake_cuda_fatbin.h"), cmOutputConverter::SHELL); + dcompile.Variables["REGISTER"] = localGen->ConvertToOutputFormat( + cmStrCat(objectDir, "/cmake_cuda_register.h"), cmOutputConverter::SHELL); + globalGen->WriteBuild(this->GetCommonFileStream(), dcompile); } void cmNinjaNormalTargetGenerator::WriteNvidiaDeviceLinkStatement( |