Message ID | 1439332317-727-3-git-send-email-yamada.masahiro@socionext.com |
---|---|
State | Accepted |
Delegated to: | Tom Rini |
Headers | show |
On Wed, Aug 12, 2015 at 07:31:42AM +0900, Masahiro Yamada 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@socionext.com> > Reviewed-by: Tom Rini <trini@konsulko.com> > Reviewed-by: Simon Glass <sjg@chromium.org> Applied to u-boot/master, thanks!
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