From b259a318223370881d5244cc38ff8a7be58e2a3e Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Sun, 3 Dec 2023 13:47:42 +0200 Subject: Reimplement search_existing() functions via target_type::search This allows us to automatically get the target type-specific behavior with regards to the out_only semantics (added in the previous commit) instead of passing it explicitly from each call site. --- libbuild2/in/target.cxx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'libbuild2/in') diff --git a/libbuild2/in/target.cxx b/libbuild2/in/target.cxx index 54130ff..d664e3a 100644 --- a/libbuild2/in/target.cxx +++ b/libbuild2/in/target.cxx @@ -10,7 +10,7 @@ namespace build2 namespace in { static const target* - in_search (const target& xt, const prerequisite_key& cpk) + in_search (context& ctx, const target* xt, const prerequisite_key& cpk) { // If we have no extension then derive it from our target. Then delegate // to file_search(). @@ -18,7 +18,7 @@ namespace build2 prerequisite_key pk (cpk); optional& e (pk.tk.ext); - if (!e) + if (!e && xt != nullptr) { // Why is the extension, say, .h.in and not .in (with .h being in the // name)? While this is mostly academic (in this case things will work @@ -28,16 +28,16 @@ namespace build2 // // See also the low verbosity tidying up code in the rule. // - if (const file* t = xt.is_a ()) + if (const file* t = xt->is_a ()) { const string& te (t->derive_extension ()); e = te + (te.empty () ? "" : ".") + "in"; } else - fail << "prerequisite " << pk << " for a non-file target " << xt; + fail << "prerequisite " << pk << " for a non-file target " << *xt; } - return file_search (xt, pk); + return file_search (ctx, xt, pk); } static bool -- cgit v1.1