Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 0/7] Update kconfig inrastructure to Linux 7.2.9
@ 2026-10-10 15:11 Titouan Christophe via buildroot
  2026-10-10 15:11 ` [Buildroot] [PATCH 1/7] Makefile: always use a base config file for defconfig Titouan Christophe via buildroot
                   ` (6 more replies)
  0 siblings, 7 replies; 9+ messages in thread
From: Titouan Christophe via buildroot @ 2026-10-10 15:11 UTC (permalink / raw)
  To: buildroot; +Cc: petr.vorel, ps.report, yann.morin, thomas.petazzoni

The following commits update the kconfig infrastructure to a recent version,
and add support for Zephyr's kconfiglib, thanks to the update that make
our Config.in files syntactically compatible.

This is a major overhaul to the previous attempt at updating Buildroot's
kconfig infrastructure [1]. Compared to the previous iteration, this series
targets the latest kernel version to date (7.2.9), instead of 6.9 at the time.
Since more changes have happened upstream inbetween those versions, more
changes have had to be applied here.

Given all these changes, I re-started the series from scratch, while keeping
in mind the reviews that were made in the previous attempts. 
- Patch 0001 has been taken as-is from the former series
- Patch 0007 has been slightly updated from the former series
- All the other patches are new
Hence why it is posted a brand new series rather than a new version of it.

As a disclaimer, I made heavy use of AI for this new iteration.

[1] https://patchwork.buildroot.org/project/buildroot/list/?series=13&state=*

Titouan Christophe (7):
  Makefile: always use a base config file for defconfig
  */Config.in: use the new $(VAR) syntax
  */Config.in: replace bool entries with prompt within all choices
  support/kconfig: update to kconfig from Linux 7.2.9
  package/openssl: move libopenssl/libressl options out of the choice
  docs/manual: add migration notes for changes in the kconfig syntax
  Makefile: add new target "yellowconfig" based on kconfiglib

 Config.in                                     |   71 +-
 Config.in.legacy                              |    6 +-
 Makefile                                      |    8 +-
 boot/xilinx-prebuilt/Config.in                |    2 +-
 docs/manual/customize-outside-br.adoc         |   12 +-
 docs/manual/migrating.adoc                    |   13 +
 docs/manual/quickstart.adoc                   |    7 +
 fs/ext2/Config.in                             |    2 +-
 linux/Config.ext.in                           |    2 +-
 package/amlogic-boot-fip/Config.in.host       |    2 +-
 package/arm-gnu-toolchain/Config.in.host      |    4 +-
 package/docker-engine/Config.in               |    2 +-
 package/efl/Config.in                         |    2 +-
 package/erlang/Config.in                      |    6 +-
 package/flutter-sdk-bin/Config.in.host        |    2 +-
 package/freescale-imx/firmware-imx/Config.in  |    2 +-
 package/go/Config.in.host                     |    4 +-
 package/go/go-bin/Config.in.host              |   12 +-
 package/go/go-bootstrap-stage1/Config.in.host |    6 +-
 package/google-breakpad/Config.in.host        |   12 +-
 package/jpeg/Config.in                        |    2 +-
 package/kvm-unit-tests/Config.in              |    2 +-
 package/libopenssl/Config.in                  |    4 -
 package/libressl/Config.in                    |    4 -
 package/linux-headers/Config.in.host          |    2 +-
 package/luajit/Config.in                      |    4 +-
 package/mono/Config.in                        |    4 +-
 package/nodejs/Config.in.host                 |    8 +-
 package/openjdk/Config.in                     |    4 +-
 package/openssl/Config.in                     |   14 +-
 package/podman/Config.in                      |    4 +-
 package/protobuf/Config.in                    |   22 +-
 package/qt5/qt5webengine/Config.in            |    2 +-
 package/rustc/Config.in.host                  |   16 +-
 package/sam-ba/Config.in.host                 |    2 +-
 package/supertuxkart/Config.in                |    4 +-
 package/ti-cgt-pru/Config.in.host             |    2 +-
 package/ti-gfx/Config.in                      |    2 +-
 package/wine/Config.in                        |    6 +-
 package/xenomai/Config.in                     |    2 +-
 support/kconfig/Makefile                      |  382 +-
 support/kconfig/Makefile.br                   |   80 +-
 support/kconfig/POTFILES.in                   |   12 -
 support/kconfig/README.buildroot              |   14 +-
 support/kconfig/check.sh                      |   14 -
 support/kconfig/conf.c                        |  587 ++-
 support/kconfig/confdata.c                    | 1621 ++++---
 support/kconfig/expr.c                        |  641 +--
 support/kconfig/expr.h                        |  119 +-
 support/kconfig/foo.h                         |   12 -
 support/kconfig/gconf-cfg.sh                  |   28 +
 support/kconfig/gconf.c                       | 1837 ++++----
 support/kconfig/{gconf.glade => gconf.ui}     |  361 +-
 support/kconfig/icons/back.xpm                |   29 +
 support/kconfig/icons/choice_no.xpm           |   18 +
 support/kconfig/icons/choice_yes.xpm          |   18 +
 support/kconfig/icons/load.xpm                |   31 +
 support/kconfig/icons/menu.xpm                |   18 +
 support/kconfig/icons/menuback.xpm            |   18 +
 support/kconfig/icons/save.xpm                |   31 +
 support/kconfig/icons/single_view.xpm         |   28 +
 support/kconfig/icons/split_view.xpm          |   28 +
 support/kconfig/icons/symbol_mod.xpm          |   18 +
 support/kconfig/icons/symbol_no.xpm           |   18 +
 support/kconfig/icons/symbol_yes.xpm          |   18 +
 support/kconfig/icons/tree_view.xpm           |   28 +
 support/kconfig/images.c                      |  326 --
 support/kconfig/include/array_size.h          |   11 +
 support/kconfig/include/hash.h                |   28 +
 support/kconfig/include/hashtable.h           |   98 +
 support/kconfig/include/list.h                |  428 ++
 support/kconfig/include/list_types.h          |   17 +
 support/kconfig/include/xalloc.h              |   53 +
 support/kconfig/internal.h                    |   27 +
 support/kconfig/kconf_id.c                    |   53 -
 support/kconfig/kconfig-sym-check.pl          |  132 +
 support/kconfig/kxgettext.c                   |  235 -
 support/kconfig/lexer.l                       |  461 ++
 support/kconfig/lexer.lex.c_shipped           | 4130 +++++++++++++++++
 support/kconfig/list.h                        |  132 -
 support/kconfig/lkc.h                         |  159 +-
 support/kconfig/lkc_proto.h                   |   47 +-
 support/kconfig/lxdialog/.gitignore           |    4 -
 support/kconfig/lxdialog/BIG.FAT.WARNING      |    2 +-
 support/kconfig/lxdialog/check-lxdialog.sh    |   93 -
 support/kconfig/lxdialog/checklist.c          |   26 +-
 support/kconfig/lxdialog/dialog.h             |   76 +-
 support/kconfig/lxdialog/inputbox.c           |   27 +-
 support/kconfig/lxdialog/menubox.c            |   35 +-
 support/kconfig/lxdialog/textbox.c            |  330 +-
 support/kconfig/lxdialog/util.c               |   53 +-
 support/kconfig/lxdialog/yesno.c              |   21 +-
 support/kconfig/mconf-cfg.sh                  |   57 +
 support/kconfig/mconf.c                       |  641 ++-
 support/kconfig/menu.c                        |  573 +--
 support/kconfig/merge_config.sh               |  311 +-
 support/kconfig/mnconf-common.c               |   53 +
 support/kconfig/mnconf-common.h               |   20 +
 support/kconfig/nconf-cfg.sh                  |   56 +
 support/kconfig/nconf.c                       |  417 +-
 support/kconfig/nconf.gui.c                   |  345 +-
 support/kconfig/nconf.h                       |   62 +-
 support/kconfig/parser.tab.c_shipped          | 2248 +++++++++
 support/kconfig/parser.tab.h_shipped          |  134 +
 support/kconfig/parser.y                      |  798 ++++
 .../01-kconfig-kernel-to-buildroot.patch      |  101 +-
 .../06-br-build-system-integration.patch      |   74 -
 .../kconfig/patches/10-br-build-system.patch  |  108 +-
 .../patches/11-use-mktemp-for-lxdialog.patch  |   17 -
 .../patches/12-fix-glade-file-path.patch      |   46 +-
 .../14-support-out-of-tree-config.patch       |  207 -
 .../16-fix-space-to-de-select-options.patch   |   41 -
 .../kconfig/patches/17-backport-kecho.patch   |   26 -
 ...fig.sh-create-temporary-files-in-tmp.patch |    6 +-
 ...e_config.sh-add-br2-external-support.patch |   20 +-
 ...fig.sh-Allow-to-define-config-prefix.patch |   31 -
 ...-positive-matches-from-comment-lines.patch |   32 -
 ...config-lxdialog-fix-check-with-GCC14.patch |   43 -
 ...onfig-mn-conf-handle-backspace-H-key.patch |   62 -
 ...4-kconfig-allow-source-inside-choice.patch |   28 +
 support/kconfig/patches/series                |   10 +-
 support/kconfig/preprocess.c                  |  581 +++
 support/kconfig/preprocess.h                  |   19 +
 support/kconfig/qconf-cfg.sh                  |   42 +
 support/kconfig/qconf.cc                      | 1305 +++---
 support/kconfig/qconf.h                       |  183 +-
 support/kconfig/streamline_config.pl          |  124 +-
 support/kconfig/symbol.c                      |  790 ++--
 support/kconfig/util.c                        |  162 +-
 support/kconfig/zconf.l                       |  372 --
 support/kconfig/zconf.lex.c_shipped           | 2500 ----------
 support/kconfig/zconf.tab.c_shipped           | 2488 ----------
 support/kconfig/zconf.y                       |  782 ----
 support/scripts/gen-bootlin-toolchains        |    2 +-
 .../br2-external/detect-bad-arch/Config.in    |    2 +-
 .../br2-external/flat-stacksize/Config.in     |    2 +-
 .../core/test_selinux/br2_external/Config.in  |    2 +-
 .../br2-external/clang-compiler-rt/Config.in  |    2 +-
 .../br2-external/gumbo-parser/Config.in       |    2 +-
 .../package/br2-external/openjdk/Config.in    |    4 +-
 .../package/br2-external/polkit/Config.in     |    2 +-
 .../br2-external/python-pybind/Config.in      |    2 +-
 system/Config.in                              |   10 +-
 toolchain/toolchain-external/Config.in        |    2 +-
 .../Config.in                                 |    2 +-
 .../toolchain-external-arm-aarch64/Config.in  |    2 +-
 .../toolchain-external-arm-arm/Config.in      |    2 +-
 .../toolchain-external-bootlin/Config.in      |    2 +-
 .../Config.in.options                         |    2 +-
 .../Config.in.options                         |    6 +-
 150 files changed, 15366 insertions(+), 13897 deletions(-)
 delete mode 100644 support/kconfig/POTFILES.in
 delete mode 100755 support/kconfig/check.sh
 delete mode 100644 support/kconfig/foo.h
 create mode 100755 support/kconfig/gconf-cfg.sh
 rename support/kconfig/{gconf.glade => gconf.ui} (57%)
 create mode 100644 support/kconfig/icons/back.xpm
 create mode 100644 support/kconfig/icons/choice_no.xpm
 create mode 100644 support/kconfig/icons/choice_yes.xpm
 create mode 100644 support/kconfig/icons/load.xpm
 create mode 100644 support/kconfig/icons/menu.xpm
 create mode 100644 support/kconfig/icons/menuback.xpm
 create mode 100644 support/kconfig/icons/save.xpm
 create mode 100644 support/kconfig/icons/single_view.xpm
 create mode 100644 support/kconfig/icons/split_view.xpm
 create mode 100644 support/kconfig/icons/symbol_mod.xpm
 create mode 100644 support/kconfig/icons/symbol_no.xpm
 create mode 100644 support/kconfig/icons/symbol_yes.xpm
 create mode 100644 support/kconfig/icons/tree_view.xpm
 delete mode 100644 support/kconfig/images.c
 create mode 100644 support/kconfig/include/array_size.h
 create mode 100644 support/kconfig/include/hash.h
 create mode 100644 support/kconfig/include/hashtable.h
 create mode 100644 support/kconfig/include/list.h
 create mode 100644 support/kconfig/include/list_types.h
 create mode 100644 support/kconfig/include/xalloc.h
 create mode 100644 support/kconfig/internal.h
 delete mode 100644 support/kconfig/kconf_id.c
 create mode 100755 support/kconfig/kconfig-sym-check.pl
 delete mode 100644 support/kconfig/kxgettext.c
 create mode 100644 support/kconfig/lexer.l
 create mode 100644 support/kconfig/lexer.lex.c_shipped
 delete mode 100644 support/kconfig/list.h
 delete mode 100644 support/kconfig/lxdialog/.gitignore
 delete mode 100755 support/kconfig/lxdialog/check-lxdialog.sh
 create mode 100755 support/kconfig/mconf-cfg.sh
 create mode 100644 support/kconfig/mnconf-common.c
 create mode 100644 support/kconfig/mnconf-common.h
 create mode 100755 support/kconfig/nconf-cfg.sh
 create mode 100644 support/kconfig/parser.tab.c_shipped
 create mode 100644 support/kconfig/parser.tab.h_shipped
 create mode 100644 support/kconfig/parser.y
 delete mode 100644 support/kconfig/patches/06-br-build-system-integration.patch
 delete mode 100644 support/kconfig/patches/11-use-mktemp-for-lxdialog.patch
 delete mode 100644 support/kconfig/patches/14-support-out-of-tree-config.patch
 delete mode 100644 support/kconfig/patches/16-fix-space-to-de-select-options.patch
 delete mode 100644 support/kconfig/patches/17-backport-kecho.patch
 delete mode 100644 support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch
 delete mode 100644 support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch
 delete mode 100644 support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch
 delete mode 100644 support/kconfig/patches/23-kconfig-mn-conf-handle-backspace-H-key.patch
 create mode 100644 support/kconfig/patches/24-kconfig-allow-source-inside-choice.patch
 create mode 100644 support/kconfig/preprocess.c
 create mode 100644 support/kconfig/preprocess.h
 create mode 100755 support/kconfig/qconf-cfg.sh
 delete mode 100644 support/kconfig/zconf.l
 delete mode 100644 support/kconfig/zconf.lex.c_shipped
 delete mode 100644 support/kconfig/zconf.tab.c_shipped
 delete mode 100644 support/kconfig/zconf.y

-- 
2.55.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* [Buildroot] [PATCH 1/7] Makefile: always use a base config file for defconfig
  2026-10-10 15:11 [Buildroot] [PATCH 0/7] Update kconfig inrastructure to Linux 7.2.9 Titouan Christophe via buildroot
@ 2026-10-10 15:11 ` Titouan Christophe via buildroot
  2026-10-10 15:11 ` [Buildroot] [PATCH 2/7] */Config.in: use the new $(VAR) syntax Titouan Christophe via buildroot
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Titouan Christophe via buildroot @ 2026-10-10 15:11 UTC (permalink / raw)
  To: buildroot; +Cc: petr.vorel, ps.report, yann.morin, thomas.petazzoni

Currently, our bundled kconfig copy does not require that a base
configuration file, with some non-default set in there, be specified
for defconfig, and we only pass one if specified by the user.

Future kconfig versions will require a base config file be always
specified, so prepare for that: if the user did not specify a base
config file, use /dev/null, an empty file, to specify there is no
preset value.

Reported-by: Petr Vorel <petr.vorel@gmail.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Titouan Christophe <titouan.christophe@mind.be>
---
 Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index 490f1d419d..7fa3ce4890 100644
--- a/Makefile
+++ b/Makefile
@@ -1044,7 +1044,7 @@ oldconfig syncconfig olddefconfig: $(BUILD_DIR)/buildroot-config/conf outputmake
 	@$(COMMON_CONFIG_ENV) $< --$@ $(CONFIG_CONFIG_IN)
 
 defconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
-	@$(COMMON_CONFIG_ENV) $< --defconfig$(if $(DEFCONFIG),=$(DEFCONFIG)) $(CONFIG_CONFIG_IN)
+	@$(COMMON_CONFIG_ENV) $< --defconfig=$(or $(DEFCONFIG),/dev/null) $(CONFIG_CONFIG_IN)
 
 %_defconfig: $(BUILD_DIR)/buildroot-config/conf  outputmakefile
 	@defconfig=$(or \
-- 
2.55.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* [Buildroot] [PATCH 2/7] */Config.in: use the new $(VAR) syntax
  2026-10-10 15:11 [Buildroot] [PATCH 0/7] Update kconfig inrastructure to Linux 7.2.9 Titouan Christophe via buildroot
  2026-10-10 15:11 ` [Buildroot] [PATCH 1/7] Makefile: always use a base config file for defconfig Titouan Christophe via buildroot
@ 2026-10-10 15:11 ` Titouan Christophe via buildroot
  2026-10-10 15:11 ` [Buildroot] [PATCH 3/7] */Config.in: replace bool entries with prompt within all choices Titouan Christophe via buildroot
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Titouan Christophe via buildroot @ 2026-10-10 15:11 UTC (permalink / raw)
  To: buildroot; +Cc: petr.vorel, ps.report, yann.morin, thomas.petazzoni

Since upstream Linux commit 104daea149 [1], the syntax for Kconfig variable
references requires to enclose them in $(VAR).

Variables whose expansion should be deferred until makefile evaluation
(such as TOPDIR, BASE_DIR, CONFIG_DIR or ARCH) must now be written as
\$(VAR).

Finally, the `option env=` syntax will no longer be supported.
Environment variables are directly expanded in KConfig files.
Therefore, some intermediate variables that were used as "tricks" can be
removed and their usage subsituted with the actual environment variable
they were derived from. This changes the following:
  BR2_VERSION --> BR2_VERSION_FULL
  BR2_HOSTARCH --> HOSTARCH
  BR2_SKIP_LEGACY --> SKIP_LEGACY
  BR2_BASE_DIR --> BASE_DIR
  BR2_HOST_GCC_VERSION --> HOST_GCC_VERSION
  BR2_DEFCONFIG_FROM_ENV --> BR2_DEFCONFIG

Also update the manual to reflect these new conventions

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=104daea149c45cc84842ce77a9bd6436d19f3dd8

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Titouan Christophe <titouan.christophe@mind.be>
---
 Config.in                                     | 63 +++++++------------
 Config.in.legacy                              |  6 +-
 docs/manual/customize-outside-br.adoc         | 12 ++--
 linux/Config.ext.in                           |  2 +-
 package/amlogic-boot-fip/Config.in.host       |  2 +-
 package/arm-gnu-toolchain/Config.in.host      |  4 +-
 package/erlang/Config.in                      |  6 +-
 package/flutter-sdk-bin/Config.in.host        |  2 +-
 package/go/Config.in.host                     |  4 +-
 package/go/go-bin/Config.in.host              | 12 ++--
 package/go/go-bootstrap-stage1/Config.in.host |  6 +-
 package/google-breakpad/Config.in.host        | 12 ++--
 package/jpeg/Config.in                        |  2 +-
 package/kvm-unit-tests/Config.in              |  2 +-
 package/luajit/Config.in                      |  4 +-
 package/mono/Config.in                        |  4 +-
 package/nodejs/Config.in.host                 |  8 +--
 package/openjdk/Config.in                     |  4 +-
 package/openssl/Config.in                     |  2 +-
 package/protobuf/Config.in                    | 22 +++----
 package/qt5/qt5webengine/Config.in            |  2 +-
 package/rustc/Config.in.host                  | 16 ++---
 package/sam-ba/Config.in.host                 |  2 +-
 package/supertuxkart/Config.in                |  4 +-
 package/ti-cgt-pru/Config.in.host             |  2 +-
 package/ti-gfx/Config.in                      |  2 +-
 package/wine/Config.in                        |  6 +-
 support/scripts/gen-bootlin-toolchains        |  2 +-
 .../br2-external/detect-bad-arch/Config.in    |  2 +-
 .../br2-external/flat-stacksize/Config.in     |  2 +-
 .../core/test_selinux/br2_external/Config.in  |  2 +-
 .../br2-external/clang-compiler-rt/Config.in  |  2 +-
 .../br2-external/gumbo-parser/Config.in       |  2 +-
 .../package/br2-external/openjdk/Config.in    |  4 +-
 .../package/br2-external/polkit/Config.in     |  2 +-
 .../br2-external/python-pybind/Config.in      |  2 +-
 system/Config.in                              |  4 +-
 toolchain/toolchain-external/Config.in        |  2 +-
 .../Config.in                                 |  2 +-
 .../toolchain-external-arm-aarch64/Config.in  |  2 +-
 .../toolchain-external-arm-arm/Config.in      |  2 +-
 .../toolchain-external-bootlin/Config.in      |  2 +-
 .../Config.in.options                         |  2 +-
 .../Config.in.options                         |  2 +-
 44 files changed, 113 insertions(+), 138 deletions(-)

diff --git a/Config.in b/Config.in
index ac58c685d1..1fa7ea3ca7 100644
--- a/Config.in
+++ b/Config.in
@@ -1,6 +1,6 @@
 #
 
-mainmenu "Buildroot $BR2_VERSION Configuration"
+mainmenu "Buildroot $(BR2_VERSION_FULL) Configuration"
 
 config BR2_HAVE_DOT_CONFIG
 	bool
@@ -17,85 +17,68 @@ config BR2_BROKEN
 
 config BR2_HIDE_SECONDARY_TARGET_OPTIONS
 	bool
-	option env="BR2_HIDE_SECONDARY_TARGET_OPTIONS"
-
-config BR2_VERSION
-	string
-	option env="BR2_VERSION_FULL"
-
-config BR2_HOSTARCH
-	string
-	option env="HOSTARCH"
-
-config BR2_BASE_DIR
-	string
-	option env="BASE_DIR"
+	default y if "$(BR2_HIDE_SECONDARY_TARGET_OPTIONS)" = "y"
 
 # br2-external paths definitions
-source "$BR2_BASE_DIR/.br2-external.in.paths"
-
-# Hidden config symbols for packages to check system gcc version
-config BR2_HOST_GCC_VERSION
-	string
-	option env="HOST_GCC_VERSION"
+source "$(BASE_DIR)/.br2-external.in.paths"
 
 config BR2_HOST_GCC_AT_LEAST_4_9
 	bool
-	default y if BR2_HOST_GCC_VERSION = "4 9"
+	default y if "$(HOST_GCC_VERSION)" = "4 9"
 
 config BR2_HOST_GCC_AT_LEAST_5
 	bool
-	default y if BR2_HOST_GCC_VERSION = "5"
+	default y if "$(HOST_GCC_VERSION)" = "5"
 	select BR2_HOST_GCC_AT_LEAST_4_9
 
 config BR2_HOST_GCC_AT_LEAST_6
 	bool
-	default y if BR2_HOST_GCC_VERSION = "6"
+	default y if "$(HOST_GCC_VERSION)" = "6"
 	select BR2_HOST_GCC_AT_LEAST_5
 
 config BR2_HOST_GCC_AT_LEAST_7
 	bool
-	default y if BR2_HOST_GCC_VERSION = "7"
+	default y if "$(HOST_GCC_VERSION)" = "7"
 	select BR2_HOST_GCC_AT_LEAST_6
 
 config BR2_HOST_GCC_AT_LEAST_8
 	bool
-	default y if BR2_HOST_GCC_VERSION = "8"
+	default y if "$(HOST_GCC_VERSION)" = "8"
 	select BR2_HOST_GCC_AT_LEAST_7
 
 config BR2_HOST_GCC_AT_LEAST_9
 	bool
-	default y if BR2_HOST_GCC_VERSION = "9"
+	default y if "$(HOST_GCC_VERSION)" = "9"
 	select BR2_HOST_GCC_AT_LEAST_8
 
 config BR2_HOST_GCC_AT_LEAST_10
 	bool
-	default y if BR2_HOST_GCC_VERSION = "10"
+	default y if "$(HOST_GCC_VERSION)" = "10"
 	select BR2_HOST_GCC_AT_LEAST_9
 
 config BR2_HOST_GCC_AT_LEAST_11
 	bool
-	default y if BR2_HOST_GCC_VERSION = "11"
+	default y if "$(HOST_GCC_VERSION)" = "11"
 	select BR2_HOST_GCC_AT_LEAST_10
 
 config BR2_HOST_GCC_AT_LEAST_12
 	bool
-	default y if BR2_HOST_GCC_VERSION = "12"
+	default y if "$(HOST_GCC_VERSION)" = "12"
 	select BR2_HOST_GCC_AT_LEAST_11
 
 config BR2_HOST_GCC_AT_LEAST_13
 	bool
-	default y if BR2_HOST_GCC_VERSION = "13"
+	default y if "$(HOST_GCC_VERSION)" = "13"
 	select BR2_HOST_GCC_AT_LEAST_12
 
 config BR2_HOST_GCC_AT_LEAST_14
 	bool
-	default y if BR2_HOST_GCC_VERSION = "14"
+	default y if "$(HOST_GCC_VERSION)" = "14"
 	select BR2_HOST_GCC_AT_LEAST_13
 
 config BR2_HOST_GCC_AT_LEAST_15
 	bool
-	default y if BR2_HOST_GCC_VERSION = "15"
+	default y if "$(HOST_GCC_VERSION)" = "15"
 	select BR2_HOST_GCC_AT_LEAST_14
 
 # When adding new entries above, be sure to update
@@ -222,21 +205,17 @@ config BR2_TAR_OPTIONS
 
 endmenu
 
-config BR2_DEFCONFIG_FROM_ENV
-	string
-	option env="BR2_DEFCONFIG"
-
 config BR2_DEFCONFIG
 	string "Location to save buildroot config"
-	default BR2_DEFCONFIG_FROM_ENV if BR2_DEFCONFIG_FROM_ENV != ""
-	default "$(CONFIG_DIR)/defconfig"
+	default "$(BR2_DEFCONFIG)" if "$(BR2_DEFCONFIG)" != ""
+	default "\$(CONFIG_DIR)/defconfig"
 	help
 	  When running 'make savedefconfig', the defconfig file will be
 	  saved in this location.
 
 config BR2_DL_DIR
 	string "Download dir"
-	default "$(TOPDIR)/dl"
+	default "\$(TOPDIR)/dl"
 	help
 	  Directory to store all the source files that we need to fetch.
 	  If the Linux shell environment has defined the BR2_DL_DIR
@@ -250,7 +229,7 @@ config BR2_DL_DIR
 
 config BR2_HOST_DIR
 	string "Host dir"
-	default "$(BASE_DIR)/host"
+	default "\$(BASE_DIR)/host"
 	help
 	  Directory to store all the binary files that are built for the
 	  host. This includes the cross compilation toolchain when
@@ -708,7 +687,7 @@ endchoice
 
 config BR2_PACKAGE_OVERRIDE_FILE
 	string "location of a package override file"
-	default "$(CONFIG_DIR)/local.mk"
+	default "\$(CONFIG_DIR)/local.mk"
 	help
 	  A package override file is a short makefile that contains
 	  variable definitions of the form <pkg>_OVERRIDE_SRCDIR, which
@@ -1025,4 +1004,4 @@ source "package/Config.in.host"
 source "Config.in.legacy"
 
 # br2-external menus definitions
-source "$BR2_BASE_DIR/.br2-external.in.menus"
+source "$(BASE_DIR)/.br2-external.in.menus"
diff --git a/Config.in.legacy b/Config.in.legacy
index 9ba6ab243e..0e4fb469b2 100644
--- a/Config.in.legacy
+++ b/Config.in.legacy
@@ -90,11 +90,7 @@
 #
 # [End of example]
 
-config BR2_SKIP_LEGACY
-	bool
-	option env="SKIP_LEGACY"
-
-if !BR2_SKIP_LEGACY
+if "$(SKIP_LEGACY)" = ""
 
 config BR2_LEGACY
 	bool
diff --git a/docs/manual/customize-outside-br.adoc b/docs/manual/customize-outside-br.adoc
index 8a76f3a998..ab9557923b 100644
--- a/docs/manual/customize-outside-br.adoc
+++ b/docs/manual/customize-outside-br.adoc
@@ -154,8 +154,8 @@ The main usage of this is to store package recipes. The recommended way
 to do this is to write a +Config.in+ file that looks like:
 
 ----
-source "$BR2_EXTERNAL_BAR_42_PATH/package/package1/Config.in"
-source "$BR2_EXTERNAL_BAR_42_PATH/package/package2/Config.in"
+source "$(BR2_EXTERNAL_BAR_42_PATH)/package/package1/Config.in"
+source "$(BR2_EXTERNAL_BAR_42_PATH)/package/package2/Config.in"
 ----
 
 Then, have an +external.mk+ file that looks like:
@@ -244,10 +244,10 @@ illustration, of course):
   |     `----
   |
   |- Config.in
-  |     |source "$BR2_EXTERNAL_BAR_42_PATH/toolchain/toolchain-external-mine/Config.in.options"
-  |     |source "$BR2_EXTERNAL_BAR_42_PATH/package/pkg-1/Config.in"
-  |     |source "$BR2_EXTERNAL_BAR_42_PATH/package/pkg-2/Config.in"
-  |     |source "$BR2_EXTERNAL_BAR_42_PATH/package/my-jpeg/Config.in"
+  |     |source "$(BR2_EXTERNAL_BAR_42_PATH)/toolchain/toolchain-external-mine/Config.in.options"
+  |     |source "$(BR2_EXTERNAL_BAR_42_PATH)/package/pkg-1/Config.in"
+  |     |source "$(BR2_EXTERNAL_BAR_42_PATH)/package/pkg-2/Config.in"
+  |     |source "$(BR2_EXTERNAL_BAR_42_PATH)/package/my-jpeg/Config.in"
   |     |
   |     |config BAR_42_FLASH_ADDR
   |     |    hex "my-board flash address"
diff --git a/linux/Config.ext.in b/linux/Config.ext.in
index 3b72d3cf60..adc9c5c5a4 100644
--- a/linux/Config.ext.in
+++ b/linux/Config.ext.in
@@ -56,6 +56,6 @@ config BR2_LINUX_KERNEL_EXT_RTAI
 	  RTAI Kernel part.
 
 # kernel extensions from br2-external trees, if any
-source "$BR2_BASE_DIR/.br2-external.in.linux"
+source "$(BASE_DIR)/.br2-external.in.linux"
 
 endmenu
diff --git a/package/amlogic-boot-fip/Config.in.host b/package/amlogic-boot-fip/Config.in.host
index bccc6296d1..54f4075f27 100644
--- a/package/amlogic-boot-fip/Config.in.host
+++ b/package/amlogic-boot-fip/Config.in.host
@@ -1,6 +1,6 @@
 config BR2_PACKAGE_HOST_AMLOGIC_BOOT_FIP
 	bool "host amlogic-boot-fip"
-	depends on BR2_HOSTARCH = "x86_64"
+	depends on "$(HOSTARCH)" = "x86_64"
 	help
 	  Firmware Image Package (FIP) sources used to sign Amlogic
 	  u-boot binaries in LibreELEC images
diff --git a/package/arm-gnu-toolchain/Config.in.host b/package/arm-gnu-toolchain/Config.in.host
index de8ff8c005..7afb5c4873 100644
--- a/package/arm-gnu-toolchain/Config.in.host
+++ b/package/arm-gnu-toolchain/Config.in.host
@@ -1,4 +1,4 @@
 config BR2_PACKAGE_HOST_ARM_GNU_TOOLCHAIN_SUPPORTS
 	bool
-	default y if BR2_HOSTARCH = "aarch64"
-	default y if BR2_HOSTARCH = "x86_64"
+	default y if "$(HOSTARCH)" = "aarch64"
+	default y if "$(HOSTARCH)" = "x86_64"
diff --git a/package/erlang/Config.in b/package/erlang/Config.in
index 724f91123b..f3830cefad 100644
--- a/package/erlang/Config.in
+++ b/package/erlang/Config.in
@@ -1,8 +1,8 @@
 config BR2_PACKAGE_HOST_ERLANG_ARCH_SUPPORTS
 	bool
-	default y if BR2_HOSTARCH = "aarch64"
-	default y if BR2_HOSTARCH = "x86_64"
-	default y if BR2_HOSTARCH = "x86"
+	default y if "$(HOSTARCH)" = "aarch64"
+	default y if "$(HOSTARCH)" = "x86_64"
+	default y if "$(HOSTARCH)" = "x86"
 
 config BR2_PACKAGE_ERLANG_ARCH_SUPPORTS
 	bool
diff --git a/package/flutter-sdk-bin/Config.in.host b/package/flutter-sdk-bin/Config.in.host
index 181a2ee6e5..c1c97e2ca8 100644
--- a/package/flutter-sdk-bin/Config.in.host
+++ b/package/flutter-sdk-bin/Config.in.host
@@ -1,6 +1,6 @@
 config BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS
 	bool
-	default y if BR2_HOSTARCH = "x86_64"
+	default y if "$(HOSTARCH)" = "x86_64"
 
 config BR2_PACKAGE_HOST_FLUTTER_SDK_BIN
 	bool "host flutter-sdk-bin"
diff --git a/package/go/Config.in.host b/package/go/Config.in.host
index 47c7e5d075..fa991f3a91 100644
--- a/package/go/Config.in.host
+++ b/package/go/Config.in.host
@@ -45,8 +45,8 @@ config BR2_PACKAGE_HOST_GO_HOST_CGO_LINKING_SUPPORTS
 	default y if BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS
 	default y if !BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
 	depends on BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS
-	depends on BR2_HOSTARCH != "mips64"
-	depends on BR2_HOSTARCH != "mips64el"
+	depends on "$(HOSTARCH)" != "mips64"
+	depends on "$(HOSTARCH)" != "mips64el"
 
 # Go packages should select BR2_PACKAGE_HOST_GO
 config BR2_PACKAGE_HOST_GO
diff --git a/package/go/go-bin/Config.in.host b/package/go/go-bin/Config.in.host
index 6312c1b950..3e842e0ff7 100644
--- a/package/go/go-bin/Config.in.host
+++ b/package/go/go-bin/Config.in.host
@@ -1,12 +1,12 @@
 # Translate the HOSTARCH into the architecture name used by the Go compiler
 config BR2_PACKAGE_HOST_GO_BIN_HOST_ARCH
 	string
-	default "armv6l" if BR2_HOSTARCH = "arm"
-	default "arm64" if BR2_HOSTARCH = "aarch64"
-	default "ppc64le" if BR2_HOSTARCH = "powerpc64le"
-	default "s390x" if BR2_HOSTARCH = "s390x"
-	default "386" if BR2_HOSTARCH = "x86"
-	default "amd64" if BR2_HOSTARCH = "x86_64"
+	default "armv6l" if "$(HOSTARCH)" = "arm"
+	default "arm64" if "$(HOSTARCH)" = "aarch64"
+	default "ppc64le" if "$(HOSTARCH)" = "powerpc64le"
+	default "s390x" if "$(HOSTARCH)" = "s390x"
+	default "386" if "$(HOSTARCH)" = "x86"
+	default "amd64" if "$(HOSTARCH)" = "x86_64"
 
 config BR2_PACKAGE_HOST_GO_BIN_HOST_ARCH_SUPPORTS
 	bool
diff --git a/package/go/go-bootstrap-stage1/Config.in.host b/package/go/go-bootstrap-stage1/Config.in.host
index 56a743caf9..50caad0a8b 100644
--- a/package/go/go-bootstrap-stage1/Config.in.host
+++ b/package/go/go-bootstrap-stage1/Config.in.host
@@ -1,6 +1,6 @@
 config BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE1_ARCH_SUPPORTS
 	bool
 	# See src/cmd/dist/unix.c for the list of supported architectures
-	default y if BR2_HOSTARCH = "x86"
-	default y if BR2_HOSTARCH = "x86_64"
-	default y if BR2_HOSTARCH = "arm"
+	default y if "$(HOSTARCH)" = "x86"
+	default y if "$(HOSTARCH)" = "x86_64"
+	default y if "$(HOSTARCH)" = "arm"
diff --git a/package/google-breakpad/Config.in.host b/package/google-breakpad/Config.in.host
index 28d304766a..84e95957b2 100644
--- a/package/google-breakpad/Config.in.host
+++ b/package/google-breakpad/Config.in.host
@@ -1,8 +1,8 @@
 config BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS
 	bool
-	default y if BR2_HOSTARCH = "x86_64"
-	default y if BR2_HOSTARCH = "x86"
-	default y if BR2_HOSTARCH = "arm"
-	default y if BR2_HOSTARCH = "aarch64"
-	default y if BR2_HOSTARCH = "mips"
-	default y if BR2_HOSTARCH = "mipsel"
+	default y if "$(HOSTARCH)" = "x86_64"
+	default y if "$(HOSTARCH)" = "x86"
+	default y if "$(HOSTARCH)" = "arm"
+	default y if "$(HOSTARCH)" = "aarch64"
+	default y if "$(HOSTARCH)" = "mips"
+	default y if "$(HOSTARCH)" = "mipsel"
diff --git a/package/jpeg/Config.in b/package/jpeg/Config.in
index 371f89aa49..0a7e01d28b 100644
--- a/package/jpeg/Config.in
+++ b/package/jpeg/Config.in
@@ -40,7 +40,7 @@ config BR2_PACKAGE_JPEG_TURBO
 	  http://www.libjpeg-turbo.org
 
 # libjpeg from br2-external trees, if any
-source "$BR2_BASE_DIR/.br2-external.in.jpeg"
+source "$(BASE_DIR)/.br2-external.in.jpeg"
 
 endchoice
 
diff --git a/package/kvm-unit-tests/Config.in b/package/kvm-unit-tests/Config.in
index 817d3c4a8f..87e7125313 100644
--- a/package/kvm-unit-tests/Config.in
+++ b/package/kvm-unit-tests/Config.in
@@ -20,7 +20,7 @@ config BR2_PACKAGE_KVM_UNIT_TESTS
 	# gcc 4.5 at least. on i386, we use the target gcc, while on
 	# x86-64 we use the host gcc (see .mk file for details)
 	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 || !BR2_i386
-	depends on BR2_HOSTARCH = "x86_64" || !BR2_x86_64
+	depends on "$(HOSTARCH)" = "x86_64" || !BR2_x86_64
 	select BR2_HOSTARCH_NEEDS_IA32_COMPILER if BR2_x86_64
 	help
 	  kvm-unit-tests is a project as old as KVM. As its name
diff --git a/package/luajit/Config.in b/package/luajit/Config.in
index 31e9e0243e..408032c7e8 100644
--- a/package/luajit/Config.in
+++ b/package/luajit/Config.in
@@ -7,9 +7,9 @@ config BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS
 	default y if BR2_powerpc
 	# -m32 flag is used for 32bit builds and host-luajit has
 	# limited architecture support
-	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+	depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86"
 	# Building for 64-bit target requires a 64-bit host
-	depends on !BR2_ARCH_IS_64 || BR2_HOSTARCH = "x86_64"
+	depends on !BR2_ARCH_IS_64 || "$(HOSTARCH)" = "x86_64"
 
 config BR2_PACKAGE_LUAJIT
 	bool "luajit"
diff --git a/package/mono/Config.in b/package/mono/Config.in
index 0152df8268..354dc56d24 100644
--- a/package/mono/Config.in
+++ b/package/mono/Config.in
@@ -1,7 +1,7 @@
 config BR2_PACKAGE_HOST_MONO_ARCH_SUPPORTS
 	bool
-	default y if BR2_HOSTARCH = "x86_64"
-	default y if BR2_HOSTARCH = "x86"
+	default y if "$(HOSTARCH)" = "x86_64"
+	default y if "$(HOSTARCH)" = "x86"
 
 config BR2_PACKAGE_MONO_ARCH_SUPPORTS
 	bool
diff --git a/package/nodejs/Config.in.host b/package/nodejs/Config.in.host
index a8ab89176c..a8b0f3997d 100644
--- a/package/nodejs/Config.in.host
+++ b/package/nodejs/Config.in.host
@@ -1,9 +1,9 @@
 config BR2_PACKAGE_HOST_NODEJS_BIN_ARCH_SUPPORTS
 	bool
-	default y if BR2_HOSTARCH = "aarch64"
-	default y if BR2_HOSTARCH = "arm"
-	default y if BR2_HOSTARCH = "ppc64le"
-	default y if BR2_HOSTARCH = "x86_64"
+	default y if "$(HOSTARCH)" = "aarch64"
+	default y if "$(HOSTARCH)" = "arm"
+	default y if "$(HOSTARCH)" = "ppc64le"
+	default y if "$(HOSTARCH)" = "x86_64"
 
 comment "host nodejs needs a host gcc >= 8"
 	depends on !BR2_PACKAGE_HOST_NODEJS_BIN_ARCH_SUPPORTS
diff --git a/package/openjdk/Config.in b/package/openjdk/Config.in
index 022ded8dbb..bac5d6d986 100644
--- a/package/openjdk/Config.in
+++ b/package/openjdk/Config.in
@@ -1,7 +1,7 @@
 config BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS
 	bool
-	default y if BR2_HOSTARCH = "x86_64"
-	default y if BR2_HOSTARCH = "aarch64"
+	default y if "$(HOSTARCH)" = "x86_64"
+	default y if "$(HOSTARCH)" = "aarch64"
 
 # Taken from make/autoconf/platform.m4
 config BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS
diff --git a/package/openssl/Config.in b/package/openssl/Config.in
index d255a05596..ca9d1a7e50 100644
--- a/package/openssl/Config.in
+++ b/package/openssl/Config.in
@@ -59,7 +59,7 @@ config BR2_PACKAGE_LIBRESSL
 source "package/libressl/Config.in"
 
 # openssl from br2-external trees, if any
-source "$BR2_BASE_DIR/.br2-external.in.openssl"
+source "$(BASE_DIR)/.br2-external.in.openssl"
 
 endchoice
 
diff --git a/package/protobuf/Config.in b/package/protobuf/Config.in
index ae4044ea32..89d94d73c6 100644
--- a/package/protobuf/Config.in
+++ b/package/protobuf/Config.in
@@ -16,17 +16,17 @@
 # host-protobuf only builds on certain architectures
 config BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS
 	bool
-	default y if BR2_HOSTARCH = "aarch64"
-	default y if BR2_HOSTARCH = "arm"
-	default y if BR2_HOSTARCH = "mips"
-	default y if BR2_HOSTARCH = "mipsel"
-	default y if BR2_HOSTARCH = "powerpc"
-	default y if BR2_HOSTARCH = "powerpc64"
-	default y if BR2_HOSTARCH = "powerpc64le"
-	default y if BR2_HOSTARCH = "sparc"
-	default y if BR2_HOSTARCH = "sparc64"
-	default y if BR2_HOSTARCH = "x86"
-	default y if BR2_HOSTARCH = "x86_64"
+	default y if "$(HOSTARCH)" = "aarch64"
+	default y if "$(HOSTARCH)" = "arm"
+	default y if "$(HOSTARCH)" = "mips"
+	default y if "$(HOSTARCH)" = "mipsel"
+	default y if "$(HOSTARCH)" = "powerpc"
+	default y if "$(HOSTARCH)" = "powerpc64"
+	default y if "$(HOSTARCH)" = "powerpc64le"
+	default y if "$(HOSTARCH)" = "sparc"
+	default y if "$(HOSTARCH)" = "sparc64"
+	default y if "$(HOSTARCH)" = "x86"
+	default y if "$(HOSTARCH)" = "x86_64"
 
 config BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS
 	bool
diff --git a/package/qt5/qt5webengine/Config.in b/package/qt5/qt5webengine/Config.in
index 2c16d819d2..d40d007ed4 100644
--- a/package/qt5/qt5webengine/Config.in
+++ b/package/qt5/qt5webengine/Config.in
@@ -5,7 +5,7 @@ config BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS
 		BR2_mips || BR2_mips64
 	# -m32 flag is used for 32bit builds and host tools have
 	# limited architecture support
-	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+	depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86"
 	depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative
 	depends on !BR2_BINFMT_FLAT # qt5base-icu
 	depends on BR2_USE_MMU # libglib2, qt5base-dbus
diff --git a/package/rustc/Config.in.host b/package/rustc/Config.in.host
index 6130b73921..4fd6e1979d 100644
--- a/package/rustc/Config.in.host
+++ b/package/rustc/Config.in.host
@@ -2,14 +2,14 @@
 # When adding new entries below, update RUST_HOSTS in utils/update-rust
 config BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS
 	bool
-	default y if BR2_HOSTARCH = "aarch64"
-	default y if BR2_HOSTARCH = "powerpc"
-	default y if BR2_HOSTARCH = "powerpc64"
-	default y if BR2_HOSTARCH = "powerpc64le"
-	default y if BR2_HOSTARCH = "riscv64"
-	default y if BR2_HOSTARCH = "s390x"
-	default y if BR2_HOSTARCH = "x86"
-	default y if BR2_HOSTARCH = "x86_64"
+	default y if "$(HOSTARCH)" = "aarch64"
+	default y if "$(HOSTARCH)" = "powerpc"
+	default y if "$(HOSTARCH)" = "powerpc64"
+	default y if "$(HOSTARCH)" = "powerpc64le"
+	default y if "$(HOSTARCH)" = "riscv64"
+	default y if "$(HOSTARCH)" = "s390x"
+	default y if "$(HOSTARCH)" = "x86"
+	default y if "$(HOSTARCH)" = "x86_64"
 
 # The pre-built Rust standard library is only available for a number
 # of architectures/C libraries combinations, with different levels of
diff --git a/package/sam-ba/Config.in.host b/package/sam-ba/Config.in.host
index cd11e8633e..9b2e2afb75 100644
--- a/package/sam-ba/Config.in.host
+++ b/package/sam-ba/Config.in.host
@@ -1,6 +1,6 @@
 config BR2_PACKAGE_HOST_SAM_BA
 	bool "host sam-ba"
-	depends on BR2_HOSTARCH = "x86_64"
+	depends on "$(HOSTARCH)" = "x86_64"
 	help
 	  Atmel SAM-BA software provides an open set of tools for
 	  programming the Atmel SAM3, SAM7 and SAM9 ARM-based
diff --git a/package/supertuxkart/Config.in b/package/supertuxkart/Config.in
index 0f6c244058..0aab4f9e9c 100644
--- a/package/supertuxkart/Config.in
+++ b/package/supertuxkart/Config.in
@@ -1,6 +1,6 @@
 config BR2_PACKAGE_SUPERTUXKART
 	bool "supertuxkart"
-	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+	depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86"
 	depends on BR2_i386 || BR2_x86_64
 	depends on BR2_USE_MMU # fork()
 	depends on BR2_INSTALL_LIBSTDCPP # openal
@@ -34,7 +34,7 @@ config BR2_PACKAGE_SUPERTUXKART
 	  http://supertuxkart.sourceforge.net/Main_Page
 
 comment "supertuxkart needs an OpenGL backend, a uClibc or glibc toolchain w/ NPTL, C++, gcc >= 9"
-	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+	depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86"
 	depends on BR2_i386 || BR2_x86_64
 	depends on BR2_USE_MMU
 	depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS
diff --git a/package/ti-cgt-pru/Config.in.host b/package/ti-cgt-pru/Config.in.host
index eab3cd72d5..cf56854dd1 100644
--- a/package/ti-cgt-pru/Config.in.host
+++ b/package/ti-cgt-pru/Config.in.host
@@ -1,7 +1,7 @@
 config BR2_PACKAGE_HOST_TI_CGT_PRU_ARCH_SUPPORTS
 	bool
 	default y
-	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+	depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86"
 	depends on BR2_arm
 
 config BR2_PACKAGE_HOST_TI_CGT_PRU
diff --git a/package/ti-gfx/Config.in b/package/ti-gfx/Config.in
index 40f46335a3..093417fa21 100644
--- a/package/ti-gfx/Config.in
+++ b/package/ti-gfx/Config.in
@@ -1,7 +1,7 @@
 config BR2_PACKAGE_TI_GFX
 	bool "ti-gfx"
 	depends on BR2_LINUX_KERNEL && BR2_TOOLCHAIN_USES_GLIBC && BR2_arm
-	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+	depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86"
 	select BR2_HOSTARCH_NEEDS_IA32_LIBS
 	select BR2_PACKAGE_HAS_LIBEGL
 	select BR2_PACKAGE_HAS_LIBGLES
diff --git a/package/wine/Config.in b/package/wine/Config.in
index 7a01ef6f7c..1fc760982e 100644
--- a/package/wine/Config.in
+++ b/package/wine/Config.in
@@ -2,9 +2,9 @@ config BR2_PACKAGE_WINE_ARCH_SUPPORTS
 	bool
 	default y
 	# Wine only builds on certain architectures
-	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" || \
-	           BR2_HOSTARCH = "powerpc" || BR2_HOSTARCH = "arm" || \
-	           BR2_HOSTARCH = "aarch64"
+	depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "x86" || \
+	           "$(HOSTARCH)" = "powerpc" || "$(HOSTARCH)" = "arm" || \
+	           "$(HOSTARCH)" = "aarch64"
 	# Wine has much CPU specific code and mostly makes sense on x86
 	depends on BR2_i386
 
diff --git a/support/scripts/gen-bootlin-toolchains b/support/scripts/gen-bootlin-toolchains
index ee64a86902..0fc87ed29d 100755
--- a/support/scripts/gen-bootlin-toolchains
+++ b/support/scripts/gen-bootlin-toolchains
@@ -505,7 +505,7 @@ def gen_config_in_options(toolchains, fpath):
         f.write("if BR2_TOOLCHAIN_EXTERNAL_BOOTLIN\n\n")
 
         f.write("config BR2_TOOLCHAIN_EXTERNAL_PREFIX\n")
-        f.write("\tdefault \"$(ARCH)-linux\"\n")
+        f.write("\tdefault \"\\$(ARCH)-linux\"\n")
 
         f.write("\n")
 
diff --git a/support/testing/tests/core/br2-external/detect-bad-arch/Config.in b/support/testing/tests/core/br2-external/detect-bad-arch/Config.in
index 530c077bbe..579cbfa67d 100644
--- a/support/testing/tests/core/br2-external/detect-bad-arch/Config.in
+++ b/support/testing/tests/core/br2-external/detect-bad-arch/Config.in
@@ -1 +1 @@
-source "$BR2_EXTERNAL_DETECT_BAD_ARCH_PATH/package/detect-bad-arch/Config.in"
+source "$(BR2_EXTERNAL_DETECT_BAD_ARCH_PATH)/package/detect-bad-arch/Config.in"
diff --git a/support/testing/tests/core/br2-external/flat-stacksize/Config.in b/support/testing/tests/core/br2-external/flat-stacksize/Config.in
index cdb4e9f057..e629b87cd7 100644
--- a/support/testing/tests/core/br2-external/flat-stacksize/Config.in
+++ b/support/testing/tests/core/br2-external/flat-stacksize/Config.in
@@ -1 +1 @@
-source "$BR2_EXTERNAL_FLAT_STACKSIZE_PATH/package/flat-stacksize-test/Config.in"
+source "$(BR2_EXTERNAL_FLAT_STACKSIZE_PATH)/package/flat-stacksize-test/Config.in"
diff --git a/support/testing/tests/core/test_selinux/br2_external/Config.in b/support/testing/tests/core/test_selinux/br2_external/Config.in
index 9d9c84ee3c..bddbcb4938 100644
--- a/support/testing/tests/core/test_selinux/br2_external/Config.in
+++ b/support/testing/tests/core/test_selinux/br2_external/Config.in
@@ -1 +1 @@
-source "$BR2_EXTERNAL_SELINUX_PATH/package/selinux-test/Config.in"
+source "$(BR2_EXTERNAL_SELINUX_PATH)/package/selinux-test/Config.in"
diff --git a/support/testing/tests/package/br2-external/clang-compiler-rt/Config.in b/support/testing/tests/package/br2-external/clang-compiler-rt/Config.in
index e1f9f8c598..e578a4c9c8 100644
--- a/support/testing/tests/package/br2-external/clang-compiler-rt/Config.in
+++ b/support/testing/tests/package/br2-external/clang-compiler-rt/Config.in
@@ -1 +1 @@
-source "$BR2_EXTERNAL_CLANG_COMPILER_RT_PATH/package/libfuzzer/Config.in"
+source "$(BR2_EXTERNAL_CLANG_COMPILER_RT_PATH)/package/libfuzzer/Config.in"
diff --git a/support/testing/tests/package/br2-external/gumbo-parser/Config.in b/support/testing/tests/package/br2-external/gumbo-parser/Config.in
index 28a97c1dfe..63a4a301e3 100644
--- a/support/testing/tests/package/br2-external/gumbo-parser/Config.in
+++ b/support/testing/tests/package/br2-external/gumbo-parser/Config.in
@@ -1 +1 @@
-source "$BR2_EXTERNAL_GUMBO_PARSER_PATH/package/gumbo-parser-test/Config.in"
+source "$(BR2_EXTERNAL_GUMBO_PARSER_PATH)/package/gumbo-parser-test/Config.in"
diff --git a/support/testing/tests/package/br2-external/openjdk/Config.in b/support/testing/tests/package/br2-external/openjdk/Config.in
index 2588b34054..cad25f7804 100644
--- a/support/testing/tests/package/br2-external/openjdk/Config.in
+++ b/support/testing/tests/package/br2-external/openjdk/Config.in
@@ -1,2 +1,2 @@
-source "$BR2_EXTERNAL_OPENJDK_PATH/package/openjdk-hello-world/Config.in"
-source "$BR2_EXTERNAL_OPENJDK_PATH/package/openjdk-jni-test/Config.in"
+source "$(BR2_EXTERNAL_OPENJDK_PATH)/package/openjdk-hello-world/Config.in"
+source "$(BR2_EXTERNAL_OPENJDK_PATH)/package/openjdk-jni-test/Config.in"
diff --git a/support/testing/tests/package/br2-external/polkit/Config.in b/support/testing/tests/package/br2-external/polkit/Config.in
index 2d11756193..1b4e421d1e 100644
--- a/support/testing/tests/package/br2-external/polkit/Config.in
+++ b/support/testing/tests/package/br2-external/polkit/Config.in
@@ -1 +1 @@
-source "$BR2_EXTERNAL_POLKIT_PATH/package/polkit-rules-test/Config.in"
+source "$(BR2_EXTERNAL_POLKIT_PATH)/package/polkit-rules-test/Config.in"
diff --git a/support/testing/tests/package/br2-external/python-pybind/Config.in b/support/testing/tests/package/br2-external/python-pybind/Config.in
index 70c77157b3..f0cef44369 100644
--- a/support/testing/tests/package/br2-external/python-pybind/Config.in
+++ b/support/testing/tests/package/br2-external/python-pybind/Config.in
@@ -1 +1 @@
-source "$BR2_EXTERNAL_PYTHON_PYBIND_PATH/package/python-pybind-example/Config.in"
+source "$(BR2_EXTERNAL_PYTHON_PYBIND_PATH)/package/python-pybind-example/Config.in"
diff --git a/system/Config.in b/system/Config.in
index f4788cd72e..46a1cf5d59 100644
--- a/system/Config.in
+++ b/system/Config.in
@@ -20,7 +20,7 @@ config BR2_ROOTFS_SKELETON_CUSTOM
 	  Use custom target skeleton.
 
 # skeleton from br2-external trees, if any
-source "$BR2_BASE_DIR/.br2-external.in.skeleton"
+source "$(BASE_DIR)/.br2-external.in.skeleton"
 
 endchoice
 
@@ -189,7 +189,7 @@ config BR2_INIT_NONE
 	  or with a rootfs-overlay.
 
 # Init systems from br2-external trees, if any
-source "$BR2_BASE_DIR/.br2-external.in.init"
+source "$(BASE_DIR)/.br2-external.in.init"
 
 endchoice
 
diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in
index 9d8c815438..56c2ea7a3e 100644
--- a/toolchain/toolchain-external/Config.in
+++ b/toolchain/toolchain-external/Config.in
@@ -26,7 +26,7 @@ source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in"
 source "toolchain/toolchain-external/toolchain-external-custom/Config.in"
 
 # Toolchains from br2-external trees, if any
-source "$BR2_BASE_DIR/.br2-external.in.toolchains"
+source "$(BASE_DIR)/.br2-external.in.toolchains"
 
 endchoice
 
diff --git a/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in b/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in
index c3592b9d20..ec489adac8 100644
--- a/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in
+++ b/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in
@@ -1,7 +1,7 @@
 config BR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE
 	bool "Arm AArch64 BE 15.2.rel1"
 	depends on BR2_aarch64_be
-	depends on BR2_HOSTARCH = "x86_64"
+	depends on "$(HOSTARCH)" = "x86_64"
 	depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_16
 	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
 	select BR2_TOOLCHAIN_HAS_SSP
diff --git a/toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in b/toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in
index ae1298bfe2..ac60c57aa6 100644
--- a/toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in
+++ b/toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in
@@ -1,7 +1,7 @@
 config BR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64
 	bool "Arm AArch64 15.2.rel1"
 	depends on BR2_aarch64
-	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "aarch64"
+	depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "aarch64"
 	depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_16
 	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
 	select BR2_TOOLCHAIN_HAS_SSP
diff --git a/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in b/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in
index 992ba09518..982654ffa0 100644
--- a/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in
+++ b/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in
@@ -7,7 +7,7 @@ config BR2_TOOLCHAIN_EXTERNAL_ARM_ARM
 	depends on BR2_arm
 	depends on BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8A
 	depends on BR2_ARM_CPU_HAS_NEON
-	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "aarch64"
+	depends on "$(HOSTARCH)" = "x86_64" || "$(HOSTARCH)" = "aarch64"
 	depends on BR2_ARM_EABIHF
 	depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_16
 	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
diff --git a/toolchain/toolchain-external/toolchain-external-bootlin/Config.in b/toolchain/toolchain-external/toolchain-external-bootlin/Config.in
index 6552da9a84..1fa4fccb0f 100644
--- a/toolchain/toolchain-external/toolchain-external-bootlin/Config.in
+++ b/toolchain/toolchain-external/toolchain-external-bootlin/Config.in
@@ -1,7 +1,7 @@
 config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN
 	bool "Bootlin toolchains"
 	depends on BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCH_SUPPORTS
-	depends on BR2_HOSTARCH = "x86_64"
+	depends on "$(HOSTARCH)" = "x86_64"
 	help
 	  Bootlin toolchains are built using Buildroot for a large
 	  number of architectures and C libraries configurations.
diff --git a/toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options b/toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options
index 81cb3f0a05..8dcb627956 100644
--- a/toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options
+++ b/toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options
@@ -49,7 +49,7 @@ config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCH_SUPPORTS
 if BR2_TOOLCHAIN_EXTERNAL_BOOTLIN
 
 config BR2_TOOLCHAIN_EXTERNAL_PREFIX
-	default "$(ARCH)-linux"
+	default "\$(ARCH)-linux"
 
 config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
 	default "toolchain-external-bootlin"
diff --git a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options
index 721fd272e0..92c1d6a37d 100644
--- a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options
+++ b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options
@@ -23,7 +23,7 @@ config BR2_TOOLCHAIN_EXTERNAL_REL_BIN_PATH
 
 config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX
 	string "Toolchain prefix"
-	default "$(ARCH)-linux"
+	default "\$(ARCH)-linux"
 	help
 	  Component name prefix used by your external toolchain.
 
-- 
2.55.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* [Buildroot] [PATCH 3/7] */Config.in: replace bool entries with prompt within all choices
  2026-10-10 15:11 [Buildroot] [PATCH 0/7] Update kconfig inrastructure to Linux 7.2.9 Titouan Christophe via buildroot
  2026-10-10 15:11 ` [Buildroot] [PATCH 1/7] Makefile: always use a base config file for defconfig Titouan Christophe via buildroot
  2026-10-10 15:11 ` [Buildroot] [PATCH 2/7] */Config.in: use the new $(VAR) syntax Titouan Christophe via buildroot
@ 2026-10-10 15:11 ` Titouan Christophe via buildroot
  2026-10-10 15:11 ` [Buildroot] [PATCH 5/7] package/openssl: move libopenssl/libressl options out of the choice Titouan Christophe via buildroot
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Titouan Christophe via buildroot @ 2026-10-10 15:11 UTC (permalink / raw)
  To: buildroot; +Cc: petr.vorel, ps.report, yann.morin, thomas.petazzoni

Since Linux commit bea2c5ef78 [1], first released in v6.13, the prompt of a
choice must be given with "prompt" instead of "bool".

[1] bea2c5ef78: kconfig: remove support for "bool" prompt for choice entries
    https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bea2c5ef789a37bace99f2f45eeef3be4559b228

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Titouan Christophe <titouan.christophe@mind.be>
---
 Config.in                                                 | 8 ++++----
 boot/xilinx-prebuilt/Config.in                            | 2 +-
 fs/ext2/Config.in                                         | 2 +-
 package/docker-engine/Config.in                           | 2 +-
 package/efl/Config.in                                     | 2 +-
 package/freescale-imx/firmware-imx/Config.in              | 2 +-
 package/linux-headers/Config.in.host                      | 2 +-
 package/podman/Config.in                                  | 4 ++--
 package/xenomai/Config.in                                 | 2 +-
 system/Config.in                                          | 6 +++---
 .../toolchain-external-custom/Config.in.options           | 4 ++--
 11 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/Config.in b/Config.in
index 1fa7ea3ca7..7a2de62a2e 100644
--- a/Config.in
+++ b/Config.in
@@ -643,7 +643,7 @@ config BR2_GOOGLE_BREAKPAD_INCLUDE_FILES
 endif
 
 choice
-	bool "libraries"
+	prompt "libraries"
 	default BR2_SHARED_LIBS if BR2_BINFMT_SUPPORTS_SHARED
 	default BR2_STATIC_LIBS if !BR2_BINFMT_SUPPORTS_SHARED
 	help
@@ -823,7 +823,7 @@ comment "PIC/PIE needs a toolchain w/ PIE"
 	depends on !BR2_TOOLCHAIN_SUPPORTS_PIE
 
 choice
-	bool "Stack Smashing Protection"
+	prompt "Stack Smashing Protection"
 	default BR2_SSP_ALL if BR2_ENABLE_SSP # legacy
 	default BR2_SSP_STRONG if BR2_TOOLCHAIN_HAS_SSP_STRONG
 	default BR2_SSP_REGULAR
@@ -887,7 +887,7 @@ comment "Stack Smashing Protection needs a toolchain w/ SSP"
 	depends on !BR2_TOOLCHAIN_HAS_SSP
 
 choice
-	bool "RELRO Protection"
+	prompt "RELRO Protection"
 	default BR2_RELRO_FULL if BR2_TOOLCHAIN_SUPPORTS_PIE
 	default BR2_RELRO_PARTIAL
 	depends on BR2_SHARED_LIBS
@@ -933,7 +933,7 @@ config BR2_FORTIFY_SOURCE_ARCH_SUPPORTS
 	depends on !BR2_microblaze
 
 choice
-	bool "Buffer-overflow Detection (FORTIFY_SOURCE)"
+	prompt "Buffer-overflow Detection (FORTIFY_SOURCE)"
 	default BR2_FORTIFY_SOURCE_1
 	depends on BR2_FORTIFY_SOURCE_ARCH_SUPPORTS
 	depends on BR2_TOOLCHAIN_USES_GLIBC
diff --git a/boot/xilinx-prebuilt/Config.in b/boot/xilinx-prebuilt/Config.in
index ff129ed5b5..4cd4d75561 100644
--- a/boot/xilinx-prebuilt/Config.in
+++ b/boot/xilinx-prebuilt/Config.in
@@ -23,7 +23,7 @@ config BR2_TARGET_XILINX_PREBUILT_VERSION
 	  Must be xilinx_v2023.1 or newer.
 
 choice
-	bool "family variant"
+	prompt "family variant"
 	default BR2_TARGET_XILINX_PREBUILT_VERSAL if BR2_PACKAGE_VERSAL_FIRMWARE  # legacy
 	default BR2_TARGET_XILINX_PREBUILT_VERSAL if BR2_cortex_a72
 	default BR2_TARGET_XILINX_PREBUILT_VERSAL2 if BR2_cortex_a78
diff --git a/fs/ext2/Config.in b/fs/ext2/Config.in
index c50f22626a..c1a943435e 100644
--- a/fs/ext2/Config.in
+++ b/fs/ext2/Config.in
@@ -10,7 +10,7 @@ config BR2_TARGET_ROOTFS_EXT2_2
 	bool
 
 choice
-	bool "ext2/3/4 variant"
+	prompt "ext2/3/4 variant"
 	default BR2_TARGET_ROOTFS_EXT2_2r1
 
 config BR2_TARGET_ROOTFS_EXT2_2r1
diff --git a/package/docker-engine/Config.in b/package/docker-engine/Config.in
index 541472d957..a5464b772f 100644
--- a/package/docker-engine/Config.in
+++ b/package/docker-engine/Config.in
@@ -45,7 +45,7 @@ config BR2_PACKAGE_DOCKER_ENGINE_DRIVER_VFS
 	  Build the vfs filesystem driver for Docker.
 
 choice
-	bool "support docker-init"
+	prompt "support docker-init"
 	default BR2_PACKAGE_DOCKER_ENGINE_DOCKER_INIT_TINI if BR2_PACKAGE_DOCKER_ENGINE_DOCKER_INIT  # legacy
 	help
 	  Support providing a minimal init process for containers.
diff --git a/package/efl/Config.in b/package/efl/Config.in
index c4f82b92e3..583c1c6f52 100644
--- a/package/efl/Config.in
+++ b/package/efl/Config.in
@@ -200,7 +200,7 @@ comment "Wayland support needs udev /dev management, OpenGL ES w/ EGL, threads,
 		|| !BR2_ENABLE_LOCALE
 
 choice
-	bool "OpenGL support"
+	prompt "OpenGL support"
 	help
 	  libevas can be configured to use HW acceleration with OpenGL
 	  or OpenGL ES.
diff --git a/package/freescale-imx/firmware-imx/Config.in b/package/freescale-imx/firmware-imx/Config.in
index 0acc235e0a..96220cfe66 100644
--- a/package/freescale-imx/firmware-imx/Config.in
+++ b/package/freescale-imx/firmware-imx/Config.in
@@ -65,7 +65,7 @@ config BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW_IMX9
 if BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW || BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW_IMX9
 
 choice
-	bool "DDR training binaries"
+	prompt "DDR training binaries"
 	default BR2_PACKAGE_FIRMWARE_IMX_LPDDR4
 	help
 	  Choose the DDR training binaries to be used depending on the
diff --git a/package/linux-headers/Config.in.host b/package/linux-headers/Config.in.host
index b11db18379..8b0069a7df 100644
--- a/package/linux-headers/Config.in.host
+++ b/package/linux-headers/Config.in.host
@@ -116,7 +116,7 @@ config BR2_KERNEL_HEADERS_CUSTOM_REPO_VERSION
 endif
 
 choice
-	bool "Custom kernel headers series"
+	prompt "Custom kernel headers series"
 	default BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_REALLY_OLD
 	depends on !BR2_LINUX_KERNEL_LATEST_VERSION || !BR2_KERNEL_HEADERS_AS_KERNEL
 	depends on !BR2_LINUX_KERNEL_LATEST_CIP_VERSION || !BR2_KERNEL_HEADERS_AS_KERNEL
diff --git a/package/podman/Config.in b/package/podman/Config.in
index bbcb15691d..97d0a0270a 100644
--- a/package/podman/Config.in
+++ b/package/podman/Config.in
@@ -35,7 +35,7 @@ config BR2_PACKAGE_PODMAN
 if BR2_PACKAGE_PODMAN
 
 choice
-	bool "support podman-init"
+	prompt "support podman-init"
 	default BR2_PACKAGE_PODMAN_INIT_CATATONIT
 	help
 	  Support providing a minimal init process for containers.
@@ -68,7 +68,7 @@ config BR2_PACKAGE_PODMAN_INIT_NAME
 	default "catatonit" if BR2_PACKAGE_PODMAN_INIT_CATATONIT
 
 choice
-	bool "Network backend"
+	prompt "Network backend"
 
 config BR2_PACKAGE_PODMAN_NET_PASST
 	bool "passt/pasta"
diff --git a/package/xenomai/Config.in b/package/xenomai/Config.in
index 13a273a960..e2fcd90669 100644
--- a/package/xenomai/Config.in
+++ b/package/xenomai/Config.in
@@ -43,7 +43,7 @@ config BR2_PACKAGE_XENOMAI
 if BR2_PACKAGE_XENOMAI
 
 choice
-	bool "Xenomai version"
+	prompt "Xenomai version"
 	help
 	  Make sure that the selected version has a patch for your
 	  selected Linux kernel. If it does not, download and select a
diff --git a/system/Config.in b/system/Config.in
index 46a1cf5d59..4e575e461d 100644
--- a/system/Config.in
+++ b/system/Config.in
@@ -56,7 +56,7 @@ config BR2_TARGET_GENERIC_ISSUE
 endif
 
 choice
-	bool "Passwords encoding"
+	prompt "Passwords encoding"
 	default BR2_TARGET_GENERIC_PASSWD_SHA256
 	help
 	  Choose the password encoding scheme to use when Buildroot
@@ -196,7 +196,7 @@ endchoice
 if BR2_INIT_SYSTEMD
 
 choice
-	bool "/var management"
+	prompt "/var management"
 	default BR2_INIT_SYSTEMD_VAR_FACTORY  # legacy
 	depends on !BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW
 	help
@@ -398,7 +398,7 @@ config BR2_TARGET_GENERIC_ROOT_PASSWD
 	  password!
 
 choice
-	bool "/bin/sh"
+	prompt "/bin/sh"
 	default BR2_SYSTEM_BIN_SH_BASH if !BR2_PACKAGE_BUSYBOX
 	help
 	  Select which shell will provide /bin/sh.
diff --git a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options
index 92c1d6a37d..68acc0a1a6 100644
--- a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options
+++ b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options
@@ -41,7 +41,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX
 	  as external toolchain.
 
 choice
-	bool "External toolchain gcc version"
+	prompt "External toolchain gcc version"
 	help
 	  Set to the gcc version that is used by your external
 	  toolchain.
@@ -159,7 +159,7 @@ comment "GCC older than 4.8 is not tested by Buildroot. Use at your own risk."
 	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
 
 choice
-	bool "External toolchain kernel headers series"
+	prompt "External toolchain kernel headers series"
 	default BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD
 	help
 	  Set to the kernel headers version that were used to build
-- 
2.55.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* [Buildroot] [PATCH 5/7] package/openssl: move libopenssl/libressl options out of the choice
  2026-10-10 15:11 [Buildroot] [PATCH 0/7] Update kconfig inrastructure to Linux 7.2.9 Titouan Christophe via buildroot
                   ` (2 preceding siblings ...)
  2026-10-10 15:11 ` [Buildroot] [PATCH 3/7] */Config.in: replace bool entries with prompt within all choices Titouan Christophe via buildroot
@ 2026-10-10 15:11 ` Titouan Christophe via buildroot
  2026-10-10 15:11 ` [Buildroot] [PATCH 6/7] docs/manual: add migration notes for changes in the kconfig syntax Titouan Christophe via buildroot
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Titouan Christophe via buildroot @ 2026-10-10 15:11 UTC (permalink / raw)
  To: buildroot; +Cc: petr.vorel, ps.report, yann.morin, thomas.petazzoni

The libopenssl and libressl sub-options are currently defined from
package/{libopenssl,libressl}/Config.in, which are sourced from within
the "ssl library" choice block, each wrapped in an "if" on its own
choice entry.

With the old kconfig, these entries were reparented below the choice
member they depend on, and so were not considered choice members
themselves. Since Linux commit 7e3465f63a0a [1], first released in v6.10,
this is no longer the case: every config entry inside a choice block is
a member of that choice. Combined with the stricter checks introduced by
commits 700e7a8d05ea [2] and fde192511bdb [3], parsing now fails with:

  package/libopenssl/Config.in:5: error: choice member must have a prompt
  package/libopenssl/Config.in:15: error: choice member must have a prompt
  package/libopenssl/Config.in:15: error: choice member must be bool

Fix that by sourcing package/{libopenssl,libressl}/Config.in after the
endchoice, guarded by the corresponding choice entry, and drop the now
redundant "if" blocks from those files.

The openssl providers from br2-external trees are still sourced inside
the choice, as they define additional entries of that choice. This
relies on 'source' still being allowed inside a 'choice', which is
provided by our kconfig patch
24-kconfig-allow-source-inside-choice.patch.

This does not change the generated configuration: all the in-tree
defconfigs produce the same .config as before.

[1] 7e3465f63a0a: kconfig: do not reparent the menu inside a choice block
    https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7e3465f63a0a70641ed8e49f9d40ee613f7da586
[2] 700e7a8d05ea: kconfig: turn missing prompt for choice members into error
    https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=700e7a8d05ea690308131f69ffc597dfab6db838
[3] fde192511bdb: kconfig: remove tristate choice support
    https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fde192511bdbff554320b31574bb8a9cb3275522

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Titouan Christophe <titouan.christophe@mind.be>
---
 package/libopenssl/Config.in |  4 ----
 package/libressl/Config.in   |  4 ----
 package/openssl/Config.in    | 12 ++++++++----
 3 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/package/libopenssl/Config.in b/package/libopenssl/Config.in
index 03d3def802..a76def1470 100644
--- a/package/libopenssl/Config.in
+++ b/package/libopenssl/Config.in
@@ -1,5 +1,3 @@
-if BR2_PACKAGE_LIBOPENSSL
-
 # 4xx PowerPC cores seem to have trouble with openssl's ASM
 # optimizations
 config BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH_LINUX_PPC
@@ -228,5 +226,3 @@ config BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL_TRACE
 	help
 	  Build with SSL Trace support. Disabling this option may
 	  provide a small reduction in libssl binary size.
-
-endif # BR2_PACKAGE_LIBOPENSSL
diff --git a/package/libressl/Config.in b/package/libressl/Config.in
index 600829cb9e..2146481faa 100644
--- a/package/libressl/Config.in
+++ b/package/libressl/Config.in
@@ -1,9 +1,5 @@
-if BR2_PACKAGE_LIBRESSL
-
 config BR2_PACKAGE_LIBRESSL_BIN
 	bool "openssl binary"
 	help
 	  Install the openssl binary to the target file system. This is
 	  a command line tool for doing various cryptographic stuff.
-
-endif
diff --git a/package/openssl/Config.in b/package/openssl/Config.in
index ca9d1a7e50..cae1b049fb 100644
--- a/package/openssl/Config.in
+++ b/package/openssl/Config.in
@@ -39,8 +39,6 @@ config BR2_PACKAGE_LIBOPENSSL
 
 	  Note: Some helper scripts need perl.
 
-source "package/libopenssl/Config.in"
-
 config BR2_PACKAGE_LIBRESSL
 	bool "libressl"
 	depends on BR2_PACKAGE_LIBRESSL_ARCH_SUPPORTS
@@ -56,13 +54,19 @@ config BR2_PACKAGE_LIBRESSL
 
 	  http://www.libressl.org/
 
-source "package/libressl/Config.in"
-
 # openssl from br2-external trees, if any
 source "$(BASE_DIR)/.br2-external.in.openssl"
 
 endchoice
 
+if BR2_PACKAGE_LIBOPENSSL
+source "package/libopenssl/Config.in"
+endif
+
+if BR2_PACKAGE_LIBRESSL
+source "package/libressl/Config.in"
+endif
+
 config BR2_PACKAGE_HAS_OPENSSL
 	bool
 
-- 
2.55.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* [Buildroot] [PATCH 6/7] docs/manual: add migration notes for changes in the kconfig syntax
  2026-10-10 15:11 [Buildroot] [PATCH 0/7] Update kconfig inrastructure to Linux 7.2.9 Titouan Christophe via buildroot
                   ` (3 preceding siblings ...)
  2026-10-10 15:11 ` [Buildroot] [PATCH 5/7] package/openssl: move libopenssl/libressl options out of the choice Titouan Christophe via buildroot
@ 2026-10-10 15:11 ` Titouan Christophe via buildroot
  2026-10-10 15:11 ` [Buildroot] [PATCH 7/7] Makefile: add new target "yellowconfig" based on kconfiglib Titouan Christophe via buildroot
  2026-10-11 19:12 ` [Buildroot] [PATCH 0/7] Update kconfig inrastructure to Linux 7.2.9 Petr Vorel
  6 siblings, 0 replies; 9+ messages in thread
From: Titouan Christophe via buildroot @ 2026-10-10 15:11 UTC (permalink / raw)
  To: buildroot; +Cc: petr.vorel, ps.report, yann.morin, thomas.petazzoni

Previous patches introduced some changes in the KConfig syntax,
namely on variable expansion and choice entries. Reflect that in
the migration guide.

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Titouan Christophe <titouan.christophe@mind.be>
---
 docs/manual/migrating.adoc | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/docs/manual/migrating.adoc b/docs/manual/migrating.adoc
index 86b040a19c..b2e0cb24b4 100644
--- a/docs/manual/migrating.adoc
+++ b/docs/manual/migrating.adoc
@@ -270,3 +270,16 @@ changed, therefore the suffix of such tarballs has been changed from
 
 Due to the update of Dovecot to version 2.4.x the runtime configuration
 files need to be updated.
+
+Following the update of the bundled kconfig infrastructure, the syntax
+of +Config.in+ files changed in a few ways, which affects **all
+br2-external trees**:
+
+- variable names in +source+ statements and prompts must now be
+  enclosed in parentheses. For example,
+  +source "$BR2_EXTERNAL_FOO_PATH/bar"+ must now be rewritten as
+  +source "$(BR2_EXTERNAL_FOO_PATH)/bar"+;
+- +option env="VAR"+ is no longer supported. Environment variables
+  are referenced directly as +$(VAR)+ instead;
+- the prompt of a +choice+ must now be given with +prompt "..."+
+  instead of +bool "..."+.
-- 
2.55.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* [Buildroot] [PATCH 7/7] Makefile: add new target "yellowconfig" based on kconfiglib
  2026-10-10 15:11 [Buildroot] [PATCH 0/7] Update kconfig inrastructure to Linux 7.2.9 Titouan Christophe via buildroot
                   ` (4 preceding siblings ...)
  2026-10-10 15:11 ` [Buildroot] [PATCH 6/7] docs/manual: add migration notes for changes in the kconfig syntax Titouan Christophe via buildroot
@ 2026-10-10 15:11 ` Titouan Christophe via buildroot
  2026-10-11 19:12 ` [Buildroot] [PATCH 0/7] Update kconfig inrastructure to Linux 7.2.9 Petr Vorel
  6 siblings, 0 replies; 9+ messages in thread
From: Titouan Christophe via buildroot @ 2026-10-10 15:11 UTC (permalink / raw)
  To: buildroot; +Cc: petr.vorel, ps.report, yann.morin, thomas.petazzoni

As informally proposed during the February 2026 Buildroot dev meeting,
this introduces a new kconfig user interface based on Zephyr's kconfiglib.
The name "yellowconfig" is inspired by the yellow-themed curses interface,
as opposed to the classical blue "menuconfig".
Read more about kconfiglib: https://github.com/zephyrproject-rtos/Kconfiglib

To run that target, one has to install kconfiglib beforehand,
for example by issuing the following command:
> pip install kconfiglib

In terms of user interface differences, Zephyr's kconfig brings:
- searching symbols as you type, and more symbols are visible in a single
  page of search results [1]
- symbols that aren't selectable (because of unmet dependencies) can be
  viewed (toggling them on or off with the key "A") [2]
- symbols y/n dependencies are displayed more clearly, each one on a newline.
  This is especially appreciable when there are many of them, whereas in the
  classical menuconfig one has to scroll left/right to view them [3]

Having this as a new make target allow for Buildroot users to try it out
and forge their opinion on this different interface without breaking
habits and usual workflows. However, in the longer run, this could possibly
allow to replace the custom-patched kconfig programs we ship in Buildroot
with an unmodified upstream supported codebase. If this proves to be useful,
an appropriate distribution strategy for kconfiglib must be determined,
such that it doesn't need to be installed externally by users.

Moreover, as unselectable symbols can be displayed in the interface, this
would remove the need for comments in the like "<pkg> needs <condition>",
where we need to invert and maintain conditional dependencies.

As a final nice addition, having a Python based kconfiglib allows for
programmatic access to kconfig symbols and settings in scripts, which
could be useful in testing scenarios.

[1] https://gitlab.com/-/project/2648174/uploads/8ae29a772927e7e555f85f6d31876bb4/2026-02-04-105501_958x1015_scrot.png
[2] https://gitlab.com/-/project/2648174/uploads/8d27510cf738cab9fd95ffdd81f75bc9/2026-02-04-105514_958x1015_scrot.png
[3] https://gitlab.com/-/project/2648174/uploads/6d51a4b608fce076ac8c0c84623531f2/2026-02-04-105522_958x1015_scrot.png

Signed-off-by: Titouan Christophe <titouan.christophe@mind.be>
---
 Makefile                    | 6 +++++-
 docs/manual/quickstart.adoc | 7 +++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index 7fa3ce4890..8fa95a86a6 100644
--- a/Makefile
+++ b/Makefile
@@ -122,7 +122,7 @@ export BR2_VERSION_FULL := $(BR2_LOCALVERSION)
 endif
 
 # List of targets and target patterns for which .config doesn't need to be read in
-noconfig_targets := menuconfig nconfig gconfig xconfig config oldconfig randconfig \
+noconfig_targets := menuconfig yellowconfig nconfig gconfig xconfig config oldconfig randconfig \
 	defconfig %_defconfig allyesconfig allnoconfig alldefconfig syncconfig release \
 	randpackageconfig allyespackageconfig allnopackageconfig \
 	print-version olddefconfig distclean manual manual-% check-package \
@@ -1017,6 +1017,9 @@ gconfig: $(BUILD_DIR)/buildroot-config/gconf outputmakefile
 menuconfig: $(BUILD_DIR)/buildroot-config/mconf outputmakefile
 	@$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN)
 
+yellowconfig: outputmakefile
+	@$(COMMON_CONFIG_ENV) CONFIG_= python -m menuconfig $(CONFIG_CONFIG_IN)
+
 nconfig: $(BUILD_DIR)/buildroot-config/nconf outputmakefile
 	@$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN)
 
@@ -1164,6 +1167,7 @@ help:
 	@echo 'Configuration:'
 	@echo '  menuconfig             - interactive curses-based configurator'
 	@echo '  nconfig                - interactive ncurses-based configurator'
+	@echo '  yellowconfig           - interactive kconfiglib-based configurator'
 	@echo '  xconfig                - interactive Qt-based configurator'
 	@echo '  gconfig                - interactive GTK-based configurator'
 	@echo '  oldconfig              - resolve any unresolved symbols in .config'
diff --git a/docs/manual/quickstart.adoc b/docs/manual/quickstart.adoc
index 605031037f..d8e788ca97 100644
--- a/docs/manual/quickstart.adoc
+++ b/docs/manual/quickstart.adoc
@@ -27,6 +27,13 @@ for the original curses-based configurator, or
 
 for the new curses-based configurator, or
 
+----
+ $ make yellowconfig
+----
+
+for the https://pypi.org/project/kconfiglib/[Python kconfiglib]
+curses-based configurator, or
+
 ----
  $ make xconfig
 ----
-- 
2.55.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* Re: [Buildroot] [PATCH 0/7] Update kconfig inrastructure to Linux 7.2.9
  2026-10-10 15:11 [Buildroot] [PATCH 0/7] Update kconfig inrastructure to Linux 7.2.9 Titouan Christophe via buildroot
                   ` (5 preceding siblings ...)
  2026-10-10 15:11 ` [Buildroot] [PATCH 7/7] Makefile: add new target "yellowconfig" based on kconfiglib Titouan Christophe via buildroot
@ 2026-10-11 19:12 ` Petr Vorel
  2026-10-11 19:30   ` Titouan Christophe via buildroot
  6 siblings, 1 reply; 9+ messages in thread
From: Petr Vorel @ 2026-10-11 19:12 UTC (permalink / raw)
  To: Titouan Christophe; +Cc: ps.report, yann.morin, thomas.petazzoni, buildroot

Hi Titouan,

thanks for this work.

I'm having a trouble to apply your patchset. Could you please rebase on current
next or master branch and push your fork somewhere?

Kind regards,
Petr
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* Re: [Buildroot] [PATCH 0/7] Update kconfig inrastructure to Linux 7.2.9
  2026-10-11 19:12 ` [Buildroot] [PATCH 0/7] Update kconfig inrastructure to Linux 7.2.9 Petr Vorel
@ 2026-10-11 19:30   ` Titouan Christophe via buildroot
  0 siblings, 0 replies; 9+ messages in thread
From: Titouan Christophe via buildroot @ 2026-10-11 19:30 UTC (permalink / raw)
  To: Petr Vorel; +Cc: ps.report, yann.morin, thomas.petazzoni, buildroot

Hello Petr,

On 11/10/26 21:12, Petr Vorel wrote:
> Hi Titouan,
>
> thanks for this work.
>
> I'm having a trouble to apply your patchset. Could you please rebase on current
> next or master branch and push your fork somewhere?
I just rebased on top of the latest master 
(f43af4ef31cd40270c7db94b98c0ff9f212e6448) and pushed there: 
https://gitlab.com/essensium-mind/buildroot/-/commits/bump-kconfig

Kind regards,
Titouan

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

end of thread, other threads:[~2026-10-11 19:31 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-10 15:11 [Buildroot] [PATCH 0/7] Update kconfig inrastructure to Linux 7.2.9 Titouan Christophe via buildroot
2026-10-10 15:11 ` [Buildroot] [PATCH 1/7] Makefile: always use a base config file for defconfig Titouan Christophe via buildroot
2026-10-10 15:11 ` [Buildroot] [PATCH 2/7] */Config.in: use the new $(VAR) syntax Titouan Christophe via buildroot
2026-10-10 15:11 ` [Buildroot] [PATCH 3/7] */Config.in: replace bool entries with prompt within all choices Titouan Christophe via buildroot
2026-10-10 15:11 ` [Buildroot] [PATCH 5/7] package/openssl: move libopenssl/libressl options out of the choice Titouan Christophe via buildroot
2026-10-10 15:11 ` [Buildroot] [PATCH 6/7] docs/manual: add migration notes for changes in the kconfig syntax Titouan Christophe via buildroot
2026-10-10 15:11 ` [Buildroot] [PATCH 7/7] Makefile: add new target "yellowconfig" based on kconfiglib Titouan Christophe via buildroot
2026-10-11 19:12 ` [Buildroot] [PATCH 0/7] Update kconfig inrastructure to Linux 7.2.9 Petr Vorel
2026-10-11 19:30   ` Titouan Christophe via buildroot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox