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.rybche...@oktetlabs.ru> Signed-off-by: Ciara Loftus <ciara.lof...@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