This is an automatic generated email to let you know that the following patch 
were queued at the 
http://git.linuxtv.org/cgit.cgi/v4l-utils.git tree:

Subject: meson: Allow BPF code to be built with GCC
Author:  James Le Cuirot <ch...@gentoo.org>
Date:    Sun Aug 10 15:20:06 2025 +0100

GCC can also target BPF, but it does not understand the "-target bpf"
arguments passed to Clang.

Detect it as either bpf-gcc, bpf-none-gcc, or bpf-unknown-none-gcc, the
same as systemd does.

Determine the include paths with the compiler used by the rest of the
build rather than Clang, which might not be installed or might not give
the right answer, especially when cross-compiling.

Check whether Clang actually supports the BPF target so that
auto-detection doesn't cause the build to fail when it doesn't.

Signed-off-by: James Le Cuirot <ch...@gentoo.org>
Signed-off-by: Sean Young <s...@mess.org>

 meson.build                                        | 25 +++++++++++++++++++++-
 utils/keytable/bpf_protocols/cc_sys_includes.sh    | 10 +++++++++
 utils/keytable/bpf_protocols/clang_sys_includes.sh |  9 --------
 utils/keytable/bpf_protocols/meson.build           | 12 +++++------
 utils/keytable/meson.build                         |  2 +-
 5 files changed, 41 insertions(+), 17 deletions(-)

---

http://git.linuxtv.org/cgit.cgi/v4l-utils.git/commit/?id=48316b8a20aac35f982991b617f84fb3c104e7b0
diff --git a/meson.build b/meson.build
index 88781e595095..62d271b4c872 100644
--- a/meson.build
+++ b/meson.build
@@ -83,11 +83,34 @@ endif
 v4l2_utils_incdir = include_directories(v4l2_utils_incdir_arr)
 
 prog_bash = find_program('bash')
-prog_clang = find_program('clang', required : get_option('bpf'))
 prog_doxygen = find_program('doxygen', required : get_option('doxygen-doc'))
 prog_grep = find_program('grep')
 prog_perl = find_program('perl')
 
+if get_option('bpf').allowed()
+    bpf_args = []
+    prog_bpf = find_program('bpf-gcc',
+                            'bpf-none-gcc',
+                            'bpf-unknown-none-gcc',
+                            required : false)
+
+    if prog_bpf.found()
+        bpf_args += ['-fno-tree-switch-conversion']
+    else
+        prog_bpf = find_program('clang', required : get_option('bpf'))
+        if prog_bpf.found()
+            target_bpf = run_command(prog_bpf, '-target', 'bpf', 
'--print-supported-cpus', check : get_option('bpf').enabled())
+            if target_bpf.returncode() == 0
+                bpf_args += ['-target', 'bpf']
+            else
+                prog_bpf = disabler()
+            endif
+        endif
+    endif
+else
+    prog_bpf = disabler()
+endif
+
 dep_alsa = dependency('alsa', required : false)
 if dep_alsa.found()
     conf.set('HAVE_ALSA', 1)
diff --git a/utils/keytable/bpf_protocols/cc_sys_includes.sh 
b/utils/keytable/bpf_protocols/cc_sys_includes.sh
new file mode 100755
index 000000000000..0a8fa27792dc
--- /dev/null
+++ b/utils/keytable/bpf_protocols/cc_sys_includes.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+# Get C compiler's default includes on this system, as the BPF toolchain
+# generally doesn't see the Linux headers. This fixes "missing" files on some
+# architectures/distros, such as asm/byteorder.h, asm/socket.h, asm/sockios.h,
+# sys/cdefs.h etc.
+#
+# Use '-idirafter': Don't interfere with include mechanics except where the
+# build would have failed anyways.
+"$@" -v -E - </dev/null 2>&1 \
+       | sed -n '/<...> search starts here:/,/End of search list./{ s| 
\(/.*\)|-idirafter \1|p }'
diff --git a/utils/keytable/bpf_protocols/clang_sys_includes.sh 
b/utils/keytable/bpf_protocols/clang_sys_includes.sh
deleted file mode 100755
index 9dc4af12ecbb..000000000000
--- a/utils/keytable/bpf_protocols/clang_sys_includes.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-# Get Clang's default includes on this system, as opposed to those seen by
-# '-target bpf'. This fixes "missing" files on some architectures/distros,
-# such as asm/byteorder.h, asm/socket.h, asm/sockios.h, sys/cdefs.h etc.
-#
-# Use '-idirafter': Don't interfere with include mechanics except where the
-# build would have failed anyways.
-$CLANG -v -E - </dev/null 2>&1 \
-       | sed -n '/<...> search starts here:/,/End of search list./{ s| 
\(/.*\)|-idirafter \1|p }'
diff --git a/utils/keytable/bpf_protocols/meson.build 
b/utils/keytable/bpf_protocols/meson.build
index 1e4f0064fdd8..dbb926c497c4 100644
--- a/utils/keytable/bpf_protocols/meson.build
+++ b/utils/keytable/bpf_protocols/meson.build
@@ -10,9 +10,9 @@ bpf_protocols_files = [
     'xbox-dvd',
 ]
 
-clang_sys_includes = run_command('clang_sys_includes.sh',
-                                 check : true,
-                                 env : ['CLANG=' + prog_clang.full_path()])
+bpf_args += run_command('cc_sys_includes.sh',
+                        cc.cmd_array(),
+                        check : true).stdout().split()
 
 foreach file : bpf_protocols_files
     output = file + '.o'
@@ -21,9 +21,9 @@ foreach file : bpf_protocols_files
                   output : output,
                   input : input,
                   command : [
-                      prog_clang,
-                      clang_sys_includes.stdout().split(),
-                      '-D__linux__', '-fno-stack-protector', '-target', 'bpf',
+                      prog_bpf,
+                      bpf_args,
+                      '-D__linux__', '-fno-stack-protector',
                       '-O2', '-c', '@INPUT@', '-o', '@OUTPUT@',
                   ],
                   install : true,
diff --git a/utils/keytable/meson.build b/utils/keytable/meson.build
index e214e0b598e9..56e61a7917ab 100644
--- a/utils/keytable/meson.build
+++ b/utils/keytable/meson.build
@@ -22,7 +22,7 @@ ir_keytable_c_args = [
     '-DIR_KEYTABLE_USER_DIR="@0@"'.format(ir_keytable_user_dir),
 ]
 
-ir_bpf_enabled = prog_clang.found() and dep_libbpf.found() and 
dep_libelf.found()
+ir_bpf_enabled = prog_bpf.found() and dep_libbpf.found() and dep_libelf.found()
 
 if ir_bpf_enabled
     ir_keytable_sources += files(

Reply via email to