summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2024-09-12 14:47:04 (GMT)
committerBrad King <brad.king@kitware.com>2024-09-12 16:24:48 (GMT)
commitad66be99436ddf37cb93e5dc6f070b6034618483 (patch)
tree7f5d63eb3dae5d2ff2b79484738199b95fc5e16e
parent269c3a13c80f2a1a73147bf0aede4f5bdd75b1d3 (diff)
downloadCMake-ad66be99436ddf37cb93e5dc6f070b6034618483.zip
CMake-ad66be99436ddf37cb93e5dc6f070b6034618483.tar.gz
CMake-ad66be99436ddf37cb93e5dc6f070b6034618483.tar.bz2
cmNinjaTargetGenerator: Factor out helper to add depfile bindings
-rw-r--r--Source/cmNinjaNormalTargetGenerator.cxx9
-rw-r--r--Source/cmNinjaTargetGenerator.cxx54
-rw-r--r--Source/cmNinjaTargetGenerator.h3
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;