Implement $< and $^
diff --git a/exec.go b/exec.go
index e6cd8f1..902a543 100644
--- a/exec.go
+++ b/exec.go
@@ -126,6 +126,7 @@
}
latest := int64(-1)
+ var actualInputs []string
for _, input := range rule.inputs {
if len(rule.outputPatterns) > 0 {
if len(rule.outputPatterns) > 1 {
@@ -139,6 +140,7 @@
outputSuffix := filepath.Ext(output)
input = fmt.Sprintf("%s.%s", output[:len(output)-len(outputSuffix)], input)
}
+ actualInputs = append(actualInputs, input)
ts, err := ex.build(vars, input)
if err != nil {
@@ -159,6 +161,10 @@
}
// automatic variables.
localVars["@"] = escapeVar(output)
+ if len(actualInputs) > 0 {
+ localVars["<"] = escapeVar(actualInputs[0])
+ localVars["^"] = escapeVar(strings.Join(actualInputs, " "))
+ }
Log("local vars: %q", localVars)
ev := newEvaluator(localVars)
var cmds []string
diff --git a/test/command_vars.mk b/test/command_vars.mk
new file mode 100644
index 0000000..3d60e21
--- /dev/null
+++ b/test/command_vars.mk
@@ -0,0 +1,9 @@
+test: foo
+
+foo: bar baz
+ echo $@
+ echo $<
+ echo $^
+
+bar:
+baz:
diff --git a/test/suffix_rule.mk b/test/suffix_rule.mk
index cecddfb..4227731 100644
--- a/test/suffix_rule.mk
+++ b/test/suffix_rule.mk
@@ -6,4 +6,4 @@
test2: foo.o
.c.o:
- echo PASS
+ echo PASS $@ $< $^