From: Eugeniu Rosca <erosca@xxxxxxxxxxxxxx> Assuming commit 617aebe6a97e ("Merge tag 'usercopy-v4.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux"), ARCH=arm64 and vanilla arm64 defconfig, here is the top 10 CONFIG options with the highest amount of OR sub-expressions that make up the final "{Selected,Implied} by" reverse dependency expression. | Config | Revdep all | Revdep ![=n] | |-------------------------------|------------|--------------| | REGMAP_I2C | 212 | 9 | | CRC32 | 167 | 25 | | FW_LOADER | 128 | 5 | | MFD_CORE | 124 | 9 | | FB_CFB_IMAGEBLIT | 114 | 2 | | FB_CFB_COPYAREA | 111 | 2 | | FB_CFB_FILLRECT | 110 | 2 | | SND_PCM | 103 | 2 | | CRYPTO_HASH | 87 | 19 | | WATCHDOG_CORE | 86 | 6 | The story behind the above table is that the user needs to visually review/evaluate 212 expressions which *potentially* select REGMAP_I2C in order to identify the expressions which *actually* select REGMAP_I2C, for a particular ARCH and for a particular defconfig used. To make this experience smoother, transform the way reverse dependencies are displayed to the user from [1] to [2]. [1] Before this commit Symbol: MTD_BLKDEVS [=y] ... Selected by: - MTD_BLOCK [=y] && MTD [=y] && BLOCK [=y] - MTD_BLOCK_RO [=n] && MTD [=y] && MTD_BLOCK [=y]!=y && BLOCK [=y] - FTL [=n] && MTD [=y] && BLOCK [=y] - NFTL [=n] && MTD [=y] && BLOCK [=y] - INFTL [=n] && MTD [=y] && BLOCK [=y] - RFD_FTL [=n] && MTD [=y] && BLOCK [=y] - SSFDC [=n] && MTD [=y] && BLOCK [=y] - SM_FTL [=n] && MTD [=y] && BLOCK [=y] - MTD_SWAP [=n] && MTD [=y] && SWAP [=y] [2] After this commit Symbol: MTD_BLKDEVS [=y] ... Selected by: - [y] MTD_BLOCK [=y] && MTD [=y] && BLOCK [=y] - [ ] MTD_BLOCK_RO [=n] && MTD [=y] && MTD_BLOCK [=y]!=y && BLOCK [=y] - [ ] FTL [=n] && MTD [=y] && BLOCK [=y] - [ ] NFTL [=n] && MTD [=y] && BLOCK [=y] - [ ] INFTL [=n] && MTD [=y] && BLOCK [=y] - [ ] RFD_FTL [=n] && MTD [=y] && BLOCK [=y] - [ ] SSFDC [=n] && MTD [=y] && BLOCK [=y] - [ ] SM_FTL [=n] && MTD [=y] && BLOCK [=y] - [ ] MTD_SWAP [=n] && MTD [=y] && SWAP [=y] This patch has been tested using a custom variant of zconfdump which prints the reverse dependencies for each config symbol. Suggested-by: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> Suggested-by: Ulf Magnusson <ulfalizer@xxxxxxxxx> Signed-off-by: Eugeniu Rosca <erosca@xxxxxxxxxxxxxx> --- scripts/kconfig/expr.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/scripts/kconfig/expr.c b/scripts/kconfig/expr.c index 0704bcdf4c78..173fc5b252d5 100644 --- a/scripts/kconfig/expr.c +++ b/scripts/kconfig/expr.c @@ -1185,7 +1185,19 @@ expr_print_newline(struct expr *e, void *data, int prevtoken) { - fn(data, NULL, "\n - "); + switch (expr_calc_value(e)) { + case yes: + fn(data, NULL, "\n - [y] "); + break; + case mod: + fn(data, NULL, "\n - [m] "); + break; + case no: + fn(data, NULL, "\n - [ ] "); + break; + default: + break; + } expr_print(e, fn, data, prevtoken); } -- 2.16.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html