From cd10a583ad1f3c299383c07fd8c6ccd6e3199e6b Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 11 Nov 2020 15:14:19 +0200 Subject: Add ${c,cxx}.lib_{poptions,libs,rpaths}() functions These functions can be used to query library metadata for options and libraries that should be used when compiling/linking dependent targets, similar to how cc::{compile,link}_rule do it. With this support it should be possible to more or less re-create their semantics in ad hoc recipes. --- libbuild2/cc/compile-rule.hxx | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) (limited to 'libbuild2/cc/compile-rule.hxx') diff --git a/libbuild2/cc/compile-rule.hxx b/libbuild2/cc/compile-rule.hxx index d6cb002..cbbb142 100644 --- a/libbuild2/cc/compile-rule.hxx +++ b/libbuild2/cc/compile-rule.hxx @@ -53,6 +53,15 @@ namespace build2 target_state perform_clean (action, const target&) const; + public: + void + append_lib_options (strings&, + const scope&, + action, const file&, bool, linfo) const; + protected: + static void + functions (function_family&, const char*); // functions.cxx + private: struct match_data; using environment = small_vector; @@ -63,11 +72,15 @@ namespace build2 template void - append_lib_options (const scope&, - T&, - action, - const target&, - linfo) const; + append_lib_options (T&, + const scope&, + action, const file&, bool, linfo) const; + + template + void + append_lib_options (T&, + const scope&, + action, const target&, linfo) const; // Mapping of include prefixes (e.g., foo in ) for auto- // generated headers to directories where they will be generated. @@ -94,11 +107,9 @@ namespace build2 append_prefixes (prefix_map&, const target&, const variable&) const; void - append_lib_prefixes (const scope&, - prefix_map&, - action, - target&, - linfo) const; + append_lib_prefixes (prefix_map&, + const scope&, + action, target&, linfo) const; prefix_map build_prefix_map (const scope&, action, target&, linfo) const; @@ -168,7 +179,7 @@ namespace build2 action, const file&, const match_data&, const path&) const; - // Compiler-specific language selection option. Return the number of + // Compiler-specific language selection options. Return the number of // options (arguments, really) appended. // size_t -- cgit v1.1