Hi Daniel, On Wed, Nov 2, 2011 at 11:46 AM, Daniel Schwierzeck <daniel.schwierz...@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.schwierz...@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 <s...@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 > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot