[U-Boot] [PATCH v2 02/15] kbuild: add a makefile macro useful with per-image config options

Simon Glass sjg at chromium.org
Mon Aug 3 16:06:14 CEST 2015


On 1 August 2015 at 07:14, Masahiro Yamada
<yamada.masahiro at socionext.com> wrote:
> Commit e02ee2548afe ("kconfig: switch to single .config
> configuration") made the configuration itself pretty simple,
> instead, we lost the way to systematically enable/disable config
> options for each image independently.
>
> Our current strategy is, put entries into Makefile.spl for options
> we need separate enabling, or once enable the options globally in
> Kconfig and then undef them in Makefile.uncmd_spl if we do not want
> to compile the features for SPL at all.  Things are getting really
> messy.  Besides, "ifdef CONFIG_SPL_BUILD" are sprinkled everywhere
> in makefiles.
>
> This commit adds a variable to help describe makefile simpler.
>
> $(SPL_) evaluates to "SPL_" during the SPL build, while to an empty
> string during building U-boot proper.
>
> So, you can write
>
>   obj-$(CONFIG_$(SPL_)FOO) += foo.o
>
> instead of
>
>   ifdef CONFIG_SPL_BUILD
>   obj-$(CONFIG_SPL_FOO) += foo.o
>   else
>   obj-$(CONFIG_FOO) += foo.o
>   endif
>
> If CONFIG_SPL_FOO does not exist in Kconfig, it is equivalent to
>
>   ifndef CONFIG_SPL_BUILD
>   obj-$(CONFIG_SPL_FOO) += foo.o
>   endif
>
> This is the pattern we often see in our current makefiles.
>
> To take advantage of this macro, we should prefix SPL_ for the SPL
> version of the option when we need independent control between
> U-boot and SPL.  With this naming scheme, I hope our makefiles will
> be much simplified.
>
> It means we want to rename existing config options as follows
> in the long run:
>
>   CONFIG_SPL_SERIAL_SUPPORT     -> CONFIG_SPL_SERIAL
>   CONFIG_SPL_I2C_SUPPORT        -> CONFIG_SPL_I2C
>   CONFIG_SPL_GPIO_SUPPORT       -> CONFIG_SPL_GPIO
>   CONFIG_SPL_SPI_SUPPORT        -> CONFIG_SPL_SPI
>   CONFIG_SPL_DISABLE_OF_CONTROL -> CONFIG_SPL_OF_CONTROL
>                                       (inverting the logic)
>
> Then drivers/Makefile would be re-worked as follows:
>
>   obj-$(CONFIG_$(SPL_)SERIAL)  += serial/
>   obj-$(CONFIG_$(SPL_)I2C)     += i2c/
>   obj-$(CONFIG_$(SPL_)GPIO)    += gpio/
>   obj-$(CONFIG_$(SPL_)SPI)     += spi/
>      ...
>
> Eventually, SPL-specialized entries in Makefile.spl would go away.
>
> Signed-off-by: Masahiro Yamada <yamada.masahiro at socionext.com>
> ---
>
> Changes in v2: None
>
>  scripts/Kbuild.include | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
> index f02eb37..98e09ce 100644
> --- a/scripts/Kbuild.include
> +++ b/scripts/Kbuild.include
> @@ -309,3 +309,9 @@ why =                                                                        \
>
>  echo-why = $(call escsq, $(strip $(why)))
>  endif
> +
> +ifdef CONFIG_SPL_BUILD
> +SPL_ := SPL_
> +else
> +SPL_ :=
> +endif
> --
> 1.9.1
>

Reviewed-by: Simon Glass <sjg at chromium.org>


More information about the U-Boot mailing list