mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 0/3] kconfig: Introduce cc-option-str
@ 2026-09-19  0:59 Kees Cook
  2026-09-19  0:59 ` [PATCH 1/3] kconfig: Add "def_string", "def_int" and "def_hex" Kees Cook
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Kees Cook @ 2026-09-19  0:59 UTC (permalink / raw)
  To: Nathan Chancellor
  Cc: Kees Cook, Nicolas Schier, Lorenzo Stoakes (ARM),
	Julian Braha, Jonathan Corbet, Shuah Khan, Randy Dunlap,
	Vegard Nossum, Nauman Sabir, Tejun Heo, Nicolas Pitre,
	Thomas Weißschuh, Matthew Maurer, Andy Shevchenko,
	Andrew Jones, Graham Roff, Masahiro Yamada, Arnd Bergmann,
	Krzysztof Kozlowski, Miguel Ojeda, Borislav Petkov (AMD),
	Gary Guo, linux-kernel, linux-kbuild, linux-doc, linux-hardening

Hi,

While reviewing the recent build speedup series[1], it became clear
that we needed a general solution in kconfig to avoid repeating detected
toolchain options. Implement cc-option-str and ld-option-str, and while
at it, create "def_string" and friends to match "def_bool".

-Kees

[1] https://lore.kernel.org/all/20260918054058.GA384222@ax162/

Kees Cook (3):
  kconfig: Add "def_string", "def_int" and "def_hex"
  kconfig: Replace "cc-option-bit" with "cc-option-str"
  kconfig: Add "ld-option-str"

 scripts/kconfig/tests/def_type/Kconfig        | 28 ++++++++++++++++++
 scripts/kconfig/tests/def_type/guard_n.config |  1 +
 scripts/kconfig/tests/def_type/guard_y.config |  1 +
 scripts/kconfig/tests/def_type/__init__.py    | 18 ++++++++++++
 .../kconfig/tests/def_type/expected_guard_n   |  9 ++++++
 .../kconfig/tests/def_type/expected_guard_y   | 11 +++++++
 scripts/Kconfig.include                       | 29 +++++++++++++++----
 scripts/kconfig/kconfig-sym-check.pl          |  2 +-
 scripts/kconfig/lexer.l                       |  3 ++
 scripts/kconfig/parser.y                      |  6 ++++
 Documentation/kbuild/kconfig-language.rst     | 13 ++++++++-
 11 files changed, 114 insertions(+), 7 deletions(-)
 create mode 100644 scripts/kconfig/tests/def_type/Kconfig
 create mode 100644 scripts/kconfig/tests/def_type/guard_n.config
 create mode 100644 scripts/kconfig/tests/def_type/guard_y.config
 create mode 100644 scripts/kconfig/tests/def_type/__init__.py
 create mode 100644 scripts/kconfig/tests/def_type/expected_guard_n
 create mode 100644 scripts/kconfig/tests/def_type/expected_guard_y

-- 
2.34.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/3] kconfig: Add "def_string", "def_int" and "def_hex"
  2026-09-19  0:59 [PATCH 0/3] kconfig: Introduce cc-option-str Kees Cook
@ 2026-09-19  0:59 ` Kees Cook
  2026-09-19  0:59 ` [PATCH 2/3] kconfig: Replace "cc-option-bit" with "cc-option-str" Kees Cook
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Kees Cook @ 2026-09-19  0:59 UTC (permalink / raw)
  To: Nathan Chancellor
  Cc: Kees Cook, Nicolas Schier, Julian Braha, Jonathan Corbet,
	Shuah Khan, Randy Dunlap, Masahiro Yamada, Arnd Bergmann,
	Nicolas Pitre, Krzysztof Kozlowski, Andy Shevchenko,
	Andrew Jones, linux-kbuild, linux-doc, Lorenzo Stoakes (ARM),
	Vegard Nossum, Nauman Sabir, Tejun Heo, Thomas Weißschuh,
	Matthew Maurer, Graham Roff, Miguel Ojeda, Borislav Petkov (AMD),
	Gary Guo, linux-kernel, linux-hardening

Kconfig has offered "def_bool" and "def_tristate" as a shorthand for a
type definition plus a default since before the git era, but has never
offered the equivalent for the other three types. Conor Dooley ran into
this gap[1] when fixing a symbol that had been given the wrong type:

  Unfortunately, there is no such thing as "def_string", but in this
  case we can use "default" to propagate the value of ...

Nothing in the grammar requires the restriction. The rule that consumes
a default is already type agnostic. Add the three missing types. No
changes are needed to existing diagnostics. E.g. declaring a symbol
"bool" and then assigning it with "def_string" still reports

  warning: ignoring type redefinition of 'CONFLICT' from 'bool' to 'string'

Added tests for the types.

Build tested ARCH=x86_64 with GCC 16.2.0. Tests pass with "make testconfig".

Link: https://lore.kernel.org/all/20230111104848.2088516-1-conor.dooley@microchip.com/ [1]
Assisted-by: LLM
Signed-off-by: Kees Cook <kees@kernel.org>
---
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nicolas Schier <nsc@kernel.org>
Cc: Julian Braha <julianbraha@gmail.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Shuah Khan <skhan@linuxfoundation.org>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Nicolas Pitre <nico@fluxnic.net>
Cc: Krzysztof Kozlowski <krzk@kernel.org>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Andrew Jones <andrew.jones@linux.dev>
Cc: <linux-kbuild@vger.kernel.org>
Cc: <linux-doc@vger.kernel.org>
---
 scripts/kconfig/tests/def_type/Kconfig        | 28 +++++++++++++++++++
 scripts/kconfig/tests/def_type/guard_n.config |  1 +
 scripts/kconfig/tests/def_type/guard_y.config |  1 +
 scripts/kconfig/tests/def_type/__init__.py    | 18 ++++++++++++
 .../kconfig/tests/def_type/expected_guard_n   |  9 ++++++
 .../kconfig/tests/def_type/expected_guard_y   | 11 ++++++++
 scripts/kconfig/kconfig-sym-check.pl          |  2 +-
 scripts/kconfig/lexer.l                       |  3 ++
 scripts/kconfig/parser.y                      |  6 ++++
 Documentation/kbuild/kconfig-language.rst     | 13 ++++++++-
 10 files changed, 90 insertions(+), 2 deletions(-)
 create mode 100644 scripts/kconfig/tests/def_type/Kconfig
 create mode 100644 scripts/kconfig/tests/def_type/guard_n.config
 create mode 100644 scripts/kconfig/tests/def_type/guard_y.config
 create mode 100644 scripts/kconfig/tests/def_type/__init__.py
 create mode 100644 scripts/kconfig/tests/def_type/expected_guard_n
 create mode 100644 scripts/kconfig/tests/def_type/expected_guard_y

diff --git a/scripts/kconfig/tests/def_type/Kconfig b/scripts/kconfig/tests/def_type/Kconfig
new file mode 100644
index 000000000000..fbee37a63179
--- /dev/null
+++ b/scripts/kconfig/tests/def_type/Kconfig
@@ -0,0 +1,28 @@
+# SPDX-License-Identifier: GPL-2.0
+# The def_<type> shorthands: a type definition plus a default value.
+
+config MODULES
+	bool "Enable loadable module support"
+	modules
+	default y
+
+config GUARD
+	bool "Guard symbol"
+
+config DEF_BOOL
+	def_bool GUARD
+
+config DEF_TRISTATE
+	def_tristate m if GUARD
+
+config DEF_STRING
+	def_string "guarded" if GUARD
+	default "fallback"
+
+config DEF_INT
+	def_int 64 if GUARD
+	default 32
+
+config DEF_HEX
+	def_hex 0xdead if GUARD
+	default 0x0
diff --git a/scripts/kconfig/tests/def_type/guard_n.config b/scripts/kconfig/tests/def_type/guard_n.config
new file mode 100644
index 000000000000..ed9ad6c1a2d4
--- /dev/null
+++ b/scripts/kconfig/tests/def_type/guard_n.config
@@ -0,0 +1 @@
+# CONFIG_GUARD is not set
diff --git a/scripts/kconfig/tests/def_type/guard_y.config b/scripts/kconfig/tests/def_type/guard_y.config
new file mode 100644
index 000000000000..afe35b084542
--- /dev/null
+++ b/scripts/kconfig/tests/def_type/guard_y.config
@@ -0,0 +1 @@
+CONFIG_GUARD=y
diff --git a/scripts/kconfig/tests/def_type/__init__.py b/scripts/kconfig/tests/def_type/__init__.py
new file mode 100644
index 000000000000..1ebaf5da07c8
--- /dev/null
+++ b/scripts/kconfig/tests/def_type/__init__.py
@@ -0,0 +1,18 @@
+# SPDX-License-Identifier: GPL-2.0
+"""
+Set a symbol's type and its default value in one line.
+
+"def_bool", "def_tristate", "def_string", "def_int" and "def_hex" are
+shorthand for a type definition plus a "default" property.  Check that
+each one sets the type, and that an "if" on the shorthand does not
+disturb the usual default cascade: the shorthand is only the first arm
+of the list, so a later "default" still applies when its condition is
+not met.
+"""
+
+def test(conf):
+    assert conf.olddefconfig(dot_config='guard_y.config') == 0
+    assert conf.config_matches('expected_guard_y')
+
+    assert conf.olddefconfig(dot_config='guard_n.config') == 0
+    assert conf.config_matches('expected_guard_n')
diff --git a/scripts/kconfig/tests/def_type/expected_guard_n b/scripts/kconfig/tests/def_type/expected_guard_n
new file mode 100644
index 000000000000..14719720a8b9
--- /dev/null
+++ b/scripts/kconfig/tests/def_type/expected_guard_n
@@ -0,0 +1,9 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# Main menu
+#
+CONFIG_MODULES=y
+# CONFIG_GUARD is not set
+CONFIG_DEF_STRING="fallback"
+CONFIG_DEF_INT=32
+CONFIG_DEF_HEX=0x0
diff --git a/scripts/kconfig/tests/def_type/expected_guard_y b/scripts/kconfig/tests/def_type/expected_guard_y
new file mode 100644
index 000000000000..b2844072d0b8
--- /dev/null
+++ b/scripts/kconfig/tests/def_type/expected_guard_y
@@ -0,0 +1,11 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# Main menu
+#
+CONFIG_MODULES=y
+CONFIG_GUARD=y
+CONFIG_DEF_BOOL=y
+CONFIG_DEF_TRISTATE=m
+CONFIG_DEF_STRING="guarded"
+CONFIG_DEF_INT=64
+CONFIG_DEF_HEX=0xdead
diff --git a/scripts/kconfig/kconfig-sym-check.pl b/scripts/kconfig/kconfig-sym-check.pl
index daa5285fdefc..c8dd07f8b27c 100755
--- a/scripts/kconfig/kconfig-sym-check.pl
+++ b/scripts/kconfig/kconfig-sym-check.pl
@@ -90,7 +90,7 @@ foreach my $file (@files) {
 			next;
 		}
 
-		if (/^\s*(default|def_bool|def_tristate|select|depends\s+on|imply|visible\s+if|range|if|bool|tristate|int|hex|string|prompt)\s+(.+)\s*$/) {
+		if (/^\s*(default|def_bool|def_tristate|def_string|def_int|def_hex|select|depends\s+on|imply|visible\s+if|range|if|bool|tristate|int|hex|string|prompt)\s+(.+)\s*$/) {
 			my $s = $2;
 			$s =~ s/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'//g;
 			$s =~ s/#.*//;
diff --git a/scripts/kconfig/lexer.l b/scripts/kconfig/lexer.l
index a6155422b4a6..1fa521199d4a 100644
--- a/scripts/kconfig/lexer.l
+++ b/scripts/kconfig/lexer.l
@@ -105,6 +105,9 @@ n	[A-Za-z0-9_-]
 "comment"		return T_COMMENT;
 "config"		return T_CONFIG;
 "def_bool"		return T_DEF_BOOL;
+"def_hex"		return T_DEF_HEX;
+"def_int"		return T_DEF_INT;
+"def_string"		return T_DEF_STRING;
 "def_tristate"		return T_DEF_TRISTATE;
 "default"		return T_DEFAULT;
 "depends"		return T_DEPENDS;
diff --git a/scripts/kconfig/parser.y b/scripts/kconfig/parser.y
index 5fb6f07b6ad2..2174baf2b3fd 100644
--- a/scripts/kconfig/parser.y
+++ b/scripts/kconfig/parser.y
@@ -53,6 +53,9 @@ struct menu *current_menu, *current_entry, *current_choice;
 %token T_CONFIG
 %token T_DEFAULT
 %token T_DEF_BOOL
+%token T_DEF_HEX
+%token T_DEF_INT
+%token T_DEF_STRING
 %token T_DEF_TRISTATE
 %token T_DEPENDS
 %token T_ENDCHOICE
@@ -309,6 +312,9 @@ type:
 default:
 	  T_DEFAULT		{ $$ = S_UNKNOWN; }
 	| T_DEF_BOOL		{ $$ = S_BOOLEAN; }
+	| T_DEF_HEX		{ $$ = S_HEX; }
+	| T_DEF_INT		{ $$ = S_INT; }
+	| T_DEF_STRING		{ $$ = S_STRING; }
 	| T_DEF_TRISTATE	{ $$ = S_TRISTATE; }
 
 /* if entry */
diff --git a/Documentation/kbuild/kconfig-language.rst b/Documentation/kbuild/kconfig-language.rst
index d9338407c1c6..00402d43e0dc 100644
--- a/Documentation/kbuild/kconfig-language.rst
+++ b/Documentation/kbuild/kconfig-language.rst
@@ -113,11 +113,22 @@ applicable everywhere (see syntax).
 
 - type definition + default value::
 
-	"def_bool"/"def_tristate" <expr> ["if" <expr>]
+	"def_bool" <expr> ["if" <expr>]
+	"def_tristate" <expr> ["if" <expr>]
+	"def_string" <expr> ["if" <expr>]
+	"def_int" <expr> ["if" <expr>]
+	"def_hex" <expr> ["if" <expr>]
 
   This is a shorthand notation for a type definition plus a value.
   Optionally dependencies for this default value can be added with "if".
 
+  The shorthand supplies the type once, and is otherwise an ordinary
+  default: it is the first entry of the list described above, so any
+  further "default" entries still apply when its "if" is not met. Since
+  that leaves the type definition inside one arm of a list, spelling the
+  type out on its own line reads better for a symbol with several
+  defaults.
+
 - dependencies: "depends on" <expr> ["if" <expr>]
 
   This defines a dependency for this menu entry. If multiple
-- 
2.34.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 2/3] kconfig: Replace "cc-option-bit" with "cc-option-str"
  2026-09-19  0:59 [PATCH 0/3] kconfig: Introduce cc-option-str Kees Cook
  2026-09-19  0:59 ` [PATCH 1/3] kconfig: Add "def_string", "def_int" and "def_hex" Kees Cook
@ 2026-09-19  0:59 ` Kees Cook
  2026-09-19  0:59 ` [PATCH 3/3] kconfig: Add "ld-option-str" Kees Cook
  2026-09-19  1:25 ` [PATCH 0/3] kconfig: Introduce cc-option-str Nathan Chancellor
  3 siblings, 0 replies; 5+ messages in thread
From: Kees Cook @ 2026-09-19  0:59 UTC (permalink / raw)
  To: Nathan Chancellor
  Cc: Kees Cook, Nicolas Schier, Julian Braha, Matthew Maurer,
	Miguel Ojeda, Masahiro Yamada, Borislav Petkov (AMD),
	Gary Guo, Thomas Weißschuh, linux-kbuild,
	Lorenzo Stoakes (ARM),
	Jonathan Corbet, Shuah Khan, Randy Dunlap, Vegard Nossum,
	Nauman Sabir, Tejun Heo, Nicolas Pitre, Andy Shevchenko,
	Andrew Jones, Graham Roff, Arnd Bergmann, Krzysztof Kozlowski,
	linux-kernel, linux-doc, linux-hardening

$(cc-option-bit) returns the flag it was given when the compiler accepts
it, and an empty string otherwise. It was originally only used
internally for machine bit flags, but it is generally useful[1].

Rename it to $(cc-option-str), which says what it returns rather than
what it was first used for, and extract the probe logic from the existing
$(cc-option) macro to reuse it. Additionally add support for an optional
fallback, much like the Kbuild cc-option macro. This can be used as:

	config CC_OPT_FOO
		def_string "$(cc-option-str,-fnew-option,-fold-option)"

If the fallback is omitted, it is just an empty string.

Build tested ARCH=x86_64 defconfig with GCC 16.2.0.

Assisted-by: LLM
Signed-off-by: Kees Cook <kees@kernel.org>
---
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nicolas Schier <nsc@kernel.org>
Cc: Julian Braha <julianbraha@gmail.com>
Cc: Matthew Maurer <mmaurer@google.com>
Cc: Miguel Ojeda <ojeda@kernel.org>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: "Borislav Petkov (AMD)" <bp@alien8.de>
Cc: Gary Guo <gary@garyguo.net>
Cc: "Thomas Weißschuh" <thomas.weissschuh@linutronix.de>
Cc: <linux-kbuild@vger.kernel.org>
---
 scripts/Kconfig.include | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include
index fc10671c297c..4ef2b64e97be 100644
--- a/scripts/Kconfig.include
+++ b/scripts/Kconfig.include
@@ -23,9 +23,19 @@ success = $(if-success,$(1),y,n)
 # Return n if <command> exits with 0, y otherwise
 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-option,<flag>)
 # Return y if the compiler supports <flag>, n otherwise
-cc-option = $(success,trap "rm -rf .tmp_$$" EXIT; mkdir .tmp_$$; $(CC) -Werror $(CLANG_FLAGS) $(1) -c -x c /dev/null -o .tmp_$$/tmp.o)
+cc-option = $(success,$(cc-probe,$(1)))
+
+# $(cc-option-str,<flag>[,<fallback>])
+# Return <flag> if the compiler supports it, <fallback> otherwise.
+# <fallback> defaults to an empty string and is returned untested.
+cc-option-str = $(if-success,$(cc-probe,$(1)),$(1),$(2))
 
 # $(ld-option,<flag>)
 # Return y if the linker supports <flag>, n otherwise
@@ -61,9 +71,8 @@ ld-version := $(shell,set -- $(ld-info) && echo $2)
 # machine bit flags
 #  $(m32-flag): -m32 if the compiler supports it, or an empty string otherwise.
 #  $(m64-flag): -m64 if the compiler supports it, or an empty string otherwise.
-cc-option-bit = $(if-success,$(CC) -Werror $(1) -E -x c /dev/null -o /dev/null,$(1))
-m32-flag := $(cc-option-bit,-m32)
-m64-flag := $(cc-option-bit,-m64)
+m32-flag := $(cc-option-str,-m32)
+m64-flag := $(cc-option-str,-m64)
 
 # Test whether the compiler can link userspace applications
 cc_can_link_user = $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(1))
-- 
2.34.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 3/3] kconfig: Add "ld-option-str"
  2026-09-19  0:59 [PATCH 0/3] kconfig: Introduce cc-option-str Kees Cook
  2026-09-19  0:59 ` [PATCH 1/3] kconfig: Add "def_string", "def_int" and "def_hex" Kees Cook
  2026-09-19  0:59 ` [PATCH 2/3] kconfig: Replace "cc-option-bit" with "cc-option-str" Kees Cook
@ 2026-09-19  0:59 ` Kees Cook
  2026-09-19  1:25 ` [PATCH 0/3] kconfig: Introduce cc-option-str Nathan Chancellor
  3 siblings, 0 replies; 5+ messages in thread
From: Kees Cook @ 2026-09-19  0:59 UTC (permalink / raw)
  To: Nathan Chancellor
  Cc: Kees Cook, Nicolas Schier, Julian Braha, Matthew Maurer,
	Masahiro Yamada, Miguel Ojeda, Thomas Weißschuh, Gary Guo,
	linux-kbuild, Lorenzo Stoakes (ARM),
	Jonathan Corbet, Shuah Khan, Randy Dunlap, Vegard Nossum,
	Nauman Sabir, Tejun Heo, Nicolas Pitre, Andy Shevchenko,
	Andrew Jones, Graham Roff, Arnd Bergmann, Krzysztof Kozlowski,
	Borislav Petkov (AMD),
	linux-kernel, linux-doc, linux-hardening

Add the linker counterpart to $(cc-option-str), sharing a $(ld-probe)
with $(ld-option) the way the compiler macros share $(cc-probe). Like
$(cc-option-str), it can now be used as:

	config LD_OPT_FOO
		def_string "$(ld-option-str,--new-option,--old-option)"

An omitted fallback expands to the empty string.

Build tested ARCH=x86_64 defconfig with GCC 16.2.0, and checked against
GNU ld 2.47.

Assisted-by: LLM
Signed-off-by: Kees Cook <kees@kernel.org>
---
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nicolas Schier <nsc@kernel.org>
Cc: Julian Braha <julianbraha@gmail.com>
Cc: Matthew Maurer <mmaurer@google.com>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Miguel Ojeda <ojeda@kernel.org>
Cc: "Thomas Weißschuh" <thomas.weissschuh@linutronix.de>
Cc: Gary Guo <gary@garyguo.net>
Cc: <linux-kbuild@vger.kernel.org>
---
 scripts/Kconfig.include | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include
index 4ef2b64e97be..622d21e6953f 100644
--- a/scripts/Kconfig.include
+++ b/scripts/Kconfig.include
@@ -37,9 +37,19 @@ cc-option = $(success,$(cc-probe,$(1)))
 # <fallback> defaults to an empty string and is returned untested.
 cc-option-str = $(if-success,$(cc-probe,$(1)),$(1),$(2))
 
+# $(ld-probe,<flag>)
+# The command $(ld-option) and $(ld-option-str) test <flag> with. Not meant
+# to be called directly; use one of those two instead.
+ld-probe = $(LD) -v $(1)
+
 # $(ld-option,<flag>)
 # Return y if the linker supports <flag>, n otherwise
-ld-option = $(success,$(LD) -v $(1))
+ld-option = $(success,$(ld-probe,$(1)))
+
+# $(ld-option-str,<flag>[,<fallback>])
+# Return <flag> if the linker supports it, <fallback> otherwise.
+# <fallback> defaults to an empty string and is returned untested.
+ld-option-str = $(if-success,$(ld-probe,$(1)),$(1),$(2))
 
 # $(as-instr,<instr>)
 # Return y if the assembler supports <instr>, n otherwise
-- 
2.34.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 0/3] kconfig: Introduce cc-option-str
  2026-09-19  0:59 [PATCH 0/3] kconfig: Introduce cc-option-str Kees Cook
                   ` (2 preceding siblings ...)
  2026-09-19  0:59 ` [PATCH 3/3] kconfig: Add "ld-option-str" Kees Cook
@ 2026-09-19  1:25 ` Nathan Chancellor
  3 siblings, 0 replies; 5+ messages in thread
From: Nathan Chancellor @ 2026-09-19  1:25 UTC (permalink / raw)
  To: Kees Cook
  Cc: Nicolas Schier, Lorenzo Stoakes (ARM),
	Julian Braha, Jonathan Corbet, Shuah Khan, Randy Dunlap,
	Vegard Nossum, Nauman Sabir, Tejun Heo, Nicolas Pitre,
	Thomas Weißschuh, Matthew Maurer, Andy Shevchenko,
	Andrew Jones, Graham Roff, Masahiro Yamada, Arnd Bergmann,
	Krzysztof Kozlowski, Miguel Ojeda, Borislav Petkov (AMD),
	Gary Guo, linux-kernel, linux-kbuild, linux-doc, linux-hardening

On Fri, Sep 18, 2026 at 05:59:24PM -0700, Kees Cook wrote:
> Hi,
> 
> While reviewing the recent build speedup series[1], it became clear
> that we needed a general solution in kconfig to avoid repeating detected
> toolchain options. Implement cc-option-str and ld-option-str, and while
> at it, create "def_string" and friends to match "def_bool".
> 
> -Kees
> 
> [1] https://lore.kernel.org/all/20260918054058.GA384222@ax162/
> 
> Kees Cook (3):
>   kconfig: Add "def_string", "def_int" and "def_hex"
>   kconfig: Replace "cc-option-bit" with "cc-option-str"
>   kconfig: Add "ld-option-str"

Thanks, exactly what I had in mind. This seems reasonable to me and
passes my basic testing. I will let folks chime in for a few days then
apply this to kbuild-next so that Lorenzo can use it as part of the
speed up series.

-- 
Cheers,
Nathan

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-09-19  1:25 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-19  0:59 [PATCH 0/3] kconfig: Introduce cc-option-str Kees Cook
2026-09-19  0:59 ` [PATCH 1/3] kconfig: Add "def_string", "def_int" and "def_hex" Kees Cook
2026-09-19  0:59 ` [PATCH 2/3] kconfig: Replace "cc-option-bit" with "cc-option-str" Kees Cook
2026-09-19  0:59 ` [PATCH 3/3] kconfig: Add "ld-option-str" Kees Cook
2026-09-19  1:25 ` [PATCH 0/3] kconfig: Introduce cc-option-str Nathan Chancellor

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®