aboutsummaryrefslogtreecommitdiff
path: root/dep.cc
diff options
context:
space:
mode:
Diffstat (limited to 'dep.cc')
-rw-r--r--dep.cc28
1 files changed, 17 insertions, 11 deletions
diff --git a/dep.cc b/dep.cc
index 502ec47..75dff76 100644
--- a/dep.cc
+++ b/dep.cc
@@ -156,16 +156,18 @@ struct RuleMerger {
if (rules.empty()) {
is_double_colon = r->is_double_colon;
} else if (is_double_colon != r->is_double_colon) {
- ERROR("%s:%d: *** target file `%s' has both : and :: entries.",
- LOCF(r->loc), output.c_str());
+ ERROR_LOC(r->loc, "*** target file `%s' has both : and :: entries.",
+ output.c_str());
}
if (primary_rule && !r->cmds.empty() &&
!IsSuffixRule(output) && !r->is_double_colon) {
- WARN("%s:%d: warning: overriding commands for target `%s'",
- LOCF(r->cmd_loc()), output.c_str());
- WARN("%s:%d: warning: ignoring old commands for target `%s'",
- LOCF(primary_rule->cmd_loc()), output.c_str());
+ WARN_LOC(r->cmd_loc(),
+ "warning: overriding commands for target `%s'",
+ output.c_str());
+ WARN_LOC(primary_rule->cmd_loc(),
+ "warning: ignoring old commands for target `%s'",
+ output.c_str());
primary_rule = r;
}
if (!primary_rule && !r->cmds.empty()) {
@@ -231,6 +233,7 @@ DepNode::DepNode(Symbol o, bool p, bool r)
is_restat(r),
rule_vars(NULL),
depfile_var(NULL),
+ ninja_pool_var(NULL),
output_pattern(Symbol::IsUninitialized()) {
g_dep_node_pool->push_back(this);
}
@@ -244,7 +247,8 @@ class DepBuilder {
rule_vars_(rule_vars),
implicit_rules_(new RuleTrie()),
first_rule_(Symbol::IsUninitialized{}),
- depfile_var_name_(Intern(".KATI_DEPFILE")) {
+ depfile_var_name_(Intern(".KATI_DEPFILE")),
+ ninja_pool_var_name_(Intern(".KATI_NINJA_POOL")) {
ScopedTimeReporter tr("make dep (populate)");
PopulateRules(rules);
// TODO?
@@ -272,8 +276,7 @@ class DepBuilder {
if (targets.empty()) {
suffix_rules_.clear();
} else {
- WARN("%s:%d: kati doesn't support .SUFFIXES with prerequisites",
- LOCF(loc));
+ WARN_LOC(loc, "kati doesn't support .SUFFIXES with prerequisites");
}
}
@@ -294,7 +297,7 @@ class DepBuilder {
};
for (const char** p = kUnsupportedBuiltinTargets; *p; p++) {
if (GetRuleInputs(Intern(*p), &targets, &loc)) {
- WARN("%s:%d: kati doesn't support %s", LOCF(loc), *p);
+ WARN_LOC(loc, "kati doesn't support %s", *p);
}
}
}
@@ -534,7 +537,7 @@ class DepBuilder {
if (found == suffix_rules_.end())
return rule_merger;
- for (shared_ptr<Rule> irule : found->second) {
+ for (const shared_ptr<Rule> &irule : found->second) {
CHECK(irule->inputs.size() == 1);
Symbol input = ReplaceSuffix(output, irule->inputs[0]);
if (!Exists(input))
@@ -607,6 +610,8 @@ class DepBuilder {
if (name == depfile_var_name_) {
n->depfile_var = new_var;
+ } else if (name == ninja_pool_var_name_) {
+ n->ninja_pool_var = new_var;
} else {
sv.emplace_back(new ScopedVar(cur_rule_vars_.get(), name, new_var));
}
@@ -651,6 +656,7 @@ class DepBuilder {
unordered_set<Symbol> phony_;
unordered_set<Symbol> restat_;
Symbol depfile_var_name_;
+ Symbol ninja_pool_var_name_;
};
void MakeDep(Evaluator* ev,