[RFC PATCH 2/3] net/af_xdp: determine libbpf version by checking for symbols

Ciara Loftus ciara.loftus at intel.com
Thu Jul 21 14:14:14 CEST 2022


Instead of using pkg-config to query the version of the libbpf library,
search for symbols in the library and use their presence or absence to
determine what version of the library is being linked.

Suggested-by: Andrew Rybchenko <andrew.rybchenko at oktetlabs.ru>
Signed-off-by: Ciara Loftus <ciara.loftus at intel.com>
---
 drivers/net/af_xdp/meson.build | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/drivers/net/af_xdp/meson.build b/drivers/net/af_xdp/meson.build
index c90ab10a7b..d91545f9c3 100644
--- a/drivers/net/af_xdp/meson.build
+++ b/drivers/net/af_xdp/meson.build
@@ -15,8 +15,12 @@ xdp_dep = dependency('libxdp', version : '>=1.2.2', required: false, method: 'pk
 bpf_dep = dependency('libbpf', required: false, method: 'pkg-config')
 if not bpf_dep.found()
     bpf_dep = cc.find_library('bpf', required: false)
-else
-    bpf_ver_dep = dependency('libbpf', version : '>=0.7.0', required: false, method: 'pkg-config')
+endif
+
+libbpf070 = false
+
+if bpf_dep.found() and cc.has_header('bpf/bpf.h') and cc.has_header_symbol('bpf/bpf.h', 'bpf_btf_load')
+    libbpf070 = true
 endif
 
 if cc.has_header('linux/if_xdp.h')
@@ -26,7 +30,7 @@ if cc.has_header('linux/if_xdp.h')
             cflags += ['-DRTE_NET_AF_XDP_SHARED_UMEM']
             ext_deps += xdp_dep
             ext_deps += bpf_dep
-            if bpf_ver_dep.found()
+            if libbpf070
                 cflags += ['-DRTE_NET_AF_XDP_LIBBPF_OBJ_OPEN']
             endif
         else
@@ -36,11 +40,10 @@ if cc.has_header('linux/if_xdp.h')
     elif bpf_dep.found() and cc.has_header('bpf/xsk.h') and cc.has_header('bpf/bpf.h')
         # libxdp not found. Rely solely on libbpf for xsk functionality
         # which is only available in versions < v0.7.0.
-        if not bpf_ver_dep.found()
+        if not libbpf070
             ext_deps += bpf_dep
-            bpf_shumem_ver_dep = dependency('libbpf', version : '>=0.2.0',
-                            required: false, method: 'pkg-config')
-            if bpf_shumem_ver_dep.found()
+            bpf_shumem_ver_dep = cc.has_header_symbol('bpf/bpf.h', 'bpf_prog_bind_map')
+            if bpf_shumem_ver_dep
                 cflags += ['-DRTE_NET_AF_XDP_SHARED_UMEM']
             endif
         else
-- 
2.25.1



More information about the dev mailing list