ifneq ($(HB_SHELL),sh)
   MK_OS := $(subst /,\,$(MK))
   DIRS_OS := $(subst /,\,$(DIRS))
endif

ifeq ($(DIRS),) # Empty directory list
   DIR_RULE := @$(ECHO) $(ECHOQUOTE)! Done$(ECHOQUOTE)
else

ifeq ($(HB_SHELL),sh)
   DIR_RULE = \
      @for d in $(DIRS); do \
         if [ -d "$$d" ]; then \
            $(MK) $(MKFLAGS) -C $$d $@; \
         fi \
      done
endif

ifeq ($(HB_SHELL),nt)
   DIR_RULE = @for %%d in ($(DIRS_OS)) do $(MK_OS) $(MKFLAGS) -C %%d $@
endif

ifeq ($(HB_SHELL),os2)
   DIR_RULE = @for %d in ($(DIRS_OS)) do $(MK_OS) $(MKFLAGS) -C %d $@
endif

ifeq ($(HB_SHELL),dos)

# NOTE: The empty line directly before 'endef' HAS TO exist!
#       It causes that every command will be separated by LF
define dir_mk
   @$(MK_OS) $(MKFLAGS) -C $(file) $@

endef

DIR_RULE = $(foreach file,$(DIRS_OS),$(dir_mk))

endif

endif # ! Empty directory list
