On 19 February 2015 at 22:24, Masahiro Yamada <yamad...@jp.panasonic.com> wrote: > When Kconfig for U-boot was examined, one of the biggest issues was > how to support multiple images (Normal, SPL, TPL). There were > actually two options, "single .config" and "multiple .config". > After some discussions and thought experiments, I chose the latter, > i.e. to create ".config", "spl/.config", "tpl/.config" for Normal, > SPL, TPL, respectively. > > It is true that the "multiple .config" strategy provided us the > maximum flexibility and helped to avoid duplicating CONFIGs among > Normal, SPL, TPL, but I have noticed some fatal problems: > > [1] It is impossible to share CONFIG options across the images. > If you change the configuration of Main image, you often have to > adjust some SPL configurations correspondingly. Currently, we > cannot handle the dependencies between them. It means one of the > biggest advantages of Kconfig is lost. > > [2] It is too painful to change both ".config" and "spl/.config". > Sunxi guys started to work around this problem by creating a new > configuration target. Commit cbdd9a9737cc (sunxi: kconfig: Add > %_felconfig rule to enable FEL build of sunxi platforms.) added > "make *_felconfig" to enable CONFIG_SPL_FEL on both images. > Changing the configuration of multiple images in one command is a > generic demand. The current implementation cannot propose any > good solution about this. > > [3] Kconfig files are getting ugly and difficult to understand. > Commit b724bd7d6349 (dm: Kconfig: Move CONFIG_SYS_MALLOC_F_LEN to > Kconfig) has sprinkled "if !SPL_BUILD" over the Kconfig files. > > [4] The build system got more complicated than it should be. > To adjust Linux-originated Kconfig to U-Boot, the helper script > "scripts/multiconfig.sh" was introduced. Writing a complicated > text processor is a shell script sometimes caused problems. > > Now I believe the "single .config" will serve us better. With it, > all the problems above would go away. Instead, we will have to add > some CONFIG_SPL_* (and CONFIG_TPL_*) options such as CONFIG_SPL_DM, > but we will not have much. Anyway, this is what we do now in > scripts/Makefile.spl. > > I admit my mistake with my apology and this commit switches to the > single .config configuration. > > It is not so difficult to do that: > > - Remove unnecessary processings from scripts/multiconfig.sh > This file will remain for a while to support the current defconfig > format. It will be removed after more cleanups are done. > > - Adjust some makefiles and Kconfigs > > - Add some entries to include/config_uncmd_spl.h and the new file > scripts/Makefile.uncmd_spl. Some CONFIG options that are not > supported on SPL must be disabled because one .config is shared > between SPL and U-Boot proper going forward. I know this is not > a beautiful solution and I think we can do better, but let's see > how much we will have to describe them. > > - update doc/README.kconfig > > More cleaning up patches will follow this. > > Signed-off-by: Masahiro Yamada <yamad...@jp.panasonic.com>
Reviewed-by: Simon Glass <s...@chromium.org> I notice with seaboard there is a bit of a code size different. But I don't think this matters. 06: kconfig: switch to single .config configuration arm: (for 1/1 boards) all -839.0 bss +4.0 rodata -27.0 spl/u-boot-spl:all +16.0 spl/u-boot-spl:data +16.0 text -816.0 seaboard : all -839 bss +4 rodata -27 spl/u-boot-spl:all +16 spl/u-boot-spl:data +16 text -816 u-boot: add: 1/-11, grow: 0/-1 bytes: 4/-1352 (-1348) function old new delta __div0 - 4 +4 __aeabi_idiv0 12 - -12 __lshrdi3 24 - -24 __ashldi3 24 - -24 __aeabi_llsr 24 - -24 __aeabi_llsl 24 - -24 __ashrdi3 26 - -26 __aeabi_uidivmod 26 - -26 __aeabi_lasr 26 - -26 __aeabi_idivmod 26 - -26 raise 28 - -28 __udivsi3 604 152 -452 __divsi3 660 - -660 spl-u-boot-spl: add: 0/0, grow: 1/0 bytes: 16/0 (16) function old new delta gdata 184 200 +16 Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot