Re: [U-Boot] [PATCH v3] config.mk: use memoization in cc-option macro to speed up compilation

2011-11-07 Thread Wolfgang Denk
Dear Daniel Schwierzeck,

In message 
<1320679603-24847-1-git-send-email-daniel.schwierz...@googlemail.com> you 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.
> 
> The old behaviour can be restored by defining the config option
> CONFIG_CC_OPT_CACHE_DISABLE=y.
> 
> Signed-off-by: Daniel Schwierzeck 
> ---
> Changes for v3:
>  - reworked handling of non-working gcc options
>  - add config option CONFIG_CC_OPT_CACHE_DISABLE
> 
> 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 |   20 ++--
>  1 files changed, 18 insertions(+), 2 deletions(-)

Applied, thanks.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
Human beings were created by water to transport it uphill.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v3] config.mk: use memoization in cc-option macro to speed up compilation

2011-11-07 Thread Daniel Schwierzeck
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.

The old behaviour can be restored by defining the config option
CONFIG_CC_OPT_CACHE_DISABLE=y.

Signed-off-by: Daniel Schwierzeck 
---
Changes for v3:
 - reworked handling of non-working gcc options
 - add config option CONFIG_CC_OPT_CACHE_DISABLE

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 |   20 ++--
 1 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/config.mk b/config.mk
index 918cffe..ddaa477 100644
--- a/config.mk
+++ b/config.mk
@@ -107,8 +107,24 @@ 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
+
+-include $(CC_OPTIONS_CACHE_FILE)
+
+cc-option-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)"; fi)
+
+ifeq ($(CONFIG_CC_OPT_CACHE_DISABLE),y)
+cc-option = $(strip $(if $(call cc-option-sys,$1),$1,$2))
+else
+cc-option = $(strip $(if $(findstring $1,$(CC_OPTIONS)),$1,\
+   $(if $(call cc-option-sys,$1),$1,$2)))
+endif
 
 #
 # Include the make variables (CC, etc...)
-- 
1.7.7.1

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot