aboutsummaryrefslogtreecommitdiff
path: root/build/bin/rule.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-08-14 15:47:34 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-08-14 15:47:34 +0200
commitf62ff2e840fd92a03b4a3298de938d426f8b5c7a (patch)
treeaf8c7a85c5bdc4bd8bc60632aa6929cb27b98284 /build/bin/rule.cxx
parent9fa5209175dffb881e8ec6c5f6ad4fc54448244a (diff)
Fix several issues in outer operation recipe override logic
Diffstat (limited to 'build/bin/rule.cxx')
-rw-r--r--build/bin/rule.cxx10
1 files changed, 9 insertions, 1 deletions
diff --git a/build/bin/rule.cxx b/build/bin/rule.cxx
index 8507497..a09bffd 100644
--- a/build/bin/rule.cxx
+++ b/build/bin/rule.cxx
@@ -79,7 +79,15 @@ namespace build
match_only (a, *t.so);
}
- return match_result (t, &type);
+ match_result mr (t, &type);
+
+ // If there is an outer operation, indicate that we match
+ // unconditionally so that we don't override ourselves.
+ //
+ if (a.outer_operation () != 0)
+ mr.recipe_action = action (a.meta_operation (), a.operation ());
+
+ return mr;
}
recipe lib_rule::