All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 4/4] kbuild: improve Kbuild speed
Date: Sat, 1 Mar 2014 17:00:18 -0700	[thread overview]
Message-ID: <CAPnjgZ06EywQPaSCsXLjveZc2sT99xitXBWNRv_-j_cnnq6sPA@mail.gmail.com> (raw)
In-Reply-To: <1393561421-31785-5-git-send-email-yamada.m@jp.panasonic.com>

On 27 February 2014 21:23, Masahiro Yamada <yamada.m@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 <yamada.m@jp.panasonic.com>
> Reported-by: Simon Glass <sjg@chromium.org>
> Tested-by: Stephen Warren <swarren@nvidia.com>
>

Acked-by: Simon Glass <sjg@chromium.org>

Tested only on sandbox:

Tested-by: Simon Glass <sjg@chromium.org>

      reply	other threads:[~2014-03-02  0:00 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-28  4:23 [U-Boot] [PATCH v2 0/4] Big acceleration of Kbuild performance Masahiro Yamada
2014-02-28  4:23 ` [U-Boot] [PATCH v2 1/4] kbuild, blackfin: Add CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED Masahiro Yamada
2014-02-28  4:23 ` [U-Boot] [PATCH v2 2/4] kbuild: add CONFIG_ prefix to USE_PRIVATE_LIBGCC Masahiro Yamada
2014-02-28  4:37   ` Masahiro Yamada
2014-02-28  4:23 ` [U-Boot] [PATCH v2 3/4] config.mk: specify the exact path to standalone linker script Masahiro Yamada
2014-02-28  4:23 ` [U-Boot] [PATCH v2 4/4] kbuild: improve Kbuild speed Masahiro Yamada
2014-03-02  0:00   ` Simon Glass [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAPnjgZ06EywQPaSCsXLjveZc2sT99xitXBWNRv_-j_cnnq6sPA@mail.gmail.com \
    --to=sjg@chromium.org \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.