The cache files are only cleaned away by "make clean". If you continue incremental builds, the cache files will grow up little by little. It is not a big deal in general use cases because $(call cc-option,...) in not added/deleted quite often. However, if you do build-test for various architectures, compilers, and kernel configurations, you will end up with huge cache files soon. The simple idea is to cut down the cache when it exceeds a certain limit. I wrote a simple method to check if nr_cache >= 1000. If it is, shrink it by "tail -500". This is not LRU strategy, but I hope it will work well enough. Signed-off-by: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> --- If you have a better idea, please suggest it! scripts/Kbuild.include | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include index 4203fff..db81df3 100644 --- a/scripts/Kbuild.include +++ b/scripts/Kbuild.include @@ -99,9 +99,30 @@ cc-cross-prefix = \ # Include values from last time make-cache := $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/,$(if $(obj),$(obj)/)).cache.mk -$(make-cache): ; -include $(make-cache) +nr_cache := $(words $(filter __cached_%, $(.VARIABLES))) + +# Strip the last digit. Covert as follows: +# 0 -> +# 123 -> 12 +strip_last_digit = $(filter-out $1,$(firstword \ + $(sort $(foreach i,0 1 2 3 4 5 6 7 8 9,$(patsubst %$i,%,$1))))) + +# If cache exceeds 1000 lines, shrink it down to 500. The Least Recently Added +# lines are deleted. (not Least Recently Used, unfortunately) +# +# Evalucate [ ${nr_cache} -ge 1000 ] without relying on external tools. +# Check if nr_cache is not empty even after the last three digits are stripped. +ifneq ($(call strip_last_digit,$(call strip_last_digit,$(call strip_last_digit,$(nr_cache)))),) +.PHONY: $(make-cache) +$(make-cache): + tail -500 $@ > $@.tmp + mv $@.tmp $@ +else +$(make-cache): ; +endif + # Usage: $(call __sanitize-opt,Hello=Hola$(comma)Goodbye Adios) # # Convert all '$', ')', '(', '\', '=', ' ', ',', ':' to '_' -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html