[dpdk-dev] [PATCH v3 2/5] buildtools: get static mlx dependencies for meson

Thomas Monjalon thomas at monjalon.net
Tue Feb 11 02:19:39 CET 2020


The shell script options-ibverbs-static.sh was used with make
in forcing static linkage of ibverbs libraries.

When choosing to link with a static dependency in meson,
the generated .pc file will not force such static linkage.
The solution will rely on using this script in meson.

If linking with libraries installed in a non-standard path,
an option -L is provided via EXTRA_LDFLAGS in case of using make.
With meson, tuning PKG_CONFIG_PATH for pkg-config should be enough.
When statically linking an application, the .pc file must save the
-L path so the application link will work without any extra option.
That's why --libs-only-l is replaced with --libs which includes -L.
Options which are neither -l or -L are filtered out because not needed
and can cause compilation issues with the legacy system using make.

The other change in this script is to move the main library file
(libiverbs.a) at the end of the list of dependencies.
It fixes some undefined references when linking a static application
using libdpdk.pc.

Signed-off-by: Thomas Monjalon <thomas at monjalon.net>
---
 buildtools/options-ibverbs-static.sh | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/buildtools/options-ibverbs-static.sh b/buildtools/options-ibverbs-static.sh
index 0f285a343b..43578a37f3 100755
--- a/buildtools/options-ibverbs-static.sh
+++ b/buildtools/options-ibverbs-static.sh
@@ -9,6 +9,12 @@
 #
 # PKG_CONFIG_PATH may be required to be set if libibverbs.pc is not installed.
 
-pkg-config --libs-only-l --static libibverbs |
+lib='libibverbs'
+deps='pthread|nl'
+
+pkg-config --libs --static $lib |
 	tr '[:space:]' '\n' |
-	sed -r '/^-l(pthread|nl)/! s,(^-l)(.*),\1:lib\2.a,'
+	sed -r "/^-l($deps)/! s,(^-l)(.*),\1:lib\2.a," |   # explicit .a
+	sed -n '/^-[Ll]/p' |   # extra link options may break with make
+	sed "/$lib/d"   # move main lib at the end
+echo -l:$lib.a
-- 
2.25.0



More information about the dev mailing list