xref: /utopia/UTPA2-700.0.x/mxlib/drv_rule.mk (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi
2*53ee8cc1Swenshuai.xi################################################################################
3*53ee8cc1Swenshuai.xi#
4*53ee8cc1Swenshuai.xi# Copyright (c) 2008-2009 MStar Semiconductor, Inc.
5*53ee8cc1Swenshuai.xi# All rights reserved.
6*53ee8cc1Swenshuai.xi#
7*53ee8cc1Swenshuai.xi# Unless otherwise stipulated in writing, any and all information contained
8*53ee8cc1Swenshuai.xi# herein regardless in any format shall remain the sole proprietary of
9*53ee8cc1Swenshuai.xi# MStar Semiconductor Inc. and be kept in strict confidence
10*53ee8cc1Swenshuai.xi# ("MStar Confidential Information") by the recipient.
11*53ee8cc1Swenshuai.xi# Any unauthorized act including without limitation unauthorized disclosure,
12*53ee8cc1Swenshuai.xi# copying, use, reproduction, sale, distribution, modification, disassembling,
13*53ee8cc1Swenshuai.xi# reverse engineering and compiling of the contents of MStar Confidential
14*53ee8cc1Swenshuai.xi# Information is unlawful and strictly prohibited. MStar hereby reserves the
15*53ee8cc1Swenshuai.xi# rights to any and all damages, losses, costs and expenses resulting therefrom.
16*53ee8cc1Swenshuai.xi#
17*53ee8cc1Swenshuai.xi#
18*53ee8cc1Swenshuai.xi# Makefile used for building DDI
19*53ee8cc1Swenshuai.xi#
20*53ee8cc1Swenshuai.xi#
21*53ee8cc1Swenshuai.xi################################################################################
22*53ee8cc1Swenshuai.xi
23*53ee8cc1Swenshuai.xiunexport HAL_DIR
24*53ee8cc1Swenshuai.xiunexport DRV_SUB
25*53ee8cc1Swenshuai.xiunexport DRV_NAME
26*53ee8cc1Swenshuai.xiunexport DRV_SRC
27*53ee8cc1Swenshuai.xiunexport DRV_CC_INCS
28*53ee8cc1Swenshuai.xi
29*53ee8cc1Swenshuai.xi
30*53ee8cc1Swenshuai.xi# **********************************************
31*53ee8cc1Swenshuai.xi# DRV Name
32*53ee8cc1Swenshuai.xi# **********************************************
33*53ee8cc1Swenshuai.xi#DRV_NAME = ddd
34*53ee8cc1Swenshuai.xi#DRV_SUB = \
35*53ee8cc1Swenshuai.xi#            sss
36*53ee8cc1Swenshuai.xi
37*53ee8cc1Swenshuai.xi# **********************************************
38*53ee8cc1Swenshuai.xi# HAL Source Files
39*53ee8cc1Swenshuai.xi# **********************************************
40*53ee8cc1Swenshuai.xi#HAL_DIR = \
41*53ee8cc1Swenshuai.xi#            hhh		                                             \
42*53ee8cc1Swenshuai.xi
43*53ee8cc1Swenshuai.xi
44*53ee8cc1Swenshuai.xi# **********************************************
45*53ee8cc1Swenshuai.xi# Rules
46*53ee8cc1Swenshuai.xi# **********************************************
47*53ee8cc1Swenshuai.xi# if API_NAME is defined the driver will be built into API library
48*53ee8cc1Swenshuai.xi# else driver will be built in single driver library
49*53ee8cc1Swenshuai.xiifneq ($(API_NAME), )
50*53ee8cc1Swenshuai.xiLIB_NAME = api$(API_NAME)
51*53ee8cc1Swenshuai.xielse
52*53ee8cc1Swenshuai.xiLIB_NAME = drv$(DRV_NAME)
53*53ee8cc1Swenshuai.xiendif
54*53ee8cc1Swenshuai.xi
55*53ee8cc1Swenshuai.xiDRV_SRC     = $(wildcard $(CURDIR)/*.c)
56*53ee8cc1Swenshuai.xiDRV_SRC    += $(foreach dir, $(DRV_SUB), $(wildcard $(CURDIR)/$(dir)/*.c))
57*53ee8cc1Swenshuai.xiDRV_OBJ     = $(foreach file, $(notdir $(patsubst %.c, %.o, $(DRV_SRC))), $(OBJ_PATH)/$(file))
58*53ee8cc1Swenshuai.xiDRV_IMPORT_SRC = $(foreach dir, $(CURDIR), $(wildcard $(CURDIR)/obj_import/$(OS_TYPE)/$(MCU_TYPE)/*.src))
59*53ee8cc1Swenshuai.xiDRV_IMPORT_OBJ = $(foreach file, $(notdir $(patsubst %.src, %.o, $(DRV_IMPORT_SRC))), $(OBJ_PATH)/$(file))
60*53ee8cc1Swenshuai.xiHAL_SRC     = $(foreach dir, $(HAL_DIR), $(wildcard $(DDIHAL)/$(CHIP)/$(dir)/*.c))
61*53ee8cc1Swenshuai.xiHAL_SRC_S   = $(foreach dir, $(HAL_DIR), $(wildcard $(DDIHAL)/$(CHIP)/$(dir)/*.s))
62*53ee8cc1Swenshuai.xiHAL_OBJ     = $(foreach file, $(notdir $(patsubst %.c, %.o, $(HAL_SRC))), $(OBJ_PATH)/$(file))
63*53ee8cc1Swenshuai.xiHAL_OBJ_S   = $(foreach file, $(notdir $(patsubst %.s, %.o, $(HAL_SRC_S))), $(OBJ_PATH)/$(file))
64*53ee8cc1Swenshuai.xiHAL_IMPORT_SRC = $(foreach dir, $(HAL_DIR), $(wildcard $(DDIHAL)/$(CHIP)/$(dir)/obj_import/$(OS_TYPE)/$(MCU_TYPE)/*.src))
65*53ee8cc1Swenshuai.xiHAL_IMPORT_OBJ = $(foreach file, $(notdir $(patsubst %.src, %.o, $(HAL_IMPORT_SRC))), $(OBJ_PATH)/$(file))
66*53ee8cc1Swenshuai.xiDRV_INCDIR  = $(CURDIR) $(foreach dir,$(DRV_SUB),$(CURDIR)/$(dir)) $(foreach dir,$(HAL_DIR),$(DDIHAL)/$(CHIP)/$(dir))
67*53ee8cc1Swenshuai.xiDRV_CC_INCS = $(foreach dir,$(DRV_INCDIR),-I$(dir) -I$(PUBINC))
68*53ee8cc1Swenshuai.xi
69*53ee8cc1Swenshuai.xiifeq ($(MAKE_TYPE),lint)
70*53ee8cc1Swenshuai.xiifeq ($(shell uname -o),Cygwin)
71*53ee8cc1Swenshuai.xiLINT_INC   += $(foreach dir,$(shell cygpath -m $(DRV_INCDIR)),-i"$(dir)")
72*53ee8cc1Swenshuai.xielse
73*53ee8cc1Swenshuai.xiLINT_INC   += $(foreach dir,$(DRV_INCDIR),-i"$(dir)")
74*53ee8cc1Swenshuai.xiendif
75*53ee8cc1Swenshuai.xiendif
76*53ee8cc1Swenshuai.xi
77*53ee8cc1Swenshuai.xiHAL_OBJ_T = $(HAL_OBJ:.o=.T)
78*53ee8cc1Swenshuai.xiHAL_IMPORT_OBJ_T = $(HAL_IMPORT_OBJ:.o=.T)
79*53ee8cc1Swenshuai.xiDRV_OBJ_T = $(DRV_OBJ:.o=.T)
80*53ee8cc1Swenshuai.xiDRV_IMPORT_OBJ_T = $(DRV_IMPORT_OBJ:.o=.T)
81*53ee8cc1Swenshuai.xi
82*53ee8cc1Swenshuai.xiVPATH = $(DRV_SUB) $(foreach dir, $(HAL_DIR), $(DDIHAL)/$(CHIP)/$(dir))
83*53ee8cc1Swenshuai.xi
84*53ee8cc1Swenshuai.xiifeq ("$(UTOPIA_BSP_VERSION)", "")
85*53ee8cc1Swenshuai.xiUTOPIA_BSP_VERSION = 000000
86*53ee8cc1Swenshuai.xielse
87*53ee8cc1Swenshuai.xiCC_DEFS += -DUTOPIA_BSP_VERSION=$(UTOPIA_BSP_VERSION)
88*53ee8cc1Swenshuai.xiendif
89*53ee8cc1Swenshuai.xi
90*53ee8cc1Swenshuai.xiifeq ("$(P4PORT)", "")
91*53ee8cc1Swenshuai.xiSW_VERSION_HAL_$(DRV_NAME) = 0
92*53ee8cc1Swenshuai.xielse
93*53ee8cc1Swenshuai.xiHAL_SW_DIR = $(shell echo $(HAL_DIR) | sed 's/ vpu//g')
94*53ee8cc1Swenshuai.xiSW_VERSION_HAL_$(DRV_NAME) = $(shell p4 changes -m1 ./../../hal/$(CHIP)/$(HAL_SW_DIR)/...\#have | egrep Change | awk '{print $$2}')
95*53ee8cc1Swenshuai.xiifeq ("$(SW_VERSION_HAL_$(DRV_NAME))", "")
96*53ee8cc1Swenshuai.xiSW_VERSION_HAL_$(DRV_NAME) = 0
97*53ee8cc1Swenshuai.xiendif
98*53ee8cc1Swenshuai.xiendif
99*53ee8cc1Swenshuai.xiCC_DEFS += -DSW_VERSION_HAL_$(DRV_NAME)=$(SW_VERSION_HAL_$(DRV_NAME))
100*53ee8cc1Swenshuai.xi
101*53ee8cc1Swenshuai.xiifeq ("$(P4PORT)", "")
102*53ee8cc1Swenshuai.xiSW_VERSION_DRV_$(DRV_NAME) = 0
103*53ee8cc1Swenshuai.xielse
104*53ee8cc1Swenshuai.xiSW_VERSION_DRV_$(DRV_NAME) = $(shell p4 changes -m1 "./...\#have" | egrep Change | awk '{print $$2}')
105*53ee8cc1Swenshuai.xiifeq ("$(SW_VERSION_DRV_$(DRV_NAME))", "")
106*53ee8cc1Swenshuai.xiSW_VERSION_DRV_$(DRV_NAME) = 0
107*53ee8cc1Swenshuai.xiendif
108*53ee8cc1Swenshuai.xiendif
109*53ee8cc1Swenshuai.xiCC_DEFS += -DSW_VERSION_DRV_$(DRV_NAME)=$(SW_VERSION_DRV_$(DRV_NAME))
110*53ee8cc1Swenshuai.xi
111*53ee8cc1Swenshuai.xiifeq ("$(HAL_DIR)", "demod")
112*53ee8cc1Swenshuai.xiCC_DEFS += -D$(CHIP)
113*53ee8cc1Swenshuai.xiendif
114*53ee8cc1Swenshuai.xi
115*53ee8cc1Swenshuai.xiall : $(HAL_OBJ_T) $(HAL_IMPORT_OBJ_T) $(DRV_OBJ_T) $(DRV_IMPORT_OBJ_T)
116*53ee8cc1Swenshuai.xi
117*53ee8cc1Swenshuai.xi
118*53ee8cc1Swenshuai.xiifneq ($(MAKE_TYPE),lint)
119*53ee8cc1Swenshuai.xiifeq ($(LINK_TYPE),dynamic)
120*53ee8cc1Swenshuai.xiifneq ($(BUILDING_API),1)
121*53ee8cc1Swenshuai.xi    ifeq ($(CONFIG_INCREMENTAL_BUILD),y)
122*53ee8cc1Swenshuai.xi	@$(CC) $(CFG_CC_OPTS) $(LD_LIBS_INC) $(LD_OPTS) $(DRV_OBJ) $(DRV_IMPORT_OBJ) $(HAL_OBJ_S) $(HAL_OBJ) $(HAL_IMPORT_OBJ) $(MLOG_LIB_PATH) -s -o $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT)
123*53ee8cc1Swenshuai.xi    ifeq ($(CONFIG_VERSION_INFO_EMBADE), y)
124*53ee8cc1Swenshuai.xi	@sh $(VERSION)/versionembadder.sh $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT) $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT).temp ./version_info
125*53ee8cc1Swenshuai.xi	@rm -f $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT)
126*53ee8cc1Swenshuai.xi	@mv -f $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT).temp $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT)
127*53ee8cc1Swenshuai.xi    endif
128*53ee8cc1Swenshuai.xi    else
129*53ee8cc1Swenshuai.xi	@$(CC) $(CFG_CC_OPTS) $(LD_OPTS) $(DRV_OBJ) $(DRV_IMPORT_OBJ) $(HAL_OBJ_S) $(HAL_OBJ) $(HAL_IMPORT_OBJ) $(MLOG_LIB_PATH) -o $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT)
130*53ee8cc1Swenshuai.xi	@$(OBJCOPY) --add-section .mmodule_version=./version_info $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT)
131*53ee8cc1Swenshuai.xi    ifeq ($(CONFIG_VERSION_INFO_EMBADE), y)
132*53ee8cc1Swenshuai.xi	@sh $(VERSION)/versionembadder.sh $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT) $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT).temp ./version_info
133*53ee8cc1Swenshuai.xi	@rm -f $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT)
134*53ee8cc1Swenshuai.xi	@mv -f $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT).temp $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT)
135*53ee8cc1Swenshuai.xi    endif
136*53ee8cc1Swenshuai.xi    endif
137*53ee8cc1Swenshuai.xiendif
138*53ee8cc1Swenshuai.xielse
139*53ee8cc1Swenshuai.xi	@$(AR) cru $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT) $(DRV_OBJ) $(DRV_IMPORT_OBJ) $(HAL_OBJ) $(HAL_IMPORT_OBJ)
140*53ee8cc1Swenshuai.xi    ifeq ($(CONFIG_VERSION_INFO_EMBADE), y)
141*53ee8cc1Swenshuai.xi	@sh $(VERSION)/versionembadder.sh $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT) $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT).temp ./version_info
142*53ee8cc1Swenshuai.xi	@rm -f $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT)
143*53ee8cc1Swenshuai.xi	@mv -f $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT).temp $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT)
144*53ee8cc1Swenshuai.xi    endif
145*53ee8cc1Swenshuai.xiifeq ($(BLT_TYPE),retail)
146*53ee8cc1Swenshuai.xi	@$(STRIP) -S $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT)
147*53ee8cc1Swenshuai.xiendif
148*53ee8cc1Swenshuai.xiendif
149*53ee8cc1Swenshuai.xiendif
150*53ee8cc1Swenshuai.xi
151*53ee8cc1Swenshuai.xiifeq ($(PARA), 1)
152*53ee8cc1Swenshuai.xi	@if [ -f $(CURDIR)/cpptestscan.bdf ]; then	\
153*53ee8cc1Swenshuai.xi		rm -f $(CURDIR)/cpptestscan.bdf;                                             \
154*53ee8cc1Swenshuai.xi	fi
155*53ee8cc1Swenshuai.xiendif
156*53ee8cc1Swenshuai.xi
157*53ee8cc1Swenshuai.xi
158*53ee8cc1Swenshuai.xiifeq ($(TOOLCHAIN),mips-linux-gnu)
159*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),nos)
160*53ee8cc1Swenshuai.xiSW_MBOOT_FLOW = TRUE
161*53ee8cc1Swenshuai.xiendif
162*53ee8cc1Swenshuai.xiendif
163*53ee8cc1Swenshuai.xi
164*53ee8cc1Swenshuai.xi
165*53ee8cc1Swenshuai.xilib : setup all
166*53ee8cc1Swenshuai.xi
167*53ee8cc1Swenshuai.xi$(DRV_IMPORT_OBJ) :
168*53ee8cc1Swenshuai.xi	echo find drv import_obj cp from $(filter %$(notdir $*).src,$(DRV_IMPORT_SRC)) to $@
169*53ee8cc1Swenshuai.xi	cp $(filter %$(notdir $*).src,$(DRV_IMPORT_SRC)) $@
170*53ee8cc1Swenshuai.xi
171*53ee8cc1Swenshuai.xi$(HAL_IMPORT_OBJ):
172*53ee8cc1Swenshuai.xi	echo find hal import_obj cp from $(filter %$(notdir $*).src,$(HAL_IMPORT_SRC)) to $@
173*53ee8cc1Swenshuai.xi	cp $(filter %$(notdir $*).src,$(HAL_IMPORT_SRC)) $@
174*53ee8cc1Swenshuai.xi
175*53ee8cc1Swenshuai.xi$(HAL_OBJ_S) : $(OBJ_PATH)/%.o : %.s
176*53ee8cc1Swenshuai.xi	@echo [AS] $(notdir $<)
177*53ee8cc1Swenshuai.xiifeq ($(MCU_TYPE),arm_ca12)
178*53ee8cc1Swenshuai.xi	$(AS) -march=armv7-a -mfpu=neon -o $@ $<;
179*53ee8cc1Swenshuai.xiendif
180*53ee8cc1Swenshuai.xiifeq ($(MCU_TYPE),arm9)
181*53ee8cc1Swenshuai.xi	$(AS) -march=armv7-a -mfpu=neon -o $@ $<;
182*53ee8cc1Swenshuai.xiendif
183*53ee8cc1Swenshuai.xiifeq ($(MCU_TYPE),arm_ca7)
184*53ee8cc1Swenshuai.xi	$(AS) -march=armv7-a -mfpu=neon -o $@ $<;
185*53ee8cc1Swenshuai.xiendif
186*53ee8cc1Swenshuai.xi
187*53ee8cc1Swenshuai.xi$(DRV_OBJ) $(HAL_OBJ) : $(OBJ_PATH)/%.o : %.c
188*53ee8cc1Swenshuai.xiifneq ($(MAKE_TYPE),lint)
189*53ee8cc1Swenshuai.xi	@echo [CC] $(notdir $<)
190*53ee8cc1Swenshuai.xi	@$(CC) $(CC_OPTS) $(CC_DEFS) $(CC_INCS) $(DRV_CC_INCS) -o $@ $<;
191*53ee8cc1Swenshuai.xiifeq ($(PARA), 1)
192*53ee8cc1Swenshuai.xi	@if [ ! -f $(CURDIR)/cpptestscan.bdf ]; then                                         \
193*53ee8cc1Swenshuai.xi		echo ERROR! No $(CURDIR)/cpptestscan.bdf;                                    \
194*53ee8cc1Swenshuai.xi	fi
195*53ee8cc1Swenshuai.xi	@if [ -f $(CURDIR)/cpptestscan.bdf ]; then                                           \
196*53ee8cc1Swenshuai.xi		cat $(CURDIR)/cpptestscan.bdf >> $(PROJ)/cpptestscan.bdf;    \
197*53ee8cc1Swenshuai.xi		rm -f $(CURDIR)/cpptestscan.bdf;                                                             \
198*53ee8cc1Swenshuai.xi	fi
199*53ee8cc1Swenshuai.xiendif
200*53ee8cc1Swenshuai.xi
201*53ee8cc1Swenshuai.xi
202*53ee8cc1Swenshuai.xielse
203*53ee8cc1Swenshuai.xi	@echo [LINT] $(notdir $<)
204*53ee8cc1Swenshuai.xiifeq ($(shell uname -o),Cygwin)
205*53ee8cc1Swenshuai.xi	@$(LINT_CMD) $(CC_DEFS) $(LINT_INC) $(shell cygpath -m $<) >>$(LINT_LOG)
206*53ee8cc1Swenshuai.xi#	@echo $< >>$(LINT_FILES)
207*53ee8cc1Swenshuai.xielse
208*53ee8cc1Swenshuai.xi	@$(LINT_CMD) $(CC_DEFS) $(LINT_INC) $< >>$(LINT_LOG)
209*53ee8cc1Swenshuai.xi#	@echo $< >>$(LINT_FILES)
210*53ee8cc1Swenshuai.xiendif
211*53ee8cc1Swenshuai.xiendif
212*53ee8cc1Swenshuai.xi
213*53ee8cc1Swenshuai.xi
214*53ee8cc1Swenshuai.xi$(HAL_OBJ_T) $(HAL_IMPORT_OBJ_T) $(DRV_OBJ_T) $(DRV_IMPORT_OBJ_T): $(DRV_OBJ) $(DRV_IMPORT_OBJ) $(HAL_OBJ_S) $(HAL_OBJ) $(HAL_IMPORT_OBJ)
215*53ee8cc1Swenshuai.xiifeq ($(BUILDING_API),1)
216*53ee8cc1Swenshuai.xi	@cp $(@:.T=.o) $@; \
217*53ee8cc1Swenshuai.xi	mkdir -p $(OBJ_PATH)/$(LIB_NAME)_T; \
218*53ee8cc1Swenshuai.xi	mv $@ $(OBJ_PATH)/$(LIB_NAME)_T;
219*53ee8cc1Swenshuai.xiendif
220*53ee8cc1Swenshuai.xi
221*53ee8cc1Swenshuai.xi
222*53ee8cc1Swenshuai.xisetup:
223*53ee8cc1Swenshuai.xiifeq ($(LINK_TYPE),dynamic)
224*53ee8cc1Swenshuai.xi	@echo [drv_rule.mk][lib$(LIB_NAME).$(LIB_EXT)]
225*53ee8cc1Swenshuai.xielse
226*53ee8cc1Swenshuai.xi	@echo [drv_rule.mk][lib$(LIB_NAME).$(LIB_EXT)]
227*53ee8cc1Swenshuai.xiendif
228*53ee8cc1Swenshuai.xi
229*53ee8cc1Swenshuai.xiclean :
230*53ee8cc1Swenshuai.xi	@rm -f $(HAL_OBJ_S)
231*53ee8cc1Swenshuai.xi	@rm -f $(HAL_OBJ)
232*53ee8cc1Swenshuai.xi	@rm -f $(HAL_IMPORT_OBJ)
233*53ee8cc1Swenshuai.xi	@rm -f $(DRV_OBJ)
234*53ee8cc1Swenshuai.xi	@rm -f $(DRV_IMPORT_OBJ)
235*53ee8cc1Swenshuai.xi	@rm -f $(DDI_PATH)/lib$(LIB_NAME).a
236*53ee8cc1Swenshuai.xi	@rm -f $(DDI_PATH)/lib$(LIB_NAME).so
237*53ee8cc1Swenshuai.xi
238*53ee8cc1Swenshuai.xi
239*53ee8cc1Swenshuai.xi
240