• Nicolas Pitre's avatar
    kconfig: fix relational operators for bool and tristate symbols · 9059a349
    Nicolas Pitre authored
    Since commit 31847b67 ("kconfig: allow use of relations other than
    (in)equality") it is possible to use relational operators in Kconfig
    statements. However, those operators give unexpected results when
    applied to bool/tristate values:
    
    	(n < y) = y (correct)
    	(m < y) = y (correct)
    	(n < m) = n (wrong)
    
    This happens because relational operators process bool and tristate
    symbols as strings and m sorts before n. It makes little sense to do a
    lexicographical compare on bool and tristate values though.
    
    Documentation/kbuild/kconfig-language.txt states that expression can have
    a value of 'n', 'm' or 'y' (or 0, 1, 2 respectively for calculations).
    Let's make it so for relational comparisons with bool/tristate
    expressions as well and document them. If at least one symbol is an
    actual string then the lexicographical compare works just as before.
    Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
    Acked-by: default avatarRandy Dunlap <rdunlap@infradead.org>
    Tested-by: default avatarRandy Dunlap <rdunlap@infradead.org>
    Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
    9059a349
expr.c 27 KB