ecere/gui/Window: Prevent uninitialized values if base Window methods not overridden...
[sdk] / Makefile
index 56fd5e3..db30e6f 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,10 @@
 .PHONY: all clean realclean distclean emptyoutput prepinstall actualinstall install copyonlyinstall uninstall troubleshoot outputdirs bootstrap deps ecere ecerecom ecerevanilla ear compiler prepbinaries epj2make ide documentor eda prepcodeguard codeguard fixprecompile cleantarget pots installer regenbootstrap updatebootstrap update_ecere update_libec update_ecp update_ecc update_ecs ecereaudio
-ifneq "$(V)" "1"
+ifneq ($(V),1)
 .SILENT:
 endif
 
+_CF_DIR =
+
 include crossplatform.mk
 include default.cf
 
@@ -44,8 +46,8 @@ SOV := $(SO)
 
 ifndef DESTDIR
 
-ifeq "$(TARGET_ARCH)" "x86_64"
-   ifneq "$(wildcard $(SystemDrive)/Program\ Files )" ""
+ifeq ($(TARGET_ARCH),x86_64)
+   ifneq ($(wildcard $(SystemDrive)/Program\ Files ),)
       export DESTDIR=$(SystemDrive)/Program Files/Ecere SDK
    else
       export DESTDIR=$(SystemDrive)/Ecere SDK
@@ -115,7 +117,7 @@ export DOCDIR=$(DESTDIR)$(prefix)/share/ecere/doc
 endif
 
 ifndef MANDIR
-export MANDIR=$(DESTDIR)$(prefix)/share/man/
+export MANDIR=$(DESTDIR)$(prefix)/share/man
 endif
 
 ifndef BINDIR
@@ -127,11 +129,11 @@ ifdef LIBDIR
 else
  export PREFIXLIBDIR=$(prefix)/lib/$(TARGET_ARCH)
 
- ifeq "$(wildcard $(prefix)/lib/$(TARGET_ARCH) )" ""
+ ifeq ($(wildcard $(prefix)/lib/$(TARGET_ARCH) ),)
   export PREFIXLIBDIR=$(prefix)/lib
 
-  ifeq "$(TARGET_ARCH)" "i386-linux-gnu"
-   ifneq "$(wildcard $(prefix)/lib32 )" ""
+  ifeq ($(TARGET_ARCH),i386-linux-gnu)
+   ifneq ($(wildcard $(prefix)/lib32 ),)
     export PREFIXLIBDIR=$(prefix)/lib32
    endif
   endif
@@ -171,28 +173,32 @@ all: prepbinaries ide epj2make documentor eda codeguard ecereaudio
        @$(call echo,The Ecere SDK is fully built.)
 
 outputdirs:
-       $(if $(wildcard $(OBJDIR)),,$(call mkdirq,$(OBJDIR)))
-       $(if $(wildcard $(OBJBINDIR)),,$(call mkdirq,$(OBJBINDIR)))
-       $(if $(wildcard $(OBJLIBDIR)),,$(call mkdirq,$(OBJLIBDIR)))
+       $(if $(wildcard $(OBJDIR)),,$(call mkdir,$(OBJDIR)))
+       $(if $(wildcard $(OBJBINDIR)),,$(call mkdir,$(OBJBINDIR)))
+       $(if $(wildcard $(OBJLIBDIR)),,$(call mkdir,$(OBJLIBDIR)))
 ifdef CROSS_TARGET
-       $(if $(wildcard $(XOBJDIR)),,$(call mkdirq,$(XOBJDIR)))
-       $(if $(wildcard $(XOBJBINDIR)),,$(call mkdirq,$(XOBJBINDIR)))
-       $(if $(wildcard $(XOBJLIBDIR)),,$(call mkdirq,$(XOBJLIBDIR)))
+       $(if $(wildcard $(XOBJDIR)),,$(call mkdir,$(XOBJDIR)))
+       $(if $(wildcard $(XOBJBINDIR)),,$(call mkdir,$(XOBJBINDIR)))
+       $(if $(wildcard $(XOBJLIBDIR)),,$(call mkdir,$(XOBJLIBDIR)))
 endif
 
 bootstrap: outputdirs
-       cd compiler && $(MAKE) $(XBOOT) bootstrap
+ifdef CI
+       @$(call echo,$(CC))
+       @$(CC) --version
+endif
+       +cd compiler && $(_MAKE) $(XBOOT) bootstrap
 
 deps:
 ifdef CROSS_TARGET
 ifndef LINUX_HOST
        @$(call echo,Building dependencies (host)...)
-       cd deps && $(MAKE) $(XBOOT)
+       +cd deps && $(_MAKE) $(XBOOT)
 endif
 endif
 ifndef LINUX_TARGET
        @$(call echo,Building dependencies...)
-       cd deps && $(MAKE)
+       +cd deps && $(_MAKE)
 endif
 
 ecere: bootstrap deps
@@ -201,53 +207,53 @@ ifdef CROSS_TARGET
 else
        @$(call echo,Building 2nd stage ecere...)
 endif
-       cd ecere && $(MAKE) nores $(XBOOT)
-       cd ear && $(MAKE) nores $(XBOOT)
-       cd ecere && $(MAKE) cleaneceretarget
+       +cd ecere && $(_MAKE) nores $(XBOOT)
+       +cd ear && $(_MAKE) nores $(XBOOT)
+       +cd ecere && $(_MAKE) cleaneceretarget
 ifdef CROSS_TARGET
        @$(call echo,Building 2nd stage ecere...)
 endif
-       cd ecere && $(MAKE)
+       +cd ecere && $(_MAKE)
 
 ecerecom: bootstrap
 ifdef CROSS_TARGET
        @$(call echo,Building eC Core Runtime (host)...)
-       cd ecere && $(MAKE) -f Makefile.ecereCOM $(XBOOT)
+       +cd ecere && $(_MAKE) -f Makefile.ecereCOM $(XBOOT)
 endif
        @$(call echo,Building eC Core Runtime...)
-       cd ecere && $(MAKE) -f Makefile.ecereCOM
+       +cd ecere && $(_MAKE) -f Makefile.ecereCOM
 
 ecerevanilla: bootstrap
        @$(call echo,Building Vanilla Ecere...)
-       cd ecere && $(MAKE) -f Makefile.vanilla
+       +cd ecere && $(_MAKE) -f Makefile.vanilla
 
 ear: ecere ecerevanilla
        @$(call echo,Building ear...)
-       cd ear && cd cmd && $(MAKE) cleantarget
-       cd ear && $(MAKE)
+       +cd ear && cd cmd && $(_MAKE) cleantarget
+       +cd ear && $(_MAKE)
 
 fixprecompile:
-       cd compiler && $(MAKE) fixprecompile
+       +cd compiler && $(_MAKE) fixprecompile
 
 compiler: ecere ear
 ifdef CROSS_TARGET
        @$(call echo,Building 2nd stage compiler (host))
-       cd compiler && $(MAKE) $(XBOOT)
+       +cd compiler && $(_MAKE) $(XBOOT)
 endif
        @$(call echo,Building 2nd stage compiler)
-       cd compiler && $(MAKE)
+       +cd compiler && $(_MAKE)
 
 prepbinaries: compiler ecerecom
        @$(call echo,Enabling 2nd stage binaries...)
 ifdef WINDOWS_TARGET
-       $(call cpq,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV),$(OBJBINDIR))
-       $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV),$(OBJBINDIR))
-       $(call cpq,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV),$(OBJBINDIR))
+       $(call cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV),$(OBJBINDIR))
+       $(call cp,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV),$(OBJBINDIR))
+       $(call cp,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV),$(OBJBINDIR))
 endif
 ifdef LINUX_TARGET
-       $(call cpq,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV),$(OBJLIBDIR))
-       $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV),$(OBJLIBDIR))
-       $(call cpq,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV),$(OBJLIBDIR))
+       $(call cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV),$(OBJLIBDIR))
+       $(call cp,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV),$(OBJLIBDIR))
+       $(call cp,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV),$(OBJLIBDIR))
        ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO).0
        ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO).0
        ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO).0
@@ -257,27 +263,27 @@ ifdef LINUX_TARGET
 endif
 ifndef WINDOWS_TARGET
 ifndef LINUX_TARGET
-       $(call cpq,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SO),$(OBJLIBDIR))
-       $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO),$(OBJLIBDIR))
-       $(call cpq,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJLIBDIR))
+       $(call cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SO),$(OBJLIBDIR))
+       $(call cp,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO),$(OBJLIBDIR))
+       $(call cp,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJLIBDIR))
 endif
 endif
-       $(call cpq,ear/cmd/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(E),$(OBJBINDIR))
-       $(call cpq,compiler/ecc/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(E),$(OBJBINDIR))
-       $(call cpq,compiler/ecp/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(E),$(OBJBINDIR))
-       $(call cpq,compiler/ecs/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(E),$(OBJBINDIR))
+       $(call cp,ear/cmd/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(E),$(OBJBINDIR))
+       $(call cp,compiler/ecc/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(E),$(OBJBINDIR))
+       $(call cp,compiler/ecp/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(E),$(OBJBINDIR))
+       $(call cp,compiler/ecs/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(E),$(OBJBINDIR))
 
 ifdef CROSS_TARGET
 
 ifdef WINDOWS_HOST
-       $(call cpq,ecere/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecere$(HOST_SOV),$(XOBJBINDIR))
-       $(call cpq,ecere/obj/ecereCOM.release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecereCOM$(HOST_SOV),$(XOBJBINDIR))
-       $(call cpq,compiler/libec/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ec$(HOST_SOV),$(XOBJBINDIR))
+       $(call cp,ecere/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecere$(HOST_SOV),$(XOBJBINDIR))
+       $(call cp,ecere/obj/ecereCOM.release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecereCOM$(HOST_SOV),$(XOBJBINDIR))
+       $(call cp,compiler/libec/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ec$(HOST_SOV),$(XOBJBINDIR))
 endif
 ifdef WINDOWS_HOST
-       $(call cpq,ecere/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecere$(HOST_SOV),$(XOBJLIBDIR))
-       $(call cpq,ecere/obj/ecereCOM.release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecereCOM$(HOST_SOV),$(XOBJLIBDIR))
-       $(call cpq,compiler/libec/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ec$(HOST_SOV),$(XOBJLIBDIR))
+       $(call cp,ecere/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecere$(HOST_SOV),$(XOBJLIBDIR))
+       $(call cp,ecere/obj/ecereCOM.release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecereCOM$(HOST_SOV),$(XOBJLIBDIR))
+       $(call cp,compiler/libec/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ec$(HOST_SOV),$(XOBJLIBDIR))
        ln -sf $(HOST_LP)ecere$(HOST_SOV) $(XOBJLIBDIR)$(LP)ecere$(HOST_SO).0
        ln -sf $(HOST_LP)ecereCOM$(HOST_SOV) $(XOBJLIBDIR)$(LP)ecereCOM$(HOST_SO).0
        ln -sf $(HOST_LP)ec$(HOST_SOV) $(XOBJLIBDIR)$(LP)ec$(HOST_SO).0
@@ -287,57 +293,57 @@ ifdef WINDOWS_HOST
 endif
 ifndef WINDOWS_HOST
 ifndef LINUX_HOST
-       $(call cpq,ecere/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecere$(HOST_SO),$(XOBJLIBDIR))
-       $(call cpq,ecere/obj/ecereCOM.release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecereCOM$(HOST_SO),$(XOBJLIBDIR))
-       $(call cpq,compiler/libec/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ec$(HOST_SO),$(XOBJLIBDIR))
+       $(call cp,ecere/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecere$(HOST_SO),$(XOBJLIBDIR))
+       $(call cp,ecere/obj/ecereCOM.release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecereCOM$(HOST_SO),$(XOBJLIBDIR))
+       $(call cp,compiler/libec/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ec$(HOST_SO),$(XOBJLIBDIR))
 endif
 endif
-       $(call cpq,ear/cmd/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(HOST_E),$(XOBJBINDIR))
-       $(call cpq,compiler/ecc/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(HOST_E),$(XOBJBINDIR))
-       $(call cpq,compiler/ecp/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(HOST_E),$(XOBJBINDIR))
-       $(call cpq,compiler/ecs/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(HOST_E),$(XOBJBINDIR))
+       $(call cp,ear/cmd/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(HOST_E),$(XOBJBINDIR))
+       $(call cp,compiler/ecc/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(HOST_E),$(XOBJBINDIR))
+       $(call cp,compiler/ecp/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(HOST_E),$(XOBJBINDIR))
+       $(call cp,compiler/ecs/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(HOST_E),$(XOBJBINDIR))
 
 endif
 
 epj2make: prepbinaries
        @$(call echo,Building epj2make...)
-       cd epj2make && $(MAKE)
+       +cd epj2make && $(_MAKE)
 
 ecereaudio: prepbinaries
-ifneq "$(ECERE_AUDIO)" "n"
+ifneq ($(ECERE_AUDIO),n)
        @$(call echo,Building EcereAudio...)
-       cd audio && $(MAKE)
+       +cd audio && $(_MAKE)
 endif
 
 ide: prepbinaries
        @$(call echo,Building IDE...)
-       cd ide && $(MAKE)
+       +cd ide && $(_MAKE)
 
 documentor: prepbinaries
        @$(call echo,Building Documentor...)
-       cd documentor && $(MAKE)
+       +cd documentor && $(_MAKE)
 
 codeguard: prepcodeguard
 ifdef CodeGuard
        @$(call echo,Building CodeGuard client...)
-       cd codeGuard && $(MAKE)
+       +cd codeGuard && $(_MAKE)
 endif
 
 prepcodeguard: eda
 ifdef CodeGuard
 ifdef WINDOWS_TARGET
-       $(call cpq,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SO),$(OBJBINDIR))
+       $(call cp,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SO),$(OBJBINDIR))
 endif
 
 ifdef LINUX_TARGET
-       $(call cpq,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SOV),$(OBJLIBDIR))
+       $(call cp,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SOV),$(OBJLIBDIR))
        ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO).0
        ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO)
 endif
 
 ifndef WINDOWS_TARGET
 ifndef LINUX_TARGET
-       $(call cpq,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SO),$(OBJLIBDIR))
+       $(call cp,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SO),$(OBJLIBDIR))
 endif
 endif
 endif
@@ -345,147 +351,135 @@ endif
 eda: prepbinaries
 ifdef CROSS_TARGET
        @$(call echo,Building EDA (host))
-       cd eda && $(MAKE) $(XBOOT)
+       +cd eda && $(_MAKE) $(XBOOT)
 endif
        @$(call echo,Building EDA...)
-       cd eda && $(MAKE)
+       +cd eda && $(_MAKE)
 
 emptyoutput: outputdirs
-       $(call rmq,$(OBJLIBDIR)libecereVanilla$(A))
-       $(call rmq,$(SODESTDIR)$(LP)ecere$(SO))
-       $(call rmq,$(SODESTDIR)$(LP)ecereCOM$(SO))
-       $(call rmq,$(SODESTDIR)$(LP)ec$(SO))
-       $(call rmq,$(SODESTDIR)$(LP)EDA$(SO))
-       $(call rmq,$(SODESTDIR)$(LP)EDASQLite$(SO))
+       $(call rm,$(OBJLIBDIR)libecereVanilla$(A))
+       $(call rm,$(SODESTDIR)$(LP)ecere$(SO))
+       $(call rm,$(SODESTDIR)$(LP)ecereCOM$(SO))
+       $(call rm,$(SODESTDIR)$(LP)ec$(SO))
+       $(call rm,$(SODESTDIR)$(LP)EDA$(SO))
+       $(call rm,$(SODESTDIR)$(LP)EDASQLite$(SO))
 ifdef EDASQLiteCipher
-       $(call rmq,$(SODESTDIR)$(LP)EDASQLiteCipher$(SO))
+       $(call rm,$(SODESTDIR)$(LP)EDASQLiteCipher$(SO))
 endif
-ifneq "$(ECERE_AUDIO)" "n"
-       $(call rmq,$(SODESTDIR)$(LP)EcereAudio$(SO))
+ifneq ($(ECERE_AUDIO),n)
+       $(call rm,$(SODESTDIR)$(LP)EcereAudio$(SO))
 endif
 ifdef LINUX_TARGET
-       $(call rmq,$(SODESTDIR)$(LP)ecere$(SO).0)
-       $(call rmq,$(SODESTDIR)$(LP)ecereCOM$(SO).0)
-       $(call rmq,$(SODESTDIR)$(LP)ec$(SO).0)
-       $(call rmq,$(SODESTDIR)$(LP)EDA$(SO).0)
-       $(call rmq,$(SODESTDIR)$(LP)EDASQLite$(SO).0)
+       $(call rm,$(SODESTDIR)$(LP)ecere$(SO).0)
+       $(call rm,$(SODESTDIR)$(LP)ecereCOM$(SO).0)
+       $(call rm,$(SODESTDIR)$(LP)ec$(SO).0)
+       $(call rm,$(SODESTDIR)$(LP)EDA$(SO).0)
+       $(call rm,$(SODESTDIR)$(LP)EDASQLite$(SO).0)
 ifdef EDASQLiteCipher
-       $(call rmq,$(SODESTDIR)$(LP)EDASQLiteCipher$(SO).0)
+       $(call rm,$(SODESTDIR)$(LP)EDASQLiteCipher$(SO).0)
 endif
-ifneq "$(ECERE_AUDIO)" "n"
-       $(call rmq,$(SODESTDIR)$(LP)EcereAudio$(SO).0)
+ifneq ($(ECERE_AUDIO),n)
+       $(call rm,$(SODESTDIR)$(LP)EcereAudio$(SO).0)
 endif
-       $(call rmq,$(SODESTDIR)$(LP)ecere$(SOV))
-       $(call rmq,$(SODESTDIR)$(LP)ecereCOM$(SOV))
-       $(call rmq,$(SODESTDIR)$(LP)ec$(SOV))
-       $(call rmq,$(SODESTDIR)$(LP)EDA$(SOV))
-       $(call rmq,$(SODESTDIR)$(LP)EDASQLite$(SOV))
+       $(call rm,$(SODESTDIR)$(LP)ecere$(SOV))
+       $(call rm,$(SODESTDIR)$(LP)ecereCOM$(SOV))
+       $(call rm,$(SODESTDIR)$(LP)ec$(SOV))
+       $(call rm,$(SODESTDIR)$(LP)EDA$(SOV))
+       $(call rm,$(SODESTDIR)$(LP)EDASQLite$(SOV))
 ifdef EDASQLiteCipher
-       $(call rmq,$(SODESTDIR)$(LP)EDASQLiteCipher$(SOV))
+       $(call rm,$(SODESTDIR)$(LP)EDASQLiteCipher$(SOV))
 endif
-ifneq "$(ECERE_AUDIO)" "n"
-       $(call rmq,$(SODESTDIR)$(LP)EcereAudio$(SOV))
+ifneq ($(ECERE_AUDIO),n)
+       $(call rm,$(SODESTDIR)$(LP)EcereAudio$(SOV))
 endif
 endif  
-       $(call rmq,$(OBJBINDIR)ear$(E))
-       $(call rmq,$(OBJBINDIR)ecc$(E))
-       $(call rmq,$(OBJBINDIR)ecp$(E))
-       $(call rmq,$(OBJBINDIR)ecs$(E))
-       $(call rmq,$(OBJBINDIR)epj2make$(E))
-       $(call rmq,$(OBJBINDIR)ide$(E))
-       $(call rmq,$(OBJBINDIR)documentor$(E))
+       $(call rm,$(OBJBINDIR)ear$(E))
+       $(call rm,$(OBJBINDIR)ecc$(E))
+       $(call rm,$(OBJBINDIR)ecp$(E))
+       $(call rm,$(OBJBINDIR)ecs$(E))
+       $(call rm,$(OBJBINDIR)epj2make$(E))
+       $(call rm,$(OBJBINDIR)ecere-ide$(E))
+       $(call rm,$(OBJBINDIR)documentor$(E))
 ifdef CodeGuard
-       $(call rmq,$(OBJBINDIR)CodeGuard$(E))
+       $(call rm,$(OBJBINDIR)CodeGuard$(E))
 endif
 
 cleantarget:
-       cd compiler && $(MAKE) cleantarget
-       cd documentor && $(MAKE) cleantarget
-       cd ear && $(MAKE) cleantarget
-       cd ecere && $(MAKE) cleantarget
-       cd eda && $(MAKE) cleantarget
-       cd epj2make && $(MAKE) cleantarget
-       cd ide && $(MAKE) cleantarget
-       cd installer && $(MAKE) cleantarget
-ifneq "$(ECERE_AUDIO)" "n"
-       cd audio && $(MAKE) cleantarget
+       +cd compiler && $(_MAKE) cleantarget
+       +cd documentor && $(_MAKE) cleantarget
+       +cd ear && $(_MAKE) cleantarget
+       +cd ecere && $(_MAKE) cleantarget
+       +cd eda && $(_MAKE) cleantarget
+       +cd epj2make && $(_MAKE) cleantarget
+       +cd ide && $(_MAKE) cleantarget
+       +cd installer && $(_MAKE) cleantarget
+ifneq ($(ECERE_AUDIO),n)
+       +cd audio && $(_MAKE) cleantarget
 endif
 
 pots: cleantarget
-       $(MAKE) OUTPUT_POT=1
-       cd installer && $(MAKE) OUTPUT_POT=1 pots
+       $(_MAKE) OUTPUT_POT=1
+       +cd installer && $(_MAKE) OUTPUT_POT=1 pots
 
 ifdef WINDOWS_TARGET
 installer:
-       $(MAKE) prepinstall ARCH=
-       $(MAKE) prepinstall ARCH=x32
+       $(_MAKE) prepinstall ARCH=
+       $(_MAKE) prepinstall ARCH=x32
        @$(call echo,Building Ecere runtime for installer...)
-       cd ecere && @$(MAKE) -f Makefile.installer ARCH=x32
+       +cd ecere && @$(_MAKE) -f Makefile.installer ARCH=x32
        @$(call echo,Building Installer for Windows...)
-       cd installer && @$(MAKE) ARCH=x32
+       +cd installer && @$(_MAKE) ARCH=x32
        @$(call echo,The Ecere SDK Windows Installer is fully built.)
 endif
 
 clean: emptyoutput
 ifndef LINUX_TARGET
-       cd deps && $(MAKE) clean
+       +cd deps && $(_MAKE) clean
 endif
-       cd ecere && $(MAKE) clean
-       cd compiler && $(MAKE) clean
-       cd ear && $(MAKE) clean
-       cd epj2make && $(MAKE) clean
-       cd ide && $(MAKE) clean
-       cd documentor && $(MAKE) clean
-ifneq "$(ECERE_AUDIO)" "n"
-       cd audio && $(MAKE) clean
+       +cd ecere && $(_MAKE) clean
+       +cd compiler && $(_MAKE) clean
+       +cd ear && $(_MAKE) clean
+       +cd epj2make && $(_MAKE) clean
+       +cd ide && $(_MAKE) clean
+       +cd documentor && $(_MAKE) clean
+ifneq ($(ECERE_AUDIO),n)
+       +cd audio && $(_MAKE) clean
 endif
 ifdef CodeGuard
-       cd codeGuard && $(MAKE) clean
+       +cd codeGuard && $(_MAKE) clean
 endif
-       cd eda && $(MAKE) clean
+       +cd eda && $(_MAKE) clean
        @$(call echo,Done.)
 
 realclean: outputdirs
 ifndef LINUX_TARGET
-       cd deps && $(MAKE) realclean
+       +cd deps && $(_MAKE) realclean
 endif
-       cd ecere && $(MAKE) realclean
-       cd compiler && $(MAKE) realclean
-       cd ear && $(MAKE) realclean
-       cd epj2make && $(MAKE) realclean
-       cd ide && $(MAKE) realclean
-       cd documentor && $(MAKE) realclean
-ifneq "$(ECERE_AUDIO)" "n"
-       cd audio && $(MAKE) realclan
+       +cd ecere && $(_MAKE) realclean
+       +cd compiler && $(_MAKE) realclean
+       +cd ear && $(_MAKE) realclean
+       +cd epj2make && $(_MAKE) realclean
+       +cd ide && $(_MAKE) realclean
+       +cd documentor && $(_MAKE) realclean
+ifneq ($(ECERE_AUDIO),n)
+       +cd audio && $(_MAKE) realclean
 endif
 ifdef CodeGuard
-       cd codeGuard && $(MAKE) realclean
+       +cd codeGuard && $(_MAKE) realclean
 endif
-       cd eda && $(MAKE) realclean
-       $(call rmrq,obj/$(PLATFORM)/)
+       +cd eda && $(_MAKE) realclean
+       $(call rmr,obj/$(PLATFORM)/)
        @$(call echo,Done.)
 
-distclean: outputdirs
-ifndef LINUX_TARGET
-       cd deps && $(MAKE) distclean
-endif
-       cd ecere && $(MAKE) distclean
-       cd compiler && $(MAKE) distclean
-       cd ear && $(MAKE) distclean
-       cd epj2make && $(MAKE) distclean
-       cd ide && $(MAKE) distclean
-       cd documentor && $(MAKE) distclean
-ifneq "$(ECERE_AUDIO)" "n"
-       cd audio && $(MAKE) distclean
-endif
-ifdef CodeGuard
-       cd codeGuard && $(MAKE) distclean
-endif
-       cd eda && $(MAKE) distclean
-       $(call rmrq,obj/)
+distclean:
+       $(MAKE) -f Cleanfile distclean distclean_all_subdirs
        @$(call echo,Done.)
 
-DOC = doc/ecere.eCdoc doc/ecereCOM.eCdoc doc/EDA.eCdoc
+DOC = doc
+
+Makefile: ;
+crossplatform.mk: ;
+default.cf: ;
 
 BINARIES = \
        ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV) \
@@ -498,11 +492,11 @@ BINARIES = \
        ear/cmd/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(E) \
        epj2make/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/epj2make$(E) \
        documentor/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/documentor$(E) \
-       ide/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ide$(E) \
+       ide/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecere-ide$(E) \
        eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SOV) \
        eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SOV)
 
-ifneq "$(ECERE_AUDIO)" "n"
+ifneq ($(ECERE_AUDIO),n)
 BINARIES += audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SOV)
 endif
 
@@ -521,30 +515,30 @@ endif
 prepinstall: $(DOC) $(BINARIES) outputdirs
 
 ifdef WINDOWS_TARGET
-       $(call cpq,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SO),$(OBJBINDIR))
-       $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO),$(OBJBINDIR))
-       $(call cpq,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJBINDIR))
-       $(call cpq,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SO),$(OBJBINDIR))
-       $(call cpq,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SO),$(OBJBINDIR))
-ifneq "$(ECERE_AUDIO)" "n"
-       $(call cpq,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO),$(OBJBINDIR))
+       $(call cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SO),$(OBJBINDIR))
+       $(call cp,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO),$(OBJBINDIR))
+       $(call cp,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJBINDIR))
+       $(call cp,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SO),$(OBJBINDIR))
+       $(call cp,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SO),$(OBJBINDIR))
+ifneq ($(ECERE_AUDIO),n)
+       $(call cp,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO),$(OBJBINDIR))
 endif
 ifdef EDASQLiteCipher
-       $(call cpq,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SO),$(OBJBINDIR))
+       $(call cp,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SO),$(OBJBINDIR))
 endif
 endif
 
 ifdef LINUX_TARGET
-       $(call cpq,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV),$(OBJLIBDIR))
-       $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV),$(OBJLIBDIR))
-       $(call cpq,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV),$(OBJLIBDIR))
-       $(call cpq,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SOV),$(OBJLIBDIR))
-       $(call cpq,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SOV),$(OBJLIBDIR))
-ifneq "$(ECERE_AUDIO)" "n"
-       $(call cpq,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SOV),$(OBJLIBDIR))
+       $(call cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV),$(OBJLIBDIR))
+       $(call cp,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV),$(OBJLIBDIR))
+       $(call cp,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV),$(OBJLIBDIR))
+       $(call cp,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SOV),$(OBJLIBDIR))
+       $(call cp,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SOV),$(OBJLIBDIR))
+ifneq ($(ECERE_AUDIO),n)
+       $(call cp,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SOV),$(OBJLIBDIR))
 endif
 ifdef EDASQLiteCipher
-       $(call cpq,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SOV),$(OBJLIBDIR))
+       $(call cp,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SOV),$(OBJLIBDIR))
 endif
        ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO).0
        ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO).0
@@ -554,7 +548,7 @@ endif
 ifdef EDASQLiteCipher
        ln -sf $(LP)EDASQLiteCipher$(SOV) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO).0
 endif
-ifneq "$(ECERE_AUDIO)" "n"
+ifneq ($(ECERE_AUDIO),n)
        ln -sf $(LP)EcereAudio$(SOV) $(OBJLIBDIR)$(LP)EcereAudio$(SO).0
 endif
 
@@ -571,31 +565,31 @@ endif
 
 ifndef WINDOWS_TARGET
 ifndef LINUX_TARGET
-       $(call cpq,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SO),$(OBJLIBDIR))
-       $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO),$(OBJLIBDIR))
-       $(call cpq,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJLIBDIR))
-       $(call cpq,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SO),$(OBJLIBDIR))
-       $(call cpq,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SO),$(OBJLIBDIR))
-ifneq "$(ECERE_AUDIO)" "n"
-       $(call cpq,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO),$(OBJLIBDIR))
+       $(call cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SO),$(OBJLIBDIR))
+       $(call cp,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO),$(OBJLIBDIR))
+       $(call cp,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJLIBDIR))
+       $(call cp,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SO),$(OBJLIBDIR))
+       $(call cp,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SO),$(OBJLIBDIR))
+ifneq ($(ECERE_AUDIO),n)
+       $(call cp,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO),$(OBJLIBDIR))
 endif
 ifdef EDASQLiteCipher
-       $(call cpq,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SO),$(OBJLIBDIR))
+       $(call cp,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SO),$(OBJLIBDIR))
 endif
 endif
 endif
 
-       $(call cpq,ide/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ide$(E),$(OBJBINDIR))
-       $(call cpq,ear/cmd/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(E),$(OBJBINDIR))
-       $(call cpq,compiler/ecc/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(E),$(OBJBINDIR))
-       $(call cpq,compiler/ecp/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(E),$(OBJBINDIR))
-       $(call cpq,compiler/ecs/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(E),$(OBJBINDIR))
-       $(call cpq,epj2make/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/epj2make$(E),$(OBJBINDIR))
-       $(call cpq,documentor/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/documentor$(E),$(OBJBINDIR))
+       $(call cp,ide/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecere-ide$(E),$(OBJBINDIR))
+       $(call cp,ear/cmd/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(E),$(OBJBINDIR))
+       $(call cp,compiler/ecc/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(E),$(OBJBINDIR))
+       $(call cp,compiler/ecp/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(E),$(OBJBINDIR))
+       $(call cp,compiler/ecs/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(E),$(OBJBINDIR))
+       $(call cp,epj2make/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/epj2make$(E),$(OBJBINDIR))
+       $(call cp,documentor/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/documentor$(E),$(OBJBINDIR))
 ifdef CodeGuard
-       $(call cpq,codeGuard/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/CodeGuard$(E),$(OBJBINDIR))
+       $(call cp,codeGuard/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/CodeGuard$(E),$(OBJBINDIR))
 endif
-       $(call cpq,ecere/obj/vanilla.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/libecereVanilla$(A),$(OBJLIBDIR))
+       $(call cp,ecere/obj/vanilla.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/libecereVanilla$(A),$(OBJLIBDIR))
 
 #TODO: Samples?
 install: prepinstall actualinstall
@@ -606,35 +600,35 @@ copyonlyinstall: actualinstall
 
 actualinstall:
 ifdef WINDOWS_TARGET
-       $(call mkdirq,"$(BINDIR)/")
-       $(call mkdirq,"$(DESTSLIBDIR)/")
-       $(call mkdirq,"$(DOCDIR)/")
-       $(call cpq,$(OBJBINDIR)$(LP)ecere$(SO),"$(DESTLIBDIR)/")
-       $(call cpq,$(OBJBINDIR)$(LP)ecereCOM$(SO),"$(DESTLIBDIR)/")
-       $(call cpq,$(OBJBINDIR)$(LP)ec$(SO),"$(DESTLIBDIR)/")
-       $(call cpq,$(OBJBINDIR)$(LP)EDA$(SO),"$(DESTLIBDIR)/")
-       $(call cpq,$(OBJBINDIR)$(LP)EDASQLite$(SO),"$(DESTLIBDIR)/")
+       $(call mkdir,"$(BINDIR)/")
+       $(call mkdir,"$(DESTSLIBDIR)/")
+       $(call mkdir,"$(DOCDIR)/")
+       $(call cp,$(OBJBINDIR)$(LP)ecere$(SO),"$(DESTLIBDIR)/")
+       $(call cp,$(OBJBINDIR)$(LP)ecereCOM$(SO),"$(DESTLIBDIR)/")
+       $(call cp,$(OBJBINDIR)$(LP)ec$(SO),"$(DESTLIBDIR)/")
+       $(call cp,$(OBJBINDIR)$(LP)EDA$(SO),"$(DESTLIBDIR)/")
+       $(call cp,$(OBJBINDIR)$(LP)EDASQLite$(SO),"$(DESTLIBDIR)/")
 ifdef EDASQLiteCipher
-       $(call cpq,$(OBJBINDIR)$(LP)EDASQLiteCipher$(SO),"$(DESTLIBDIR)/")
-endif
-ifneq "$(ECERE_AUDIO)" "n"
-       $(call cpq,$(OBJBINDIR)$(LP)EcereAudio$(SO),"$(DESTLIBDIR)/")
-endif
-       $(call cpq,$(OBJBINDIR)ide$(E),"$(BINDIR)/")
-       $(call cpq,$(OBJBINDIR)ear$(E),"$(BINDIR)/")
-       $(call cpq,$(OBJBINDIR)ecc$(E),"$(BINDIR)/")
-       $(call cpq,$(OBJBINDIR)ecp$(E),"$(BINDIR)/")
-       $(call cpq,$(OBJBINDIR)ecs$(E),"$(BINDIR)/")
-       $(call cpq,$(OBJBINDIR)epj2make$(E),"$(BINDIR)/")
-       $(call cpq,$(OBJBINDIR)documentor$(E),"$(BINDIR)/")
+       $(call cp,$(OBJBINDIR)$(LP)EDASQLiteCipher$(SO),"$(DESTLIBDIR)/")
+endif
+ifneq ($(ECERE_AUDIO),n)
+       $(call cp,$(OBJBINDIR)$(LP)EcereAudio$(SO),"$(DESTLIBDIR)/")
+endif
+       $(call cp,$(OBJBINDIR)ecere-ide$(E),"$(BINDIR)/")
+       $(call cp,$(OBJBINDIR)ear$(E),"$(BINDIR)/")
+       $(call cp,$(OBJBINDIR)ecc$(E),"$(BINDIR)/")
+       $(call cp,$(OBJBINDIR)ecp$(E),"$(BINDIR)/")
+       $(call cp,$(OBJBINDIR)ecs$(E),"$(BINDIR)/")
+       $(call cp,$(OBJBINDIR)epj2make$(E),"$(BINDIR)/")
+       $(call cp,$(OBJBINDIR)documentor$(E),"$(BINDIR)/")
 ifdef CodeGuard
-       $(call cpq,$(OBJBINDIR)CodeGuard$(E),"$(BINDIR)/")
+       $(call cp,$(OBJBINDIR)CodeGuard$(E),"$(BINDIR)/")
 endif
-       $(call cpq,$(OBJLIBDIR)libecereVanilla$(A),"$(DESTSLIBDIR)/")
-       $(call cpq,doc/tao.pdf,"$(DOCDIR)/Ecere Tao of Programming [work in progress].pdf") || echo "The Ecere Tao of Programming is available at http://ecere.com/tao.pdf"
-       $(call cpq,doc/ecere.eCdoc,"$(DOCDIR)/")
-       $(call cpq,doc/ecereCOM.eCdoc,"$(DOCDIR)/")
-       $(call cpq,doc/EDA.eCdoc,"$(DOCDIR)/")
+       $(call cp,$(OBJLIBDIR)libecereVanilla$(A),"$(DESTSLIBDIR)/")
+       $(call cp,doc/tao.pdf,"$(DOCDIR)/Ecere Tao of Programming [work in progress].pdf") || echo "The Ecere Tao of Programming is available at http://ecere.com/tao.pdf"
+       $(call cpr,$(DOC)/ecereCOM,"$(DOCDIR)/ecereCOM")
+       $(call cpr,$(DOC)/ecere,"$(DOCDIR)/ecere")
+       $(call cpr,$(DOC)/EDA,"$(DOCDIR)/EDA")
 endif
 
 ifdef OSX_TARGET
@@ -646,10 +640,10 @@ ifdef OSX_TARGET
 ifdef EDASQLiteCipher
        install $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO) $(DESTLIBDIR)/
 endif
-ifneq "$(ECERE_AUDIO)" "n"
+ifneq ($(ECERE_AUDIO),n)
        install $(OBJLIBDIR)$(LP)EcereAudio$(SO) $(DESTLIBDIR)/
 endif
-       install $(OBJBINDIR)ide$(E) $(BINDIR)/
+       install $(OBJBINDIR)ecere-ide$(E) $(BINDIR)/
        install $(OBJBINDIR)ear$(E) $(BINDIR)/
        install $(OBJBINDIR)ecc$(E) $(BINDIR)/
        install $(OBJBINDIR)ecp$(E) $(BINDIR)/
@@ -662,16 +656,18 @@ endif
        install $(OBJLIBDIR)libecereVanilla$(A) $(DESTSLIBDIR)/
        install -d $(DOCDIR)/
        install doc/tao.pdf $(DOCDIR)/"Ecere Tao of Programming [work in progress].pdf" >/dev/null 2>&1 || echo "The Ecere Tao of Programming is available at http://ecere.com/tao.pdf"
-       install doc/ecere.eCdoc $(DOCDIR)/
-       install doc/ecereCOM.eCdoc $(DOCDIR)/
-       install doc/EDA.eCdoc $(DOCDIR)/
+       $(call cpr,$(DOC)/ecereCOM,"$(DOCDIR)/ecereCOM")
+       $(call cpr,$(DOC)/ecere,"$(DOCDIR)/ecere")
+       $(call cpr,$(DOC)/EDA,"$(DOCDIR)/EDA")
        mkdir -p $(MANDIR)/man1
-       cp -pRf share/man/man1/* $(MANDIR)/man1
+       $(call cpr,share/man/man1,$(MANDIR)/man1)
        mkdir -p $(SAMPLESDIR)
-       cp -pRf samples/* $(SAMPLESDIR)
+       $(call cpr,samples,$(SAMPLESDIR))
        find $(SAMPLESDIR) -type d -exec chmod 777 {} \;
+       find $(DOCDIR) -type d -exec chmod 755 {} \;
+       find $(DOCDIR) -type f -exec chmod 644 {} \;
        mkdir -p $(EXTRASDIR)
-       cp -pRf extras/* $(EXTRASDIR)
+       $(call cpr,extras,$(EXTRASDIR))
 endif
 
 ifndef OSX_TARGET
@@ -686,7 +682,7 @@ ifdef LINUX_TARGET
 ifdef EDASQLiteCipher
        install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SOV)
 endif
-ifneq "$(ECERE_AUDIO)" "n"
+ifneq ($(ECERE_AUDIO),n)
        install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EcereAudio$(SO) $(DESTLIBDIR)/ec/$(LP)EcereAudio$(SOV)
 endif
        ln -sf $(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SO).0
@@ -697,7 +693,7 @@ endif
 ifdef EDASQLiteCipher
        ln -sf $(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO).0
 endif
-ifneq "$(ECERE_AUDIO)" "n"
+ifneq ($(ECERE_AUDIO),n)
        ln -sf $(LP)EcereAudio$(SOV) $(DESTLIBDIR)/ec/$(LP)EcereAudio$(SO).0
 endif
        ln -sf $(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SO)
@@ -710,7 +706,7 @@ endif
 ifdef EDASQLiteCipher
        ln -sf $(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO)
 endif
-ifneq "$(ECERE_AUDIO)" "n"
+ifneq ($(ECERE_AUDIO),n)
        ln -sf $(LP)EcereAudio$(SOV) $(DESTLIBDIR)/ec/$(LP)EcereAudio$(SO)
 endif
 ifndef BSD_HOST
@@ -721,7 +717,7 @@ else
        install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecere$(SO) $(DESTLIBDIR)/$(LP)ecere$(SO)
        install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecereCOM$(SO) $(DESTLIBDIR)/$(LP)ecereCOM$(SO)
 endif
-       install $(INSTALL_FLAGS) $(OBJBINDIR)ide$(E) $(BINDIR)/ide$(E)
+       install $(INSTALL_FLAGS) $(OBJBINDIR)ecere-ide$(E) $(BINDIR)/ecere-ide$(E)
        install $(INSTALL_FLAGS) $(OBJBINDIR)ear$(E) $(BINDIR)/ear$(E)
        install $(INSTALL_FLAGS) $(OBJBINDIR)ecc$(E) $(BINDIR)/ecc$(E)
        install $(INSTALL_FLAGS) $(OBJBINDIR)ecp$(E) $(BINDIR)/ecp$(E)
@@ -735,16 +731,17 @@ endif
 ifdef BSD_HOST
        install $(INSTALL_FLAGS) -d $(DOCDIR)
 endif
-       install $(INSTALL_FLAGS) -m 644 doc/EDA.eCdoc $(DOCDIR)/EDA.eCdoc
        install $(INSTALL_FLAGS) -m 644 doc/tao.pdf $(DOCDIR)/"Ecere Tao of Programming [work in progress].pdf" >/dev/null 2>&1 || echo "The Ecere Tao of Programming is available at http://ecere.com/tao.pdf"
-       install $(INSTALL_FLAGS) -m 644 doc/ecere.eCdoc $(DOCDIR)/ecere.eCdoc
-       install $(INSTALL_FLAGS) -m 644 doc/ecereCOM.eCdoc $(DOCDIR)/ecereCOM.eCdoc
-       install $(INSTALL_FLAGS) -m 644 doc/EDA.eCdoc $(DOCDIR)/EDA.eCdoc
+       $(call cpr,$(DOC)/ecereCOM,"$(DOCDIR)/ecereCOM")
+       $(call cpr,$(DOC)/ecere,"$(DOCDIR)/ecere")
+       $(call cpr,$(DOC)/EDA,"$(DOCDIR)/EDA")
        mkdir -p $(MANDIR)/man1
        cp -pRf share/man/man1/* $(MANDIR)/man1
        mkdir -p $(SAMPLESDIR)
        cp -pRf samples/* $(SAMPLESDIR)
        find $(SAMPLESDIR) -type d -exec chmod 777 {} \;
+       find $(DOCDIR) -type d -exec chmod 755 {} \;
+       find $(DOCDIR) -type f -exec chmod 644 {} \;
        mkdir -p $(EXTRASDIR)
        cp $(CPFLAGS) extras/* $(EXTRASDIR)
 ifdef DEBIAN_PACKAGE
@@ -774,72 +771,75 @@ endif
 endif
 
 uninstall:
-       $(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SO)")
-       $(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SO)")
-       $(call rmq,"$(DESTLIBDIR)/$(LP)ec$(SO)")
-       $(call rmq,"$(DESTLIBDIR)/$(LP)EDA$(SO)")
+       $(call rm,"$(DESTLIBDIR)/$(LP)ecere$(SO)")
+       $(call rm,"$(DESTLIBDIR)/$(LP)ecereCOM$(SO)")
+       $(call rm,"$(DESTLIBDIR)/$(LP)ec$(SO)")
+       $(call rm,"$(DESTLIBDIR)/$(LP)EDA$(SO)")
 ifdef LINUX_TARGET
-       $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO)")
+       $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO)")
 ifdef EDASQLiteCipher
-       $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO)")
+       $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO)")
 endif
-ifneq "$(ECERE_AUDIO)" "n"
-       $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EcereAudio$(SO)")
+ifneq ($(ECERE_AUDIO),n)
+       $(call rm,"$(DESTLIBDIR)/ec/$(LP)EcereAudio$(SO)")
 endif
 else
-       $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLite$(SO)")
+       $(call rm,"$(DESTLIBDIR)/$(LP)EDASQLite$(SO)")
 ifdef EDASQLiteCipher
-       $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO)")
+       $(call rm,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO)")
 endif
-ifneq "$(ECERE_AUDIO)" "n"
-       $(call rmq,"$(DESTLIBDIR)/$(LP)EcereAudio$(SO)")
+ifneq ($(ECERE_AUDIO),n)
+       $(call rm,"$(DESTLIBDIR)/$(LP)EcereAudio$(SO)")
 endif
 endif
-       $(call rmq,"$(BINDIR)/ide$(E)")
-       $(call rmq,"$(BINDIR)/ear$(E)")
-       $(call rmq,"$(BINDIR)/ecc$(E)")
-       $(call rmq,"$(BINDIR)/ecp$(E)")
-       $(call rmq,"$(BINDIR)/ecs$(E)")
-       $(call rmq,"$(BINDIR)/epj2make$(E)")
-       $(call rmq,"$(BINDIR)/documentor$(E)")
+       $(call rm,"$(BINDIR)/ecere-ide$(E)")
+       $(call rm,"$(BINDIR)/ear$(E)")
+       $(call rm,"$(BINDIR)/ecc$(E)")
+       $(call rm,"$(BINDIR)/ecp$(E)")
+       $(call rm,"$(BINDIR)/ecs$(E)")
+       $(call rm,"$(BINDIR)/epj2make$(E)")
+       $(call rm,"$(BINDIR)/documentor$(E)")
 ifdef CodeGuard
-       $(call rmq,"$(BINDIR)/CodeGuard$(E)")
-endif
-       $(call rmq,"$(DESTSLIBDIR)/libecereVanilla$(A)")
-       $(call rmq,"$(DOCDIR)/Ecere Tao of Programming [work in progress].pdf")
-       $(call rmq,"$(DOCDIR)/ecere.eCdoc")
-       $(call rmq,"$(DOCDIR)/ecereCOM.eCdoc")
-       $(call rmq,"$(DOCDIR)/EDA.eCdoc")
+       $(call rm,"$(BINDIR)/CodeGuard$(E)")
+endif
+       $(call rm,"$(DESTSLIBDIR)/libecereVanilla$(A)")
+       $(call rm,"$(DOCDIR)/Ecere Tao of Programming [work in progress].pdf")
+       $(call rm,"$(DOCDIR)/ecere.eCdoc")
+       $(call rm,"$(DOCDIR)/ecereCOM.eCdoc")
+       $(call rm,"$(DOCDIR)/EDA.eCdoc")
+       $(call rmr,"$(DOCDIR)/ecere")
+       $(call rmr,"$(DOCDIR)/ecereCOM")
+       $(call rmr,"$(DOCDIR)/EDA")
 ifdef LINUX_TARGET
-       $(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SO).0")
-       $(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SO).0")
-       $(call rmq,"$(DESTLIBDIR)/ec/$(LP)ec$(SO).0")
-       $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EDA$(SO).0")
-       $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO).0")
+       $(call rm,"$(DESTLIBDIR)/$(LP)ecere$(SO).0")
+       $(call rm,"$(DESTLIBDIR)/$(LP)ecereCOM$(SO).0")
+       $(call rm,"$(DESTLIBDIR)/ec/$(LP)ec$(SO).0")
+       $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDA$(SO).0")
+       $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO).0")
 ifdef EDASQLiteCipher
-       $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO).0")
-endif
-       $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EcereaAudio$(SO).0")
-       $(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SOV)")
-       $(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SOV)")
-       $(call rmq,"$(DESTLIBDIR)/ec/$(LP)ec$(SOV)")
-       $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EDA$(SOV)")
-       $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EDASQLite$(SOV)")
+       $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO).0")
+endif
+       $(call rm,"$(DESTLIBDIR)/ec/$(LP)EcereaAudio$(SO).0")
+       $(call rm,"$(DESTLIBDIR)/$(LP)ecere$(SOV)")
+       $(call rm,"$(DESTLIBDIR)/$(LP)ecereCOM$(SOV)")
+       $(call rm,"$(DESTLIBDIR)/ec/$(LP)ec$(SOV)")
+       $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDA$(SOV)")
+       $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDASQLite$(SOV)")
 ifdef EDASQLiteCipher
-       $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SOV)")
+       $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SOV)")
 endif
-ifneq "$(ECERE_AUDIO)" "n"
-       $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EcereAudio$(SOV)")
+ifneq ($(ECERE_AUDIO),n)
+       $(call rm,"$(DESTLIBDIR)/ec/$(LP)EcereAudio$(SOV)")
 endif
-       $(call rmq,"$(DESTDIR)$(prefix)/share/pixmaps/ecere.png")
-       $(call rmq,"$(DESTDIR)$(prefix)/share/applications/ecere.desktop")
+       $(call rm,"$(DESTDIR)$(prefix)/share/pixmaps/ecere.png")
+       $(call rm,"$(DESTDIR)$(prefix)/share/applications/ecere.desktop")
 endif
-       $(call rmdirq,"$(BINDIR)/")
-       $(call rmdirq,"$(DESTLIBDIR)/")
-       $(call rmdirq,"$(DESTSLIBDIR)/")
-       $(call rmdirq,"$(DOCDIR)/")
+       $(call rmdir,"$(BINDIR)/")
+       $(call rmdir,"$(DESTLIBDIR)/")
+       $(call rmdir,"$(DESTSLIBDIR)/")
+       $(call rmdir,"$(DOCDIR)/")
 ifdef WINDOWS_TARGET
-       $(call rmdirq,"$(DESTDIR)/")
+       $(call rmdir,"$(DESTDIR)/")
 endif
        @$(call echo,The Ecere SDK has been uninstalled.)
 
@@ -848,40 +848,41 @@ regenbootstrap: update_ecere update_libec update_ecp update_ecc update_ecs
 
 updatebootstrap: regenbootstrap
        @echo Copying files...
-       $(call cpq,ecere/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecere/bootstrap)
-       $(call cpq,compiler/libec/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/libec/bootstrap)
-       $(call cpq,compiler/ecp/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecp/bootstrap)
-       $(call cpq,compiler/ecc/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecc/bootstrap)
-       $(call cpq,compiler/ecs/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecs/bootstrap)
+       $(call cp,ecere/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecere/bootstrap)
+       $(call cp,compiler/libec/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/libec/bootstrap)
+       $(call cp,compiler/ecp/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecp/bootstrap)
+       $(call cp,compiler/ecc/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecc/bootstrap)
+       $(call cp,compiler/ecs/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecs/bootstrap)
        @echo Bootstrap updated.
 
 update_ecere:
        @echo Regenerating ecere bootstrapper...
-       cd ecere && $(MAKE) -f Makefile.bootstrap clean
-       cd ecere && $(MAKE) -f Makefile.bootstrap
+       +cd ecere && $(_MAKE) -f Makefile.bootstrap clean
+       +cd ecere && $(_MAKE) -f Makefile.bootstrap
 
 update_libec:
        @echo Regenerating ec bootstrapper...
-       cd compiler/libec && $(MAKE) -f Makefile.bootstrap clean
-       cd compiler/libec && $(MAKE) -f Makefile.bootstrap
+       +cd compiler/libec && $(_MAKE) -f Makefile.bootstrap clean
+       +cd compiler/libec && $(_MAKE) -f Makefile.bootstrap
 
 update_ecp:
        @echo Regenerating ecp bootstrapper...
-       cd compiler/ecp && $(MAKE) -f Makefile.bootstrap clean
-       cd compiler/ecp && $(MAKE) -f Makefile.bootstrap
+       +cd compiler/ecp && $(_MAKE) -f Makefile.bootstrap clean
+       +cd compiler/ecp && $(_MAKE) -f Makefile.bootstrap
 
 update_ecc:
        @echo Regenerating ecc bootstrapper...
-       cd compiler/ecc && $(MAKE) -f Makefile.bootstrap clean
-       cd compiler/ecc && $(MAKE) -f Makefile.bootstrap
+       +cd compiler/ecc && $(_MAKE) -f Makefile.bootstrap clean
+       +cd compiler/ecc && $(_MAKE) -f Makefile.bootstrap
 
 update_ecs:
        @echo Regenerating ecs bootstrapper...
-       cd compiler/ecs && $(MAKE) -f Makefile.bootstrap clean
-       cd compiler/ecs && $(MAKE) -f Makefile.bootstrap
+       +cd compiler/ecs && $(_MAKE) -f Makefile.bootstrap clean
+       +cd compiler/ecs && $(_MAKE) -f Makefile.bootstrap
 
 troubleshoot:
        @$(call echo,Printing values of some variables.)
+       @$(call echo,_CF_DIR=$(_CF_DIR))
        @$(call echo,HOST_PLATFORM=$(HOST_PLATFORM))
        @$(call echo,TARGET_PLATFORM=$(TARGET_PLATFORM))
        @$(call echo,PLATFORM=$(PLATFORM))
@@ -893,6 +894,13 @@ troubleshoot:
        @$(call echo,WINDOWS_TARGET=$(WINDOWS_TARGET))
        @$(call echo,BSD_HOST=$(BSD_HOST))
        @$(call echo,BSD_TARGET=$(BSD_TARGET))
+       @$(call echo,OS=$(OS))
+       @$(call echo,OSTYPE=$(OSTYPE))
+       @$(call echo,BASH=$(BASH))
+       @$(call echo,TERM=$(TERM))
+       @$(call echo,SHELL=$(SHELL))
+       @$(call echo,WIN_SHELL_COMMANDS=$(WIN_SHELL_COMMANDS))
+       @$(call echo,WIN_PS_TOOLS=$(WIN_PS_TOOLS))
        @$(call echo,CCACHE=$(CCACHE))
        @$(call echo,CCACHE_COMPILE=$(CCACHE_COMPILE))
        @$(call echo,CCACHE_PREFIX=$(CCACHE_PREFIX))
@@ -918,3 +926,7 @@ troubleshoot:
        @$(call echo,DIR_VER=$(DIR_VER))
        @$(call echo,REPOSITORY_VER=$(REPOSITORY_VER))
        @$(call echo,CPPFLAGS=$(CPPFLAGS))
+       @$(call echo,OPENSSL_CONF=$(OPENSSL_CONF))
+       @$(call echo,OPENSSL_INCLUDE_DIR=$(OPENSSL_INCLUDE_DIR))
+       @$(call echo,OPENSSL_LIB_DIR=$(OPENSSL_LIB_DIR))
+       @$(call echo,OPENSSL_BIN_DIR=$(OPENSSL_BIN_DIR))