mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [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®