ide/settings: Fixed sync warning
[sdk] / Makefile
index 10efdd2..3ac08c4 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -3,6 +3,8 @@ ifneq ($(V),1)
 .SILENT:
 endif
 
+_CF_DIR =
+
 include crossplatform.mk
 include default.cf
 
@@ -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
@@ -171,28 +173,28 @@ 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
+       +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 +203,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 +259,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 +289,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)
        @$(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 +347,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))
+       $(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)
+       $(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))
+       $(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
+       +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 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
-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
+       +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 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
-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
+       +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) realclean
+       +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,7 +488,7 @@ 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)
 
@@ -521,30 +511,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))
+       $(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 cpq,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO),$(OBJBINDIR))
+       $(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))
+       $(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 cpq,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SOV),$(OBJLIBDIR))
+       $(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
@@ -571,31 +561,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))
+       $(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 cpq,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO),$(OBJLIBDIR))
+       $(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 +596,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)/")
+       $(call cp,$(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)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
@@ -649,7 +639,7 @@ endif
 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 +652,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
@@ -721,7 +713,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 +727,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 +767,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)")
+       $(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)")
+       $(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)")
+       $(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 +844,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 +890,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 +922,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))