[U-Boot] [PATCH 00/16] Add macros to ease our life with independent CONFIGs between U-Boot and SPL
Scott Wood
scottwood at freescale.com
Mon Jul 27 18:51:16 CEST 2015
On Sun, 2015-07-26 at 17:26 +0900, Masahiro Yamada wrote:
> Refer to Simon's question, too:
> http://lists.denx.de/pipermail/u-boot/2015-July/219598.html
>
> Since U-boot introduced SPL (not since Kconfig),
> enabling features for U-boot and SPL independently is always a PITA.
>
> - decide if each feature should be supported for SPL or not
> - Add CONFIG_SPL_FRED_SUPPORT into Makefile.spl
> - Add #undef include/config_uncmd_spl.h to disable features
> we do not want to support on SPL
> - Add "ifdef CONFIG_SPL_BUILD ... endif" here and there to adjust things
> - Add "#ifdef CONFIG_SPL_BUILD ... #endif" here and there to fix things up
>
> Things are getting more and more crappy.
>
> When U-boot switched to Kconfig, first I introduced separate .config
> (.config, spl/.config, tpl/.config) to clean up them.
> But it turned out to be a pain.
>
> So, I believe the current single .config is much better.
> But I also admit we need something systematic to subdue our PITA.
We had something systematic -- separate .configs, which could have been used
to get rid of the CONFIG_SPL_FRED_SUPPORT stuff -- that you reverted (which
was the only reason the uncmd stuff ever existed).
Yet somehow this is "much better". :-(
> One possibility is to support "spl-y" in makefiles.
> (This idea is cribbed from barebox.)
>
> obj-$(CONFIG_FOO) += foo.o
> spl-$(CONFIG_SPL_FOO) += foo.o
>
> is cleaner than
>
> ifdef CONFIG_SPL_BUILD
> obj-$(CONFIG_SPL_FOO) += foo.o
> else
> obj-$(CONFIG_FOO) += foo.o
> endif
>
> It is a nice improvement in makefile side.
> But we still need to do something with C files.
>
> Another option is something like
> CONFIG_FOO=yyn (yes for U-boot, yes for SPL, no for TPL)
>
> To achieve this, I think a big operation is needed in Kconfig core.
> I cannot do that.
> (Of course, Patches are welcome if someone else can do that.)
>
> So, I was thinking of something different.
>
> My idea was inspired by IS_ENABLED() macro in include/linux/kconfig.h.
>
> Linux defines different macros for built-in and module,
> and it is possible to write
> #if IS_ENABLED(CONFIG_FOO)
> ...
> #endif
>
> instead of
>
> #if defined(CONFIG_FOO) || defined(CONFIG_FOO_MODULE)
> ...
> #endif
>
> So, I'd like to propose new macros to write code like
>
> #if CONFIG_IS_ENABLED(FOO)
> ...
> #endif
>
> instead of
>
> #if (!defined(CONFIG_SPL_BUILD) && defined(CONFIG_FOO)) || \
> (defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_FOO))
> ...
> #endif
With separate .config this is just:
#ifdef CONFIG_FOO
...
#endif
-Scott
More information about the U-Boot
mailing list