]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
kconfig: Support conditional deps using "depends on X if Y"
authorNicolas Pitre <nico@fluxnic.net>
Mon, 15 Dec 2025 23:06:54 +0000 (15:06 -0800)
committerNathan Chancellor <nathan@kernel.org>
Tue, 6 Jan 2026 21:57:15 +0000 (14:57 -0700)
commit76df6815dab76d7890936dc5f6d91cf7e7f88358
tree4429aa6346ff0f79623d03274f0425d297efdf23
parent5ce3218d4f102aca5e90d3c831259b6e380f88b4
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>
12 files changed:
Documentation/kbuild/kconfig-language.rst
scripts/kconfig/lkc.h
scripts/kconfig/menu.c
scripts/kconfig/parser.y
scripts/kconfig/tests/conditional_dep/Kconfig [new file with mode: 0644]
scripts/kconfig/tests/conditional_dep/__init__.py [new file with mode: 0644]
scripts/kconfig/tests/conditional_dep/expected_config1 [new file with mode: 0644]
scripts/kconfig/tests/conditional_dep/expected_config2 [new file with mode: 0644]
scripts/kconfig/tests/conditional_dep/expected_config3 [new file with mode: 0644]
scripts/kconfig/tests/conditional_dep/test_config1 [new file with mode: 0644]
scripts/kconfig/tests/conditional_dep/test_config2 [new file with mode: 0644]
scripts/kconfig/tests/conditional_dep/test_config3 [new file with mode: 0644]