SILENCE_LVM = \
LVM_SUPPRESS_FD_WARNINGS=1; export LVM_SUPPRESS_FD_WARNINGS
+## $(call file-name,PATH)
+##
+## Strip any trailing `/' from the PATH.
+file-name = $(1:/=)
+
+## $(call base-name,PATH)
+##
+## Expand to the last component of PATH, whether or not it's a directory
+## name with a trailing `/'.
+base-name = $(notdir $(call file-name,$1))
+
+## $(call parent-dir,PATH)
+##
+## Expand to the parent directory of PATH, whether or not it's a directory
+## name with a trailing `/'.
+## `/'.
+parent-dir = $(dir $(call file-name,$1))
+
## $(call definedp,VAR)
##
## Expand non-empty if and only if VAR is defined (but possibly empty).
LOCAL_EXTRA_DIRS = share/man/
all: $(foreach d,$(LOCAL_COMMON_DIRS) $(LOCAL_EXTRA_DIRS),$(LOCAL)/$d)
$(foreach d,$(LOCAL_COMMON_DIRS) $(LOCAL_EXTRA_DIRS),$(LOCAL)/$d):
- $(V_AT)mkdir -p $(dir $(patsubst %/,%,$@))
+ $(V_AT)mkdir -p $(call parent-dir $@)
$(call v_tag,MKDIR)mkdir $@
LOCAL_ARCH_DIRS = bin/ etc/ games/ include/ include.aside/
$(call v_tag,MKDIR)mkdir $@
$(foreach a,$(ALL_ARCHS),\
$(foreach d,$(LOCAL_ARCH_DIRS),$(LOCAL)/$a/$d)):
- $(V_AT)mkdir -p $(dir $(patsubst %/,%,$@))
+ $(V_AT)mkdir -p $(call parent-dir,$@)
$(call v_tag,MKDIR)mkdir $@
$(foreach a,$(ALL_ARCHS),\
$(foreach d,$(LOCAL_ARCH_LINKS),$(LOCAL)/$a/$d)): \
- $$(if $$(call symlink-ok-p,$$@,$$($$(notdir $$@)_LINKDEST)),,_force)
- $(V_AT)mkdir -p $(dir $@)
- $(call v_tag,SYMLINK)ln -sf $($(notdir $@)_LINKDEST) $@
+ $$(if $$(call symlink-ok-p,$$@,$$($$(call base-name,$$@)_LINKDEST)),,_force) \
+ $(V_AT)mkdir -p $(call parent-dir,$@)
+ $(call v_tag,SYMLINK)ln -sf $($(call base-name,$@)_LINKDEST) $@
$(foreach a,$(ALL_ARCHS),\
$(foreach d,$(LOCAL_COMMON_DIRS),$(LOCAL)/$a/$d)): \
- $$(if $$(call symlink-ok-p,$$@,../$$(notdir $$(patsubst %/,%,$$@))),,_force)
- $(V_AT)mkdir -p $(dir $(patsubst %/,%,$@))
- $(call v_tag,SYMLINK)ln -sf ../$(notdir $(patsubst %/,%,$@)) $(patsubst %/,%,$@)
+ $$(if $$(call symlink-ok-p,$$@,../$$(call base-name,$$@)),,_force) \
+ $(V_AT)mkdir -p $(call parent-dir,$@)
+ $(call v_tag,SYMLINK)ln -sf ../$(call base-name,$@) $(call file-name,$@)
###--------------------------------------------------------------------------
### Main chroot maintenance.