
Hi Daniel,
On Wed, Nov 2, 2011 at 11:46 AM, Daniel Schwierzeck daniel.schwierzeck@googlemail.com 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 feature can be enabled by setting CACHE_CC_OPTIONS=y in the environment.
Signed-off-by: Daniel Schwierzeck daniel.schwierzeck@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
It would be better to put this into include/generated - it will also make git ignore it and it will be also be removed on clobber which I think you need.
+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
Tested-by: Simon Glass sjg@chromium.org
With this patch and Wolfgang's I get 1.122s for an incremental build now. Now I just need faster SPI flash and a faster car to get to work sooner.
Is there any reason not to enable this option by default?
Regards, Simon
# # 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