[PATCH v6 2/4] rust: generate a fatal error if BINDGEN_TARGET is undefined

From: Asuna Yang

Date: Tue Dec 30 2025 - 11:49:01 EST


Generate a friendly fatal error if the target triplet is undefined for
bindgen, rather than having the compiler generate obscure error messages
during the build stage.

`BINDGEN_TARGET` is actually defined in `scripts/Makefile.rust`, but the
file is included regardless of whether Rust is enabled, so perform this
check in `rust/Makefile` to avoid breaking targets that do not yet
support Rust builds.

This piece of code is copied from `scripts/Makefile.clang`.

Before this commit, error messages might look like:

error: unknown argument: '-mno-riscv-attribute'
error: unsupported argument 'medany' to option '-mcmodel=' for target
'unknown'
error: unsupported option '-march=' for target ''
error: unsupported option '-mno-save-restore' for target ''
error: unknown target triple 'unknown'
panicked at bindgen/ir/context.rs:562:15:
libclang error; possible causes include:
- Invalid flag syntax
- Unrecognized flags
- Invalid flag arguments
- File I/O errors
- Host vs. target architecture mismatch

Acked-by: Miguel Ojeda <ojeda@xxxxxxxxxx>
Signed-off-by: Asuna Yang <xinrui.riscv@xxxxxxxxxxxxxxxx>
---
rust/Makefile | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/rust/Makefile b/rust/Makefile
index 2603b34f9833..37b4205afb70 100644
--- a/rust/Makefile
+++ b/rust/Makefile
@@ -385,6 +385,12 @@ bindgen_skip_c_flags := -mno-fp-ret-in-387 -mpreferred-stack-boundary=% \
-fzero-init-padding-bits=% -mno-fdpic \
--param=% --param asan-% -fno-isolate-erroneous-paths-dereference

+# Because scripts/Makefile.rust is included regardless of whether Rust is enabled,
+# we perform this check here to avoid breaking targets that do not yet support Rust builds.
+ifeq ($(BINDGEN_TARGET),)
+$(error add '--target=' option to scripts/Makefile.rust)
+endif
+
# All warnings are inhibited since GCC builds are very experimental,
# many GCC warnings are not supported by Clang, they may only appear in
# some configurations, with new GCC versions, etc.

--
2.51.1