blob: a810ab345669ba5a2c49c85c37f156d72a006ae3 [file] [log] [blame]
# /*****************************************************************************
#* °æÈ¨ËùÓÐ (C)2015, ÖÐÐËͨѶ¹É·ÝÓÐÏÞ¹«Ë¾¡£
#*
#* ÎļþÃû³Æ: target_rules.mk
#* Îļþ±êʶ: target_rules.mk
#* ÄÚÈÝÕªÒª: Ä¿±êÎļþ¹æÔò
#* ʹÓ÷½·¨: include target_rules.mk
#*
#* ÐÞ¸ÄÈÕÆÚ °æ±¾ºÅ Ð޸ıê¼Ç ÐÞ¸ÄÈË ÐÞ¸ÄÄÚÈÝ
#* -----------------------------------------------------------------------------
#* 2015/05/20 V1.0 ÕûºÏ ÁõÑÇÄÏ ÕûºÏ
#*
# ******************************************************************************/
#===============================================================================
# ¶ÔÏóÎļþ¹æÔò
#===============================================================================
_ALL_OBJECTS = $(addprefix $(_SUBSYS_OBJ_PATH)/, \
$(subst .c,.o, $(notdir $(_ALL_SOURCE))))
ifeq ($(COMPILER),gcc_arm_tos.mk)
_ALL_OBJECTS += $(addprefix $(_SUBSYS_OBJ_PATH)/, \
$(subst .S,.o,$(notdir $(_ALL_S_SOURCE))))
vpath %S $(_VPATH_S)
endif
ifeq ($(COMPILER),gcc_arm_linux.mk)
_ALL_OBJECTS += $(addprefix $(_SUBSYS_OBJ_PATH)/, \
$(subst .S,.o,$(notdir $(_ALL_S_SOURCE))))
vpath %S $(_VPATH_S)
endif
ifeq ($(COMPILER),rvct.mk)
_ALL_OBJECTS += $(addprefix $(_SUBSYS_OBJ_PATH)/, \
$(subst .s,.o,$(notdir $(_ALL_s_SOURCE))))
vpath %s $(_VPATH_S)
endif
vpath %c $(_VPATH_C)
vpath %h $(_VPATH_H)
#===============================================================================
#PC-LINT rules
#===============================================================================
_ALL_LINT_FILES =
ifeq ($(LINTCHK),yes)
_ALL_LINT_FILES = $(addprefix $(_SUBSYS_OBJ_PATH)/lnt/, \
$(subst .c,.lnt, $(notdir $(_ALL_SOURCE))))
endif
#_ALL_LINT_PATH = $(subst -I, -i, $(INCLUDE) $(STDINCLUDE) $(addprefix -i, $(_VPATH_H)))
#_ALL_LINT_PATH = $(subst /,\, $(addsuffix ", $(foreach item, $(INCLUDE) $(STDINCLUDE), $(subst -I,-i", $(item)))))
#===============================================================================
#¿âÎļþ¹æÔò
#===============================================================================
.PHONY: lib clean
lib: libenv $(_SUBSYS_LIB_PATH)/$(_SUBSYS_NAME).a
$(_SUBSYS_LIB_PATH)/$(_SUBSYS_NAME).a:$(_ALL_OBJECTS) $(_ALL_LINT_FILES)
@$(ECHO) ""
@-$(MKDIR) $(_SUBSYS_LIB_PATH)
$(VERB)$(LD) $(LDFLAGS) -o $@ $(_ALL_OBJECTS)
@$(ECHO) "=================================================================="
@$(ECHO) "--- make lib $@ done."
@$(ECHO) "=================================================================="
@$(ECHO) ""
clean:
@-$(RM) $(_SUBSYS_OUTPUT_LIB)
@$(ECHO) "--- clean lib file $(_SUBSYS_OUTPUT_LIB) done."
@-$(RM) $(_SUBSYS_OBJ_PATH)/lnt/*
@-$(RMDIR) $(_SUBSYS_OBJ_PATH)/lnt
@-$(RM) $(_SUBSYS_OBJ_PATH)/*
@-$(RMDIR) $(_SUBSYS_OBJ_PATH)
@$(ECHO) "--- clean obj file $(_SUBSYS_OBJ_PATH)/* done."
@$(ECHO) ""
#===============================================================================
# ¶ÔÏóÎļþÉú³É¹æÔò
#===============================================================================
$(_SUBSYS_OBJ_PATH)/%.o:%.c
@$(ECHO) Compile $<
@-$(MKDIR) $(_SUBSYS_OBJ_PATH)
$(VERB)$(CC) $(CCFLAGS) $(CPU_PUB_DEFINE) $(DEFINE) $(INCLUDE) $(STDINCLUDE) -c $< -o $@
@$(ECHO) Done!
$(_SUBSYS_OBJ_PATH)/%.o:%.s
@$(ECHO) Compile $<
@-$(MKDIR) $(_SUBSYS_OBJ_PATH)
@$(ASM) $(ASFLAGS) -o $@ $(INCLUDE) $<
@$(ECHO) Done!
$(_SUBSYS_OBJ_PATH)/%.o:%.S
@$(ECHO) Compile $<
@-$(MKDIR) $(_SUBSYS_OBJ_PATH)
@$(CC) $(CCFLAGS) $(ASFLAGS) -o $@ $(INCLUDE) $<
@$(ECHO) Done!
#===============================================================================
# lntÎļþÉú³É¹æÔò
#===============================================================================
$(_SUBSYS_OBJ_PATH)/lnt/%.lnt:%.c
@$(ECHO) lint $<
@-$(MKDIR) $(_SUBSYS_OBJ_PATH)/lnt
@$(PCLINT) -u -b +fdi $(CPU_PUB_DEFINE) $(DEFINE) $(LINTOPTION) $(INCLUDE) $(STDINCLUDE) $< > $@
@$(ECHO) Done!