mirror of
https://github.com/systemd/systemd.git
synced 2025-01-09 01:18:19 +03:00
meson: use the compiler command array as is
Also check if the flags used when building bpf are supported by clang.
This commit is contained in:
parent
a6ac8b5a4d
commit
dc7e9c1bc4
27
meson.build
27
meson.build
@ -990,20 +990,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 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()
|
||||
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
|
||||
@ -1019,7 +1031,8 @@ else
|
||||
required : bpf_framework_required,
|
||||
version : '>= 5.6')
|
||||
|
||||
deps_found = libbpf.found() and clang.found() and clang_supports_bpf and llvm_strip.found() and bpftool.found()
|
||||
deps_found = libbpf.found() and clang_found and clang_supports_bpf and clang_supports_flags and llvm_strip.found() and bpftool.found()
|
||||
|
||||
# Can build BPF program from source code in restricted C
|
||||
conf.set10('BPF_FRAMEWORK', deps_found)
|
||||
endif
|
||||
|
Loading…
Reference in New Issue
Block a user