On Sat, Jan 22, 2022 at 05:07:26AM -0700, Simon Glass wrote: > At present if an optional Kconfig value needs to be used it must be > bracketed by #ifdef. For example, with this Kconfig setup: > > config WIBBLE > bool "Support wibbles, the world needs more wibbles" > > config WIBBLE_ADDR > hex "Address of the wibble" > depends on WIBBLE > > then the following code must be used: > > #ifdef CONFIG_WIBBLE > static void handle_wibble(void) > { > int val = CONFIG_WIBBLE_ADDR; > > ... > } > #endif > > static void init_machine() > { > ... > #ifdef CONFIG_WIBBLE > handle_wibble(); > #endif > } > > Add a new IF_ENABLED_INT() to help with this. So now it is possible to > write, without #ifdefs: > > static void handle_wibble(void) > { > int val = IF_ENABLED_INT(CONFIG_WIBBLE, CONFIG_WIBBLE_ADDR); > > ... > } > > static void init_machine() > { > ... > if (IS_ENABLED(CONFIG_WIBBLE)) > handle_wibble(); > } > > The value will be CONFIG_WIBBLE_ADDR if CONFIG_WIBBLE is defined and will > produce a build error if not.. This allows us to reduce the use of #ifdef > in the code, ensuring that the compiler still checks the code even if it > is not ultimately used for a particular build. > > Add a CONFIG_IF_ENABLED_INT() version as well. > > If an attempt is made to use a value that does not exist (i.e. when the > conditional is not enabled), an error about a non-existing function is > generated, e.g.: > > common/bloblist.c:447: undefined reference to `invalid_use_of_IF_ENABLED_INT' > > Signed-off-by: Simon Glass <s...@chromium.org>
Applied to u-boot/master, thanks! -- Tom
signature.asc
Description: PGP signature