diff options
author | Peter Kuemmel <syntheticpp@gmx.net> | 2012-07-02 08:30:29 (GMT) |
---|---|---|
committer | Peter Kuemmel <syntheticpp@gmx.net> | 2012-07-02 08:30:29 (GMT) |
commit | 6332ba5a58f0114d1763c263950eae20b09eaa4b (patch) | |
tree | 530ba40ba8ccf5c82ed431f67f5abb2bb9e175df | |
parent | 0c42faf63acadf320ea6371d42d03386e1c20176 (diff) | |
download | CMake-6332ba5a58f0114d1763c263950eae20b09eaa4b.zip CMake-6332ba5a58f0114d1763c263950eae20b09eaa4b.tar.gz CMake-6332ba5a58f0114d1763c263950eae20b09eaa4b.tar.bz2 |
Ninja: also consider rule command length for rsp file
-rw-r--r-- | Source/cmGlobalNinjaGenerator.cxx | 2 | ||||
-rw-r--r-- | Source/cmGlobalNinjaGenerator.h | 5 | ||||
-rw-r--r-- | Source/cmNinjaNormalTargetGenerator.cxx | 3 |
3 files changed, 9 insertions, 1 deletions
diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 6e8ce87..23f42e4 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -557,6 +557,8 @@ void cmGlobalNinjaGenerator::AddRule(const std::string& name, rspfile, restat, generator); + + this->RuleCmdLength[name] = command.size(); } bool cmGlobalNinjaGenerator::HasRule(const std::string &name) diff --git a/Source/cmGlobalNinjaGenerator.h b/Source/cmGlobalNinjaGenerator.h index e939f61..e5f8099 100644 --- a/Source/cmGlobalNinjaGenerator.h +++ b/Source/cmGlobalNinjaGenerator.h @@ -319,6 +319,8 @@ private: std::string ninjaCmd() const; + int GetRuleCmdLength(const std::string& name) { return RuleCmdLength[name]; } + private: /// The file containing the build statement. (the relation ship of the /// compilation DAG). @@ -335,6 +337,9 @@ private: /// The set of rules added to the generated build system. RulesSetType Rules; + /// Length of rule command, used by rsp file evaluation + std::map<std::string, int> RuleCmdLength; + /// The set of dependencies to add to the "all" target. cmNinjaDeps AllDependencies; diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index 01e8e73..6befb05 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -480,7 +480,8 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() int cmdLineLimit; #ifdef _WIN32 - cmdLineLimit = 8000; + cmdLineLimit = 8000 - this->GetGlobalGenerator()-> + GetRuleCmdLength(this->LanguageLinkerRule()); #else cmdLineLimit = -1; // TODO #endif |