esc := $(empty)\7f$(empty)
space := $(empty) $(empty)
comma := ,
+openpar := (
+clospar := )
slash := $(empty)/$(empty)
backslash := $(empty)\$(empty)
escspace = $(subst $(space),$(backslash)$(space),$(subst $(backslash)$(space),$(space),$(1)))
hidspace = $(subst $(space),$(esc),$(subst $(backslash)$(space),$(esc),$(1)))
+hidescspace = $(subst $(backslash)$(space),$(esc),$(1))
shwspace = $(subst $(esc),$(backslash)$(space),$(1))
+shwspacequoted = $(subst $(esc),"$(space)",$(subst \$(space),$(esc),$(1)))
unescp_all = $(subst $(esc),$(backslash),$(subst $(backslash),,$(subst $(backslash)$(backslash),$(esc),$(1))))
+for_list = $(call sys_path,$(call unescp_all,$(call shwspacequoted,$(subst $(space),$(comma),$(subst $(space)$(space),$(space),$(call hidescspace,$(1)))))))
+lc = $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$1))))))))))))))))))))))))))
# PATH SEPARATOR STRING TOOLS
ifdef WINDOWS_HOST
ifdef WIN_PS_TOOLS
psep := $(backslash)
slash_path = $(subst $(backslash),$(slash),$(1))
- sys_path = $(subst $(backslash)$(backslash),$(slash),$(subst $(slash),$(backslash),$(1)))
+ esc_ampersand = $(subst &,^&,$(subst ^&,&,$(1)))
+ sys_path = $(call esc_ampersand,$(subst $(backslash)$(backslash),$(slash),$(subst $(slash),$(backslash),$(1))))
+ each_quote_path = $(call quote_path,$(path))
quote_path = "$(call sys_path,$(call unescp_all,$(1)))"
+# each_path_quote = $(if $(findstring $(esc),$(path)),"$(call sys_path,$(call unescp_all,$(call shwspace,$(path))))",$(call sys_path,$(call unescp_all,$(path))))
each_path_quote = $(if $(findstring $(esc),$(path)),"$(call unescp_all,$(call shwspace,$(path)))",$(call unescp_all,$(path)))
+# sys_path_list
sys_path_list = $(foreach path,$(1),$(each_path_quote))
else
psep := $(slash)
endif
ifdef WIN_SHELL_COMMANDS
nullerror = 2>NUL
- echo = $(if $(1),echo $(1))
+ echo = $(if $(1),echo $(1),echo.)
+ cat = $(if $(1),type $(1))
touch = $(if $(1),@cmd /c "for %%I in ($(call sys_path,$(1))) do @(cd %%~pI && type nul >> %%~nxI && copy /by %%~nxI+,, > nul 2>&1 && cd %%cd%%)")
- cpq = $(if $(1),@cmd /c "for %%I in ($(call sys_path,$(1))) do copy /by %%I $(call sys_path,$(2))" > nul 2>&1)
- cpv = $(if $(1),@cmd /c "for %%I in ($(call sys_path,$(1))) do copy /by %%I $(call sys_path,$(2))")
+# cpq = $(if $(1),@cmd /c "for %%I in ($(call sys_path,$(1))) do copy /by %%I $(call sys_path,$(2))" > nul 2>&1)
+ cpq = $(if $(1),@cmd /c "for %%I in ($(call for_list,$(1))) do copy /by %%I $(call sys_path,$(2))" > nul 2>&1)
+# cpv = $(if $(1),@cmd /c "for %%I in ($(call sys_path,$(1))) do copy /by %%I $(call sys_path,$(2))")
+ cpv = $(if $(1),@cmd /c "for %%I in ($(call for_list,$(1))) do copy /by %%I $(call sys_path,$(2))")
+# rmq = $(if $(1),-del /f /q $(1) > nul 2>&1)
+# rmq = $(if $(1),-del /f /q $(call sys_path,$(1)) > nul 2>&1)
rmq = $(if $(1),-del /f /q $(call sys_path,$(call sys_path_list,$(1))) > nul 2>&1)
+# rmq = $(if $(1),-del /f /q $(foreach path,$(1),$(each_quote_path)) $(call sys_path,$(1)) > nul 2>&1)
rmrq = $(if $(1),-rmdir /q /s $(call sys_path,$(1)) > nul 2>&1)
mkdirq = $(if $(1),-mkdir $(call sys_path,$(1)) > nul 2>&1)
rmdirq = $(if $(1),-rmdir /q $(call sys_path,$(1)) > nul 2>&1)
else
nullerror = 2>/dev/null
- echo = $(if $(1),echo "$(1)")
+ echo = $(if $(1),echo "$(1)",echo)
+ cat = $(if $(1),cat $(1))
touch = $(if $(1),touch $(1))
cpq = $(if $(1),cp $(1) $(2))
cpv = cp $(1) $(2)