mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-08 14:23:19 +00:00
kbuild: create directory for make cache only when necessary
Currently, the existence of $(dir $(make-cache)) is always checked, and created if it is missing. We can avoid unnecessary system calls by some tricks. [1] If KBUILD_SRC is unset, we are building in the source tree. The output directory checks can be entirely skipped. [2] If at least one cache data is found, it means the cache file was included. Obviously its directory exists. Skip "mkdir -p". [3] If Makefile does not contain any call of __run-and-store, it will not create a cache file. No need to create its directory. [4] The "mkdir -p" should be only invoked by the first call of __run-and-store Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Reviewed-by: Douglas Anderson <dianders@chromium.org>
This commit is contained in:
parent
859fd5860c
commit
9a234a2e38
@ -99,18 +99,19 @@ cc-cross-prefix = \
|
|||||||
|
|
||||||
# Include values from last time
|
# Include values from last time
|
||||||
make-cache := $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/,$(if $(obj),$(obj)/)).cache.mk
|
make-cache := $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/,$(if $(obj),$(obj)/)).cache.mk
|
||||||
ifeq ($(wildcard $(dir $(make-cache))),)
|
|
||||||
$(shell mkdir -p '$(dir $(make-cache))')
|
|
||||||
endif
|
|
||||||
$(make-cache): ;
|
$(make-cache): ;
|
||||||
-include $(make-cache)
|
-include $(make-cache)
|
||||||
|
|
||||||
|
cached-data := $(filter __cached_%, $(.VARIABLES))
|
||||||
|
|
||||||
# If cache exceeds 1000 lines, shrink it down to 500.
|
# If cache exceeds 1000 lines, shrink it down to 500.
|
||||||
ifneq ($(word 1000,$(filter __cached_%, $(.VARIABLES))),)
|
ifneq ($(word 1000,$(cached-data)),)
|
||||||
$(shell tail -n 500 $(make-cache) > $(make-cache).tmp; \
|
$(shell tail -n 500 $(make-cache) > $(make-cache).tmp; \
|
||||||
mv $(make-cache).tmp $(make-cache))
|
mv $(make-cache).tmp $(make-cache))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
create-cache-dir := $(if $(KBUILD_SRC),$(if $(cache-data),,1))
|
||||||
|
|
||||||
# Usage: $(call __sanitize-opt,Hello=Hola$(comma)Goodbye Adios)
|
# Usage: $(call __sanitize-opt,Hello=Hola$(comma)Goodbye Adios)
|
||||||
#
|
#
|
||||||
# Convert all '$', ')', '(', '\', '=', ' ', ',', ':' to '_'
|
# Convert all '$', ')', '(', '\', '=', ' ', ',', ':' to '_'
|
||||||
@ -136,6 +137,10 @@ __sanitize-opt = $(subst $$,_,$(subst $(right_paren),_,$(subst $(left_paren),_,$
|
|||||||
define __run-and-store
|
define __run-and-store
|
||||||
ifeq ($(origin $(1)),undefined)
|
ifeq ($(origin $(1)),undefined)
|
||||||
$$(eval $(1) := $$(shell $$(2)))
|
$$(eval $(1) := $$(shell $$(2)))
|
||||||
|
ifeq ($(create-cache-dir),1)
|
||||||
|
$$(shell mkdir -p $(dir $(make-cache)))
|
||||||
|
$$(eval create-cache-dir :=)
|
||||||
|
endif
|
||||||
$$(shell echo '$(1) := $$($(1))' >> $(make-cache))
|
$$(shell echo '$(1) := $$($(1))' >> $(make-cache))
|
||||||
endif
|
endif
|
||||||
endef
|
endef
|
||||||
|
Loading…
Reference in New Issue
Block a user