summaryrefslogtreecommitdiffstats
path: root/Source/cmGlobalNinjaGenerator.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2018-04-18 21:59:23 (GMT)
committerBrad King <brad.king@kitware.com>2018-04-19 12:17:39 (GMT)
commit5650ba1d6af4256b8c4ff6428b57a280e7bf552e (patch)
treece1392ece20034fc3aed82930a9e18aa07945645 /Source/cmGlobalNinjaGenerator.cxx
parent67752aece33ca0643a354ce0f2037afc66d15bfc (diff)
downloadCMake-5650ba1d6af4256b8c4ff6428b57a280e7bf552e.zip
CMake-5650ba1d6af4256b8c4ff6428b57a280e7bf552e.tar.gz
CMake-5650ba1d6af4256b8c4ff6428b57a280e7bf552e.tar.bz2
Ninja: Drop unnecessary ident encoding logic for paths
The only uses of `EncodeIdent` are surrounding `EncodePath`, but the special ident encoding is not needed for path contexts in a ninja build manifest.
Diffstat (limited to 'Source/cmGlobalNinjaGenerator.cxx')
-rw-r--r--Source/cmGlobalNinjaGenerator.cxx40
1 files changed, 9 insertions, 31 deletions
diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx
index d562df7..599e27c 100644
--- a/Source/cmGlobalNinjaGenerator.cxx
+++ b/Source/cmGlobalNinjaGenerator.cxx
@@ -101,31 +101,6 @@ std::string cmGlobalNinjaGenerator::EncodeRuleName(std::string const& name)
return encoded;
}
-static bool IsIdentChar(char c)
-{
- return ('a' <= c && c <= 'z') ||
- ('+' <= c && c <= '9') || // +,-./ and numbers
- ('A' <= c && c <= 'Z') || (c == '_') || (c == '$') || (c == '\\') ||
- (c == ' ') || (c == ':');
-}
-
-std::string cmGlobalNinjaGenerator::EncodeIdent(const std::string& ident,
- std::ostream& vars)
-{
- if (std::find_if(ident.begin(), ident.end(),
- [](char c) { return !IsIdentChar(c); }) != ident.end()) {
- static unsigned VarNum = 0;
- std::ostringstream names;
- names << "ident" << VarNum++;
- vars << names.str() << " = " << ident << "\n";
- return "$" + names.str();
- }
- std::string result = ident;
- cmSystemTools::ReplaceString(result, " ", "$ ");
- cmSystemTools::ReplaceString(result, ":", "$:");
- return result;
-}
-
std::string cmGlobalNinjaGenerator::EncodeLiteral(const std::string& lit)
{
std::string result = lit;
@@ -143,7 +118,10 @@ std::string cmGlobalNinjaGenerator::EncodePath(const std::string& path)
else
std::replace(result.begin(), result.end(), '/', '\\');
#endif
- return EncodeLiteral(result);
+ result = EncodeLiteral(result);
+ cmSystemTools::ReplaceString(result, " ", "$ ");
+ cmSystemTools::ReplaceString(result, ":", "$:");
+ return result;
}
void cmGlobalNinjaGenerator::WriteBuild(
@@ -177,14 +155,14 @@ void cmGlobalNinjaGenerator::WriteBuild(
// Write explicit dependencies.
for (std::string const& explicitDep : explicitDeps) {
- arguments += " " + EncodeIdent(EncodePath(explicitDep), os);
+ arguments += " " + EncodePath(explicitDep);
}
// Write implicit dependencies.
if (!implicitDeps.empty()) {
arguments += " |";
for (std::string const& implicitDep : implicitDeps) {
- arguments += " " + EncodeIdent(EncodePath(implicitDep), os);
+ arguments += " " + EncodePath(implicitDep);
}
}
@@ -192,7 +170,7 @@ void cmGlobalNinjaGenerator::WriteBuild(
if (!orderOnlyDeps.empty()) {
arguments += " ||";
for (std::string const& orderOnlyDep : orderOnlyDeps) {
- arguments += " " + EncodeIdent(EncodePath(orderOnlyDep), os);
+ arguments += " " + EncodePath(orderOnlyDep);
}
}
@@ -203,7 +181,7 @@ void cmGlobalNinjaGenerator::WriteBuild(
// Write outputs files.
build += "build";
for (std::string const& output : outputs) {
- build += " " + EncodeIdent(EncodePath(output), os);
+ build += " " + EncodePath(output);
if (this->ComputingUnknownDependencies) {
this->CombinedBuildOutputs.insert(output);
}
@@ -211,7 +189,7 @@ void cmGlobalNinjaGenerator::WriteBuild(
if (!implicitOuts.empty()) {
build += " |";
for (std::string const& implicitOut : implicitOuts) {
- build += " " + EncodeIdent(EncodePath(implicitOut), os);
+ build += " " + EncodePath(implicitOut);
}
}
build += ":";