mirror of
https://github.com/systemd/systemd.git
synced 2024-10-26 17:27:41 +03:00
bpf: fix cross build failure on Debian
For compiling bpf code, the system include directory needs to be constructed. On Debian-like systems, this requires passing a multiarch directory. Since clang's -dump-machine prints something other that the multiarch triplet, gcc was interrogated earlier, but that also yields a wrong result for cross compilation and was thus skipped resulting in clang not finding asm/types.h. Rather than, -dump-machine we should ask for -print-multiarch (which rarely differs). Whenever gcc is in use, this is right (even for cross building). Since clang does not support -print-multiarch and its -dump-machine never matches Debian's multiarch, we resort to asking gcc when building natively. For cross builds using clang, we are out of luck.
This commit is contained in:
parent
5b80cef69f
commit
608009dc62
13
meson.build
13
meson.build
@ -1823,8 +1823,16 @@ if conf.get('BPF_FRAMEWORK') == 1
|
||||
|
||||
bpf_o_unstripped_cmd += ['-I.']
|
||||
|
||||
if not meson.is_cross_build()
|
||||
target_triplet_cmd = run_command('gcc', '-dumpmachine', check: false)
|
||||
if cc.get_id() == 'gcc' or meson.is_cross_build()
|
||||
if cc.get_id() != 'gcc'
|
||||
warning('Cross compiler is not gcc. Guessing the target triplet for bpf likely fails.')
|
||||
endif
|
||||
target_triplet_cmd = run_command(cc.cmd_array(), '-print-multiarch', check: false)
|
||||
else
|
||||
# clang does not support -print-multiarch (D133170) and its -dump-machine
|
||||
# does not match multiarch. Query gcc instead.
|
||||
target_triplet_cmd = run_command('gcc', '-print-multiarch', check: false)
|
||||
endif
|
||||
if target_triplet_cmd.returncode() == 0
|
||||
target_triplet = target_triplet_cmd.stdout().strip()
|
||||
bpf_o_unstripped_cmd += [
|
||||
@ -1832,7 +1840,6 @@ if conf.get('BPF_FRAMEWORK') == 1
|
||||
'/usr/include/@0@'.format(target_triplet)
|
||||
]
|
||||
endif
|
||||
endif
|
||||
|
||||
bpf_o_unstripped_cmd += [
|
||||
'-idirafter',
|
||||
|
Loading…
Reference in New Issue
Block a user