[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <b4be7637-9446-47d0-9a8c-3fd0f55a27b9@app.fastmail.com>
Date: Fri, 05 Dec 2025 09:01:51 +0100
From: "Arnd Bergmann" <arnd@...db.de>
To: "Nathan Chancellor" <nathan@...nel.org>,
"Graham Roff" <grahamr@....qualcomm.com>
Cc: "Nicolas Schier" <nsc@...nel.org>, "Jonathan Corbet" <corbet@....net>,
linux-kbuild@...r.kernel.org, linux-doc@...r.kernel.org,
linux-kernel@...r.kernel.org, "Nicolas Pitre" <nico@...xnic.net>
Subject: Re: [PATCH v2] Support conditional deps using "depends on X if Y"
On Fri, Dec 5, 2025, at 02:53, Nathan Chancellor wrote:
> On Tue, Nov 18, 2025 at 10:46:51AM -0800, Graham Roff wrote:
>>
>> arch/arm64/Kconfig:
>> depends on ARM64_64K_PAGES || !ARM64_VA_BITS_52 -->
>> depends on ARM64_64K_PAGES if ARM64_VA_BITS_52
>> arch/mips/Kconfig:
>> depends on SYS_SUPPORTS_HOTPLUG_CPU || !SMP -->
>> depends on SYS_SUPPORTS_HOTPLUG_CPU if SMP
>> arch/riscv/Kconfig:
>> depends on CC_HAS_MIN_FUNCTION_ALIGNMENT || !RISCV_ISA_C -->
>> depends on CC_HAS_MIN_FUNCTION_ALIGNMENT if RISCV_ISA_C
>> arch/x86/Kconfig:
>> depends on X86_64 || !SPARSEMEM -->
>> depends on X86_64 if SPARSEMEM
>> drivers/acpi/Kconfig:
>> depends on ACPI_WMI || !X86 -->
>> depends on ACPI_WMI if X86
>> drivers/bluetooth/Kconfig:
>> depends on USB || !BT_HCIBTUSB_MTK
>> depends on USB if BT_HCIBTUSB_MTK
>> mm/Kconfig:
>> depends on !ARM || CPU_CACHE_VIPT -->
>> depends on CPU_CACHE_VIPT if ARM
>> kernel/Kconfig.locks:
>> depends on !PREEMPTION || ARCH_INLINE_READ_UNLOCK -->
>> depends on ARCH_INLINE_READ_UNLOCK if PREEMPTION
>
> On the surface, the vast majority these become more readable using the
> 'if' syntax.
Agreed, the question is whether a small improvement in
readability is worth the complexity of having multiple
ways of expressing the same thing.
I don't see anything that the new syntax would allow
that we were currently missing.
>> @@ -602,8 +612,14 @@ Some drivers are able to optionally use a feature from another module
>> or build cleanly with that module disabled, but cause a link failure
>> when trying to use that loadable module from a built-in driver.
>>
>> -The most common way to express this optional dependency in Kconfig logic
>> -uses the slightly counterintuitive::
>> +The recommended way to express this optional dependency in Kconfig logic
>> +uses the conditional form::
>> +
>> + config FOO
>> + tristate "Support for foo hardware"
>> + depends on BAR if BAR
>> +
>> +This slightly counterintuitive style is also widely used::
>>
This is the bit that frequently confuses developers with the
current syntax, and I agree it would be nice to have a better
way, but I'm not sure the proposal actually helps enough to
warrant a mass-conversion of existing Kconfig files.
>> +config TEST_COMPLEX
>> + bool "Test complex conditional dependency"
>> + depends on (FOO && BAR) if (FOO || BAR)
>> + default y
With the existing syntax, this could be expressed as
depends on FOO = BAR
or
depends on (FOO && BAR) || (!FOO && !BAR)
and I don't see how the new syntax is an improvement
over these.
Overall, I'm not convinced by this patch. I have no strong
objection to anything in here, but I'm worried that extending
the syntax adds more problems than this one solves.
Arnd
Powered by blists - more mailing lists