]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
meson: move bpf hookup into main meson build file
authorLennart Poettering <lennart@poettering.net>
Thu, 16 Mar 2023 14:36:26 +0000 (15:36 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 24 Apr 2023 15:10:08 +0000 (17:10 +0200)
This way we can use it in systemd-userdbd later on, too.

meson.build
src/core/bpf/meson.build [deleted file]
src/core/meson.build

index 6e3728c286ba17c1fdba0b113ddb58765e8437ed..40db638cebaff46e6b77fe0417e69b660e246f70 100644 (file)
@@ -1966,6 +1966,118 @@ pymod = import('python')
 python = pymod.find_installation('python3', required : true, modules : ['jinja2'])
 python_39 = python.language_version().version_compare('>=3.9')
 
+############################################################
+
+if conf.get('BPF_FRAMEWORK') == 1
+        bpf_clang_flags = [
+                '-std=gnu11',
+                '-Wno-compare-distinct-pointer-types',
+                '-fno-stack-protector',
+                '-O2',
+                '-target',
+                'bpf',
+                '-g',
+                '-c',
+        ]
+
+        bpf_gcc_flags = [
+                '-std=gnu11',
+                '-fno-stack-protector',
+                '-O2',
+                '-mkernel=5.2',
+                '-mcpu=v3',
+                '-mco-re',
+                '-gbtf',
+                '-c',
+        ]
+
+        # 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'],
+        }
+
+        bpf_arch_flags = cpu_arch_defines.get(host_machine.cpu_family(),
+                                              ['-D__@0@__'.format(host_machine.cpu_family())])
+        if bpf_compiler == 'gcc'
+                bpf_arch_flags += ['-m' + host_machine.endian() + '-endian']
+        endif
+
+        libbpf_include_dir = libbpf.get_variable(pkgconfig : 'includedir')
+
+        bpf_o_unstripped_cmd = []
+        if bpf_compiler == 'clang'
+                bpf_o_unstripped_cmd += [
+                        clang,
+                        bpf_clang_flags,
+                        bpf_arch_flags,
+                ]
+        elif bpf_compiler == 'gcc'
+                bpf_o_unstripped_cmd += [
+                        bpf_gcc,
+                        bpf_gcc_flags,
+                        bpf_arch_flags,
+                ]
+        endif
+
+        bpf_o_unstripped_cmd += ['-I.']
+
+        if not meson.is_cross_build() and bpf_compiler == 'clang'
+                target_triplet_cmd = run_command('gcc', '-dumpmachine', check: false)
+                if target_triplet_cmd.returncode() == 0
+                        target_triplet = target_triplet_cmd.stdout().strip()
+                        bpf_o_unstripped_cmd += [
+                                '-isystem',
+                                '/usr/include/@0@'.format(target_triplet)
+                        ]
+                endif
+        endif
+
+        bpf_o_unstripped_cmd += [
+                '-idirafter',
+                libbpf_include_dir,
+                '@INPUT@',
+                '-o',
+                '@OUTPUT@'
+        ]
+
+        if bpftool_strip
+                bpf_o_cmd = [
+                        bpftool,
+                        'gen',
+                        'object',
+                        '@OUTPUT@',
+                        '@INPUT@'
+                ]
+        elif bpf_compiler == 'clang'
+                bpf_o_cmd = [
+                        llvm_strip,
+                        '-g',
+                        '@INPUT@',
+                        '-o',
+                        '@OUTPUT@'
+                ]
+        endif
+
+        skel_h_cmd = [
+                bpftool,
+                'gen',
+                'skeleton',
+                '@INPUT@'
+        ]
+endif
+
 #####################################################################
 
 efi_arch = {
diff --git a/src/core/bpf/meson.build b/src/core/bpf/meson.build
deleted file mode 100644 (file)
index ea9539b..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-# SPDX-License-Identifier: LGPL-2.1-or-later
-
-if conf.get('BPF_FRAMEWORK') != 1
-        subdir_done()
-endif
-
-bpf_clang_flags = [
-        '-std=gnu11',
-        '-Wno-compare-distinct-pointer-types',
-        '-fno-stack-protector',
-        '-O2',
-        '-target',
-        'bpf',
-        '-g',
-        '-c',
-]
-
-bpf_gcc_flags = [
-        '-std=gnu11',
-        '-fno-stack-protector',
-        '-O2',
-        '-mkernel=5.2',
-        '-mcpu=v3',
-        '-mco-re',
-        '-gbtf',
-        '-c',
-]
-
-# 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'],
-}
-
-bpf_arch_flags = cpu_arch_defines.get(host_machine.cpu_family(),
-                                      ['-D__@0@__'.format(host_machine.cpu_family())])
-if bpf_compiler == 'gcc'
-        bpf_arch_flags += ['-m' + host_machine.endian() + '-endian']
-endif
-
-libbpf_include_dir = libbpf.get_variable(pkgconfig : 'includedir')
-
-bpf_o_unstripped_cmd = []
-if bpf_compiler == 'clang'
-        bpf_o_unstripped_cmd += [
-                clang,
-                bpf_clang_flags,
-                bpf_arch_flags,
-        ]
-elif bpf_compiler == 'gcc'
-        bpf_o_unstripped_cmd += [
-                bpf_gcc,
-                bpf_gcc_flags,
-                bpf_arch_flags,
-        ]
-endif
-
-bpf_o_unstripped_cmd += ['-I.']
-
-if not meson.is_cross_build() and bpf_compiler == 'clang'
-        target_triplet_cmd = run_command('gcc', '-dumpmachine', check: false)
-        if target_triplet_cmd.returncode() == 0
-                target_triplet = target_triplet_cmd.stdout().strip()
-                bpf_o_unstripped_cmd += [
-                        '-isystem',
-                        '/usr/include/@0@'.format(target_triplet)
-                ]
-        endif
-endif
-
-bpf_o_unstripped_cmd += [
-        '-idirafter',
-        libbpf_include_dir,
-        '@INPUT@',
-        '-o',
-        '@OUTPUT@'
-]
-
-if bpftool_strip
-        bpf_o_cmd = [
-                bpftool,
-                'gen',
-                'object',
-                '@OUTPUT@',
-                '@INPUT@'
-        ]
-elif bpf_compiler == 'clang'
-        bpf_o_cmd = [
-                llvm_strip,
-                '-g',
-                '@INPUT@',
-                '-o',
-                '@OUTPUT@'
-        ]
-endif
-
-skel_h_cmd = [
-        bpftool,
-        'gen',
-        'skeleton',
-        '@INPUT@'
-]
index af3eaa52d2b52b153014e4d549c6111e60c82f5d..ac0107a753aec0a6a31cf9383a38c9cb9b87f108 100644 (file)
@@ -74,8 +74,6 @@ if conf.get('BPF_FRAMEWORK') == 1
         )
 endif
 
-subdir('bpf')
-
 subdir('bpf/socket_bind')
 if conf.get('BPF_FRAMEWORK') == 1
         libcore_sources += [socket_bind_skel_h]