Ninja generator: restore correct encoding for policy CMP0181=OLD

Fixes: #26857
This commit is contained in:
Marc Chevrier
2025-04-11 17:44:58 +02:00
parent 3edb0b5dbe
commit 2e9648e0de
9 changed files with 44 additions and 8 deletions

View File

@@ -3891,6 +3891,12 @@ cmGlobalGenerator::StripCommandStyle cmGlobalGenerator::GetStripCommandStyle(
#endif
}
std::string cmGlobalGenerator::GetEncodedLiteral(std::string const& lit)
{
std::string result = lit;
return this->EncodeLiteral(result);
}
void cmGlobalGenerator::AddInstallScript(std::string const& file)
{
this->InstallScripts.push_back(file);

View File

@@ -666,6 +666,7 @@ public:
};
StripCommandStyle GetStripCommandStyle(std::string const& strip);
std::string GetEncodedLiteral(std::string const& lit);
virtual std::string& EncodeLiteral(std::string& lit) { return lit; }
bool CheckCMP0171() const;

View File

@@ -184,12 +184,6 @@ std::string cmGlobalNinjaGenerator::EncodeRuleName(std::string const& name)
return encoded;
}
std::string cmGlobalNinjaGenerator::GetEncodedLiteral(std::string const& lit)
{
std::string result = lit;
return this->EncodeLiteral(result);
}
std::string& cmGlobalNinjaGenerator::EncodeLiteral(std::string& lit)
{
cmSystemTools::ReplaceString(lit, "$", "$$");

View File

@@ -77,7 +77,6 @@ public:
static std::string EncodeRuleName(std::string const& name);
std::string& EncodeLiteral(std::string& lit) override;
std::string GetEncodedLiteral(std::string const& lit);
std::string EncodePath(std::string const& path);
std::unique_ptr<cmLinkLineComputer> CreateLinkLineComputer(

View File

@@ -2639,7 +2639,8 @@ void cmLocalGenerator::AppendFlags(std::string& flags,
}
CM_FALLTHROUGH;
case cmPolicies::OLD:
this->AppendFlags(flags, newFlags);
this->AppendFlags(
flags, this->GetGlobalGenerator()->GetEncodedLiteral(newFlags));
break;
case cmPolicies::NEW:
if (compileOrLink == cmBuildStep::Link) {