Makefile 在实际项目中(chiplevel CPM)的应用 build-lib

本文介绍了一个针对8051单片机的运行时支持库的makefile脚本,该脚本由Michael Kang发布,详细说明了如何构建库文件,包括源代码目录设置、编译器配置、目标文件生成等关键步骤。
# 
# 8051 Example System run-time support library make script
# Issued by Michael Kang
#
INFO = \#\#\#(info) make lib.mk 
ERROR = \#\#\#(error) make lib.mk

## directories
RTE_DIR  = ../rte/mcu
LIB_DIR = ${RTE_DIR}/lib
INC_DIR = ${RTE_DIR}/inc
SRC_DIR = ${RTE_DIR}/src

## Compilor Global Variable 
CC = sdcc
AR = sdcclib

CCFLAGS = --model-small -c -I ${INC_DIR}

vpath %.c ${SRC_DIR}

OBJ := $(patsubst %.c, %.rel, $(wildcard ${SRC_DIR}/*.c))
OBJ := $(addprefix ${LIB_DIR}/, $(notdir ${OBJ}))

HEADERS := $(wildcard ${INC_DIR}/*.h)

.PHONY: all checkdir clean
all: checkdir ${LIB_DIR}/bell.lib

checkdir:
	@if [ ! -d $(SRC_DIR) ]; then \
	   echo "${ERROR}: No library source directory $(SRC_DIR) found - exiting" ; \
	   exit 1; \
	fi;
	@if [ ! -d $(LIB_DIR) ]; then \
		echo "${INFO}: Creating $(LIB_DIR)"; \
	    mkdir -p $(LIB_DIR);\
	fi;

${LIB_DIR}/%.rel: ${SRC_DIR}/%.c ${HEADERS}
	$(CC) $(CCFLAGS) -o $@ {1}lt;


${LIB_DIR}/bell.lib: $(OBJ)
	$(AR) -ar $@ $?

clean:
	-rm -rf ${LIB_DIR}

debug:
	echo ${OBJ}


 

TARGET := mpp FW_SRC := mpp_proc.c FW_SRC += vb_proc.c log_proc.c sys_proc.c mpp_proc_common.c \ vi_proc.c vpss_proc.c venc_proc.c vdec_proc.c \ ai_proc.c ao_proc.c aenc_proc.c adec_proc.c \ vgs_proc.c cpm_proc.c region_proc.c media_mm_proc.c ifeq ($(ENABLE_MPP_TRACE),1) FW_SRC += trace_proc.c endif ifneq ($(findstring $(TARGET_CHIPSERIES), TX5335AX TX5368AX TX5339AX),) # $(info ----- proc TARGET_CHIPSERIES 52) # ccflags-y += -DCVE_PROC_BUILD # ccflags-y += -DDMA_PROC_BUILD FW_SRC += cve_proc.c FW_SRC += dma_proc.c else ifneq ($(findstring $(TARGET_CHIPSERIES), TX5336EX TX5256EX),) # $(info ------ proc TARGET_CHIPSERIES 53) # ccflags-y += -DAMR_PROC_BUILD # ccflags-y += -DCVE_PROC_BUILD # ccflags-y += -DDMA_PROC_BUILD # ccflags-y += -DBIS_PROC_BUILD ccflags-y += -DDX5336 -DVO_PROC_BUILD -DGDC_PROC_BUILD FW_SRC += cve_proc.c FW_SRC += bis_proc.c FW_SRC += gdc_proc.c FW_SRC += dma_proc.c FW_SRC += vo_proc.c else ifneq ($(findstring $(TARGET_CHIPSERIES), TX5215BX ),) # ccflags-y += -DAMR_PROC_BUILD # ccflags-y += -DCVE_PROC_BUILD # ccflags-y += -DDMA_PROC_BUILD # ccflags-y += -DDMA_PROC_BUILD ccflags-y += -DDX5215 -DVO_PROC_BUILD FW_SRC += cve_proc.c FW_SRC += dma_proc.c FW_SRC += vo_proc.c else ifneq ($(findstring $(TARGET_CHIPSERIES), TX5239BX TX5239CX),) # $(info ------ proc TARGET_CHIPSERIES 56) # ccflags-y += -DAMR_PROC_BUILD # ccflags-y += -DCVE_PROC_BUILD # ccflags-y += -DDMA_PROC_BUILD ccflags-y += -DTX5239 FW_SRC += cve_proc.c FW_SRC += dma_proc.c else ifneq ($(findstring $(TARGET_CHIPSERIES), TX5112DX),) # $(info ------ proc TARGET_CHIPSERIES 57) # ccflags-y += -DAMR_PROC_BUILD # ccflags-y += -DDMA_PROC_BUILD ccflags-y += -DDX5112 FW_SRC += cve_proc.c FW_SRC += dma_proc.c else ifneq ($(findstring $(TARGET_CHIPSERIES), TX5239DX),) # $(info ------ proc TARGET_CHIPSERIES 57) # ccflags-y += -DAMR_PROC_BUILD # ccflags-y += -DDMA_PROC_BUILD ccflags-y += -DTX5239 FW_SRC += cve_proc.c FW_SRC += dma_proc.c else ifneq ($(findstring $(TARGET_CHIPSERIES), TX5110FPGA TX5110FX),) # $(info ------ proc TARGET_CHIPSERIES 57B) # ccflags-y += -DAMR_PROC_BUILD # ccflags-y += -DDMA_PROC_BUILD ccflags-y += -DDX5110 FW_SRC += cve_proc.c FW_SRC += dma_proc.c endif FW_SRC_OBJ := $(FW_SRC:.c=.o) obj-m := $(TARGET).o $(TARGET)-y += $(FW_SRC_OBJ) ccflags-y += -fdebug-prefix-map=$(CURDIR)=. PWD := $(shell pwd) ccflags-y += -I$(PWD)/../libs/mpp/common/mpp_sys/inc \ -I$(PWD)/../libs/mpp/common/include/ \ -I$(PWD)/../libs/mpp/include/ \ -I$(PWD)/../libs/drv/audio/codec/ts_codec/ ccflags-y += -DUSE_MPP_HEADER -Wno-error=unused-variable ifeq ($(ENABLE_MPP_TRACE),1) ccflags-y += -DENABLE_MPP_TRACE endif modules: @echo "TARGET_CHIPSERIES:$(TARGET_CHIPSERIES)" @echo "ENABLE_MPP_TRACE:$(ENABLE_MPP_TRACE)" $(MAKE) -C $(TARGET_KERNEL_DIR) M=$(PWD) modules clear: @rm -f *.o *.cmd *.mod.c @rm -rf *~ core .depend .tmp_versions Module.symvers modules.order -f @rm -f .*ko.cmd .*.o.cmd .*.o.d @rm -f *.unsigned clean: @rm -f $(TARGET).ko @make -C $(TARGET_KERNEL_DIR) M=$(PWD) clean 同一套代码,该模块编译的ko在不同路径下为啥会不一样,以上是makefile脚本,
最新发布
08-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值