• Paul Gortmaker's avatar
    kconfig: fix IS_ENABLED to not require all options to be defined · 69349c2d
    Paul Gortmaker authored
    Using IS_ENABLED() within C (vs.  within CPP #if statements) in its
    current form requires us to actually define every possible bool/tristate
    Kconfig option twice (__enabled_* and __enabled_*_MODULE variants).
    This results in a huge autoconf.h file, on the order of 16k lines for a
    x86_64 defconfig.
    Fixing IS_ENABLED to be able to work on the smaller subset of just
    things that we really have defined is step one to fixing this.  Which
    means it has to not choke when fed non-enabled options, such as:
      include/linux/netdevice.h:964:1: warning: "__enabled_CONFIG_FCOE_MODULE" is not defined [-Wundef]
    The original prototype of how to implement a C and preprocessor
    compatible way of doing this came from the Google+ user "comex ." in
    response to Linus' crowdsourcing challenge for a possible improvement on
    his earlier C specific solution:
    	#define config_enabled(x)       (__stringify(x)[0] == '1')
    In this implementation, I've chosen variable names that hopefully make
    how it works more understandable.
    Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
kconfig.h 1.5 KB