inwudriver-weibo/build/scripts/Makefile

121 lines
2.5 KiB
Makefile

ifeq ($(PRODUCT_CFG_BUILD_RELEASE), yes)
MAIN_OUT_DIR_NAME = $(project_name)_release
else
MAIN_OUT_DIR_NAME = $(project_name)_debug
endif
MAIN_BUILD_TMP_OUT := $(RELATIVE_DIR)/build_tmp/$(MAIN_OUT_DIR_NAME)
MAIN_BUILD_OUTPUT := $(RELATIVE_DIR)/output/$(MAIN_OUT_DIR_NAME)
TARGET := $(MAIN_BUILD_TMP_OUT)/$(DEV_NAME)/bin
empty :=
comma :=/
app_dir := $(subst $(comma), $(empty), $(MOD_PATH))
ifeq ($(word 1,$(app_dir)),app)
LIBS := $(MAIN_BUILD_TMP_OUT)/$(DEV_NAME)/lib/app
CFLAGS += -DSOC_$(APP_NAME)_CONFIG
else
LIBS := $(MAIN_BUILD_TMP_OUT)/$(DEV_NAME)/lib
endif
BUILD := $(MAIN_BUILD_TMP_OUT)/$(DEV_NAME)/build
LIBOUT = $(BUILD)/$(MOD_PATH)
MOD_INCLUDE := $(addprefix -I $(RELATIVE_DIR),$(shell cat Makefile.inc))
MOD_INCLUDE += $(addprefix -I $(RELATIVE_DIR),$(shell cat $(RELATIVE_DIR)/Makefile.inc))
ifeq ($(IS_DYN),yes)
LIB = $(LIBS)/$(LIB_NAME)
LIB_COMPARE_NAME = $(LIB)
else
LIB_PERMANENT = $(LIBS)/$(LIB_NAME)
LIB_COMPARE_NAME = $(LIB_PERMANENT)
endif
ifeq ($(DEV_NAME),cco)
CFLAGS += -DHB_IMAGE_CCO
endif
ifeq ($(DEV_NAME),sta)
CFLAGS += -DHB_IMAGE_STA
endif
ifeq ($(DEV_NAME),ndm)
CFLAGS += -DHB_IMAGE_NDM
endif
SRC_DIRS := $(MOD_NAME)
ifeq ($(MOD_NAME)/Makefile.src, $(wildcard $(MOD_NAME)/Makefile.src))
SRC_DIRS += $(shell cat $(MOD_NAME)/Makefile.src)
endif
SRCS := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c))
OBJS = $(patsubst %.c,$(LIBOUT)/%.o,$(SRCS))
ASM_SRCS := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.S ))
ASM_OBJS = $(patsubst %.S,$(LIBOUT)/%.o,$(ASM_SRCS))
all: $(LIB) $(LIB_PERMANENT)
$(OBJS): $(LIBOUT)/%.o : %.c
$(Q)echo Compile $<;
$(Q)if [ ! -d $(dir $@) ]; \
then \
mkdir -p $(dir $@);\
fi;
$(Q)if [ -f $< ]; \
then \
$(CC) $(CFLAGS) $(MOD_INCLUDE) -c $< -o $@ ; \
if [ "$$?" != "0" ]; then \
exit 1;\
fi;\
fi;
$(ASM_OBJS): $(LIBOUT)/%.o : %.S
$(Q)echo Compile $<;
$(Q)if [ ! -d $(dir $@) ]; \
then \
mkdir -p $(dir $@);\
fi;
$(Q)if [ -f $< ]; \
then \
$(CC) $(ASFLAGS) -c $< -o $@ ; \
if [ "$$?" != "0" ]; then \
exit 1;\
fi;\
fi;
$(LIB_PERMANENT): $(OBJS) $(ASM_OBJS)
$(Q)if [ ! -d $(dir $@) ]; \
then \
mkdir -p $(dir $@);\
fi;
$(Q)$(LD) -r -o $@ $(sort $^)
$(LIB): $(OBJS) $(ASM_OBJS)
$(Q)if [ ! -d $(dir $@) ]; \
then \
mkdir -p $(dir $@);\
fi;
$(Q)$(AR) $(ARFLAGS) $@ $(sort $^)
clean:
$(Q)$(RM) $(OBJS) $(LIB) $(LIB_PERMANENT) $(LIBOUT) *.bak *~
clean_target_lib:
$(Q)$(RM) $(LIB) *.bak *~
check:
$(Q)if [ -f $(LIB_COMPARE_NAME) ] ; \
then \
exit 0; \
else \
exit 1;\
fi
.PHONY: all clean check clean_target_lib