mirror of
https://github.com/systemd/systemd.git
synced 2024-10-30 06:25:37 +03:00
meson: generate better arch defines for clang bpf compilation
The code assume that meson's cpu_family can be mapped directly to '-D__<cpu_family>__'. This works in a surprising number of cases, but not for a few architectures. PPC uses "powerpc", and RISC-V omits the trailing underscores. ARM and RISC-V require a second define too. Fixes #21900. (I don't think this matters too much: we need *something* so that gnu/stubs.h can be successfully included. But we don't actually call syscalls or depend too much on the host environment, so things should be fine as long as we don't get a compilation error.)
This commit is contained in:
parent
c9b1efdf14
commit
e897b07f97
@ -13,7 +13,25 @@ clang_flags = [
|
||||
'-c',
|
||||
]
|
||||
|
||||
clang_arch_flag = '-D__@0@__'.format(host_machine.cpu_family())
|
||||
# Generate defines that are appropriate to tell the compiler what architecture
|
||||
# we're compiling for. By default we just map meson's cpu_family to __<cpu_family>__.
|
||||
# This dictionary contains the exceptions where this doesn't work.
|
||||
#
|
||||
# C.f. https://mesonbuild.com/Reference-tables.html#cpu-families
|
||||
# and src/basic/missing_syscall_def.h.
|
||||
cpu_arch_defines = {
|
||||
'ppc' : ['-D__powerpc__'],
|
||||
'ppc64' : ['-D__powerpc64__', '-D_CALL_ELF=2'],
|
||||
'riscv32' : ['-D__riscv', '-D__riscv_xlen=32'],
|
||||
'riscv64' : ['-D__riscv', '-D__riscv_xlen=64'],
|
||||
'x86' : ['-D__i386__'],
|
||||
|
||||
# For arm, assume hardware fp is available.
|
||||
'arm' : ['-D__arm__', '-D__ARM_PCS_VFP'],
|
||||
}
|
||||
|
||||
clang_arch_flags = cpu_arch_defines.get(host_machine.cpu_family(),
|
||||
['-D__@0@__'.format(host_machine.cpu_family())])
|
||||
|
||||
if meson.version().version_compare('>= 0.58')
|
||||
libbpf_include_dir = libbpf.get_variable('includedir')
|
||||
@ -24,7 +42,7 @@ endif
|
||||
bpf_o_unstripped_cmd = [
|
||||
clang,
|
||||
clang_flags,
|
||||
clang_arch_flag,
|
||||
clang_arch_flags,
|
||||
'-I.'
|
||||
]
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user