diff options
author | Peter Kümmel <syntheticpp@gmx.net> | 2012-09-26 08:07:25 (GMT) |
---|---|---|
committer | Peter Kümmel <syntheticpp@gmx.net> | 2012-09-28 10:33:57 (GMT) |
commit | f1670ab18a21b635e58e1a53178c25c722911504 (patch) | |
tree | 510df1c6a5e7a01f2908127f200601bfb29da457 | |
parent | 64d64b4edfe9a64fdc88c97e67681c9a16fb5eca (diff) | |
download | CMake-f1670ab18a21b635e58e1a53178c25c722911504.zip CMake-f1670ab18a21b635e58e1a53178c25c722911504.tar.gz CMake-f1670ab18a21b635e58e1a53178c25c722911504.tar.bz2 |
Ninja: don't confuse ninja's rsp files with nmake's
Move response files into CMakeFiles/ which makes them different to nmake's.
-rw-r--r-- | Source/cmGlobalNinjaGenerator.cxx | 12 | ||||
-rw-r--r-- | Source/cmGlobalNinjaGenerator.h | 1 | ||||
-rw-r--r-- | Source/cmNinjaNormalTargetGenerator.cxx | 9 |
3 files changed, 17 insertions, 5 deletions
diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 3f3cfbb..05f5b4c 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -106,6 +106,7 @@ void cmGlobalNinjaGenerator::WriteBuild(std::ostream& os, const cmNinjaDeps& implicitDeps, const cmNinjaDeps& orderOnlyDeps, const cmNinjaVars& variables, + const std::string& rspfile, int cmdLineLimit) { // Make sure there is a rule. @@ -181,12 +182,17 @@ void cmGlobalNinjaGenerator::WriteBuild(std::ostream& os, // check if a response file rule should be used std::string buildstr = build.str(); - const std::string assignments = variable_assignments.str(); + std::string assignments = variable_assignments.str(); const std::string args = arguments.str(); if (cmdLineLimit > 0 && args.size() + buildstr.size() + assignments.size() - > (size_t) cmdLineLimit) - buildstr += "_RSPFILE"; + > (size_t) cmdLineLimit) { + buildstr += "_RSP_FILE"; + variable_assignments.clear(); + cmGlobalNinjaGenerator::WriteVariable(variable_assignments, + "RSP_FILE", rspfile, "", 1); + assignments += variable_assignments.str(); + } os << buildstr << args << assignments; } diff --git a/Source/cmGlobalNinjaGenerator.h b/Source/cmGlobalNinjaGenerator.h index b2fe243..24c3916 100644 --- a/Source/cmGlobalNinjaGenerator.h +++ b/Source/cmGlobalNinjaGenerator.h @@ -84,6 +84,7 @@ public: const cmNinjaDeps& implicitDeps, const cmNinjaDeps& orderOnlyDeps, const cmNinjaVars& variables, + const std::string& rspfile = std::string(), int cmdLineLimit = -1); /** diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index 6f991e2..a13e1f0 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -153,7 +153,7 @@ cmNinjaNormalTargetGenerator cmTarget::TargetType targetType = this->GetTarget()->GetType(); std::string ruleName = this->LanguageLinkerRule(); if (useResponseFile) - ruleName += "_RSPFILE"; + ruleName += "_RSP_FILE"; // Select whether to use a response file for objects. std::string rspfile; @@ -179,7 +179,7 @@ cmNinjaNormalTargetGenerator } else { responseFlag = "@"; } - rspfile = "$out.rsp"; + rspfile = "$RSP_FILE"; responseFlag += rspfile; rspcontent = "$in $LINK_LIBRARIES"; vars.Objects = responseFlag.c_str(); @@ -549,6 +549,10 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() int commandLineLengthLimit = -1; #endif + const std::string rspfile = std::string + (cmake::GetCMakeFilesDirectoryPostSlash()) + + this->GetTarget()->GetName() + ".rsp"; + // Write the build statement for this target. cmGlobalNinjaGenerator::WriteBuild(this->GetBuildFileStream(), comment.str(), @@ -558,6 +562,7 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() implicitDeps, emptyDeps, vars, + rspfile, commandLineLengthLimit); if (targetOutput != targetOutputReal) { |