diff options
Diffstat (limited to 'shared.mak')
-rw-r--r-- | shared.mak | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/shared.mak b/shared.mak index c45b2812eb..4e1b62ee99 100644 --- a/shared.mak +++ b/shared.mak @@ -53,6 +53,8 @@ ifndef V QUIET = @ QUIET_GEN = @echo ' ' GEN $@; + QUIET_MKDIR_P_PARENT = @echo $(wspfx_SQ) MKDIR -p $(@D); + ## Used in "Makefile" QUIET_CC = @echo ' ' CC $@; QUIET_AR = @echo ' ' AR $@; @@ -84,3 +86,18 @@ ifndef V export V endif endif + +### Templates + +## mkdir_p_parent: lazily "mkdir -p" the path needed for a $@ +## file. Uses $(wildcard) to avoid the "mkdir -p" if it's not +## needed. +## +## Is racy, but in a good way; we might redundantly (and safely) +## "mkdir -p" when running in parallel, but won't need to exhaustively create +## individual rules for "a" -> "prefix" -> "dir" -> "file" if given a +## "a/prefix/dir/file". This can instead be inserted at the start of +## the "a/prefix/dir/file" rule. +define mkdir_p_parent_template +$(if $(wildcard $(@D)),,$(QUIET_MKDIR_P_PARENT)$(shell mkdir -p $(@D))) +endef |