From 5fec6c87511cacfd9561664a652f8f1b679adcce Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 19 Oct 2022 05:45:32 +0200 Subject: Take 1: match/execute as part of target (dead end) --- libbuild2/algorithm.ixx | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'libbuild2/algorithm.ixx') diff --git a/libbuild2/algorithm.ixx b/libbuild2/algorithm.ixx index 417a10e..4983d79 100644 --- a/libbuild2/algorithm.ixx +++ b/libbuild2/algorithm.ixx @@ -424,6 +424,19 @@ namespace build2 return r; } + inline target_state + match_direct_sync (action a, const target& t, bool fail) + { + assert (t.ctx.phase == run_phase::match); + + target_state r (match_impl (a, t, 0, nullptr).second); + + if (fail && r == target_state::failed) + throw failed (); + + return r; + } + inline pair try_match_sync (action a, const target& t, bool fail) { @@ -521,6 +534,7 @@ namespace build2 { t[a].vars.clear (); t.prerequisite_targets[a].clear (); + t.posthoc_targets[a].clear (); t.clear_data (a); } @@ -960,8 +974,9 @@ namespace build2 p.first, static_cast (p.second)); } + template inline target_state - execute_members (action a, const target& t, const target* ts[], size_t n) + execute_members (action a, const target& t, T ts[], size_t n) { return t.ctx.current_mode == execution_mode::first ? straight_execute_members (a, t, ts, n, 0) -- cgit v1.1