[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