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