[RFC,2/3] net/af_xdp: determine libbpf version by checking for symbols
Checks
Commit Message
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@oktetlabs.ru>
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/af_xdp/meson.build | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
@@ -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