CONFIG_WERROR makes warnings into errors, but it only happens for *.c files because -Werror is added to KBUILD_CFLAGS. For example, you can put a #warning directive in any preprocessed source file: #warning "blah blah ..." If it is placed in a *.c file, it emits a warning by default, and it is promoted to an error when CONFIG_WERROR is enabled: error: #warning "blah blah ..." [-Werror=cpp] If it is placed in a *.S file, it is still a warning. Move it to KBUILD_CPPFLAGS, so it works in the same way for *.c, *.S, *.lds.S or whatever needs preprocessing. Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx> --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index ebcb75442d7f..027d9163eff6 100644 --- a/Makefile +++ b/Makefile @@ -788,7 +788,8 @@ stackp-flags-$(CONFIG_STACKPROTECTOR_STRONG) := -fstack-protector-strong KBUILD_CFLAGS += $(stackp-flags-y) -KBUILD_CFLAGS-$(CONFIG_WERROR) += -Werror +KBUILD_CPPFLAGS-$(CONFIG_WERROR) += -Werror +KBUILD_CPPFLAGS += $(KBUILD_CPPFLAGS-y) KBUILD_CFLAGS-$(CONFIG_CC_NO_ARRAY_BOUNDS) += -Wno-array-bounds KBUILD_CFLAGS += $(KBUILD_CFLAGS-y) $(CONFIG_CC_IMPLICIT_FALLTHROUGH) -- 2.34.1