summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorPeter Kuemmel <syntheticpp@gmx.net>2012-06-14 23:45:18 (GMT)
committerPeter Kuemmel <syntheticpp@gmx.net>2012-06-15 00:00:15 (GMT)
commit41c28dc35ba7efaf9426a8b8f5597aee11b7db61 (patch)
treebc4cfe9341643b01413a66e873cb024734fb434f /Source
parentf13a6a087e3f882b496ab34c12cc7777795a5c2f (diff)
downloadCMake-41c28dc35ba7efaf9426a8b8f5597aee11b7db61.zip
CMake-41c28dc35ba7efaf9426a8b8f5597aee11b7db61.tar.gz
CMake-41c28dc35ba7efaf9426a8b8f5597aee11b7db61.tar.bz2
Ninja: be more accurate when estimating the command line length
Diffstat (limited to 'Source')
-rw-r--r--Source/cmGlobalNinjaGenerator.cxx3
-rw-r--r--Source/cmNinjaNormalTargetGenerator.cxx7
2 files changed, 6 insertions, 4 deletions
diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx
index 3af58a9..30a4a07 100644
--- a/Source/cmGlobalNinjaGenerator.cxx
+++ b/Source/cmGlobalNinjaGenerator.cxx
@@ -177,7 +177,8 @@ void cmGlobalNinjaGenerator::WriteBuild(std::ostream& os,
// check if a response file rule should be used
const std::string args = arguments.str();
- if (cmdLineLimit > 0 && args.size() > (size_t)cmdLineLimit)
+ if (cmdLineLimit > 0 &&
+ (args.size() + + builds.str().size()) > (size_t)cmdLineLimit)
builds << "_RSPFILE";
os << builds.str() << args;
diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx
index 6f08338..98d2fba 100644
--- a/Source/cmNinjaNormalTargetGenerator.cxx
+++ b/Source/cmNinjaNormalTargetGenerator.cxx
@@ -478,12 +478,13 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
symlinkVars["POST_BUILD"] = postBuildCmdLine;
}
- int cmdLineLimit = -1;
+ int cmdLineLimit;
#ifdef _WIN32
- cmdLineLimit = 8100;
+ cmdLineLimit = 8000;
#else
- // TODO
+ cmdLineLimit = -1; // TODO
#endif
+
// Write the build statement for this target.
cmGlobalNinjaGenerator::WriteBuild(this->GetBuildFileStream(),
comment.str(),