diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2023-12-03 13:47:42 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2023-12-03 16:48:07 +0200 |
commit | b259a318223370881d5244cc38ff8a7be58e2a3e (patch) | |
tree | a65909217d5d91e31ebe891c0278546cb58ea36d /libbuild2/in | |
parent | 68a27c5bca208337f5749fe1959ac21c062b77fb (diff) |
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.
Diffstat (limited to 'libbuild2/in')
-rw-r--r-- | libbuild2/in/target.cxx | 10 |
1 files changed, 5 insertions, 5 deletions
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<string>& 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<file> ()) + if (const file* t = xt->is_a<file> ()) { 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 |