diff options
author | Brad King <brad.king@kitware.com> | 2024-09-12 14:47:04 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2024-09-12 16:24:48 (GMT) |
commit | ad66be99436ddf37cb93e5dc6f070b6034618483 (patch) | |
tree | 7f5d63eb3dae5d2ff2b79484738199b95fc5e16e | |
parent | 269c3a13c80f2a1a73147bf0aede4f5bdd75b1d3 (diff) | |
download | CMake-ad66be99436ddf37cb93e5dc6f070b6034618483.zip CMake-ad66be99436ddf37cb93e5dc6f070b6034618483.tar.gz CMake-ad66be99436ddf37cb93e5dc6f070b6034618483.tar.bz2 |
cmNinjaTargetGenerator: Factor out helper to add depfile bindings
-rw-r--r-- | Source/cmNinjaNormalTargetGenerator.cxx | 9 | ||||
-rw-r--r-- | Source/cmNinjaTargetGenerator.cxx | 54 | ||||
-rw-r--r-- | Source/cmNinjaTargetGenerator.h | 3 |
3 files changed, 39 insertions, 27 deletions
diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index c37e4c2..cd9d1ef 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -1163,11 +1163,10 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement( cmNinjaVars& vars = linkBuild.Variables; if (this->GeneratorTarget->HasLinkDependencyFile(config)) { - vars["DEP_FILE"] = this->GetLocalGenerator()->ConvertToOutputFormat( - this->ConvertToNinjaPath( - this->GetLocalGenerator()->GetLinkDependencyFile(this->GeneratorTarget, - config)), - cmOutputConverter::SHELL); + this->AddDepfileBinding(vars, + this->ConvertToNinjaPath( + this->GetLocalGenerator()->GetLinkDependencyFile( + this->GeneratorTarget, config))); } // Compute the comment. diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index fd0892c..9c02149 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -1324,7 +1324,7 @@ cmNinjaBuild GetScanBuildStatement(const std::string& ruleName, bool compilationPreprocesses, cmNinjaBuild& objBuild, cmNinjaVars& vars, const std::string& objectFileName, - cmLocalGenerator* lg) + cmNinjaTargetGenerator* tg) { cmNinjaBuild scanBuild(ruleName); @@ -1388,13 +1388,12 @@ cmNinjaBuild GetScanBuildStatement(const std::string& ruleName, // Scanning always provides a depfile for preprocessor dependencies. This // variable is unused in `msvc`-deptype scanners. - std::string const& depFileName = cmStrCat(scanBuild.Outputs.front(), ".d"); - scanBuild.Variables["DEP_FILE"] = - lg->ConvertToOutputFormat(depFileName, cmOutputConverter::SHELL); + tg->AddDepfileBinding(scanBuild.Variables, + cmStrCat(scanBuild.Outputs.front(), ".d")); if (compilePP) { // The actual compilation does not need a depfile because it // depends on the already-preprocessed source. - vars.erase("DEP_FILE"); + tg->RemoveDepfileBinding(vars); } return scanBuild; @@ -1477,13 +1476,13 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement( cmStrCat("CMAKE_", language, "_DEPFILE_EXTENSION_REPLACE"); replaceExt = this->Makefile->IsOn(repVar); } - std::string depfile = replaceExt - ? cmStrCat( - objectFileDir, '/', - cmSystemTools::GetFilenameWithoutLastExtension(objectFileName), ".d") - : cmStrCat(objectFileName, ".d"); - vars["DEP_FILE"] = this->GetLocalGenerator()->ConvertToOutputFormat( - depfile, cmOutputConverter::SHELL); + this->AddDepfileBinding( + vars, + replaceExt ? cmStrCat(objectFileDir, '/', + cmSystemTools::GetFilenameWithoutLastExtension( + objectFileName), + ".d") + : cmStrCat(objectFileName, ".d")); } this->SetMsvcTargetPdbVariable(vars, config); @@ -1608,8 +1607,7 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement( cmNinjaBuild ppBuild = GetScanBuildStatement( scanRuleName, ppFileName, compilePP, compilePPWithDefines, - compilationPreprocesses, objBuild, vars, objectFileName, - this->LocalGenerator); + compilationPreprocesses, objBuild, vars, objectFileName, this); if (compilePP) { // In case compilation requires flags that are incompatible with @@ -1804,13 +1802,13 @@ void cmNinjaTargetGenerator::WriteCxxModuleBmiBuildStatement( cmStrCat("CMAKE_", language, "_DEPFILE_EXTENSION_REPLACE"); replaceExt = this->Makefile->IsOn(repVar); } - std::string depfile = replaceExt - ? cmStrCat(bmiFileDir, '/', - cmSystemTools::GetFilenameWithoutLastExtension(bmiFileName), - ".d") - : cmStrCat(bmiFileName, ".d"); - vars["DEP_FILE"] = this->GetLocalGenerator()->ConvertToOutputFormat( - depfile, cmOutputConverter::SHELL); + this->AddDepfileBinding( + vars, + replaceExt + ? cmStrCat(bmiFileDir, '/', + cmSystemTools::GetFilenameWithoutLastExtension(bmiFileName), + ".d") + : cmStrCat(bmiFileName, ".d")); } std::string d = @@ -1857,7 +1855,7 @@ void cmNinjaTargetGenerator::WriteCxxModuleBmiBuildStatement( cmNinjaBuild ppBuild = GetScanBuildStatement( scanRuleName, ppFileName, false, compilePPWithDefines, true, bmiBuild, - vars, bmiFileName, this->LocalGenerator); + vars, bmiFileName, this); ScanningFiles scanningFiles; @@ -2497,6 +2495,18 @@ void cmNinjaTargetGenerator::MacOSXContentGeneratorType::operator()( this->Generator->Configs[config].ExtraFiles.push_back(std::move(output)); } +void cmNinjaTargetGenerator::AddDepfileBinding( + cmNinjaVars& vars, std::string const& depfile) const +{ + vars["DEP_FILE"] = this->GetLocalGenerator()->ConvertToOutputFormat( + depfile, cmOutputConverter::SHELL); +} + +void cmNinjaTargetGenerator::RemoveDepfileBinding(cmNinjaVars& vars) const +{ + vars.erase("DEP_FILE"); +} + void cmNinjaTargetGenerator::addPoolNinjaVariable( const std::string& pool_property, cmGeneratorTarget* target, cmNinjaVars& vars) diff --git a/Source/cmNinjaTargetGenerator.h b/Source/cmNinjaTargetGenerator.h index 2bfed80..3286f6d 100644 --- a/Source/cmNinjaTargetGenerator.h +++ b/Source/cmNinjaTargetGenerator.h @@ -42,6 +42,9 @@ public: std::string GetTargetName() const; + void AddDepfileBinding(cmNinjaVars& vars, std::string const& depfile) const; + void RemoveDepfileBinding(cmNinjaVars& vars) const; + protected: bool SetMsvcTargetPdbVariable(cmNinjaVars&, const std::string& config) const; |