[U-Boot] [RFC PATCH 1/2] kbuild: add a makefile macro useful with per-image config options

Masahiro Yamada yamada.masahiro at socionext.com
Mon Jul 27 17:19:07 CEST 2015


Tom,


2015-07-28 0:08 GMT+09:00 Tom Rini <trini at konsulko.com>:
> On Thu, Jul 23, 2015 at 08:31:55PM +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 macro to help describe makefile simpler, allowing
>> separate switch for U-boot main and SPL.
>>
>> This macro takes a config option without the prefix CONFIG_.
>> $(call CONFIG,FOO) evaluates to
>>   $(CONFIG_FOO) if CONFIG_SPL_BUILD is undefined (U-boot build),
>>   $(CONFIG_SPL_FOO) if CONFIG_SPL_BUILD is defined (SPL_BUILD).
>>
>> That is,
>>
>>   $(call CONFIG,FOO) += foo.o
>>
>> is a shorthand for
>>
>>   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 that we need independent control between
>> U-boot and SPL.  With this naming scheme, we only have to add a
>> single line in a Makefile for each config option.
>>
>> 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-$(call CONFIG,SERIAL)  += serial/
>>   obj-$(call CONFIG,I2C)     += i2c/
>>   obj-$(call CONFIG,GPIO)    += gpio/
>>   obj-$(call CONFIG,SPI)     += spi/
>>      ...
>>
>> Eventually, SPL-specialized entries in Makefile.spl would go away.
>>
>> Signed-off-by: Masahiro Yamada <yamada.masahiro at socionext.com>
>
> Reviewed-by: Tom Rini <trini at konsulko.com>
>

This patch was superseded by

http://patchwork.ozlabs.org/patch/500034/


If you do not mind, I will put your Reviewed-by there
when I send the next version.




-- 
Best Regards
Masahiro Yamada


More information about the U-Boot mailing list