File: /Users/paulross/dev/linux/linux-3.13/include/linux/kconfig.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       1: #ifndef __LINUX_KCONFIG_H
       2: #define __LINUX_KCONFIG_H
       3: 
       4: #include <generated/autoconf.h>
       5: 
       6: /*
       7:  * Helper macros to use CONFIG_ options in C/CPP expressions. Note that
       8:  * these only work with boolean and tristate options.
       9:  */
      10: 
      11: /*
      12:  * Getting something that works in C and CPP for an arg that may or may
      13:  * not be defined is tricky.  Here, if we have "#define CONFIG_BOOGER 1"
      14:  * we match on the placeholder define, insert the "0," for arg1 and generate
      15:  * the triplet (0, 1, 0).  Then the last step cherry picks the 2nd arg (a one).
      16:  * When CONFIG_BOOGER is not defined, we generate a (... 1, 0) pair, and when
      17:  * the last step cherry picks the 2nd arg, we get a zero.
      18:  */
      19: #define __ARG_PLACEHOLDER_1 0,
      20: #define config_enabled(cfg) _config_enabled(cfg)
      21: #define _config_enabled(value) __config_enabled(__ARG_PLACEHOLDER_##value)
      22: #define __config_enabled(arg1_or_junk) ___config_enabled(arg1_or_junk 1, 0)
      23: #define ___config_enabled(__ignored, val, ...) val
      24: 
      25: /*
      26:  * IS_ENABLED(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y' or 'm',
      27:  * 0 otherwise.
      28:  *
      29:  */
      30: #define IS_ENABLED(option) \
      31:     (config_enabled(option) || config_enabled(option##_MODULE))
      32: 
      33: /*
      34:  * IS_BUILTIN(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y', 0
      35:  * otherwise. For boolean options, this is equivalent to
      36:  * IS_ENABLED(CONFIG_FOO).
      37:  */
      38: #define IS_BUILTIN(option) config_enabled(option)
      39: 
      40: /*
      41:  * IS_MODULE(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'm', 0
      42:  * otherwise.
      43:  */
      44: #define IS_MODULE(option) config_enabled(option##_MODULE)
      45: 
      46: #endif /* __LINUX_KCONFIG_H */
      47: