
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)
RULE_SHOW_COMPILATION_ERRORS_CMD       = $(AL_VC__ERR_FILTER) $(subst /,\,$(PATH_TMP_NAME_ERR)/$(notdir $(basename $<))).err $(subst /,\,$(AL_STD_OUT_FILTER))

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) @$(INCLUDE_PATHS_FILE) $(C_DEF_PARAM) /Fo$@ /Fd$(subst /,\,$(FILE_BIN_NAME).$(SUFFIX_PDB)) /FS /c $< 1> $(subst /,\,$(PATH_TMP_NAME_ERR)/$(basename $(@F)).err)
RULE_COMPILE_C_TO_OBJ_CMD_VARIANT_1    =   $(CC) $(CFLAGS_NOWARN)  @$(INCLUDE_PATHS_FILE) $(C_DEF_PARAM) /Fo$@ /Fd$(subst /,\,$(FILE_BIN_NAME).$(SUFFIX_PDB)) /FS /c $< 1> $(subst /,\,$(PATH_TMP_NAME_ERR)/$(basename $(@F)).err)
RULE_COMPILE_C_TO_OBJ_CMD_VARIANT_2    =   $(CC) $(CFLAGS_DEBUG)   @$(INCLUDE_PATHS_FILE) $(C_DEF_PARAM) /Fo$@ /Fd$(subst /,\,$(FILE_BIN_NAME).$(SUFFIX_PDB)) /FS /c $< 1> $(subst /,\,$(PATH_TMP_NAME_ERR)/$(basename $(@F)).err)
RULE_COMPILE_C_TO_OBJ_CMD_VARIANT_3    =   $(CC) $(CFLAGS_NOWARN)  @$(INCLUDE_PATHS_FILE) $(C_DEF_PARAM) /Fo$@ /Fd$(subst /,\,$(FILE_BIN_NAME).$(SUFFIX_PDB)) /FS /c $< 1> $(subst /,\,$(PATH_TMP_NAME_ERR)/$(basename $(@F)).err)
RULE_COMPILE_C_TO_OBJ_CMD_VARIANT_4    = $(CTC) $(CTCFLAGS) $(CTC_NO_EXCLUDE_C) \
                                           $(CC) $(CFLAGS_DEBUG) @$(INCLUDE_PATHS_FILE) $(C_DEF_PARAM) /Fo$@ /Fd$(subst /,\,$(FILE_BIN_NAME).$(SUFFIX_PDB)) /FS /c $< 1> $(subst /,\,$(PATH_TMP_NAME_ERR)/$(basename $(@F)).err)

RULE_COMPILE_CPP_TO_OBJ_CMD            =   $(CC) $(CPPFLAGS)       @$(INCLUDE_PATHS_FILE) $(C_DEF_PARAM) /Fo$@ /Fd$(subst /,\,$(FILE_BIN_NAME).$(SUFFIX_PDB)) /FS /c $< 1> $(subst /,\,$(PATH_TMP_NAME_ERR)/$(basename $(@F)).err)
RULE_COMPILE_CPP_TO_OBJ_CMD_VARIANT_1  =   $(CC) $(CPPFLAGS)       @$(INCLUDE_PATHS_FILE) $(C_DEF_PARAM) /Fo$@ /Fd$(subst /,\,$(FILE_BIN_NAME).$(SUFFIX_PDB)) /FS /c $< 1> $(subst /,\,$(PATH_TMP_NAME_ERR)/$(basename $(@F)).err)
RULE_COMPILE_CPP_TO_OBJ_CMD_VARIANT_2  =   $(CC) $(CPPFLAGS)       @$(INCLUDE_PATHS_FILE) $(C_DEF_PARAM) /Fo$@ /Fd$(subst /,\,$(FILE_BIN_NAME).$(SUFFIX_PDB)) /FS /c $< 1> $(subst /,\,$(PATH_TMP_NAME_ERR)/$(basename $(@F)).err)
RULE_COMPILE_CPP_TO_OBJ_CMD_VARIANT_3  =   $(CC) $(CPPFLAGS)       @$(INCLUDE_PATHS_FILE) $(C_DEF_PARAM) /Fo$@ /Fd$(subst /,\,$(FILE_BIN_NAME).$(SUFFIX_PDB)) /FS /c $< 1> $(subst /,\,$(PATH_TMP_NAME_ERR)/$(basename $(@F)).err)
RULE_COMPILE_CPP_TO_OBJ_CMD_VARIANT_4  = $(CTC) $(CTCFLAGS) $(CTC_NO_EXCLUDE_CPP) \
                                           $(CC) $(CPPFLAGS)       @$(INCLUDE_PATHS_FILE) $(C_DEF_PARAM) /Fo$@ /Fd$(subst /,\,$(FILE_BIN_NAME).$(SUFFIX_PDB)) /FS /c $< 1> $(subst /,\,$(PATH_TMP_NAME_ERR)/$(basename $(@F)).err)

RULE_ASSEMBLE_ASM_TO_OBJ_CMD           =
RULE_GENERATE_C_DEPENDENCY_FILE        =
RULE_GENERATE_CPP_DEPENDENCY_FILE      =
RULE_MOVE_LIST_FILE                    =

$(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) /Fo$@ /Fd$(subst /,\,$(FILE_BIN_NAME).$(SUFFIX_PDB)) /FS /c $(subst /,\,$(PATH_TMP_NAME_OBJ)/$(basename $(@F)))_fpath.c 1> $(subst /,\,$(PATH_TMP_NAME_ERR)/$(basename $(@F)).err)
