Merge pull request #22093 from yuwata/meson-bpftool-version

meson: require bpftool version >= 5.6
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2022-01-18 15:09:47 +01:00 committed by GitHub
commit ba900c1719
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -989,12 +989,32 @@ if want_bpf_framework == 'false'
else
# Support 'versioned' clang/llvm-strip binaries, as seen on Debian/Ubuntu
# (like clang-10/llvm-strip-10)
clang_bin = cc.get_id() == 'clang' ? cc.cmd_array()[0] : 'clang'
if meson.is_cross_build() or clang_bin.contains('afl-clang') or clang_bin.contains('hfuzz-clang')
clang_bin = 'clang'
if meson.is_cross_build() or cc.get_id() != 'clang' or cc.cmd_array()[0].contains('afl-clang') or cc.cmd_array()[0].contains('hfuzz-clang')
r = find_program('clang', required : bpf_framework_required)
clang_found = r.found()
if clang_found
if meson.version().version_compare('>= 0.55')
clang = [r.full_path()]
else
clang = [r.path()]
endif
endif
# Assume that the required flags are supported by the found clang.
clang_supports_flags = clang_found
else
clang_found = true
clang = cc.cmd_array()
clang_supports_flags = cc.has_argument('-Wno-compare-distinct-pointer-types')
endif
clang = find_program(clang_bin, required : bpf_framework_required)
if not meson.is_cross_build() and clang.found()
if clang_found
# Check if 'clang -target bpf' is supported.
clang_supports_bpf = run_command(clang, '-target', 'bpf', '--print-supported-cpus', check : false).returncode() == 0
else
clang_supports_bpf = false
endif
if not meson.is_cross_build() and clang_found
llvm_strip_bin = run_command(clang, '--print-prog-name', 'llvm-strip',
check : true).stdout().strip()
else
@ -1004,9 +1024,14 @@ else
# Debian installs this in /usr/sbin/ which is not in $PATH.
# We check for 'bpftool' first, honouring $PATH, and in /usr/sbin/ for Debian.
bpftool = find_program('bpftool', '/usr/sbin/bpftool', required : bpf_framework_required)
# We use 'bpftool gen' subcommand, it was added by 985ead416df39d6fe8e89580cc1db6aa273e0175 (v5.6).
bpftool = find_program('bpftool',
'/usr/sbin/bpftool',
required : bpf_framework_required,
version : '>= 5.6')
deps_found = libbpf.found() and clang_found and clang_supports_bpf and clang_supports_flags and llvm_strip.found() and bpftool.found()
deps_found = libbpf.found() and clang.found() and llvm_strip.found() and bpftool.found()
# Can build BPF program from source code in restricted C
conf.set10('BPF_FRAMEWORK', deps_found)
endif