buildsystem,epj2make,ide: (#996-related) <wip> fix remaining issues with .ec modules...
authorRejean Loyer <redj@ecere.com>
Sun, 6 Oct 2013 03:35:58 +0000 (23:35 -0400)
committerRejean Loyer <redj@ecere.com>
Mon, 16 Mar 2015 05:31:45 +0000 (01:31 -0400)
 - fix crossplatform.mk's echo shell command to all echoing empty line.
 - add cat/type shell commands to crossplatform.mk
 - <wip> fix crossplatform.mk's shell commands (cp, mkdir, rmdir?) to properly handle file lists with file name with spaces in them

crossplatform.mk

index 34132dd..ed63fae 100644 (file)
@@ -167,12 +167,18 @@ empty :=
 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
@@ -183,9 +189,13 @@ endif
 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)
@@ -239,17 +249,24 @@ endif
 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)