# $(1) - C/C++ soruce file
# $(2) - output path
# $(3) - .ext
-CONVERT_ESC_EXT_TO_O = $(addprefix $(2)/,$(call CONVERT_4MAKE_TO_OUT,$(patsubst %.$(3),%.o,$(1))))
+# $(4) - unique id
+CONVERT_ESC_EXT_TO_O = $(addprefix $(2)/,$(notdir $(patsubst %.$(3),%-$(4).o,$(1))))
-CONVERT_ESC_C_TO_O = $(call CONVERT_ESC_EXT_TO_O,$(1),$(2),c)
-CONVERT_ESC_CPP_TO_O = $(call CONVERT_ESC_EXT_TO_O,$(1),$(2),cpp)
+#CONVERT_ESC_C_TO_O = $(call CONVERT_ESC_EXT_TO_O,$(1),$(2),c)
+#CONVERT_ESC_CPP_TO_O = $(call CONVERT_ESC_EXT_TO_O,$(1),$(2),cpp)
# parameter :
# output :
# $(8) - output files list
define C_BUILD_PROC_RAW
-$(call CONVERT_ESC_EXT_TO_O,$(1),$(2),$(4)) : $(call DECODE_4MAKE,$(1)) $(7)
+$(call CONVERT_ESC_EXT_TO_O,$(1),$(2),$(4),$(8)) : $(call DECODE_4MAKE,$(1)) $(7)
@echo ' Building file: $$<'
@echo ' Invoking: $(3) Compiler'
$$(call MAKEDIRS,$$(@D))
$(5) -c "$$<" -o "$$@" $(6) -Wp,@$(7)
@echo ' Finished building: $$<'
-$(8) += $(call CONVERT_ESC_EXT_TO_O,$(1),$(2),$(4))
+$(9) += $(call CONVERT_ESC_EXT_TO_O,$(1),$(2),$(4),$(8))
endef
# $(10) - ext (c/cpp)
# $(11) - compiler ($(CC)/$(CXX))
# output :
-# $(12) - OBJS
+# $(12) - OBJS
# return :
# none
define C_PROC_RAW
_OUTPUT_DIR := $$(strip $(1))#
-_SRCS := $(2)#
-_INCS := $(3)#
-_INC_FILES := $(4)#
-_DEFS := $(5)#
-_UNDEFS := $(6)#
+_SRCS := $(2)#
+_INCS := $(3)#
+_INC_FILES := $(4)#
+_DEFS := $(5)#
+_UNDEFS := $(6)#
_OPT := $(7)
_OPT_FILE := $(8)
#_OUTPUT_FILES := $(12)
-_ENC_SRCS := $$(call ENCODE_4MAKE,$$(_SRCS))
+_ENC_SRCS := $$(call ENCODE_4MAKE,$$(_SRCS))
_ENC_SRCS := $$(filter %.$$(_EXT),$$(_ENC_SRCS))
ifneq ($$(strip $$(_SRCS)),)
ifneq ($$(strip $$(_ALL_SRCS)),)
-_ENC_SRCS := $$(call ENCODE_4MAKE,$$(_ALL_SRCS))
+_ENC_SRCS := $$(call ENCODE_4MAKE,$$(_ALL_SRCS))
_CDEFS := $$(CDEFS)
_CDEFS += $$(addprefix -D,$$(_DEFS))
_ENC_C_INCS := $$(call ENCODE_4MAKE,$$(_INCS))
_ENC_C_INCS := $$(addprefix -I,$$(_ENC_C_INCS))
-
-_ENC_INC_FILES := $$(call ENCODE_4MAKE,$$(_INC_FILES))
+
+_ENC_INC_FILES := $$(call ENCODE_4MAKE,$$(_INC_FILES))
_ENC_INC_FILES += $$(addprefix -include,$$(_ENC_INC_FILES))
_C_INCS := $$(call DECODE_4MAKE,$$(_ENC_C_INCS) $$(_ENC_C_INC_FILES))
_DEFS := $$(_CDEFS) $$(_C_INCS) -I"pch" $$(_OPT)
-$$(foreach var,$$(_ENC_SRCS),$$(eval $$(call C_BUILD_PROC_RAW,$$(var),$$(_OUTPUT_DIR),$$(_EXT_TITLE),$$(_EXT),$$(_COMPILER),$$(_DEFS),$$(_OPT_FILE),$(12))))
+_UNIQUE_ID = $$(firstword $$(shell echo $$(var) | $$(CKSUM)))
+
+$$(foreach var,$$(_ENC_SRCS),$$(eval $$(call C_BUILD_PROC_RAW,$$(var),$$(_OUTPUT_DIR),$$(_EXT_TITLE),$$(_EXT),$$(_COMPILER),$$(_DEFS),$$(_OPT_FILE),$$(_UNIQUE_ID),$(12))))
endif # (_(strip _(_ALL_SRCS)),)