fix implicit_pattern_rule_chain
diff --git a/eval.go b/eval.go
index 94adc1e..335bb49 100644
--- a/eval.go
+++ b/eval.go
@@ -218,6 +218,7 @@
rule.vars.Assign(lhs, rhs)
} else {
rule.cmds = ast.cmds
+ Log("rule outputs:%q cmds:%q", rule.outputs, rule.cmds)
}
ev.outRules = append(ev.outRules, rule)
}
diff --git a/exec.go b/exec.go
index e11d715..cc68338 100644
--- a/exec.go
+++ b/exec.go
@@ -34,6 +34,10 @@
}
func (ex *Executor) exists(target string) bool {
+ _, present := ex.rules[target]
+ if present {
+ return true
+ }
rule, present := ex.rules[".PHONY"]
if present {
for _, input := range rule.inputs {
@@ -239,7 +243,7 @@
}
for _, input := range rule.orderOnlyInputs {
- if ex.exists(input) {
+ if exists(input) {
continue
}
ts, err := ex.build(vars, input)
@@ -272,6 +276,7 @@
ev.filename = rule.filename
ev.lineno = rule.cmdLineno
var cmds []string
+ Log("Building: %s cmds:%q", output, rule.cmds)
for _, cmd := range rule.cmds {
if strings.IndexByte(cmd, '$') < 0 {
// fast path.
diff --git a/testcase/implicit_pattern_rule_chain.mk b/testcase/implicit_pattern_rule_chain.mk
index d744478..9eb3dcf 100644
--- a/testcase/implicit_pattern_rule_chain.mk
+++ b/testcase/implicit_pattern_rule_chain.mk
@@ -1,4 +1,3 @@
-# TODO
test: foo
foo: foo.o