Skip to content
Snippets Groups Projects
Commit b6a467d7 authored by Daniel Schwierzeck's avatar Daniel Schwierzeck Committed by Wolfgang Denk
Browse files

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: default avatarDaniel Schwierzeck <daniel.schwierzeck@googlemail.com>
parent fec79acc
No related branches found
No related tags found
No related merge requests found
...@@ -107,8 +107,24 @@ HOSTCFLAGS += -pedantic ...@@ -107,8 +107,24 @@ HOSTCFLAGS += -pedantic
# Option checker (courtesy linux kernel) to ensure # Option checker (courtesy linux kernel) to ensure
# only supported compiler options are used # only supported compiler options are used
# #
cc-option = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \ CC_OPTIONS_CACHE_FILE := $(OBJTREE)/include/generated/cc_options.mk
> /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
$(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...) # Include the make variables (CC, etc...)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment