config.mk: use memoization in cc-option macro to speed up compilation

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 <daniel.schwierzeck@googlemail.com>
This commit is contained in:
Daniel Schwierzeck 2011-11-07 05:26:43 +00:00 committed by Wolfgang Denk
parent fec79acc86
commit b6a467d73d

View file

@ -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...)