* [PATCH 0/2] Initial ergonomic improvements to scripts/Kconfig.toolchain
@ 2026-10-07 15:22 Nathan Chancellor
2026-10-07 15:22 ` [PATCH 1/2] scripts/Kconfig.toolchain: Drop compiler symbols from dependencies Nathan Chancellor
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Nathan Chancellor @ 2026-10-07 15:22 UTC (permalink / raw)
To: Nathan Chancellor, Nicolas Schier, Julian Braha
Cc: Lorenzo Stoakes, Kees Cook, linux-kbuild, linux-kernel
Hi all,
This series includes a cleanup to scripts/Kconfig.toolchain around
dependencies (the first patch) and improves the ergonomics of using
cc-option and cc-option-str in Kconfig to disable warnings, making
Kconfig and Kbuild more unified in their behavior (the second patch).
---
Nathan Chancellor (2):
scripts/Kconfig.toolchain: Drop compiler symbols from dependencies
kconfig: Improve ergonomics around disabling warnings with cc-option
scripts/Kconfig.include | 2 +-
scripts/Kconfig.toolchain | 22 +++++++++++-----------
2 files changed, 12 insertions(+), 12 deletions(-)
---
base-commit: a98db7418797bc27bef53c861b97ac748f598414
change-id: 20261007-scripts-kconfig-toolchain-improvements-2e5f023ba136
Best regards,
--
Cheers,
Nathan
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/2] scripts/Kconfig.toolchain: Drop compiler symbols from dependencies
2026-10-07 15:22 [PATCH 0/2] Initial ergonomic improvements to scripts/Kconfig.toolchain Nathan Chancellor
@ 2026-10-07 15:22 ` Nathan Chancellor
2026-10-07 15:22 ` [PATCH 2/2] kconfig: Improve ergonomics around disabling warnings with cc-option Nathan Chancellor
2026-10-07 16:48 ` [PATCH 0/2] Initial ergonomic improvements to scripts/Kconfig.toolchain Nicolas Schier
2 siblings, 0 replies; 4+ messages in thread
From: Nathan Chancellor @ 2026-10-07 15:22 UTC (permalink / raw)
To: Nathan Chancellor, Nicolas Schier, Julian Braha
Cc: Lorenzo Stoakes, Kees Cook, linux-kbuild, linux-kernel
Commit 454e00cf8ee5 ("kbuild: avoid re-running compiler and linker
probes") moved many cc-option calls from the main Makefile into Kconfig.
In the process, code such as
ifdef CONFIG_CC_IS_GCC
KBUILD_CFLAGS += $(call cc-option,-foo)
endif
was converted into Kconfig as
config CC_OPT_FOO
def_string "$(cc-option-str,-foo)" if CC_IS_GCC
The 'if CC_IS_GCC' is generally unnecessary because it does not prevent
the cc-option-str call from running (which is the primary reason the
ifdef guards exists in the Makefile), as cc-option-str and the like are
run before Kconfig even parses the dependency. It only impacts the
symbol's visibility, which does not really matter in the general case,
so remove these dependencies.
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
---
scripts/Kconfig.toolchain | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/scripts/Kconfig.toolchain b/scripts/Kconfig.toolchain
index d708a175fe48..c9a1692e6149 100644
--- a/scripts/Kconfig.toolchain
+++ b/scripts/Kconfig.toolchain
@@ -161,10 +161,10 @@ config CC_OPT_STRICT_FLEX_ARRAYS
# gcc-10 renamed --param=allow-store-data-races=0 to -fno-allow-store-data-races
config CC_OPT_ALLOW_STORE_DATA_RACES_PARAM
- def_string "$(cc-option-str,--param=allow-store-data-races=0)" if CC_IS_GCC
+ def_string "$(cc-option-str,--param=allow-store-data-races=0)"
config CC_OPT_NO_ALLOW_STORE_DATA_RACES
- def_string "$(cc-option-str,-fno-allow-store-data-races)" if CC_IS_GCC
+ def_string "$(cc-option-str,-fno-allow-store-data-races)"
config CC_HAS_MNOP_MCOUNT
def_bool $(cc-option,-mnop-mcount)
@@ -183,13 +183,13 @@ config CC_OPT_WNO_ADDRESS_OF_PACKED_MEMBER
def_string "-Wno-address-of-packed-member" if $(cc-option,-Waddress-of-packed-member)
config CC_OPT_WNO_FORMAT_OVERFLOW_NON_KPRINTF
- def_string "-Wno-format-overflow-non-kprintf" if CC_IS_CLANG && $(cc-option,-Wformat-overflow-non-kprintf)
+ def_string "-Wno-format-overflow-non-kprintf" if $(cc-option,-Wformat-overflow-non-kprintf)
config CC_OPT_WNO_FORMAT_TRUNCATION_NON_KPRINTF
- def_string "-Wno-format-truncation-non-kprintf" if CC_IS_CLANG && $(cc-option,-Wformat-truncation-non-kprintf)
+ def_string "-Wno-format-truncation-non-kprintf" if $(cc-option,-Wformat-truncation-non-kprintf)
config CC_OPT_WNO_DEFAULT_CONST_INIT_UNSAFE
- def_string "-Wno-default-const-init-unsafe" if CC_IS_CLANG && $(cc-option,-Wdefault-const-init-unsafe)
+ def_string "-Wno-default-const-init-unsafe" if $(cc-option,-Wdefault-const-init-unsafe)
config CC_OPT_WNO_DANGLING_POINTER
def_string "-Wno-dangling-pointer" if $(cc-option,-Wdangling-pointer)
--
2.56.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 2/2] kconfig: Improve ergonomics around disabling warnings with cc-option
2026-10-07 15:22 [PATCH 0/2] Initial ergonomic improvements to scripts/Kconfig.toolchain Nathan Chancellor
2026-10-07 15:22 ` [PATCH 1/2] scripts/Kconfig.toolchain: Drop compiler symbols from dependencies Nathan Chancellor
@ 2026-10-07 15:22 ` Nathan Chancellor
2026-10-07 16:48 ` [PATCH 0/2] Initial ergonomic improvements to scripts/Kconfig.toolchain Nicolas Schier
2 siblings, 0 replies; 4+ messages in thread
From: Nathan Chancellor @ 2026-10-07 15:22 UTC (permalink / raw)
To: Nathan Chancellor, Nicolas Schier, Julian Braha
Cc: Lorenzo Stoakes, Kees Cook, linux-kbuild, linux-kernel
This is essentially a port of commit 550ccb178de2 ("Make 'cc-option'
work correctly for the -Wno-xyzzy pattern") to scripts/Kconfig.include,
which simplifies the definition of many of the newly added CC_OPT_WNO_
symbols in scripts/Kconfig.toolchain and matches cc-option's behavior in
Kbuild.
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
---
scripts/Kconfig.include | 2 +-
scripts/Kconfig.toolchain | 18 +++++++++---------
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include
index 622d21e6953f..a7d9201acfcc 100644
--- a/scripts/Kconfig.include
+++ b/scripts/Kconfig.include
@@ -26,7 +26,7 @@ failure = $(if-success,$(1),n,y)
# $(cc-probe,<flag>)
# The command $(cc-option) and $(cc-option-str) test <flag> with. Not meant
# to be called directly; use one of those two instead.
-cc-probe = trap "rm -rf .tmp_$$" EXIT; mkdir .tmp_$$; $(CC) -Werror $(CLANG_FLAGS) $(1) -c -x c /dev/null -o .tmp_$$/tmp.o
+cc-probe = trap "rm -rf .tmp_$$" EXIT; mkdir .tmp_$$; $(CC) -Werror $(CLANG_FLAGS) $(shell,echo $(1) | sed "s;^-Wno-;-W;") -c -x c /dev/null -o .tmp_$$/tmp.o
# $(cc-option,<flag>)
# Return y if the compiler supports <flag>, n otherwise
diff --git a/scripts/Kconfig.toolchain b/scripts/Kconfig.toolchain
index c9a1692e6149..254393d4f98a 100644
--- a/scripts/Kconfig.toolchain
+++ b/scripts/Kconfig.toolchain
@@ -180,19 +180,19 @@ config LD_OPT_NO_WARN_RWX_SEGMENTS
def_string "$(ld-option-str,--no-warn-rwx-segments)"
config CC_OPT_WNO_ADDRESS_OF_PACKED_MEMBER
- def_string "-Wno-address-of-packed-member" if $(cc-option,-Waddress-of-packed-member)
+ def_string "$(cc-option-str,-Wno-address-of-packed-member)"
config CC_OPT_WNO_FORMAT_OVERFLOW_NON_KPRINTF
- def_string "-Wno-format-overflow-non-kprintf" if $(cc-option,-Wformat-overflow-non-kprintf)
+ def_string "$(cc-option-str,-Wno-format-overflow-non-kprintf)"
config CC_OPT_WNO_FORMAT_TRUNCATION_NON_KPRINTF
- def_string "-Wno-format-truncation-non-kprintf" if $(cc-option,-Wformat-truncation-non-kprintf)
+ def_string "$(cc-option-str,-Wno-format-truncation-non-kprintf)"
config CC_OPT_WNO_DEFAULT_CONST_INIT_UNSAFE
- def_string "-Wno-default-const-init-unsafe" if $(cc-option,-Wdefault-const-init-unsafe)
+ def_string "$(cc-option-str,-Wno-default-const-init-unsafe)"
config CC_OPT_WNO_DANGLING_POINTER
- def_string "-Wno-dangling-pointer" if $(cc-option,-Wdangling-pointer)
+ def_string "$(cc-option-str,-Wno-dangling-pointer)"
config CC_OPT_WVLA_LARGER_THAN
def_string "$(cc-option-str,-Wvla-larger-than=1)"
@@ -201,7 +201,7 @@ config CC_HAS_WSTRINGOP_OVERFLOW
def_bool $(cc-option,-Wstringop-overflow)
config CC_OPT_WNO_UNTERMINATED_STRING_INITIALIZATION
- def_string "-Wno-unterminated-string-initialization" if $(cc-option,-Wunterminated-string-initialization)
+ def_string "$(cc-option-str,-Wno-unterminated-string-initialization)"
config CC_OPT_WERROR_DESIGNATED_INIT
def_string "$(cc-option-str,-Werror=designated-init)"
@@ -210,13 +210,13 @@ config CC_OPT_WENUM_CONVERSION
def_string "$(cc-option-str,-Wenum-conversion)"
config CC_OPT_WNO_PACKED_NOT_ALIGNED
- def_string "-Wno-packed-not-aligned" if $(cc-option,-Wpacked-not-aligned)
+ def_string "$(cc-option-str,-Wno-packed-not-aligned)"
config CC_OPT_WNO_FORMAT_OVERFLOW
- def_string "-Wno-format-overflow" if $(cc-option,-Wformat-overflow)
+ def_string "$(cc-option-str,-Wno-format-overflow)"
config CC_OPT_WNO_STRINGOP_TRUNCATION
- def_string "-Wno-stringop-truncation" if $(cc-option,-Wstringop-truncation)
+ def_string "$(cc-option-str,-Wno-stringop-truncation)"
config CC_HAS_COUNTED_BY
bool
--
2.56.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 0/2] Initial ergonomic improvements to scripts/Kconfig.toolchain
2026-10-07 15:22 [PATCH 0/2] Initial ergonomic improvements to scripts/Kconfig.toolchain Nathan Chancellor
2026-10-07 15:22 ` [PATCH 1/2] scripts/Kconfig.toolchain: Drop compiler symbols from dependencies Nathan Chancellor
2026-10-07 15:22 ` [PATCH 2/2] kconfig: Improve ergonomics around disabling warnings with cc-option Nathan Chancellor
@ 2026-10-07 16:48 ` Nicolas Schier
2 siblings, 0 replies; 4+ messages in thread
From: Nicolas Schier @ 2026-10-07 16:48 UTC (permalink / raw)
To: Nathan Chancellor
Cc: Nicolas Schier, Julian Braha, Lorenzo Stoakes, Kees Cook,
linux-kbuild, linux-kernel
> Hi all,
>
> This series includes a cleanup to scripts/Kconfig.toolchain around
> dependencies (the first patch) and improves the ergonomics of using
> cc-option and cc-option-str in Kconfig to disable warnings, making
> Kconfig and Kbuild more unified in their behavior (the second patch).
>
> ---
> Nathan Chancellor (2):
> scripts/Kconfig.toolchain: Drop compiler symbols from dependencies
> kconfig: Improve ergonomics around disabling warnings with cc-option
>
> scripts/Kconfig.include | 2 +-
> scripts/Kconfig.toolchain | 22 +++++++++++-----------
> 2 files changed, 12 insertions(+), 12 deletions(-)
Thanks, straight-forward!
When I look into the resulting .config, I'd wish, these empty string
kconfig symbols could be unset, e.g.
# CONFIG_CC_OPT_WNO_FORMAT_TRUNCATION_NON_KPRINTF is not set
# CONFIG_CC_OPT_WNO_DEFAULT_CONST_INIT_UNSAFE is not set
CONFIG_CC_OPT_WNO_DANGLING_POINTER="-Wno-dangling-pointer"
CONFIG_CC_OPT_WVLA_LARGER_THAN="-Wvla-larger-than=1"
CONFIG_CC_HAS_WSTRINGOP_OVERFLOW=y
instead of the current:
CONFIG_CC_OPT_WNO_FORMAT_TRUNCATION_NON_KPRINTF=""
CONFIG_CC_OPT_WNO_DEFAULT_CONST_INIT_UNSAFE=""
CONFIG_CC_OPT_WNO_DANGLING_POINTER="-Wno-dangling-pointer"
CONFIG_CC_OPT_WVLA_LARGER_THAN="-Wvla-larger-than=1"
CONFIG_CC_HAS_WSTRINGOP_OVERFLOW=y
but that would make things unneccessary more complicated, right now.
Reviewed-by: Nicolas Schier <nsc@kernel.org>
--
Nicolas
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-10-07 16:48 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-07 15:22 [PATCH 0/2] Initial ergonomic improvements to scripts/Kconfig.toolchain Nathan Chancellor
2026-10-07 15:22 ` [PATCH 1/2] scripts/Kconfig.toolchain: Drop compiler symbols from dependencies Nathan Chancellor
2026-10-07 15:22 ` [PATCH 2/2] kconfig: Improve ergonomics around disabling warnings with cc-option Nathan Chancellor
2026-10-07 16:48 ` [PATCH 0/2] Initial ergonomic improvements to scripts/Kconfig.toolchain Nicolas Schier
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®