On 27 February 2014 21:23, Masahiro Yamada <yamad...@jp.panasonic.com>wrote:
> Kbuild brought about many advantages for us but a significant > performance regression was reported by Simon Glass. > > After some discussions and analysis, it turned out > its main cause is in $(call cc-option,...). > > Historically, U-Boot parses all config.mk > (arch/*/config.mk and board/*/config.mk) > every time descending into subdirectories. > That means cc-options are evaluated over and over again. > > $(call cc-option,...) is useful but costly. > So we want to evaluate them only in ./Makefile > and spl/Makefile and export compiler flags. > > This commit changes the build system as follows: > > - Modify scripts/Makefile.build to not include config.mk > Instead, add $(PLATFORM_CPPFLAGS) to asflags-y, ccflags-y, > cppflags-y. > > - Export many variables > Going forward, Kbuild will not parse config.mk files > when it descends into subdirectories. > If we want to set variables in config.mk and use them > in subdirectories, they must be exported. > > This is the list of variables to get exported: > PLATFORM_CPPFLAGS > CPUDIR > BOARDDIR > OBJCOPYFLAGS > LDFLAGS > LDFLAGS_FINAL > (used in nand_spl/board/*/*/Makefile) > CONFIG_STANDALONE_LOAD_ADDR > (used in examples/standalone/Makefile) > SYM_PREFIX > (used in examples/standalone/Makefile) > RELFLAGS > (used in examples/standalone/Makefile) > > - Delete CPPFLAGS > This variable has been replaced with PLATFORM_CPPFLAGS > > - Copy gcclibdir from example/standalone/Makefile > to arch/sparc/config.mk > The reference in CONFIG_STANDALONE_LOAD_ADDR must be > resolved before it is exported. > > Signed-off-by: Masahiro Yamada <yamad...@jp.panasonic.com> > Reported-by: Simon Glass <s...@chromium.org> > Tested-by: Stephen Warren <swar...@nvidia.com> > Acked-by: Simon Glass <s...@chromium.org> Tested only on sandbox: Tested-by: Simon Glass <s...@chromium.org>
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot