
A_INC_PARAM       = $(addprefix -I, $(subst Build/VS/../../,, $(C_INCLUDES)))
C_INC_PARAM       = $(addprefix -I, $(subst Build/VS/../../,, $(C_INCLUDES)))

A_DEF_PARAM       = $(addprefix -D, $(C_DEFINES))
C_DEF_PARAM       = $(addprefix -D, $(C_DEFINES))

DEPFLAGS          = -MMD                                       \
                    -MF                                        \
                    $(PATH_TMP_NAME_OBJ)/$(basename $(@F)).d

# BUILD RULES
RULE_SHOW_COMPILER_VERSION_CMD        = $(CC) -v
RULE_SHOW_COMPILATION_ERRORS_CMD      = $(SED) --text "s|:\([0-9]*\):|(\1) :|" $(PATH_TMP_NAME_ERR)/$(basename $(@F)).err

RULE_COMPILE_C_TO_ASM_CMD             =
RULE_COMPILE_C_TO_PRE_CMD             =
RULE_COMPILE_CPP_TO_PRE_CMD           =

RULE_COMPILE_C_TO_OBJ_CMD             = $(CC) $(CFLAGS_DEFAULT) $(C_DEF_PARAM) @$(INCLUDE_PATHS_FILE) -c $< -o $@ $(DEPFLAGS) 2> $(PATH_TMP_NAME_ERR)/$(basename $(@F)).err
RULE_COMPILE_C_TO_OBJ_CMD_VARIANT_1   = $(CC) $(CFLAGS_NOWARN)  $(C_DEF_PARAM) @$(INCLUDE_PATHS_FILE) -c $< -o $@ $(DEPFLAGS) 2> $(PATH_TMP_NAME_ERR)/$(basename $(@F)).err
RULE_COMPILE_C_TO_OBJ_CMD_VARIANT_2   = $(CC) $(CFLAGS_DEBUG)   $(C_DEF_PARAM) @$(INCLUDE_PATHS_FILE) -c $< -o $@ $(DEPFLAGS) 2> $(PATH_TMP_NAME_ERR)/$(basename $(@F)).err
RULE_COMPILE_C_TO_OBJ_CMD_VARIANT_3   = $(CC) $(CFLAGS_NOWARN)  $(C_DEF_PARAM) @$(INCLUDE_PATHS_FILE) -c $< -o $@ $(DEPFLAGS) 2> $(PATH_TMP_NAME_ERR)/$(basename $(@F)).err
ifeq ($(TYP_COVER),CTC)
RULE_COMPILE_C_TO_OBJ_CMD_VARIANT_4   = $(CTC) $(CTCFLAGS) $(CTC_NO_EXCLUDE_C) \
                                        $(CC) $(CFLAGS_DEBUG) $(C_DEF_PARAM) @$(INCLUDE_PATHS_FILE) -c $< -o $@ $(DEPFLAGS) 2> $(PATH_TMP_NAME_ERR)/$(basename $(@F)).err
endif
ifeq ($(TYP_COVER),GCOV)
RULE_COMPILE_C_TO_OBJ_CMD_VARIANT_4   = $(CC) $(CFLAGS_DEBUG) $(CFLAGS_COVER) $(C_DEF_PARAM) @$(INCLUDE_PATHS_FILE) -c $< -o $@ $(DEPFLAGS) 2> $(PATH_TMP_NAME_ERR)/$(basename $(@F)).err
endif

RULE_COMPILE_CPP_TO_OBJ_CMD           = $(CC) $(CPPFLAGS)        $(C_DEF_PARAM) @$(INCLUDE_PATHS_FILE) -c $< -o $@ $(DEPFLAGS) 2> $(PATH_TMP_NAME_ERR)/$(basename $(@F)).err
RULE_COMPILE_CPP_TO_OBJ_CMD_VARIANT_1 = $(CC) $(CPPFLAGS)        $(C_DEF_PARAM) @$(INCLUDE_PATHS_FILE) -c $< -o $@ $(DEPFLAGS) 2> $(PATH_TMP_NAME_ERR)/$(basename $(@F)).err
RULE_COMPILE_CPP_TO_OBJ_CMD_VARIANT_2 = $(CC) $(CPPFLAGS_DEBUG)  $(C_DEF_PARAM) @$(INCLUDE_PATHS_FILE) -c $< -o $@ $(DEPFLAGS) 2> $(PATH_TMP_NAME_ERR)/$(basename $(@F)).err
RULE_COMPILE_CPP_TO_OBJ_CMD_VARIANT_3 = $(CC) $(CPPFLAGS_NOWARN) $(C_DEF_PARAM) @$(INCLUDE_PATHS_FILE) -c $< -o $@ $(DEPFLAGS) 2> $(PATH_TMP_NAME_ERR)/$(basename $(@F)).err
ifeq ($(TYP_COVER),CTC)
RULE_COMPILE_CPP_TO_OBJ_CMD_VARIANT_4 = $(CTC) $(CTCFLAGS) $(CTC_NO_EXCLUDE_CPP) \
                                        $(CC) $(CPPFLAGS_DEBUG)  $(C_DEF_PARAM) @$(INCLUDE_PATHS_FILE) -c $< -o $@ $(DEPFLAGS) 2> $(PATH_TMP_NAME_ERR)/$(basename $(@F)).err
endif
ifeq ($(TYP_COVER),GCOV)
RULE_COMPILE_CPP_TO_OBJ_CMD_VARIANT_4 = $(CC) $(CPPFLAGS_DEBUG)  $(CFLAGS_COVER) $(C_DEF_PARAM) @$(INCLUDE_PATHS_FILE) -c $< -o $@ $(DEPFLAGS) 2> $(PATH_TMP_NAME_ERR)/$(basename $(@F)).err
endif

RULE_ASSEMBLE_ASM_TO_OBJ_CMD          = $(AS) $(AFLAGS)          $(C_DEF_PARAM) @$(INCLUDE_PATHS_FILE) -o $@ $<
RULE_GENERATE_C_DEPENDENCY_FILE       =
RULE_GENERATE_CPP_DEPENDENCY_FILE     =
RULE_MOVE_PREPRO_FILE                 =
RULE_MOVE_LIST_FILE                   = if exist $(basename $(@F)).lst @$(MV) $(basename $(@F)).lst  $(subst /,\,$(PATH_TMP_NAME_LST)/$(basename $(@F)).lst)

$(PATH_TMP_NAME_OBJ)/%.$(SUFFIX_OBJ) : %.DBcF
	@$(GNUECHO) +++ store DBcF path into a c file: $<
	@$(GNUECHO) const char dbcFilePath[] = \"$(subst /,$(BACKSLASH)$(BACKSLASH),$<)\"; > $(subst /,\,$(PATH_TMP_NAME_OBJ)/$(basename $(@F)))_fpath.c
	@-$(CC) $(CFLAGS_DEFAULT) -c $(subst /,\,$(PATH_TMP_NAME_OBJ)/$(basename $(@F)))_fpath.c -o $@
