]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
kbuild: uapi: drop dependency on CC_CAN_LINK
authorThomas Weißschuh <thomas.weissschuh@linutronix.de>
Tue, 23 Dec 2025 07:04:12 +0000 (08:04 +0100)
committerNathan Chancellor <nathan@kernel.org>
Fri, 16 Jan 2026 22:02:11 +0000 (15:02 -0700)
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>
init/Kconfig
usr/include/Makefile

index fa79feb8fe57bb01d8ce8f35e33535709b57d452..4e7ae65683eec0ba186593ddcd569f940d729910 100644 (file)
@@ -247,7 +247,7 @@ config WERROR
 
 config UAPI_HEADER_TEST
        bool "Compile test UAPI headers"
-       depends on HEADERS_INSTALL && CC_CAN_LINK
+       depends on HEADERS_INSTALL
        help
          Compile test headers exported to user-space to ensure they are
          self-contained, i.e. compilable as standalone units.
index fa01bcda21f5207dd01c74de77f53e48c165aac6..6d86a53c6f0a3d341e369ed68a7061fd39f14e5b 100644 (file)
@@ -151,7 +151,8 @@ endif
 always-y := $(patsubst $(obj)/%.h,%.hdrtest, $(shell find $(obj) -name '*.h' 2>/dev/null))
 
 target-no-libc = $(filter-out $(uses-libc), $*.h)
-target-can-compile = $(filter-out $(no-header-test), $*.h)
+target-can-compile = $(and $(filter-out $(no-header-test), $*.h), \
+                           $(or $(CONFIG_CC_CAN_LINK), $(target-no-libc)))
 
 # Include the header twice to detect missing include guard.
 quiet_cmd_hdrtest = HDRTEST $<