From 389a446021a1bfa7708514ca23e8f12048587258 Mon Sep 17 00:00:00 2001 From: q66 Date: Sat, 21 Apr 2018 17:53:41 +0200 Subject: [PATCH] simplfy action exec --- main.cc | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/main.cc b/main.cc index efced54..6019a82 100644 --- a/main.cc +++ b/main.cc @@ -202,9 +202,11 @@ struct ob_state: cs_state { void exec_func(string_range tname, std::vector const &rlist) { std::vector subdeps; - wait_result([&rlist, &subdeps, &tname, this]() { - exec_list(rlist, subdeps, tname); - }); + if ((rlist.size() > 1) || !rlist[0].rule->deps.empty()) { + wait_result([&rlist, &subdeps, &tname, this]() { + exec_list(rlist, subdeps, tname); + }); + } cs_bcode_ref *func = nullptr; bool act = false; for (auto &sr: rlist) { @@ -254,14 +256,6 @@ struct ob_state: cs_state { } } - void exec_action(Rule *rule) { - try { - run(rule->func); - } catch (cscript::cs_error const &e) { - throw build_error{e.what()}; - } - } - void find_rules(string_range target, std::vector &rlist) { if (!rlist.empty()) { return; @@ -313,10 +307,6 @@ struct ob_state: cs_state { void exec_rule(string_range target, string_range from = nullptr) { std::vector &rlist = cache[target]; find_rules(target, rlist); - if ((rlist.size() == 1) && rlist[0].rule->action) { - exec_action(rlist[0].rule); - return; - } if (rlist.empty() && !fs::exists(target)) { if (from.empty()) { throw build_error{"no rule to run target '%s'", target};