linux/scripts/kconfig
Nicolas Pitre 76df6815da
kconfig: Support conditional deps using "depends on X if Y"
Extend the "depends on" syntax to support conditional dependencies
using "depends on X if Y". While functionally equivalent to "depends
on X || (Y == n)", "depends on X if Y" is much more readable and
makes the kconfig language uniform in supporting the "if <expr>"
suffix.
This also improves readability for "optional" dependencies, which
are the subset of conditional dependencies where X is Y.
Previously such optional dependencies had to be expressed as
the counterintuitive "depends on X || !X", now this can be
represented as "depends on X if X".

The change is implemented by converting the "X if Y" syntax into the
"X || (Y == n)" syntax during "depends on" token processing.

Signed-off-by: Nicolas Pitre <nico@fluxnic.net>
[Graham Roff: Rewrote commit message, updated patch, added tests]
Signed-off-by: Graham Roff <grahamr@qti.qualcomm.com>
Acked-by: Randy Dunlap <rdunlap@infradead.org>
Link: https://patch.msgid.link/20251215-kconfig_conditional_deps-v3-1-59519af0a5df@qti.qualcomm.com
[nathan: Minor adjustments to spacing]
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
2026-01-06 14:57:15 -07:00
..
icons kconfig: move XPM icons to separate files 2025-12-19 13:34:33 -07:00
lxdialog kconfig: lxdialog: replace strcpy() with strncpy() in inputbox.c 2025-08-06 10:23:36 +09:00
tests kconfig: Support conditional deps using "depends on X if Y" 2026-01-06 14:57:15 -07:00
.gitignore kconfig: Update all declared targets 2023-01-13 16:29:52 +09:00
Makefile kconfig: move XPM icons to separate files 2025-12-19 13:34:33 -07:00
conf.c kconfig: rename menu_get_parent_menu() to menu_get_menu_or_parent_menu() 2025-06-30 12:52:58 +09:00
confdata.c kconfig: use memcmp instead of deprecated bcmp 2025-06-18 10:11:15 +09:00
expr.c kconfig: clear expr::val_is_valid when allocated 2024-10-01 17:05:30 +09:00
expr.h kconfig: Add transitional symbol attribute for migration support 2025-09-24 14:23:35 -07:00
gconf-cfg.sh kconfig: gconf: migrate to GTK 3 2025-07-26 15:31:29 +09:00
gconf.c kconfig: move XPM icons to separate files 2025-12-19 13:34:33 -07:00
gconf.ui kconfig: gconf: replace GtkImageMenuItem with GtkMenuItem 2025-07-26 19:55:37 +09:00
internal.h kconfig: cache expression values 2024-09-20 09:21:53 +09:00
lexer.l kconfig: Add transitional symbol attribute for migration support 2025-09-24 14:23:35 -07:00
lkc.h kconfig: Support conditional deps using "depends on X if Y" 2026-01-06 14:57:15 -07:00
lkc_proto.h kconfig: add sym_get_prompt_menu() helper function 2024-11-06 08:46:34 +09:00
mconf-cfg.sh kconfig: add -e and -u options to *conf-cfg.sh scripts 2024-07-16 01:08:36 +09:00
mconf.c kconfig/mconf: Initialize the default locale at startup 2025-11-01 00:21:23 -04:00
menu.c kconfig: Support conditional deps using "depends on X if Y" 2026-01-06 14:57:15 -07:00
merge_config.sh kconfig: merge_config: use an empty file as initfile 2025-04-06 06:22:01 +09:00
mnconf-common.c kbuild: move some helper headers from scripts/kconfig/ to scripts/include/ 2024-07-21 23:10:43 +09:00
mnconf-common.h kbuild: move some helper headers from scripts/kconfig/ to scripts/include/ 2024-07-21 23:10:43 +09:00
nconf-cfg.sh kconfig: add -e and -u options to *conf-cfg.sh scripts 2024-07-16 01:08:36 +09:00
nconf.c kconfig/nconf: Initialize the default locale at startup 2025-11-01 00:23:22 -04:00
nconf.gui.c kconfig: nconf: Format and print 'line' without a temporary copy 2025-08-18 10:46:19 -07:00
nconf.h kconfig: nconf: Add search jump feature 2023-08-13 21:29:41 +09:00
parser.y kconfig: Support conditional deps using "depends on X if Y" 2026-01-06 14:57:15 -07:00
preprocess.c kbuild: split x*alloc() functions in kconfig to scripts/include/xalloc.h 2024-09-01 20:34:48 +09:00
preprocess.h kconfig: split preprocessor prototypes into preprocess.h 2024-02-19 18:20:40 +09:00
qconf-cfg.sh kconfig: add -e and -u options to *conf-cfg.sh scripts 2024-07-16 01:08:36 +09:00
qconf.cc kconfig: move XPM icons to separate files 2025-12-19 13:34:33 -07:00
qconf.h kconfig: qconf: confine {begin,end}Group to constructor and destructor 2025-07-26 15:31:30 +09:00
streamline_config.pl streamline_config.pl: remove prompt warnings for configs with defaults 2024-11-06 08:46:34 +09:00
symbol.c kconfig: Avoid prompting for transitional symbols 2025-10-07 08:21:23 -07:00
util.c scripts: move hash function from scripts/kconfig/ to scripts/include/ 2024-09-20 09:21:52 +09:00