The helpers make it easier to link to external libraries from ebuilds
to accommodate to NGINX build system deficiencies.

Signed-off-by: Zurab Kvachadze <[email protected]>
---
 eclass/nginx-module.eclass | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/eclass/nginx-module.eclass b/eclass/nginx-module.eclass
index f17b7d4445be..714467248de2 100644
--- a/eclass/nginx-module.eclass
+++ b/eclass/nginx-module.eclass
@@ -24,7 +24,7 @@
 # libraries/APIs.  In the example HMAC case, the module actually requires
 # libcrypto, not the http_ssl module, so the ebuild code reflects this by
 # patching the module's 'config' file and depending on dev-libs/openssl 
directly
-# using the ngx_mod_append_libs() function.
+# using the ngx_mod_link_lib() function.
 #
 # If the module makes use of the ngx_devel_kit (NDK) or any other NGINX
 # module, there are two approaches.
@@ -349,6 +349,25 @@ ngx_mod_link_module() {
        ngx_mod_append_libs "${sonames[@]/#/-l:}"
 }
 
+# @FUNCTION: ngx_mod_link_lib
+# @USAGE: <pkgconfig module name>
+# @DESCRIPTION:
+# Adds the necessary CFLAGS and LDFLAGS to link the NGINX module with the
+# library specified by its <pkgconfig module name>.  The {C,LD}FLAGS are
+# obtained using pkgconfig.  The caller must ensure that pkgconfig has been
+# added to BDEPEND.
+ngx_mod_link_lib() {
+       debug-print-function "${FUNCNAME[0]}" "$@"
+       [[ $# -ne 1 ]] && die "${FUNCNAME[0]} must receive exactly one argument"
+       local pkgconf
+       pkgconf="$(tc-getPKG_CONFIG)"
+
+       "${pkgconf}" --exists "$1" || die "The pkgconfig library $1 does not 
exist"
+
+       append-cflags "$("${pkgconf}" --cflags "$1")"
+       ngx_mod_append_libs "$("${pkgconf}" --libs "$1")"
+}
+
 #-----> ebuild-defined variables <-----
 
 # @ECLASS_VARIABLE: NGINX_MOD_S
-- 
2.49.1


Reply via email to