Ninja: also consider rule command length for rsp file

This commit is contained in:
Peter Kuemmel 2012-07-02 10:30:29 +02:00
parent 0c42faf63a
commit 6332ba5a58
3 changed files with 9 additions and 1 deletions

View File

@ -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)

View File

@ -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;

View File

@ -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