121 lines
2.5 KiB
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
|
||
|
|
|
||
|
|
|