[U-Boot] [PATCH] config.mk: use memoization in cc-option macro to speed up compilation
Daniel Schwierzeck
daniel.schwierzeck at googlemail.com
Wed Nov 2 19:46:31 CET 2011
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 feature can be enabled by setting CACHE_CC_OPTIONS=y in the
environment.
Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck at googlemail.com>
---
Some MAKEALL runs for ARM and MIPS (on Core 2 Duo E6600 at 2.4GHz):
time CROSS_COMPILE=/opt/codesourcery/arm-2011.03/bin/arm-none-linux-gnueabi-
MAKEALL_LOGDIR=../logs/ BUILD_DIR=../test/ ./MAKEALL -s omap3 -v ti
real 3m0.380s
user 9m30.570s
sys 1m34.550s
time CACHE_CC_OPTIONS=y CROSS_COMPILE=/opt/codesourcery/arm-2011.03/bin/arm-none-linux-gnueabi-
MAKEALL_LOGDIR=../logs/ BUILD_DIR=../test/ ./MAKEALL -s omap3 -v ti
real 1m15.661s
user 4m21.510s
sys 0m33.190s
time CROSS_COMPILE=/opt/codesourcery/mips-2011.03/bin/mips-linux-gnu-
MAKEALL_LOGDIR=../logs/ BUILD_DIR=../test/ ./MAKEALL mips4kc
real 2m49.883s
user 6m25.840s
sys 0m58.200s
time CACHE_CC_OPTIONS=y CROSS_COMPILE=/opt/codesourcery/mips-2011.03/bin/mips-linux-gnu-
MAKEALL_LOGDIR=../logs/ BUILD_DIR=../test/ ./MAKEALL mips4kc
real 2m18.205s
user 4m59.740s
sys 0m39.530s
config.mk | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/config.mk b/config.mk
index 11b67e5..27c366f 100644
--- a/config.mk
+++ b/config.mk
@@ -107,8 +107,22 @@ HOSTCFLAGS += -pedantic
# Option checker (courtesy linux kernel) to ensure
# only supported compiler options are used
#
+ifeq ($(CACHE_CC_OPTIONS),y)
+sinclude $(OBJTREE)/include/cc-options.mk
+
+cc-option-cached = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
+ > /dev/null 2>&1; then \
+ echo 'CC_OPTIONS += $(strip $1)' \
+ >> $(OBJTREE)/include/cc-options.mk; \
+ echo "$(1)"; else echo "$(2)"; fi ;)
+
+cc-option = $(if $(filter $1,$(CC_OPTIONS)),\
+ $(filter $1,$(CC_OPTIONS)),\
+ $(call cc-option-cached,$1,$2))
+else
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 ;)
+endif
#
# Include the make variables (CC, etc...)
--
1.7.7.1
More information about the U-Boot
mailing list