Thomas Weißschuh and Nicolas Schier
dcc99abebf
kbuild: uapi: also test UAPI headers against C++ compilers
...
C++ language requirements differ from those of C.
Also test the headers against C++ compilers to make sure no errors
creep in accidentally.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net >
Reviewed-by: Nathan Chancellor <nathan@kernel.org >
Link: https://patch.msgid.link/20260316-kbuild-uapi-c-v2-5-35d6d0ed863f@weissschuh.net
Signed-off-by: Nicolas Schier <nsc@kernel.org >
2026-03-25 13:24:42 +01:00
Thomas Weißschuh and Nicolas Schier
b4ec38cb73
kbuild: uapi: handle UML in architecture-specific exclusion lists
...
When building User Mode Linux SRCARCH is set to 'um', while the actual
underlying architecture is provided in HEADER_ARCH.
Allow the exclusion lists to work on UML by comparing against
HEADER_ARCH when that is available.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net >
Reviewed-by: Nathan Chancellor <nathan@kernel.org >
Link: https://patch.msgid.link/20260316-kbuild-uapi-c-v2-3-35d6d0ed863f@weissschuh.net
Signed-off-by: Nicolas Schier <nsc@kernel.org >
2026-03-25 13:24:41 +01:00
Thomas Weißschuh and Nicolas Schier
cf82241309
kbuild: uapi: move all include path flags together
...
The argument to add the root of the UAPI header tree to the include path
is separated from the other arguments concerning the include path.
Move all include path arguments together for more consistency and
balanced line lengths.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net >
Reviewed-by: Nathan Chancellor <nathan@kernel.org >
Link: https://patch.msgid.link/20260316-kbuild-uapi-c-v2-2-35d6d0ed863f@weissschuh.net
Signed-off-by: Nicolas Schier <nsc@kernel.org >
2026-03-25 13:24:40 +01:00
Thomas Weißschuh and Nicolas Schier
55d68ec5b9
kbuild: uapi: move some compiler arguments out of the command definition
...
Simplify the definition of cmd_hdrtest by moving some of it to a new
variable. This will both enable the upcoming reuse of those flags
and also the extension of cmd_hdrtest.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net >
Reviewed-by: Nathan Chancellor <nathan@kernel.org >
Link: https://patch.msgid.link/20260316-kbuild-uapi-c-v2-1-35d6d0ed863f@weissschuh.net
Signed-off-by: Nicolas Schier <nsc@kernel.org >
2026-03-25 13:24:40 +01:00
Thomas Weißschuh and Nicolas Schier
510c7a5736
kbuild: uapi: simplify libc dependency logic
...
The only left user of the condition inverts it.
Invert the condition completely and simplify its user.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net >
Reviewed-by: Nathan Chancellor <nathan@kernel.org >
Reviewed-by: Nicolas Schier <nsc@kernel.org >
Tested-by: Nicolas Schier <nsc@kernel.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Link: https://patch.msgid.link/20260227-kbuild-uapi-libc-v1-8-c17de0d19776@weissschuh.net
Signed-off-by: Nicolas Schier <nsc@kernel.org >
2026-03-12 12:48:08 +01:00
Thomas Weißschuh and Nicolas Schier
579f103fb9
kbuild: uapi: use custom stub headers instead of libc ones
...
Now that custom stub headers are provided for all libc headers used from
the UAPI headers, the dependency on the toolchain libc can be dropped.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net >
Reviewed-by: Nathan Chancellor <nathan@kernel.org >
Reviewed-by: Nicolas Schier <nsc@kernel.org >
Tested-by: Nicolas Schier <nsc@kernel.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Link: https://patch.msgid.link/20260227-kbuild-uapi-libc-v1-7-c17de0d19776@weissschuh.net
Signed-off-by: Nicolas Schier <nsc@kernel.org >
2026-03-12 12:48:08 +01:00
Thomas Weißschuh and Nicolas Schier
0ef1b7a66b
kbuild: uapi: only use dummy-include for headers which use libc
...
The headers which do not rely on libc are using built using -nostdinc.
For them the dummy headers are pointless.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net >
Reviewed-by: Nathan Chancellor <nathan@kernel.org >
Reviewed-by: Nicolas Schier <nsc@kernel.org >
Tested-by: Nicolas Schier <nsc@kernel.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Link: https://patch.msgid.link/20260227-kbuild-uapi-libc-v1-5-c17de0d19776@weissschuh.net
Signed-off-by: Nicolas Schier <nsc@kernel.org >
2026-03-12 12:48:08 +01:00
Thomas Weißschuh and Nicolas Schier
60a16beedf
kbuild: uapi: completely exclude linux/bpf_perf_event.h on nios2
...
This header is actually not buildable on nios. As nobody built nios2
with CONFIG_CC_CAN_LINK=y so far, this produced no errors.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net >
Reviewed-by: Nathan Chancellor <nathan@kernel.org >
Reviewed-by: Nicolas Schier <nsc@kernel.org >
Tested-by: Nicolas Schier <nsc@kernel.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Link: https://patch.msgid.link/20260227-kbuild-uapi-libc-v1-4-c17de0d19776@weissschuh.net
Signed-off-by: Nicolas Schier <nsc@kernel.org >
2026-03-12 12:48:07 +01:00
Thomas Weißschuh and Nicolas Schier
45bd8643c1
kbuild: uapi: deduplicate linux/bpf_perf_event.h exclusions
...
This header is excluded for multiple architectures.
Use a single exclusion for all of them.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net >
Reviewed-by: Nathan Chancellor <nathan@kernel.org >
Reviewed-by: Nicolas Schier <nsc@kernel.org >
Tested-by: Nicolas Schier <nsc@kernel.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Link: https://patch.msgid.link/20260227-kbuild-uapi-libc-v1-3-c17de0d19776@weissschuh.net
Signed-off-by: Nicolas Schier <nsc@kernel.org >
2026-03-12 12:48:07 +01:00
Thomas Weißschuh and Nicolas Schier
a8c9d3cc23
kbuild: uapi: test linux/bpf_perf_event.h on powerpc
...
This header works now, so test it.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net >
Reviewed-by: Nathan Chancellor <nathan@kernel.org >
Reviewed-by: Nicolas Schier <nsc@kernel.org >
Tested-by: Nicolas Schier <nsc@kernel.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Link: https://patch.msgid.link/20260227-kbuild-uapi-libc-v1-2-c17de0d19776@weissschuh.net
Signed-off-by: Nicolas Schier <nsc@kernel.org >
2026-03-12 12:48:07 +01:00
Thomas Weißschuh and Nathan Chancellor
2a0a30805a
kbuild: uapi: drop dependency on CC_CAN_LINK
...
The header tests try to compile each header. Some UAPI headers depend on
libc headers so they need a full userspace toolchain to build. This
dependency is expressed in kconfig as a dependency on CC_CAN_LINK.
Many kernel builds do not satisfy CC_CAN_LINK as they only use a
minimal kernel (cross-) compiler. In those configurations the UAPI
headers are not tested at all.
However most UAPI headers do not even depend on any libc headers,
and such dependencies are undesired in any case. Also the static
analysis performed by headers_check.pl does not need CC_CAN_LINK.
Drop the hard dependency on CC_CAN_LINK and instead skip the affected
compilation step for exactly those headers which require libc.
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de >
Link: https://patch.msgid.link/20251223-uapi-nostdinc-v1-5-d91545d794f7@linutronix.de
Signed-off-by: Nathan Chancellor <nathan@kernel.org >
2026-01-16 15:02:11 -07:00
Thomas Weißschuh and Nathan Chancellor
4ac85d9bc7
kbuild: uapi: split out command conditions into variables
...
The condition logic will become a bit more complicated.
Split them out into dedicated variables so they stay readable.
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de >
Link: https://patch.msgid.link/20251223-uapi-nostdinc-v1-4-d91545d794f7@linutronix.de
Signed-off-by: Nathan Chancellor <nathan@kernel.org >
2026-01-06 15:07:32 -07:00
Thomas Weißschuh and Nathan Chancellor
e2772ba5f4
kbuild: uapi: don't compile test bpf_perf_event.h on xtensa
...
The xtensa UAPI headers do not provide 'struct pt_regs',
triggering an error:
usr/include/linux/bpf_perf_event.h:14:28: error: field 'regs' has incomplete type
Disable the header tests for this file on xtensa.
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de >
Link: https://patch.msgid.link/20251223-uapi-nostdinc-v1-3-d91545d794f7@linutronix.de
Signed-off-by: Nathan Chancellor <nathan@kernel.org >
2026-01-06 15:07:32 -07:00
Thomas Weißschuh and Nathan Chancellor
6059b880a9
kbuild: uapi: validate that headers do not use libc
...
The UAPI headers should be self-contained. That means they should not
use other headers from libc. Currently this is not enforced and various
dependencies have crept in.
Add a check to make sure no new ones are added.
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de >
Link: https://patch.msgid.link/20251223-uapi-nostdinc-v1-1-d91545d794f7@linutronix.de
Signed-off-by: Nathan Chancellor <nathan@kernel.org >
2026-01-06 15:07:32 -07:00
Thomas Weißschuh and Nathan Chancellor
1b5e068d59
kbuild: uapi: Drop check_config()
...
headers_install.sh already tests for CONFIG symbols. It does so in a
more comprehensive way, by only checking for references in code and
also running even if CONFIG_UAPI_HEADER_TEST is disabled.
And check_config() has been disabled any case.
Drop the pointless check.
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de >
Reviewed-by: Nicolas Schier <nsc@kernel.org >
Link: https://patch.msgid.link/20251230-uapi-check_config-v1-1-00ecec109f39@linutronix.de
Signed-off-by: Nathan Chancellor <nathan@kernel.org >
2025-12-30 13:06:03 -07:00
Nathan Chancellor and Nicolas Schier
2d7eda1db5
kbuild: uapi: Drop types.h check from headers_check.pl
...
Since commit d6fc9fcbaa ("kbuild: compile-test exported headers to
ensure they are self-contained"), the UAPI headers are compile tested
standalone with the compiler. This compile testing will catch a missing
include of types.h, making the types.h checking in headers_check.pl
originally added in commit 483b41218f ("kbuild: add checks for include
of linux/types in userspace headers") obsolete.
Signed-off-by: Nathan Chancellor <nathan@kernel.org >
Reviewed-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de >
Link: https://patch.msgid.link/20251023-headers-pl-drop-check-sizes-v1-1-18bd21cf8f5e@kernel.org
Signed-off-by: Nicolas Schier <nsc@kernel.org >
2025-11-08 12:18:00 +01:00
Thomas Weißschuh and Nicolas Schier
c4cb34aee1
kbuild: uapi: reuse KBUILD_USERCFLAGS
...
The toplevel Makefile already provides the compiler flags necessary to
build userspace applications for the target.
Make use of them instead of duplicating the logic.
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de >
Reviewed-by: Nathan Chancellor <nathan@kernel.org >
Link: https://patch.msgid.link/20251014-kbuild-uapi-usercflags-v1-1-c162f9059c47@linutronix.de
Signed-off-by: Nicolas Schier <nsc@kernel.org >
2025-11-08 12:17:59 +01:00
Geert Uytterhoeven and Nathan Chancellor
66128f4287
kbuild: uapi: Strip comments before size type check
...
On m68k, check_sizetypes in headers_check reports:
./usr/include/asm/bootinfo-amiga.h:17: found __[us]{8,16,32,64} type without #include <linux/types.h>
This header file does not use any of the Linux-specific integer types,
but merely refers to them from comments, so this is a false positive.
As of commit c3a9d74ee4 ("kbuild: uapi: upgrade check_sizetypes()
warning to error"), this check was promoted to an error, breaking m68k
all{mod,yes}config builds.
Fix this by stripping simple comments before looking for Linux-specific
integer types.
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org >
Reviewed-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de >
Link: https://patch.msgid.link/949f096337e28d50510e970ae3ba3ec9c1342ec0.1759753998.git.geert@linux-m68k.org
[nathan: Adjust comment and remove unnecessary escaping from slashes in
regex]
Signed-off-by: Nathan Chancellor <nathan@kernel.org >
2025-10-06 11:31:19 -07:00
Thomas Weißschuh and Nathan Chancellor
b8d762c983
kbuild: uapi: upgrade check_declarations() warning to error
...
No problematic declarations exist anymore.
Make sure it stays this way.
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de >
Reviewed-by: Nicolas Schier <nsc@kernel.org >
Link: https://lore.kernel.org/r/20250813-kbuild-hdrtest-fixes-v2-5-8a7921ca3a03@linutronix.de
Signed-off-by: Nathan Chancellor <nathan@kernel.org >
2025-08-13 14:00:35 -07:00
Thomas Weißschuh and Nathan Chancellor
c3a9d74ee4
kbuild: uapi: upgrade check_sizetypes() warning to error
...
No problematic type usages exist anymore.
Make sure it stays this way.
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de >
Reviewed-by: Nicolas Schier <nsc@kernel.org >
Link: https://lore.kernel.org/r/20250813-kbuild-hdrtest-fixes-v2-4-8a7921ca3a03@linutronix.de
Signed-off-by: Nathan Chancellor <nathan@kernel.org >
2025-08-13 14:00:34 -07:00
Thomas Weißschuh and Nathan Chancellor
24b1bd64ee
kbuild: uapi: upgrade warning on asm/types.h inclusion to error
...
No usages of '#include <asm/types.h> in the UAPI headers exist anymore.
Make sure it stays this way.
Add a semicolon to the end of the previous printf call to keep the
syntax valid.
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de >
Reviewed-by: Nicolas Schier <nsc@kernel.org >
Link: https://lore.kernel.org/r/20250813-kbuild-hdrtest-fixes-v2-3-8a7921ca3a03@linutronix.de
Signed-off-by: Nathan Chancellor <nathan@kernel.org >
2025-08-13 14:00:34 -07:00
Thomas Weißschuh and Nathan Chancellor
3788d69db1
kbuild: uapi: fail header test on compiler warnings
...
Compiler warnings also indicate issues with the headers.
Make sure they don't go unnoticed.
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de >
Reviewed-by: Nicolas Schier <nsc@kernel.org >
Link: https://lore.kernel.org/r/20250813-kbuild-hdrtest-fixes-v2-2-8a7921ca3a03@linutronix.de
Signed-off-by: Nathan Chancellor <nathan@kernel.org >
2025-08-13 14:00:34 -07:00
Thomas Weißschuh and Nathan Chancellor
d4b7080be2
kbuild: uapi: rerun header tests when headers_check.pl changes
...
If the checks change they need to be rerun.
Add a Makefile dependency so this happens.
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de >
Reviewed-by: Nicolas Schier <nsc@kernel.org >
Link: https://lore.kernel.org/r/20250813-kbuild-hdrtest-fixes-v2-1-8a7921ca3a03@linutronix.de
Signed-off-by: Nathan Chancellor <nathan@kernel.org >
2025-08-13 14:00:33 -07:00
Randy Dunlap and Masahiro Yamada
56045757ac
usr/include: openrisc: don't HDRTEST bpf_perf_event.h
...
Since openrisc does not support PERF_EVENTS, omit the HDRTEST of
bpf_perf_event.h for arch/openrisc/.
Fixes a build error:
usr/include/linux/bpf_perf_event.h:14:28: error: field 'regs' has incomplete type
Signed-off-by: Randy Dunlap <rdunlap@infradead.org >
Acked-by: Stafford Horne <shorne@gmail.com >
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org >
2025-05-12 15:03:17 +09:00
Arnd Bergmann and Masahiro Yamada
02e9a22cee
kbuild: hdrcheck: fix cross build with clang
...
The headercheck tries to call clang with a mix of compiler arguments
that don't include the target architecture. When building e.g. x86
headers on arm64, this produces a warning like
clang: warning: unknown platform, assuming -mfloat-abi=soft
Add in the KBUILD_CPPFLAGS, which contain the target, in order to make it
build properly.
See also 1b71c2fb04 ("kbuild: userprogs: fix bitsize and target
detection on clang").
Reviewed-by: Nathan Chancellor <nathan@kernel.org >
Fixes: feb843a469 ("kbuild: add $(CLANG_FLAGS) to KBUILD_CPPFLAGS")
Signed-off-by: Arnd Bergmann <arnd@arndb.de >
2025-03-05 04:06:45 +09:00