If a dependency is required for a driver build,
but should not be exposed to the application (via pkg-config),
it can be declared in the array hidden_deps.

The hidden_deps are used as internal dependencies,
when building the shared library and the first stage of static library.
The final static library does not include the hidden_deps
because this library object is used to generate the .pc file.

Signed-off-by: Thomas Monjalon <tho...@monjalon.net>
---
 doc/guides/contributing/coding_style.rst | 6 ++++++
 drivers/meson.build                      | 9 ++++++---
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/doc/guides/contributing/coding_style.rst 
b/doc/guides/contributing/coding_style.rst
index 841ef6d5c8..c96457273f 100644
--- a/doc/guides/contributing/coding_style.rst
+++ b/doc/guides/contributing/coding_style.rst
@@ -975,6 +975,12 @@ deps
 ext_deps
        As above.
 
+hidden_deps
+       **Default Value = []**.
+       Used to specify external dependencies, same as ``ext_deps``, except
+       the libraries won't be exposed as requirements of the static driver,
+       in the section ``Requires.private`` of the generated ``.pc`` file.
+
 includes
        **Default Value = <driver directory>** Some drivers include a base
        directory for additional source files and headers, so we have this
diff --git a/drivers/meson.build b/drivers/meson.build
index 29708cc2bb..759263c309 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -56,6 +56,7 @@ foreach class:dpdk_driver_classes
                # too, so that it can be reflected in the pkgconfig output for
                # static builds.
                ext_deps = []
+               hidden_deps = []
                pkgconfig_extra_libs = []
 
                # pull in driver directory which should assign to each of the 
above
@@ -71,8 +72,9 @@ foreach class:dpdk_driver_classes
                endforeach
                if build
                        # get dependency objs from strings
-                       shared_deps = ext_deps
-                       static_deps = ext_deps
+                       shared_deps = ext_deps + hidden_deps
+                       static_deps = ext_deps + hidden_deps
+                       static_pub_deps = ext_deps
                        foreach d:deps
                                if not is_variable('shared_rte_' + d)
                                        build = false
@@ -82,6 +84,7 @@ foreach class:dpdk_driver_classes
                                else
                                        shared_deps += 
[get_variable('shared_rte_' + d)]
                                        static_deps += 
[get_variable('static_rte_' + d)]
+                                       static_pub_deps += 
[get_variable('static_rte_' + d)]
                                endif
                        endforeach
                endif
@@ -144,7 +147,7 @@ foreach class:dpdk_driver_classes
                                sources,
                                objects: objs,
                                include_directories: includes,
-                               dependencies: static_deps,
+                               dependencies: static_pub_deps, # skip 
hidden_deps
                                c_args: cflags,
                                install: true)
 
-- 
2.24.1

Reply via email to