All of lore.kernel.org
 help / color / mirror / Atom feed
From: Aneesh V <aneesh@ti.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2] config.mk: use memoization in cc-option macro to speed up compilation
Date: Sat, 05 Nov 2011 12:47:17 +0530	[thread overview]
Message-ID: <4EB4E2FD.2090007@ti.com> (raw)
In-Reply-To: <1320410756-30391-1-git-send-email-daniel.schwierzeck@googlemail.com>

On Friday 04 November 2011 06:15 PM, Daniel Schwierzeck wrote:
> Apply memoization to cc-option macro by caching the results of the
> gcc calls. This macro is called very often so using cached results
> leads to faster compilation times.

This one gives even better results compared to your
previous version.

Tested-by: Aneesh V <aneesh@ti.com>

br,
Aneesh


>
> Signed-off-by: Daniel Schwierzeck<daniel.schwierzeck@googlemail.com>
> ---
> Changes for v2:
>   - move cache file to $(obj)/include/generated
>   - reworked completely
>   - cache also non-working gcc options
>   - remove CACHE_CC_OPTIONS config switch and enable this optimization
>     by default
>
>   config.mk |   23 +++++++++++++++++++++--
>   1 files changed, 21 insertions(+), 2 deletions(-)
>
> diff --git a/config.mk b/config.mk
> index 918cffe..0da961a 100644
> --- a/config.mk
> +++ b/config.mk
> @@ -107,8 +107,27 @@ HOSTCFLAGS	+= -pedantic
>   # Option checker (courtesy linux kernel) to ensure
>   # only supported compiler options are used
>   #
> -cc-option = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
> -		>  /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
> +CC_OPTIONS_CACHE_FILE := $(OBJTREE)/include/generated/cc_options.mk
> +
> +$(if $(wildcard $(CC_OPTIONS_CACHE_FILE)),,\
> +	$(shell mkdir -p $(dir $(CC_OPTIONS_CACHE_FILE))))
> +
> +sinclude $(CC_OPTIONS_CACHE_FILE)
> +
> +_ccopt_sys = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
> +		>  /dev/null 2>&1; then \
> +		echo 'CC_OPTIONS += $(strip $1)'>>  $(CC_OPTIONS_CACHE_FILE); \
> +		echo "$(1)"; else \
> +		[ "x$(strip $2)" != "x" ]&&  \
> +			echo 'CC_OPTIONS_NOP += $(strip $2)'>>  $(CC_OPTIONS_CACHE_FILE); \
> +		echo "$(2)"; fi)
> +
> +_ccopt_cached = $(if $(filter $1,$(CC_OPTIONS)),$1,)
> +_ccopt_nop_cached = $(if $(filter $1,$(CC_OPTIONS_NOP)),$1,)
> +
> +cc-option = $(if $(call _ccopt_cached,$1),$1,\
> +		$(if $(call _ccopt_nop_cached,$2),$2,\
> +		$(call _ccopt_sys,$1,$2)))
>
>   #
>   # Include the make variables (CC, etc...)

      parent reply	other threads:[~2011-11-05  7:17 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-02 18:46 [U-Boot] [PATCH] config.mk: use memoization in cc-option macro to speed up compilation Daniel Schwierzeck
2011-11-02 20:39 ` Simon Glass
2011-11-02 21:36   ` Daniel Schwierzeck
2011-11-03 19:47     ` Wolfgang Denk
2011-11-04 12:53 ` [U-Boot] [PATCH v2] " Daniel Schwierzeck
2011-11-04 16:32   ` Simon Glass
2011-11-04 17:15     ` Daniel Schwierzeck
2011-11-04 17:31   ` Daniel Schwierzeck
2011-11-04 17:56     ` Wolfgang Denk
2011-11-05  9:16       ` Albert ARIBAUD
2011-11-05 13:30         ` Wolfgang Denk
2011-11-05 13:43         ` Daniel Schwierzeck
2011-11-05 15:02           ` Albert ARIBAUD
2011-11-07 15:26   ` [U-Boot] [PATCH v3] " Daniel Schwierzeck
2011-11-07 21:07     ` Wolfgang Denk
     [not found] ` <1320410756-30391-1-git-send-email-daniel.schwierzeck@googlemail.com>
2011-11-05  7:17   ` Aneesh V [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=4EB4E2FD.2090007@ti.com \
    --to=aneesh@ti.com \
    --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.