xref: /utopia/UTPA2-700.0.x/projects/build/Makefile (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 application.
19*53ee8cc1Swenshuai.xi#
20*53ee8cc1Swenshuai.xi#
21*53ee8cc1Swenshuai.xi################################################################################
22*53ee8cc1Swenshuai.xi
23*53ee8cc1Swenshuai.xiexport
24*53ee8cc1Swenshuai.xiunexport VPATH
25*53ee8cc1Swenshuai.xiunexport SRCDIR_CHIP SRCDIR_LIB SRCDIR_SYS SRCDIR_FS
26*53ee8cc1Swenshuai.xiunexport OBJ_C_CHIP0 OBJ_C_ASM0 OBJ_C_LIB0 OBJ_C_SYS0
27*53ee8cc1Swenshuai.xiunexport LIB_INC
28*53ee8cc1Swenshuai.xi
29*53ee8cc1Swenshuai.xi
30*53ee8cc1Swenshuai.xi# **********************************************
31*53ee8cc1Swenshuai.xi# Environment
32*53ee8cc1Swenshuai.xi# **********************************************
33*53ee8cc1Swenshuai.xiPROJ        = $(PWD)
34*53ee8cc1Swenshuai.xiROOT        = $(PROJ)/../..
35*53ee8cc1Swenshuai.xiROOTLIB     = $(ROOT)/mxlib
36*53ee8cc1Swenshuai.xiDDIAPI      = $(ROOTLIB)/api
37*53ee8cc1Swenshuai.xiDDIDRV      = $(ROOTLIB)/drv
38*53ee8cc1Swenshuai.xiDDIHAL      = $(ROOTLIB)/hal
39*53ee8cc1Swenshuai.xiCONFIG      = $(PROJ)/.config
40*53ee8cc1Swenshuai.xiAUTOCONFIG  = $(PROJ)/include/generated/
41*53ee8cc1Swenshuai.xiPUBINC      = $(ROOTLIB)/include
42*53ee8cc1Swenshuai.xiMODULESPATH = $(ROOT)/modules
43*53ee8cc1Swenshuai.xi
44*53ee8cc1Swenshuai.xiexport DDIAPI DDIDRV PROJ PUBINC
45*53ee8cc1Swenshuai.xi
46*53ee8cc1Swenshuai.xi# Import configure file
47*53ee8cc1Swenshuai.xi# Required:
48*53ee8cc1Swenshuai.xi#	$(ROOT), $(ROOTLIB)
49*53ee8cc1Swenshuai.xi# **********************************************
50*53ee8cc1Swenshuai.xi#-include config
51*53ee8cc1Swenshuai.xi-include $(CONFIG)
52*53ee8cc1Swenshuai.xi# **********************************************
53*53ee8cc1Swenshuai.xi
54*53ee8cc1Swenshuai.xi
55*53ee8cc1Swenshuai.xi# **********************************************
56*53ee8cc1Swenshuai.xi# Parse env arguments from $(CONFIG)
57*53ee8cc1Swenshuai.xi# **********************************************
58*53ee8cc1Swenshuai.xiTOOLCHAIN = $(subst ",,$(CONFIG_TOOLCHAIN))
59*53ee8cc1Swenshuai.xiTOOLCHAIN_VER = $(subst ",,$(CONFIG_TOOLCHAIN_VER))
60*53ee8cc1Swenshuai.xiCHIP = $(subst ",,$(CONFIG_CHIP))
61*53ee8cc1Swenshuai.xiCHIP_NAME = $(shell echo $(CHIP) | tr a-z A-Z)
62*53ee8cc1Swenshuai.xiOS_TYPE = $(subst ",,$(CONFIG_OS_TYPE))
63*53ee8cc1Swenshuai.xiLINK_TYPE = $(subst ",,$(CONFIG_LINK_TYPE))
64*53ee8cc1Swenshuai.xiFW_TYPE = $(subst ",,$(CONFIG_FW_TYPE))
65*53ee8cc1Swenshuai.xiENDIAN = $(subst ",,$(CONFIG_ENDIAN))
66*53ee8cc1Swenshuai.xiPROCESSOR = $(subst ",,$(CONFIG_PROCESSOR))
67*53ee8cc1Swenshuai.xiMCU_TYPE = $(subst ",,$(CONFIG_MCU_TYPE))
68*53ee8cc1Swenshuai.xiCOPRO_TYPE = $(subst ",,$(CONFIG_COPRO_TYPE))
69*53ee8cc1Swenshuai.xiXC_SEAMLESS_SCALING = $(subst ",,$(CONFIG_XC_SEAMLESS_SCALING))
70*53ee8cc1Swenshuai.xiXC_4K2K_PATCH_ENABLE = $(subst ",,$(CONFIG_XC_4K2K_PATCH_ENABLE))
71*53ee8cc1Swenshuai.xiMSTAR_DVFS_ENABLE = $(subst ",,$(CONFIG_MSTAR_DVFS_ENABLE))
72*53ee8cc1Swenshuai.xiBLT_TYPE = $(subst ",,$(CONFIG_BLT_TYPE))
73*53ee8cc1Swenshuai.xiFPU = $(subst ",,$(CONFIG_FPU))
74*53ee8cc1Swenshuai.xiEXT_PLATFORM_FLAG = $(subst ",,$(CONFIG_EXT_PLATFORM_FLAG))
75*53ee8cc1Swenshuai.xiMAKE_TYPE = $(subst ",,$(CONFIG_MAKE_TYPE))
76*53ee8cc1Swenshuai.xiDEBUG_LEVEL = $(subst ",,$(CONFIG_DEBUG_LEVEL))
77*53ee8cc1Swenshuai.xiAUDIO_UTOPIA_20_ENABLE = $(subst ",,$(CONFIG_AUDIO_UTOPIA_20_ENABLE))
78*53ee8cc1Swenshuai.xiAUDIO_UTOPIA2K_EN = $(subst ",,$(CONFIG_DRV_AUDIO))
79*53ee8cc1Swenshuai.xiKERN_VER = $(subst ",,$(CONFIG_KERN_VER))
80*53ee8cc1Swenshuai.xiFPGA_ENV = $(subst ",,$(CONFIG_FPGA))
81*53ee8cc1Swenshuai.xiASSERT_TYPE = $(subst ",,$(CONFIG_ASSERT_TYPE))
82*53ee8cc1Swenshuai.xiCIPHER_UTOPIA_20_ENABLE = $(subst ",,$(CONFIG_CIPHER_UTOPIA_20_ENABLE))
83*53ee8cc1Swenshuai.xiCIPHER_NO_PRINTF_ENABLE = $(subst ",,$(CONFIG_CIPHER_NO_PRINTF_ENABLE))
84*53ee8cc1Swenshuai.xiCA_UTOPIA_20_ENABLE = $(subst ",,$(CONFIG_CA2_UTOPIA_20_ENABLE))
85*53ee8cc1Swenshuai.xiCA_NO_PRINTF_ENABLE = $(subst ",,$(CONFIG_CA2_NO_PRINTF_ENABLE))
86*53ee8cc1Swenshuai.xiSTRUCT_PACK = $(subst ",,$(CONFIG_UTOPIA_DRIVER_STRUCT_PACKED))
87*53ee8cc1Swenshuai.xi# ******************************************************************************************************
88*53ee8cc1Swenshuai.xi# Customization Flag
89*53ee8cc1Swenshuai.xi# ******************************************************************************************************
90*53ee8cc1Swenshuai.xiROLLS_ROYCE = $(subst ",,$(CONFIG_ROLLS_ROYCE))
91*53ee8cc1Swenshuai.xi
92*53ee8cc1Swenshuai.xi# ******************************************************************************************************
93*53ee8cc1Swenshuai.xi# Parse DMX & DSCMB env arguments from $(CONFIG)
94*53ee8cc1Swenshuai.xi# ******************************************************************************************************
95*53ee8cc1Swenshuai.xiDMX_UTOPIA_20_ENABLE = $(subst ",,$(CONFIG_DMX_UTOPIA_20_ENABLE))
96*53ee8cc1Swenshuai.xiDMX_UTOPIA_2K_EN = $(subst ",,$(CONFIG_API_DMX))
97*53ee8cc1Swenshuai.xiSTC64_ENABLE = $(subst ",,$(CONFIG_STC64_ENABLE))
98*53ee8cc1Swenshuai.xiVQ_ENABLE = $(subst ",,$(CONFIG_VQ_ENABLE))
99*53ee8cc1Swenshuai.xiFILE_VQ_ENABLE = $(subst ",,$(CONFIG_FIVQ_ENABLE))
100*53ee8cc1Swenshuai.xiFQ_ENABLE = $(subst ",,$(CONFIG_FQ_ENABLE))
101*53ee8cc1Swenshuai.xiEXT_FILTER_ENABLE = $(subst ",,$(CONFIG_EXT_FILTER_ENABLE))
102*53ee8cc1Swenshuai.xiTS2_ENABLE = $(subst ",,$(CONFIG_TSP2_ENABLE))
103*53ee8cc1Swenshuai.xiTS3_ENABLE = $(subst ",,$(CONFIG_TSP3_ENABLE))
104*53ee8cc1Swenshuai.xiMMFILEIN_ENABLE = $(subst ",,$(CONFIG_MMFILEIN_ENABLE))
105*53ee8cc1Swenshuai.xiMMFI3D_ENABLE = $(subst ",,$(CONFIG_MMFI3D_ENABLE))
106*53ee8cc1Swenshuai.xiMMFI2_EXTRA_AUFIFO_ENABLE = $(subst ",,$(CONFIG_MMFI2_EXTRA_AUFIFO_ENABLE))
107*53ee8cc1Swenshuai.xiMOBF_ENABLE = $(subst ",,$(CONFIG_MOBF_ENABLE))
108*53ee8cc1Swenshuai.xiMMFIMOBF_ENABLE = $(subst ",,$(CONFIG_MMFIMOBF_ENABLE))
109*53ee8cc1Swenshuai.xiUSE_HWPCR_ENABLE = $(subst ",,$(CONFIG_USE_HWPCR_ENABLE))
110*53ee8cc1Swenshuai.xiDMX_DEBUG_TABLE_ENABLE = $(subst ",,$(CONFIG_DMX_DEBUG_TABLE_ENABLE))
111*53ee8cc1Swenshuai.xiEXTRA_PVR1_FLT_ENABLE = $(subst ",,$(CONFIG_EXTRA_PVR1_FLT_ENABLE))
112*53ee8cc1Swenshuai.xiTS2_LIVE_ENABLE = $(subst ",,$(CONFIG_TS2_LIVE_ENABLE))
113*53ee8cc1Swenshuai.xiTSIO_SUPPORT = $(subst ",,$(CONFIG_TSIO_SUPPORT))
114*53ee8cc1Swenshuai.xiTSO_SUPPORT = $(subst ",,$(CONFIG_TSO_SUPPORT))
115*53ee8cc1Swenshuai.xiRASP_SUPPORT = $(subst ",,$(CONFIG_RASP_SUPPORT))
116*53ee8cc1Swenshuai.xi#RASP_SUPPORT = $(subst ",,$(CONFIG_DRV_RASP))
117*53ee8cc1Swenshuai.xiTSO_20_SUPPORT = $(subst ",,$(CONFIG_TSO_VER_20_SUPPORT))
118*53ee8cc1Swenshuai.xiTSO_BOXSERIES_SUPPORT = $(subst ",,$(CONFIG_TSO_HW_BOX_SERIES))
119*53ee8cc1Swenshuai.xiTSP3_DULFLT_ENABLE = $(subst ",,$(CONFIG_TSP3_DULFLT_ENABLE))
120*53ee8cc1Swenshuai.xiMERGE_STR_SUPPORT = $(subst ",,$(CONFIG_MERGE_STREAM_SUPPORT))
121*53ee8cc1Swenshuai.xiSECURE_PVR_SUPPORT = $(subst ",,$(CONFIG_SECURE_PVR_SUPPORT))
122*53ee8cc1Swenshuai.xiTSO_PVR_SUPPORT = $(subst ",,$(CONFIG_TSO_PVR_SUPPORT))
123*53ee8cc1Swenshuai.xiPVR_IFRAMELUT_SUPPORT = $(subst ",,$(CONFIG_PVR_IFRAMELUT_SUPPORT))
124*53ee8cc1Swenshuai.xiGENERAL_DSCMBTYPE_SUPPORT = $(subst ",,$(CONFIG_MERGE_STREAM_SUPPORT))
125*53ee8cc1Swenshuai.xiDSCMB_CSA_ENABLE = $(subst ",,$(CONFIG_GENERAL_DSCMB_SUPPORT))
126*53ee8cc1Swenshuai.xiDSCMB_MULTI2_ENABLE = $(subst ",,$(CONFIG_DSCMB_MULTI2_ENABLE))
127*53ee8cc1Swenshuai.xiPCMCIA_MODULE_TYPE = $(subst ",,$(CONFIG_DRV_PCMCIA))
128*53ee8cc1Swenshuai.xiDONT_USE_CMA = $(subst ",,$(CONFIG_DONT_USE_CMA))
129*53ee8cc1Swenshuai.xiOTV_SUPPORT = $(subst ",,$(CONFIG_OTV_SUPPORT))
130*53ee8cc1Swenshuai.xiDMX_BOX_MULTIPROCESS_SUPPORT = $(subst ",,$(CONFIG_DMX_BOX_MULTIPROCESS_SUPPORT))
131*53ee8cc1Swenshuai.xiifeq ($(CONFIG_DRV_DSCMB2), y)
132*53ee8cc1Swenshuai.xiDSCMB_UTOPIA_20_ENABLE = $(subst ",,$(CONFIG_DSCMB2_UTOPIA_20_ENABLE))
133*53ee8cc1Swenshuai.xiDSCMB_NSK_ENABLE = $(subst ",,$(CONFIG_DSCMB2_NSK_ENABLE))
134*53ee8cc1Swenshuai.xiDSCMB_MULTI2_ENABLE = $(subst ",,$(CONFIG_DSCMB2_MULTI2_ENABLE))
135*53ee8cc1Swenshuai.xiDSCMB_NO_PRINTF_ENABLE = $(subst ",,$(CONFIG_DSCMB2_NO_PRINTF_ENABLE))
136*53ee8cc1Swenshuai.xiDSCMB_HW_SEM_ENABLE = $(subst ",,$(CONFIG_DSCMB2_HW_SEM_ENABLE))
137*53ee8cc1Swenshuai.xiDSCMB_SECURE_MODE_ENABLE = $(subst ",,$(CONFIG_DSCMB2_SECURE_MODE_ENABLE))
138*53ee8cc1Swenshuai.xiendif
139*53ee8cc1Swenshuai.xi# ******************************************************************************************************
140*53ee8cc1Swenshuai.xi
141*53ee8cc1Swenshuai.xiifeq ($(CONFIG_HARD),y)
142*53ee8cc1Swenshuai.xi    FPU_ENABLE = 1
143*53ee8cc1Swenshuai.xielse
144*53ee8cc1Swenshuai.xi    FPU_ENABLE = 0
145*53ee8cc1Swenshuai.xiendif
146*53ee8cc1Swenshuai.xi
147*53ee8cc1Swenshuai.xi# Image name
148*53ee8cc1Swenshuai.xiIMAGENAME = $(CHIP)_$(OS_TYPE)
149*53ee8cc1Swenshuai.xi
150*53ee8cc1Swenshuai.xi# Lint Command, option file
151*53ee8cc1Swenshuai.xiLINT_OPT = opt_linux.lnt
152*53ee8cc1Swenshuai.xi
153*53ee8cc1Swenshuai.xiifeq ($(shell uname -o),Cygwin)
154*53ee8cc1Swenshuai.xi    LINT_CMD    = $(CURDIR)/../../tools/lint/lint-nt.exe -b -v -zero -fff
155*53ee8cc1Swenshuai.xi    LINT_CMD    += -i$(shell cygpath -m $(CURDIR)/../../tools/lint/lnt) $(LINT_OPT)
156*53ee8cc1Swenshuai.xielse
157*53ee8cc1Swenshuai.xi    LINT_CMD    = $(CURDIR)/../../tools/lint/flint -b -v -zero -fff
158*53ee8cc1Swenshuai.xi    LINT_CMD    += -i$(CURDIR)/../../tools/lint/lnt $(LINT_OPT)
159*53ee8cc1Swenshuai.xiendif
160*53ee8cc1Swenshuai.xi
161*53ee8cc1Swenshuai.xi
162*53ee8cc1Swenshuai.xi# **********************************************
163*53ee8cc1Swenshuai.xi# Build Option
164*53ee8cc1Swenshuai.xi# **********************************************
165*53ee8cc1Swenshuai.xi
166*53ee8cc1Swenshuai.xi
167*53ee8cc1Swenshuai.xiCFG_CC_DEFS = -D'CHIP_$(CHIP_NAME)' -D'MS_C_STDLIB'
168*53ee8cc1Swenshuai.xiCFG_CC_OPTS =
169*53ee8cc1Swenshuai.xiCFG_LD_OPTS =
170*53ee8cc1Swenshuai.xiCFG_CC_EXTRA_DEFS =
171*53ee8cc1Swenshuai.xiCFG_CC_EXTRA_OPTS =
172*53ee8cc1Swenshuai.xiCPU_NAME =
173*53ee8cc1Swenshuai.xi
174*53ee8cc1Swenshuai.xi
175*53ee8cc1Swenshuai.xiifeq ($(CONFIG_CHIP_INT_SPI_MODE),y)
176*53ee8cc1Swenshuai.xi    CFG_CC_DEFS += -D'CHIP_INT_SPI_MODE'
177*53ee8cc1Swenshuai.xiendif
178*53ee8cc1Swenshuai.xi
179*53ee8cc1Swenshuai.xi
180*53ee8cc1Swenshuai.xiifeq ($(ASSERT_TYPE), block)
181*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'BLOCK_ASSERT'
182*53ee8cc1Swenshuai.xiendif
183*53ee8cc1Swenshuai.xi
184*53ee8cc1Swenshuai.xiifeq ($(MCU_TYPE),aeon)
185*53ee8cc1Swenshuai.xi    CFG_CC_DEFS += -D'MCU_AEON'
186*53ee8cc1Swenshuai.xi    ifeq ($(CONFIG_R2),y)
187*53ee8cc1Swenshuai.xi        CPU_NAME = r2
188*53ee8cc1Swenshuai.xi        COPRO_TYPE = R2
189*53ee8cc1Swenshuai.xi    else
190*53ee8cc1Swenshuai.xi        CPU_NAME = aeon
191*53ee8cc1Swenshuai.xi        COPRO_TYPE = AEON
192*53ee8cc1Swenshuai.xi    endif
193*53ee8cc1Swenshuai.xiendif
194*53ee8cc1Swenshuai.xiifeq ($(MCU_TYPE),mips4ke)
195*53ee8cc1Swenshuai.xi    CFG_CC_DEFS += -D'MCU_MIPS_4KE'
196*53ee8cc1Swenshuai.xi    CPU_NAME = mips4ke
197*53ee8cc1Swenshuai.xiendif
198*53ee8cc1Swenshuai.xiifeq ($(MCU_TYPE),mips34k)
199*53ee8cc1Swenshuai.xi    CFG_CC_DEFS += -D'MCU_MIPS_34K'
200*53ee8cc1Swenshuai.xi    CPU_NAME = mips34k
201*53ee8cc1Swenshuai.xiendif
202*53ee8cc1Swenshuai.xiifeq ($(MCU_TYPE),mips74k)
203*53ee8cc1Swenshuai.xi    CFG_CC_DEFS += -D'MCU_MIPS_74K'
204*53ee8cc1Swenshuai.xi    CPU_NAME = mips74k
205*53ee8cc1Swenshuai.xiendif
206*53ee8cc1Swenshuai.xiifeq ($(MCU_TYPE),arm_ca12)
207*53ee8cc1Swenshuai.xi    CFG_CC_DEFS += -D'MCU_ARM_CA12'
208*53ee8cc1Swenshuai.xi    CPU_NAME = armca12
209*53ee8cc1Swenshuai.xiendif
210*53ee8cc1Swenshuai.xiifeq ($(MCU_TYPE),arm9)
211*53ee8cc1Swenshuai.xi    CFG_CC_DEFS += -D'MCU_ARM_9'
212*53ee8cc1Swenshuai.xi    CPU_NAME = armca9
213*53ee8cc1Swenshuai.xiendif
214*53ee8cc1Swenshuai.xi
215*53ee8cc1Swenshuai.xiifeq ($(MCU_TYPE),arm_ca7)
216*53ee8cc1Swenshuai.xi   CFG_CC_DEFS += -D'MCU_ARM_CA7'
217*53ee8cc1Swenshuai.xi    CPU_NAME = armca7
218*53ee8cc1Swenshuai.xiendif
219*53ee8cc1Swenshuai.xi
220*53ee8cc1Swenshuai.xiifeq ($(MCU_TYPE),arm_ca53)
221*53ee8cc1Swenshuai.xi    CFG_CC_DEFS += -D'MCU_ARM_CA53'
222*53ee8cc1Swenshuai.xi    CPU_NAME = armca53
223*53ee8cc1Swenshuai.xiendif
224*53ee8cc1Swenshuai.xi
225*53ee8cc1Swenshuai.xiifeq ($(CHIP),edison)
226*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'edison'
227*53ee8cc1Swenshuai.xiendif
228*53ee8cc1Swenshuai.xi
229*53ee8cc1Swenshuai.xiifeq ($(CHIP),nike)
230*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'nike'
231*53ee8cc1Swenshuai.xiendif
232*53ee8cc1Swenshuai.xi
233*53ee8cc1Swenshuai.xiifeq ($(CHIP),madison)
234*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'madison'
235*53ee8cc1Swenshuai.xiendif
236*53ee8cc1Swenshuai.xi
237*53ee8cc1Swenshuai.xiifeq ($(CHIP),clippers)
238*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'clippers'
239*53ee8cc1Swenshuai.xiendif
240*53ee8cc1Swenshuai.xi
241*53ee8cc1Swenshuai.xiifeq ($(CHIP),miami)
242*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'miami'
243*53ee8cc1Swenshuai.xiendif
244*53ee8cc1Swenshuai.xi
245*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),ecos)
246*53ee8cc1Swenshuai.xi    CFG_CC_EXTRA_DEFS += -D'MSOS_TYPE_ECOS'
247*53ee8cc1Swenshuai.xi	CFG_CC_EXTRA_DEFS += -D'UTPA2'
248*53ee8cc1Swenshuai.xiendif
249*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),ucos)
250*53ee8cc1Swenshuai.xi    CFG_CC_EXTRA_DEFS += -D'MSOS_TYPE_UCOS'
251*53ee8cc1Swenshuai.xi	CFG_CC_EXTRA_DEFS += -D'UTPA2'
252*53ee8cc1Swenshuai.xiendif
253*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),linux)
254*53ee8cc1Swenshuai.xi    CFG_CC_EXTRA_DEFS += -D'MSOS_TYPE_LINUX'
255*53ee8cc1Swenshuai.xi	CFG_CC_EXTRA_DEFS += -D'UTPA2'
256*53ee8cc1Swenshuai.xiendif
257*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),nos)
258*53ee8cc1Swenshuai.xi    CFG_CC_EXTRA_DEFS += -D'MSOS_TYPE_NOS'
259*53ee8cc1Swenshuai.xi	CFG_CC_EXTRA_DEFS += -D'UTPA2'
260*53ee8cc1Swenshuai.xi
261*53ee8cc1Swenshuai.xi    ifeq ($(EXT_PLATFORM_FLAG),mboot)
262*53ee8cc1Swenshuai.xi        CFG_CC_EXTRA_DEFS += -D'MBOOT'
263*53ee8cc1Swenshuai.xi    endif
264*53ee8cc1Swenshuai.xi
265*53ee8cc1Swenshuai.xiendif
266*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),nuttx)
267*53ee8cc1Swenshuai.xi    CFG_CC_EXTRA_DEFS += -D'MSOS_TYPE_NUTTX'
268*53ee8cc1Swenshuai.xiendif
269*53ee8cc1Swenshuai.xi
270*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),optee)
271*53ee8cc1Swenshuai.xi    CFG_CC_EXTRA_DEFS += -D'MSOS_TYPE_OPTEE'
272*53ee8cc1Swenshuai.xiendif
273*53ee8cc1Swenshuai.xi
274*53ee8cc1Swenshuai.xiifeq ($(FW_TYPE),external)
275*53ee8cc1Swenshuai.xi    CFG_CC_DEFS += -D'FW_EXTERNAL_BIN'
276*53ee8cc1Swenshuai.xiendif
277*53ee8cc1Swenshuai.xiifeq ($(FW_TYPE),embedded)
278*53ee8cc1Swenshuai.xi    CFG_CC_DEFS += -D'FW_EMBEDDED_ASC'
279*53ee8cc1Swenshuai.xiendif
280*53ee8cc1Swenshuai.xi
281*53ee8cc1Swenshuai.xiifeq ($(CONFIG_UTOPIA_20),y)
282*53ee8cc1Swenshuai.xi    CFG_CC_DEFS += -D'UTOPIA_20'
283*53ee8cc1Swenshuai.xiendif
284*53ee8cc1Swenshuai.xi
285*53ee8cc1Swenshuai.xiifeq ($(AUDIO_UTOPIA2K_EN),m)
286*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'AUDIO_UTOPIA2K'
287*53ee8cc1Swenshuai.xiendif
288*53ee8cc1Swenshuai.xi
289*53ee8cc1Swenshuai.xiifeq ($(FPGA_ENV),y)
290*53ee8cc1Swenshuai.xi    CFG_CC_DEFS += -D'FPGA_ENV'
291*53ee8cc1Swenshuai.xiendif
292*53ee8cc1Swenshuai.xi
293*53ee8cc1Swenshuai.xiifeq ($(CONFIG_DLMALLOC),y)
294*53ee8cc1Swenshuai.xi    CFG_CC_DEFS += -D'ENABLE_DLMALLOC'
295*53ee8cc1Swenshuai.xiendif
296*53ee8cc1Swenshuai.xi
297*53ee8cc1Swenshuai.xiifeq ($(CONFIG_KERNEL_DLMALLOC),y)
298*53ee8cc1Swenshuai.xi    CFG_CC_DEFS += -D'ENABLE_KERNEL_DLMALLOC'
299*53ee8cc1Swenshuai.xi	endif
300*53ee8cc1Swenshuai.xi
301*53ee8cc1Swenshuai.xiifeq ($(CONFIG_BIFROST_32BIT_MODE),y)
302*53ee8cc1Swenshuai.xi    CFG_CC_DEFS += -D'BIFROST_32BIT_MODE'
303*53ee8cc1Swenshuai.xiendif
304*53ee8cc1Swenshuai.xi
305*53ee8cc1Swenshuai.xiifeq ($(CONFIG_MLOG_ARM_472), y)
306*53ee8cc1Swenshuai.xi    MLOG_LIB_PATH = $(ROOT)/tools/MLog/arm-gnueabi/4.7.2/hardfloat/static/libMLog.a
307*53ee8cc1Swenshuai.xiendif
308*53ee8cc1Swenshuai.xiifeq ($(CONFIG_MLOG_ARM_483), y)
309*53ee8cc1Swenshuai.xi    MLOG_LIB_PATH = $(ROOT)/tools/MLog/arm-gnueabi/4.8.3/hardfloat/static/libMLog.a
310*53ee8cc1Swenshuai.xiendif
311*53ee8cc1Swenshuai.xiifeq ($(CONFIG_MLOG_ARM_49X), y)
312*53ee8cc1Swenshuai.xi    MLOG_LIB_PATH = $(ROOT)/tools/MLog/armv7a-gnueabi/4.9.x-google/hardfloat/static/libMLog.a
313*53ee8cc1Swenshuai.xiendif
314*53ee8cc1Swenshuai.xi
315*53ee8cc1Swenshuai.xi# **********************************************
316*53ee8cc1Swenshuai.xi# DMX & DSCMB Build Option
317*53ee8cc1Swenshuai.xi# **********************************************
318*53ee8cc1Swenshuai.xi
319*53ee8cc1Swenshuai.xiTSP4_CHIPS = kaiser keltic keres kano k6 k6lite k7u curry
320*53ee8cc1Swenshuai.xi
321*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'DMX_DEBUG=0'
322*53ee8cc1Swenshuai.xi
323*53ee8cc1Swenshuai.xiifeq ($(DMX_UTOPIA_20_ENABLE),y)
324*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'DMX_UTOPIA_20'
325*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'TSP_UTOPIA_20'
326*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'MMFI_UTOPIA_20'
327*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'RASP_UTOPIA_20'
328*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'TSO_UTOPIA_20'
329*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'OTV_UTOPIA_20'
330*53ee8cc1Swenshuai.xiendif
331*53ee8cc1Swenshuai.xi
332*53ee8cc1Swenshuai.xiifeq ($(DMX_UTOPIA_2K_EN),m)
333*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'DMX_UTOPIA_2K'
334*53ee8cc1Swenshuai.xiendif
335*53ee8cc1Swenshuai.xi
336*53ee8cc1Swenshuai.xiifeq ($(CONFIG_API_VDEC_EX),m)
337*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'VDEC_UTOPIA_2K'
338*53ee8cc1Swenshuai.xiendif
339*53ee8cc1Swenshuai.xi
340*53ee8cc1Swenshuai.xiifeq ($(CONFIG_API_VDEC_V3),m)
341*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'VDEC_UTOPIA_2K'
342*53ee8cc1Swenshuai.xiendif
343*53ee8cc1Swenshuai.xi
344*53ee8cc1Swenshuai.xiifeq ($(CONFIG_API_NJPEG_EX),m)
345*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'NJPEG_UTOPIA_2K'
346*53ee8cc1Swenshuai.xiendif
347*53ee8cc1Swenshuai.xi
348*53ee8cc1Swenshuai.xiifeq ($(CONFIG_API_GPD),m)
349*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'GPD_UTOPIA_2K'
350*53ee8cc1Swenshuai.xiendif
351*53ee8cc1Swenshuai.xi
352*53ee8cc1Swenshuai.xiifeq ($(STC64_ENABLE),y)
353*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'STC64_SUPPORT'
354*53ee8cc1Swenshuai.xiendif
355*53ee8cc1Swenshuai.xiifeq ($(VQ_ENABLE),y)
356*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'VQ_ENABLE'
357*53ee8cc1Swenshuai.xiendif
358*53ee8cc1Swenshuai.xiifeq ($(FILE_VQ_ENABLE),y)
359*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'FIVQ_ENABLE'
360*53ee8cc1Swenshuai.xiendif
361*53ee8cc1Swenshuai.xiifeq ($(FQ_ENABLE),y)
362*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'FQ_ENABLE'
363*53ee8cc1Swenshuai.xiendif
364*53ee8cc1Swenshuai.xiifeq ($(EXT_FILTER_ENABLE),y)
365*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'EXT_FILTER_SUPPORT'
366*53ee8cc1Swenshuai.xiendif
367*53ee8cc1Swenshuai.xiifeq ($(TS2_ENABLE),y)
368*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'TS2_IF_SUPPORT'
369*53ee8cc1Swenshuai.xiendif
370*53ee8cc1Swenshuai.xiifeq ($(TS3_ENABLE),y)
371*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'TS3_IF_SUPPORT'
372*53ee8cc1Swenshuai.xiendif
373*53ee8cc1Swenshuai.xiifeq ($(MMFILEIN_ENABLE),y)
374*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'MMFILEIN'
375*53ee8cc1Swenshuai.xiendif
376*53ee8cc1Swenshuai.xiifeq ($(MMFI3D_ENABLE),y)
377*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'MMFI_VD3D'
378*53ee8cc1Swenshuai.xiendif
379*53ee8cc1Swenshuai.xiifeq ($(MMFI2_EXTRA_AUFIFO_ENABLE),y)
380*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'MMFI2_EXTRA_AUFIFO'
381*53ee8cc1Swenshuai.xiendif
382*53ee8cc1Swenshuai.xiifeq ($(MOBF_ENABLE),y)
383*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'MOBF_ENABLE'
384*53ee8cc1Swenshuai.xiendif
385*53ee8cc1Swenshuai.xiifeq ($(MMFIMOBF_ENABLE),y)
386*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'MM_MOBF'
387*53ee8cc1Swenshuai.xiendif
388*53ee8cc1Swenshuai.xiifeq ($(DMX_DEBUG_TABLE_ENABLE),y)
389*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'DEBUG_TABLE_SUPPORT'
390*53ee8cc1Swenshuai.xiendif
391*53ee8cc1Swenshuai.xiifeq ($(EXTRA_PVR1_FLT_ENABLE),y)
392*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'EXT_PVR1_FLT'
393*53ee8cc1Swenshuai.xiendif
394*53ee8cc1Swenshuai.xi
395*53ee8cc1Swenshuai.xiifeq ($(TS2_LIVE_ENABLE),y)
396*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'TS2_LIVE_SUPPORT'
397*53ee8cc1Swenshuai.xiendif
398*53ee8cc1Swenshuai.xi
399*53ee8cc1Swenshuai.xiifeq ($(TSIO_SUPPORT),y)
400*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'TSIO_ENABLE'
401*53ee8cc1Swenshuai.xiendif
402*53ee8cc1Swenshuai.xi
403*53ee8cc1Swenshuai.xiifeq ($(TSO_SUPPORT),y)
404*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'TSO_ENABLE'
405*53ee8cc1Swenshuai.xiendif
406*53ee8cc1Swenshuai.xi
407*53ee8cc1Swenshuai.xiifeq ($(RASP_SUPPORT),y)
408*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'RASP_ENABLE'
409*53ee8cc1Swenshuai.xiendif
410*53ee8cc1Swenshuai.xi
411*53ee8cc1Swenshuai.xiifeq ($(TSO_20_SUPPORT),y)
412*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'TSO_20_ENABLE'
413*53ee8cc1Swenshuai.xiendif
414*53ee8cc1Swenshuai.xi
415*53ee8cc1Swenshuai.xiifeq ($(TSO_BOXSERIES_SUPPORT),y)
416*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'TSO_HW_BOX_SERIES'
417*53ee8cc1Swenshuai.xiendif
418*53ee8cc1Swenshuai.xi
419*53ee8cc1Swenshuai.xiifeq ($(TSP3_DULFLT_ENABLE),y)
420*53ee8cc1Swenshuai.xi    CFG_CC_DEFS += -D'DUP_PIDFLT'
421*53ee8cc1Swenshuai.xiendif
422*53ee8cc1Swenshuai.xi
423*53ee8cc1Swenshuai.xiifeq ($(DSCMB_CSA_ENABLE),y)
424*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'DSCMB_CSA_ENABLE'
425*53ee8cc1Swenshuai.xiendif
426*53ee8cc1Swenshuai.xiifeq ($(DSCMB_MULTI2_ENABLE),y)
427*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'DSCMB_MULTI2_ENABLE'
428*53ee8cc1Swenshuai.xiendif
429*53ee8cc1Swenshuai.xi
430*53ee8cc1Swenshuai.xiifeq ($(DSCMB_UTOPIA_20_ENABLE),y)
431*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'DSCMB_UTOPIA_20'
432*53ee8cc1Swenshuai.xiendif
433*53ee8cc1Swenshuai.xi
434*53ee8cc1Swenshuai.xiifeq ($(DSCMB_NO_PRINTF_ENABLE),y)
435*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'DSCMB_NO_PRINTF'
436*53ee8cc1Swenshuai.xiendif
437*53ee8cc1Swenshuai.xi
438*53ee8cc1Swenshuai.xiifeq ($(DSCMB_HW_SEM_ENABLE),y)
439*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'DSCMB_HW_SEM'
440*53ee8cc1Swenshuai.xiendif
441*53ee8cc1Swenshuai.xi
442*53ee8cc1Swenshuai.xiifeq ($(DSCMB_SECURE_MODE_ENABLE),y)
443*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'DSCMB_SECURE_MODE'
444*53ee8cc1Swenshuai.xiendif
445*53ee8cc1Swenshuai.xi
446*53ee8cc1Swenshuai.xi
447*53ee8cc1Swenshuai.xiifeq ($(CIPHER_UTOPIA_20_ENABLE),y)
448*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'CIPHER_UTOPIA_20'
449*53ee8cc1Swenshuai.xiendif
450*53ee8cc1Swenshuai.xi
451*53ee8cc1Swenshuai.xiifeq ($(CIPHER_NO_PRINTF_ENABLE),y)
452*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'CIPHER_NO_PRINTF'
453*53ee8cc1Swenshuai.xiendif
454*53ee8cc1Swenshuai.xi
455*53ee8cc1Swenshuai.xiifeq ($(CA_UTOPIA_20_ENABLE),y)
456*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'CA_UTOPIA_20'
457*53ee8cc1Swenshuai.xiendif
458*53ee8cc1Swenshuai.xi
459*53ee8cc1Swenshuai.xiifeq ($(CA_NO_PRINTF_ENABLE),y)
460*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'CA_NO_PRINTF'
461*53ee8cc1Swenshuai.xiendif
462*53ee8cc1Swenshuai.xi
463*53ee8cc1Swenshuai.xiifeq ($(PCMCIA_MODULE_TYPE),m)
464*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'PCMCIA_UTPA2K'
465*53ee8cc1Swenshuai.xiendif
466*53ee8cc1Swenshuai.xi
467*53ee8cc1Swenshuai.xiifeq ($(OTV_SUPPORT),y)
468*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'OTV_ENABLE'
469*53ee8cc1Swenshuai.xiendif
470*53ee8cc1Swenshuai.xi
471*53ee8cc1Swenshuai.xiifeq ($(DMX_BOX_MULTIPROCESS_SUPPORT),y)
472*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'DMX_BOX_MULTIPROCESS_ENABLE'
473*53ee8cc1Swenshuai.xiendif
474*53ee8cc1Swenshuai.xi
475*53ee8cc1Swenshuai.xiifeq ($(DONT_USE_CMA),y)
476*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'DONT_USE_CMA'
477*53ee8cc1Swenshuai.xiendif
478*53ee8cc1Swenshuai.xi
479*53ee8cc1Swenshuai.xiifeq ($(USE_HWPCR_ENABLE),y)
480*53ee8cc1Swenshuai.xi    ifeq ($(CHIP),$(filter $(CHIP),$(TSP4_CHIPS)))
481*53ee8cc1Swenshuai.xi    CFG_CC_DEFS += -D'HW_PCRFLT_ENABLE=1'
482*53ee8cc1Swenshuai.xi    else
483*53ee8cc1Swenshuai.xi    CFG_CC_DEFS += -D'HWPCR_ENABLE'
484*53ee8cc1Swenshuai.xi    endif
485*53ee8cc1Swenshuai.xiendif
486*53ee8cc1Swenshuai.xi
487*53ee8cc1Swenshuai.xiifeq ($(MERGE_STR_SUPPORT),y)
488*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'MERGE_STR_SUPPORT'
489*53ee8cc1Swenshuai.xiendif
490*53ee8cc1Swenshuai.xi
491*53ee8cc1Swenshuai.xiifeq ($(SECURE_PVR_SUPPORT),y)
492*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'SECURE_PVR_ENABLE'
493*53ee8cc1Swenshuai.xiendif
494*53ee8cc1Swenshuai.xi
495*53ee8cc1Swenshuai.xiifeq ($(CHIP), $(filter $(CHIP),monaco miami clippers muji munich milan monet))
496*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'DMX_RESET_FI_TIMESTAMP'
497*53ee8cc1Swenshuai.xiendif
498*53ee8cc1Swenshuai.xi
499*53ee8cc1Swenshuai.xiifeq ($(TSO_PVR_SUPPORT),y)
500*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'TSO_PVR_SUPPORT'
501*53ee8cc1Swenshuai.xiendif
502*53ee8cc1Swenshuai.xi
503*53ee8cc1Swenshuai.xiifeq ($(PVR_IFRAMELUT_SUPPORT),y)
504*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'PVR_IFRAMELUT_SUPPORT'
505*53ee8cc1Swenshuai.xiendif
506*53ee8cc1Swenshuai.xi
507*53ee8cc1Swenshuai.xiifeq ($(CHIP), $(filter $(CHIP),curry))
508*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'DMX_OPT_BOUND'
509*53ee8cc1Swenshuai.xiendif
510*53ee8cc1Swenshuai.xi
511*53ee8cc1Swenshuai.xiifeq ($(GENERAL_DSCMBTYPE_SUPPORT),y)
512*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'GENERAL_DSCMB'
513*53ee8cc1Swenshuai.xiendif
514*53ee8cc1Swenshuai.xi
515*53ee8cc1Swenshuai.xiifeq ($(XC_4K2K_PATCH_ENABLE),y)
516*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'ENABLE_4K2K_PATCH'
517*53ee8cc1Swenshuai.xiendif
518*53ee8cc1Swenshuai.xi
519*53ee8cc1Swenshuai.xi# **********************************************
520*53ee8cc1Swenshuai.xi# Customization Flag
521*53ee8cc1Swenshuai.xi# **********************************************
522*53ee8cc1Swenshuai.xiifeq ($(ROLLS_ROYCE),y)
523*53ee8cc1Swenshuai.xiCFG_CC_DEFS += -D'ROLLS_ROYCE'
524*53ee8cc1Swenshuai.xiendif
525*53ee8cc1Swenshuai.xi
526*53ee8cc1Swenshuai.xi# **********************************************
527*53ee8cc1Swenshuai.xi
528*53ee8cc1Swenshuai.xi# **********************************************
529*53ee8cc1Swenshuai.xi# Tool Chain Configuration
530*53ee8cc1Swenshuai.xi#
531*53ee8cc1Swenshuai.xi# Required ENV
532*53ee8cc1Swenshuai.xi#       $(ROOT) e.g //utopia/
533*53ee8cc1Swenshuai.xi#
534*53ee8cc1Swenshuai.xi# Supported TOOLCHAIN
535*53ee8cc1Swenshuai.xi#       mips-linux-gnu
536*53ee8cc1Swenshuai.xi#       mips-sde-elf
537*53ee8cc1Swenshuai.xi#       mips2_fp_le
538*53ee8cc1Swenshuai.xi#       aeon
539*53ee8cc1Swenshuai.xi#       mipsisa32-elf (OBSOLETE)
540*53ee8cc1Swenshuai.xi#       arm-none-linux-gnueabi
541*53ee8cc1Swenshuai.xi
542*53ee8cc1Swenshuai.xi# Effected ENV
543*53ee8cc1Swenshuai.xi#       CFG_STDLIB_DIR =
544*53ee8cc1Swenshuai.xi#       CFG_LINT       =
545*53ee8cc1Swenshuai.xi#       CFG_CC_OPTS    +=
546*53ee8cc1Swenshuai.xi#       CFG_LD_OPTS    +=
547*53ee8cc1Swenshuai.xi#       CFG_AS_OPTS    +=
548*53ee8cc1Swenshuai.xi# **********************************************
549*53ee8cc1Swenshuai.xi
550*53ee8cc1Swenshuai.xiinclude $(ROOTLIB)/cfg_tool.mk
551*53ee8cc1Swenshuai.xi
552*53ee8cc1Swenshuai.xi
553*53ee8cc1Swenshuai.xiifeq ($(LINK_TYPE),dynamic)
554*53ee8cc1Swenshuai.xi    CFG_LD_OPTS += -shared
555*53ee8cc1Swenshuai.xi    LIB_EXT     = so
556*53ee8cc1Swenshuai.xielse
557*53ee8cc1Swenshuai.xi    CFG_LD_OPTS += --gc-sections -static
558*53ee8cc1Swenshuai.xi    LIB_EXT     = a
559*53ee8cc1Swenshuai.xiendif
560*53ee8cc1Swenshuai.xi
561*53ee8cc1Swenshuai.xi
562*53ee8cc1Swenshuai.xi
563*53ee8cc1Swenshuai.xi# Project specific
564*53ee8cc1Swenshuai.xi# **********************************************
565*53ee8cc1Swenshuai.xi# Base Operating System
566*53ee8cc1Swenshuai.xiOS_BUILT    =
567*53ee8cc1Swenshuai.xi
568*53ee8cc1Swenshuai.xi
569*53ee8cc1Swenshuai.xi# **********************************************
570*53ee8cc1Swenshuai.xi# Directories
571*53ee8cc1Swenshuai.xi# **********************************************
572*53ee8cc1Swenshuai.xi# Source files of specific CHIP in library
573*53ee8cc1Swenshuai.xiSRCDIR_CHIP = \
574*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)                                  \
575*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/bdma                             \
576*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/sem                              \
577*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/mmio                             \
578*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/mbx                              \
579*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/uart                             \
580*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/irq                              \
581*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/sys                              \
582*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/miu                              \
583*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/gpio                             \
584*53ee8cc1Swenshuai.xi	        $(ROOTLIB)/hal/$(CHIP)/cpu                              \
585*53ee8cc1Swenshuai.xi	 	  	$(ROOTLIB)/hal/$(CHIP)/dac                              \
586*53ee8cc1Swenshuai.xi			$(ROOTLIB)/api/swi2c                                  	\
587*53ee8cc1Swenshuai.xi			$(ROOTLIB)/drv/cpu                                  	\
588*53ee8cc1Swenshuai.xi			$(ROOTLIB)/drv/gpio
589*53ee8cc1Swenshuai.xi
590*53ee8cc1Swenshuai.xi# Source files of library
591*53ee8cc1Swenshuai.xiSRCDIR_LIB  = \
592*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/bdma                                     \
593*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/sem                                      \
594*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/mmio                                     \
595*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/mbx/$(OS_TYPE)                           \
596*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/mbx/api_mbx                              \
597*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/uart                                     \
598*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/irq                                      \
599*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/sys                                      \
600*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/miu                                      \
601*53ee8cc1Swenshuai.xi
602*53ee8cc1Swenshuai.xi
603*53ee8cc1Swenshuai.xiSRCDIR_SYS = \
604*53ee8cc1Swenshuai.xi            $(ROOTLIB)/msos/$(MCU_TYPE)                             \
605*53ee8cc1Swenshuai.xi            $(ROOTLIB)/msos/$(OS_TYPE)                              \
606*53ee8cc1Swenshuai.xi			$(ROOTLIB)/hal/$(CHIP)/msos/$(OS_TYPE)					\
607*53ee8cc1Swenshuai.xi            $(ROOTLIB)/msos/common                                  \
608*53ee8cc1Swenshuai.xi			$(ROOTLIB)/utopia_core/$(OS_TYPE)
609*53ee8cc1Swenshuai.xi
610*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),$(filter $(OS_TYPE),linux ecos))
611*53ee8cc1Swenshuai.xiSRCDIR_FS = $(ROOTLIB)/msfs/$(OS_TYPE)
612*53ee8cc1Swenshuai.xiendif
613*53ee8cc1Swenshuai.xi
614*53ee8cc1Swenshuai.xi# Header file of specific chip
615*53ee8cc1Swenshuai.xiINCDIR_CHIP = \
616*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)                                  \
617*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/bdma                             \
618*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/sem                              \
619*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/mmio                             \
620*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/mbx                              \
621*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/uart                             \
622*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/irq                              \
623*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/sys                              \
624*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/miu                              \
625*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/dac/include                      \
626*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/gpio
627*53ee8cc1Swenshuai.xi
628*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),ucos)
629*53ee8cc1Swenshuai.xiINCDIR_CHIP +=  $(ROOTLIB)/hal/$(CHIP)/cpu
630*53ee8cc1Swenshuai.xiendif
631*53ee8cc1Swenshuai.xi
632*53ee8cc1Swenshuai.xi# Header file of inline assembly in library
633*53ee8cc1Swenshuai.xiINCDIR_ASM  = \
634*53ee8cc1Swenshuai.xi
635*53ee8cc1Swenshuai.xi# Header files of library
636*53ee8cc1Swenshuai.xiINCDIR_LIB  = \
637*53ee8cc1Swenshuai.xi            $(PROJ)                                                 \
638*53ee8cc1Swenshuai.xi            $(ROOTLIB)                                              \
639*53ee8cc1Swenshuai.xi            $(ROOTLIB)/api/vdec                                     \
640*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/bdma                                     \
641*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/mbx                                      \
642*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/mbx/$(OS_TYPE)                           \
643*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/sem                                      \
644*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/mmio                                     \
645*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/irq                                      \
646*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/sys                                      \
647*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/uart                                     \
648*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/miu                                     	\
649*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/dac                                      \
650*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/audio/internal                          	\
651*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)                                  \
652*53ee8cc1Swenshuai.xi            $(ROOTLIB)/msos                                         \
653*53ee8cc1Swenshuai.xi            $(ROOTLIB)/msos/$(OS_TYPE)                              \
654*53ee8cc1Swenshuai.xi			$(ROOTLIB)/hal/$(CHIP)/msos/$(OS_TYPE)					\
655*53ee8cc1Swenshuai.xi			$(ROOTLIB)/utopia_core/                                 \
656*53ee8cc1Swenshuai.xi            $(ROOTLIB)/utopia_api_relation/
657*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),$(filter $(OS_TYPE),linux ecos))
658*53ee8cc1Swenshuai.xiINCDIR_LIB  += $(ROOTLIB)/msfs
659*53ee8cc1Swenshuai.xiendif
660*53ee8cc1Swenshuai.xi
661*53ee8cc1Swenshuai.xiINCDIR_LIB_H = \
662*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/miu                                      \
663*53ee8cc1Swenshuai.xi
664*53ee8cc1Swenshuai.xi# FW binary files of library
665*53ee8cc1Swenshuai.xiBINDIR_LIB  = \
666*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/hvd                              \
667*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/mvd                              \
668*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/audsp                            \
669*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/tsp                              \
670*53ee8cc1Swenshuai.xi
671*53ee8cc1Swenshuai.xiifeq ($(CHIP),monaco)
672*53ee8cc1Swenshuai.xiBINDIR_LIB  += $(ROOTLIB)/hal/$(CHIP)/vpu_v3
673*53ee8cc1Swenshuai.xielse
674*53ee8cc1Swenshuai.xiBINDIR_LIB  += $(ROOTLIB)/hal/$(CHIP)/vpu_ex
675*53ee8cc1Swenshuai.xiendif
676*53ee8cc1Swenshuai.xi
677*53ee8cc1Swenshuai.xiBIN_PATH    = $(PROJ)/bin
678*53ee8cc1Swenshuai.xiOBJ_PATH    = $(PROJ)/obj
679*53ee8cc1Swenshuai.xiBSPLIB_PATH = $(PROJ)/bsp/lib
680*53ee8cc1Swenshuai.xiBSPINC_PATH = $(PROJ)/bsp/include
681*53ee8cc1Swenshuai.xiBSPBIN_PATH = $(PROJ)/bsp/bin
682*53ee8cc1Swenshuai.xiBSPMSC_PATH = $(PROJ)/bsp/misc
683*53ee8cc1Swenshuai.xi
684*53ee8cc1Swenshuai.xi
685*53ee8cc1Swenshuai.xi# Search source file path
686*53ee8cc1Swenshuai.xiVPATH       = $(SRCDIR_CHIP) $(SRCDIR_SYS) $(SRCDIR_ASM) $(SRCDIR_LIB)
687*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),linux)
688*53ee8cc1Swenshuai.xiVPATH       +=  $(SRCDIR_FS)
689*53ee8cc1Swenshuai.xiendif
690*53ee8cc1Swenshuai.xi
691*53ee8cc1Swenshuai.xiinclude $(ROOTLIB)/ddi.mk
692*53ee8cc1Swenshuai.xiinclude $(ROOTLIB)/mxlib.mk
693*53ee8cc1Swenshuai.xi
694*53ee8cc1Swenshuai.xi
695*53ee8cc1Swenshuai.xi# **********************************************
696*53ee8cc1Swenshuai.xi# Image file names
697*53ee8cc1Swenshuai.xi# **********************************************
698*53ee8cc1Swenshuai.xiIMAGE_BIN   = $(BIN_PATH)/$(IMAGENAME).bin
699*53ee8cc1Swenshuai.xiIMAGE_REC   = $(BIN_PATH)/$(IMAGENAME).rec
700*53ee8cc1Swenshuai.xiIMAGE_ELF   = $(BIN_PATH)/$(IMAGENAME).elf
701*53ee8cc1Swenshuai.xiIMAGE_MAP   = $(BIN_PATH)/$(IMAGENAME).map
702*53ee8cc1Swenshuai.xiIMAGE_DIS   = $(BIN_PATH)/$(IMAGENAME).dis
703*53ee8cc1Swenshuai.xiIMAGE_SIZ   = $(BIN_PATH)/$(IMAGENAME).siz
704*53ee8cc1Swenshuai.xiIMAGE_SYM   = $(BIN_PATH)/$(IMAGENAME).sym
705*53ee8cc1Swenshuai.xi
706*53ee8cc1Swenshuai.xi
707*53ee8cc1Swenshuai.xi# **********************************************
708*53ee8cc1Swenshuai.xi# Files to be compiled
709*53ee8cc1Swenshuai.xi# **********************************************
710*53ee8cc1Swenshuai.xiSRC_C_CHIP  = $(foreach dir, $(SRCDIR_CHIP),  $(wildcard $(dir)/*.c))
711*53ee8cc1Swenshuai.xiSRC_C_ASM   = $(foreach dir, $(SRCDIR_ASM),   $(wildcard $(dir)/*.c))
712*53ee8cc1Swenshuai.xiSRC_C_LIB   = $(foreach dir, $(SRCDIR_LIB),   $(wildcard $(dir)/*.c))
713*53ee8cc1Swenshuai.xiSRC_C_SYS   = $(foreach dir, $(SRCDIR_SYS),   $(wildcard $(dir)/*.c))
714*53ee8cc1Swenshuai.xi
715*53ee8cc1Swenshuai.xiOBJ_C_CHIP0 = $(notdir $(patsubst %.c, %.o,   $(SRC_C_CHIP)))
716*53ee8cc1Swenshuai.xiOBJ_C_ASM0  = $(notdir $(patsubst %.c, %.o,   $(SRC_C_ASM) ))
717*53ee8cc1Swenshuai.xiOBJ_C_LIB0  = $(notdir $(patsubst %.c, %.o,   $(SRC_C_LIB) ))
718*53ee8cc1Swenshuai.xiOBJ_C_SYS0  = $(notdir $(patsubst %.c, %.o,   $(SRC_C_SYS) ))
719*53ee8cc1Swenshuai.xi
720*53ee8cc1Swenshuai.xiOBJ_C_CHIP  = $(foreach file, $(OBJ_C_CHIP0), $(OBJ_PATH)/$(file))
721*53ee8cc1Swenshuai.xiOBJ_C_ASM   = $(foreach file, $(OBJ_C_ASM0),  $(OBJ_PATH)/$(file))
722*53ee8cc1Swenshuai.xiOBJ_C_LIB   = $(foreach file, $(OBJ_C_LIB0),  $(OBJ_PATH)/$(file))
723*53ee8cc1Swenshuai.xiOBJ_C_SYS   = $(foreach file, $(OBJ_C_SYS0),  $(OBJ_PATH)/$(file))
724*53ee8cc1Swenshuai.xi
725*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),linux)
726*53ee8cc1Swenshuai.xiSRC_C_FS    = $(foreach dir, $(SRCDIR_FS),    $(wildcard $(dir)/*.c))
727*53ee8cc1Swenshuai.xiOBJ_C_FS0   = $(notdir $(patsubst %.c, %.o,   $(SRC_C_FS) ))
728*53ee8cc1Swenshuai.xiOBJ_C_FS    = $(foreach file, $(OBJ_C_FS0),   $(OBJ_PATH)/$(file))
729*53ee8cc1Swenshuai.xiendif
730*53ee8cc1Swenshuai.xi
731*53ee8cc1Swenshuai.xi# **********************************************
732*53ee8cc1Swenshuai.xi# Libraries
733*53ee8cc1Swenshuai.xi# **********************************************
734*53ee8cc1Swenshuai.xi
735*53ee8cc1Swenshuai.xiDDI_PATH = $(ROOT)/lib/$(CHIP)_$(OS_TYPE)_$(MCU_TYPE)/$(MCU_TYPE)_$(BLT_TYPE)
736*53ee8cc1Swenshuai.xi
737*53ee8cc1Swenshuai.xi# Standard Libraries Path
738*53ee8cc1Swenshuai.xi
739*53ee8cc1Swenshuai.xi
740*53ee8cc1Swenshuai.xi# Middleware Libraries Path
741*53ee8cc1Swenshuai.xi
742*53ee8cc1Swenshuai.xi
743*53ee8cc1Swenshuai.xi# Libraries
744*53ee8cc1Swenshuai.xiDDI_LIB = $(DDI_PATH)/lib$(OS_TYPE).$(LIB_EXT)
745*53ee8cc1Swenshuai.xi
746*53ee8cc1Swenshuai.xi# Include files of output library
747*53ee8cc1Swenshuai.xiLIB_INC     =
748*53ee8cc1Swenshuai.xiLIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/asm*.h))
749*53ee8cc1Swenshuai.xiLIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/api*.h))
750*53ee8cc1Swenshuai.xiLIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/drv*.h))
751*53ee8cc1Swenshuai.xiLIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/Ms*.h))
752*53ee8cc1Swenshuai.xiLIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/regCHIP.h))
753*53ee8cc1Swenshuai.xiLIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/$(CFG_BOARD).h))
754*53ee8cc1Swenshuai.xiLIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/utopia.h))
755*53ee8cc1Swenshuai.xiLIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/utopia_dapi.h))
756*53ee8cc1Swenshuai.xiLIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/utopia_driver_id.h))
757*53ee8cc1Swenshuai.xiifeq ($(CONFIG_API_DAC), y)
758*53ee8cc1Swenshuai.xiLIB_INC    += $(foreach dir, $(INCDIR_CHIP), $(wildcard $(dir)/mdrv_dac_tbl.h))
759*53ee8cc1Swenshuai.xiendif
760*53ee8cc1Swenshuai.xi
761*53ee8cc1Swenshuai.xiLIB_INC_2   =
762*53ee8cc1Swenshuai.xiLIB_INC_2  += $(foreach dir, $(MXLIB-y), $(wildcard $(dir)/api*.h))
763*53ee8cc1Swenshuai.xiLIB_INC_2  += $(foreach dir, $(MXLIB-y), $(wildcard $(dir)/drv*.h))
764*53ee8cc1Swenshuai.xiLIB_INC_2  += $(foreach dir, $(MXLIB-m), $(wildcard $(dir)/api*.h))
765*53ee8cc1Swenshuai.xiLIB_INC_2  += $(foreach dir, $(MXLIB-m), $(wildcard $(dir)/drv*.h))
766*53ee8cc1Swenshuai.xi
767*53ee8cc1Swenshuai.xi# FW Binary files of output library
768*53ee8cc1Swenshuai.xiLIB_FW_BIN  =
769*53ee8cc1Swenshuai.xiLIB_FW_BIN += $(foreach dir, $(BINDIR_LIB), $(wildcard $(dir)/fw*.bin))
770*53ee8cc1Swenshuai.xiLIB_FW_BIN += $(foreach dir, $(BINDIR_LIB), $(wildcard $(dir)/fw*.dat))
771*53ee8cc1Swenshuai.xiLIB_FW_BIN += $(foreach dir, $(BINDIR_LIB), $(wildcard $(dir)/out_*.bin))
772*53ee8cc1Swenshuai.xiLIB_FW_BIN += $(foreach dir, $(BINDIR_LIB), $(wildcard $(dir)/aucode_*.h))
773*53ee8cc1Swenshuai.xi
774*53ee8cc1Swenshuai.xi# Misc files
775*53ee8cc1Swenshuai.xiLIB_MISC    =
776*53ee8cc1Swenshuai.xiifeq ($(CONFIG_API_DAC), y)
777*53ee8cc1Swenshuai.xiLIB_MISC   += $(foreach dir, $(INCDIR_CHIP), $(wildcard $(dir)/mdrv_dac_tbl.c))
778*53ee8cc1Swenshuai.xiendif
779*53ee8cc1Swenshuai.xi
780*53ee8cc1Swenshuai.xi# Public include files
781*53ee8cc1Swenshuai.xiPUB_INC    =
782*53ee8cc1Swenshuai.xiPUB_INC    += $(foreach dir, $(PUBINC), $(wildcard $(dir)/*.h))
783*53ee8cc1Swenshuai.xi
784*53ee8cc1Swenshuai.xi# **********************************************
785*53ee8cc1Swenshuai.xi# Compiler and linker options
786*53ee8cc1Swenshuai.xi# **********************************************
787*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),linux)
788*53ee8cc1Swenshuai.xi
789*53ee8cc1Swenshuai.xiifeq ($(EXT_PLATFORM_FLAG),android)
790*53ee8cc1Swenshuai.xi# **********************************************
791*53ee8cc1Swenshuai.xi# Compiler and linker options for android
792*53ee8cc1Swenshuai.xi# **********************************************
793*53ee8cc1Swenshuai.xi
794*53ee8cc1Swenshuai.xiANDROID_DIR = $(ANDROID_BUILD_TOP)
795*53ee8cc1Swenshuai.xiOS_INC_DIR  = \
796*53ee8cc1Swenshuai.xi              $(ANDROID_DIR)/bionic/libc/arch-arm/include \
797*53ee8cc1Swenshuai.xi              $(ANDROID_DIR)/bionic/libc/include \
798*53ee8cc1Swenshuai.xi              $(ANDROID_DIR)/bionic/libc/kernel/common \
799*53ee8cc1Swenshuai.xi              $(ANDROID_DIR)/bionic/libc/kernel/arch-arm \
800*53ee8cc1Swenshuai.xi              $(ANDROID_DIR)/bionic/libm/include \
801*53ee8cc1Swenshuai.xi              $(ANDROID_DIR)/bionic/libm/include/arch/arm \
802*53ee8cc1Swenshuai.xi              $(ANDROID_DIR)/bionic/libthread_db/include \
803*53ee8cc1Swenshuai.xi              $(ANDROID_DIR)/system/core/include
804*53ee8cc1Swenshuai.xiOS_LIB_DIR  = $(ANDROID_DIR)/bionic/lib
805*53ee8cc1Swenshuai.xi
806*53ee8cc1Swenshuai.xiALL_INC_DIR = $(INCDIR_ASM) $(INCDIR_CHIP) $(INCDIR_LIB) $(INCDIR_LIB_H) $(OS_INC_DIR)
807*53ee8cc1Swenshuai.xi
808*53ee8cc1Swenshuai.xiCC_INCS     = $(foreach dir, $(ALL_INC_DIR), -I$(dir) -I$(PUBINC))
809*53ee8cc1Swenshuai.xi
810*53ee8cc1Swenshuai.xiCC_DEFS     = $(CFG_CC_DEFS) $(CFG_CC_EXTRA_DEFS) -D'OS_LINUX' -D'LIB_NAME="$(IMAGENAME).lib"' -D'PWS_AUTOGEN'
811*53ee8cc1Swenshuai.xiCC_DEFS     += -D'TV_OS' -D'ANDROID' -D'SK_RELEASE'
812*53ee8cc1Swenshuai.xi
813*53ee8cc1Swenshuai.xi# GCC options:
814*53ee8cc1Swenshuai.xiCC_OPTS     = $(CFG_CC_OPTS) -c
815*53ee8cc1Swenshuai.xi# TARGET_GLOBAL_CFLAGS
816*53ee8cc1Swenshuai.xiCC_OPTS    += -fno-exceptions -Wno-multichar \
817*53ee8cc1Swenshuai.xi              -fpic \
818*53ee8cc1Swenshuai.xi              -ffunction-sections \
819*53ee8cc1Swenshuai.xi              -funwind-tables \
820*53ee8cc1Swenshuai.xi              -fstack-protector \
821*53ee8cc1Swenshuai.xi              -Wa,--noexecstack \
822*53ee8cc1Swenshuai.xi              -Werror=format-security \
823*53ee8cc1Swenshuai.xi              -fno-short-enums \
824*53ee8cc1Swenshuai.xi              -Wno-psabi \
825*53ee8cc1Swenshuai.xi              -mthumb-interwork \
826*53ee8cc1Swenshuai.xi              -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith
827*53ee8cc1Swenshuai.xi#TARGET_ERROR_FLAGS
828*53ee8cc1Swenshuai.xiCC_OPTS    += -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point
829*53ee8cc1Swenshuai.xi# TARGET_RELEASE_CFLAGS
830*53ee8cc1Swenshuai.xiCC_OPTS    += -DNDEBUG \
831*53ee8cc1Swenshuai.xi              -g \
832*53ee8cc1Swenshuai.xi              -Wstrict-aliasing=2 \
833*53ee8cc1Swenshuai.xi              -finline-functions \
834*53ee8cc1Swenshuai.xi              -fno-inline-functions-called-once \
835*53ee8cc1Swenshuai.xi              -fgcse-after-reload \
836*53ee8cc1Swenshuai.xi              -frerun-cse-after-loop \
837*53ee8cc1Swenshuai.xi              -frename-registers \
838*53ee8cc1Swenshuai.xi              -DNDEBUG -UDEBUG \
839*53ee8cc1Swenshuai.xi              -DMS_OPTIMIZE
840*53ee8cc1Swenshuai.xi# TARGET_ARCH_CFLAGS
841*53ee8cc1Swenshuai.xiCC_OPTS    += -Os \
842*53ee8cc1Swenshuai.xi              -fomit-frame-pointer \
843*53ee8cc1Swenshuai.xi              -fstrict-aliasing \
844*53ee8cc1Swenshuai.xi              -funswitch-loops \
845*53ee8cc1Swenshuai.xi              -finline-limit=300
846*53ee8cc1Swenshuai.xi
847*53ee8cc1Swenshuai.xielse
848*53ee8cc1Swenshuai.xi# **********************************************
849*53ee8cc1Swenshuai.xi# Compiler and linker options for linux
850*53ee8cc1Swenshuai.xi# **********************************************
851*53ee8cc1Swenshuai.xi
852*53ee8cc1Swenshuai.xiOS_INC_DIR  =
853*53ee8cc1Swenshuai.xi
854*53ee8cc1Swenshuai.xiALL_INC_DIR = $(INCDIR_ASM) $(INCDIR_CHIP) $(INCDIR_LIB) $(INCDIR_LIB_H) $(OS_INC_DIR)
855*53ee8cc1Swenshuai.xi
856*53ee8cc1Swenshuai.xiCC_INCS     = $(foreach dir, $(ALL_INC_DIR), -I$(dir) -I$(PUBINC))
857*53ee8cc1Swenshuai.xiCC_INCS     += -I$(AUTOCONFIG)
858*53ee8cc1Swenshuai.xi
859*53ee8cc1Swenshuai.xiCC_DEFS     = $(CFG_CC_DEFS) $(CFG_CC_EXTRA_DEFS) -D'OS_LINUX' -D'LIB_NAME="$(IMAGENAME).lib"' -D'PWS_AUTOGEN'
860*53ee8cc1Swenshuai.xi
861*53ee8cc1Swenshuai.xiifeq ($(EXT_PLATFORM_FLAG),tvos)
862*53ee8cc1Swenshuai.xiCC_DEFS     += -D'TV_OS'
863*53ee8cc1Swenshuai.xiendif
864*53ee8cc1Swenshuai.xi
865*53ee8cc1Swenshuai.xi# GCC options:
866*53ee8cc1Swenshuai.xiCC_OPTS     = $(CFG_CC_OPTS) -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef
867*53ee8cc1Swenshuai.xiCC_OPTS    += -fno-strict-aliasing -fno-optimize-sibling-calls -fno-exceptions
868*53ee8cc1Swenshuai.xiCC_OPTS    += -ffunction-sections -fdata-sections
869*53ee8cc1Swenshuai.xiCC_OPTS    += -c
870*53ee8cc1Swenshuai.xiifeq ($(TOOLCHAIN),arm-buildroot-linux-uclibcgnueabi)
871*53ee8cc1Swenshuai.xiCC_OPTS    += -fPIC
872*53ee8cc1Swenshuai.xiendif
873*53ee8cc1Swenshuai.xi
874*53ee8cc1Swenshuai.xiifeq ($(CONFIG_STACK_PROTECTOR),y)
875*53ee8cc1Swenshuai.xi    # currently we use 4.8.2 and 4.9.2
876*53ee8cc1Swenshuai.xi    ifeq ($(TOOLCHAIN_VER), $(filter $(TOOLCHAIN_VER), 4.8.2 4.9.2))
877*53ee8cc1Swenshuai.xi        CC_OPTS += -fstack-protector
878*53ee8cc1Swenshuai.xi    else
879*53ee8cc1Swenshuai.xi        $(error "Only toolchain ver > 4.8 supports -fstack-protector (current = $(TOOLCHAIN_VER))")
880*53ee8cc1Swenshuai.xi    endif
881*53ee8cc1Swenshuai.xiendif
882*53ee8cc1Swenshuai.xi
883*53ee8cc1Swenshuai.xi# for symbol backtrace
884*53ee8cc1Swenshuai.xiCC_OPTS    += -rdynamic
885*53ee8cc1Swenshuai.xiendif
886*53ee8cc1Swenshuai.xi
887*53ee8cc1Swenshuai.xielse
888*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),ucos)
889*53ee8cc1Swenshuai.xi# **********************************************
890*53ee8cc1Swenshuai.xi# Compiler and linker options for ucos
891*53ee8cc1Swenshuai.xi# **********************************************
892*53ee8cc1Swenshuai.xiOS_INC_DIR  = $(ROOT)/../../GreenLion/platform/ucos/include
893*53ee8cc1Swenshuai.xiOS_INC_DIR  += $(ROOT)/../../GreenLion/platform/ucos/HDI3/inc
894*53ee8cc1Swenshuai.xi
895*53ee8cc1Swenshuai.xiALL_INC_DIR = $(INCDIR_ASM) $(INCDIR_CHIP) $(INCDIR_LIB) $(INCDIR_LIB_H) $(OS_INC_DIR)
896*53ee8cc1Swenshuai.xiCC_INCS     = $(foreach dir, $(ALL_INC_DIR), -I$(dir) -I$(PUBINC))
897*53ee8cc1Swenshuai.xiCC_INCS     += -I$(AUTOCONFIG)
898*53ee8cc1Swenshuai.xiCC_DEFS     = $(CFG_CC_DEFS) $(CFG_CC_EXTRA_DEFS) -D'OS_UCOS' -D'LIB_NAME="$(IMAGENAME).lib"' -D'PWS_AUTOGEN'
899*53ee8cc1Swenshuai.xi
900*53ee8cc1Swenshuai.xi# GCC options:
901*53ee8cc1Swenshuai.xiCC_OPTS     = $(CFG_CC_OPTS) -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef
902*53ee8cc1Swenshuai.xiCC_OPTS    += -fno-strict-aliasing -fno-optimize-sibling-calls -fno-exceptions
903*53ee8cc1Swenshuai.xiifeq ($(TOOLCHAIN),arm-none-eabi)
904*53ee8cc1Swenshuai.xiCC_OPTS    += -c
905*53ee8cc1Swenshuai.xielse
906*53ee8cc1Swenshuai.xiCC_OPTS    += -c -G0
907*53ee8cc1Swenshuai.xiendif
908*53ee8cc1Swenshuai.xi
909*53ee8cc1Swenshuai.xielse
910*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),ecos)
911*53ee8cc1Swenshuai.xi# **********************************************
912*53ee8cc1Swenshuai.xi# Compiler and linker options for Ecos
913*53ee8cc1Swenshuai.xi# **********************************************
914*53ee8cc1Swenshuai.xiifeq ($(FPU_ENABLE),1)
915*53ee8cc1Swenshuai.xiifeq ($(CHIP),kano)
916*53ee8cc1Swenshuai.xi    OS_INC_DIR  = $(ROOT)/../../GreenLion/platform/ecos/ecos_kano_CA53_net_fileio_posix_fat_cpuload_c++_none_armeabi/include
917*53ee8cc1Swenshuai.xielse ifeq ($(CHIP),k6)
918*53ee8cc1Swenshuai.xi    OS_INC_DIR  = $(ROOT)/../../../GreenLion/platform/ecos/ecos_k6_CA53_net_fileio_posix_fat_cpuload_c++_none_armeabi/include
919*53ee8cc1Swenshuai.xielse ifeq ($(CHIP),k6lite)
920*53ee8cc1Swenshuai.xi    OS_INC_DIR  = $(ROOT)/../../../GreenLion/platform/ecos/ecos_k6lite_CA7_net_fileio_posix_fat_cpuload_c++_none_armeabi/include
921*53ee8cc1Swenshuai.xielse
922*53ee8cc1Swenshuai.xi    OS_INC_DIR  = $(ROOT)/../GreenLion/platform/ecos/ecos_keres_74kf_net_fileio_posix_fat_ntfs_mipsisa32_c++/include
923*53ee8cc1Swenshuai.xiendif
924*53ee8cc1Swenshuai.xielse
925*53ee8cc1Swenshuai.xiifeq ($(CHIP),kano)
926*53ee8cc1Swenshuai.xi    OS_INC_DIR  = $(ROOT)/../../GreenLion/platform/ecos/ecos_kano_CA53_net_fileio_posix_fat_cpuload_c++_none_armeabi/include
927*53ee8cc1Swenshuai.xielse ifeq ($(CHIP),k6)
928*53ee8cc1Swenshuai.xi    OS_INC_DIR  = $(ROOT)/../../../GreenLion/platform/ecos/ecos_k6_CA53_net_fileio_posix_fat_cpuload_c++_none_armeabi/include
929*53ee8cc1Swenshuai.xielse ifeq ($(CHIP),k6lite)
930*53ee8cc1Swenshuai.xi    OS_INC_DIR  = $(ROOT)/../../../GreenLion/platform/ecos/ecos_k6lite_CA7_net_fileio_posix_fat_cpuload_c++_none_armeabi/include
931*53ee8cc1Swenshuai.xielse
932*53ee8cc1Swenshuai.xi    OS_INC_DIR  = $(ROOT)/../GreenLion/platform/ecos/ecos_keres_74kc_net_fileio_posix_fat_ntfs_mipsisa32_c++/include
933*53ee8cc1Swenshuai.xiendif
934*53ee8cc1Swenshuai.xiendif
935*53ee8cc1Swenshuai.xi
936*53ee8cc1Swenshuai.xiALL_INC_DIR = $(INCDIR_ASM) $(INCDIR_CHIP) $(INCDIR_LIB) $(INCDIR_LIB_H) $(OS_INC_DIR)
937*53ee8cc1Swenshuai.xiCC_INCS     = $(foreach dir, $(ALL_INC_DIR), -I$(dir) -I$(PUBINC))
938*53ee8cc1Swenshuai.xiCC_INCS     += -I$(AUTOCONFIG)
939*53ee8cc1Swenshuai.xiCC_DEFS     = $(CFG_CC_DEFS) $(CFG_CC_EXTRA_DEFS) -D'OS_ECOS' -D'LIB_NAME="$(IMAGENAME).lib"' -D'PWS_AUTOGEN'
940*53ee8cc1Swenshuai.xi
941*53ee8cc1Swenshuai.xi# GCC options:
942*53ee8cc1Swenshuai.xiCC_OPTS     = $(CFG_CC_OPTS) -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef
943*53ee8cc1Swenshuai.xiCC_OPTS    += -fno-strict-aliasing -fno-optimize-sibling-calls -fno-exceptions
944*53ee8cc1Swenshuai.xiifeq ($(TOOLCHAIN),arm-none-eabi)
945*53ee8cc1Swenshuai.xiCC_OPTS    += -c
946*53ee8cc1Swenshuai.xielse
947*53ee8cc1Swenshuai.xiCC_OPTS    += -c -G0
948*53ee8cc1Swenshuai.xiendif
949*53ee8cc1Swenshuai.xi
950*53ee8cc1Swenshuai.xielse
951*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),nuttx)
952*53ee8cc1Swenshuai.xi# **********************************************
953*53ee8cc1Swenshuai.xi# Compiler and linker options for Nuttx
954*53ee8cc1Swenshuai.xi# **********************************************
955*53ee8cc1Swenshuai.xi
956*53ee8cc1Swenshuai.xiOS_INC_DIR  =
957*53ee8cc1Swenshuai.xiALL_INC_DIR = $(INCDIR_ASM) $(INCDIR_CHIP) $(INCDIR_LIB) $(INCDIR_LIB_H) $(OS_INC_DIR)
958*53ee8cc1Swenshuai.xiCC_INCS     = $(foreach dir, $(ALL_INC_DIR), -I$(dir) -I$(PUBINC))
959*53ee8cc1Swenshuai.xiCC_INCS     += -I$(AUTOCONFIG)
960*53ee8cc1Swenshuai.xiCC_DEFS     = $(CFG_CC_DEFS) $(CFG_CC_EXTRA_DEFS) -D'OS_NOS' -D'LIB_NAME="$(IMAGENAME).lib"' -D'PWS_AUTOGEN'
961*53ee8cc1Swenshuai.xi
962*53ee8cc1Swenshuai.xi# GCC options:
963*53ee8cc1Swenshuai.xiCC_OPTS     = $(CFG_CC_OPTS) -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Wcast-align
964*53ee8cc1Swenshuai.xiCC_OPTS    += -fomit-frame-pointer -fno-exceptions
965*53ee8cc1Swenshuai.xiCC_OPTS    += -ffunction-sections -fdata-sections
966*53ee8cc1Swenshuai.xiCC_OPTS    += -c -march=aeonR2 -EL
967*53ee8cc1Swenshuai.xi
968*53ee8cc1Swenshuai.xielse
969*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),optee)
970*53ee8cc1Swenshuai.xi# **********************************************
971*53ee8cc1Swenshuai.xi# Compiler and linker options for Optee
972*53ee8cc1Swenshuai.xi# **********************************************
973*53ee8cc1Swenshuai.xi
974*53ee8cc1Swenshuai.xiOS_INC_DIR  =
975*53ee8cc1Swenshuai.xiALL_INC_DIR = $(INCDIR_ASM) $(INCDIR_CHIP) $(INCDIR_LIB) $(INCDIR_LIB_H) $(OS_INC_DIR)
976*53ee8cc1Swenshuai.xiCC_INCS     = $(foreach dir, $(ALL_INC_DIR), -I$(dir) -I$(PUBINC))
977*53ee8cc1Swenshuai.xiCC_INCS     += -I$(AUTOCONFIG)
978*53ee8cc1Swenshuai.xiCC_DEFS     = $(CFG_CC_DEFS) $(CFG_CC_EXTRA_DEFS) -D'OS_NOS' -D'LIB_NAME="$(IMAGENAME).lib"' -D'PWS_AUTOGEN'
979*53ee8cc1Swenshuai.xi
980*53ee8cc1Swenshuai.xi# GCC options:
981*53ee8cc1Swenshuai.xiCC_OPTS     = $(CFG_CC_OPTS) -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Wcast-align
982*53ee8cc1Swenshuai.xiCC_OPTS    += -fomit-frame-pointer -fno-exceptions
983*53ee8cc1Swenshuai.xiCC_OPTS    += -ffunction-sections -fdata-sections
984*53ee8cc1Swenshuai.xiCC_OPTS    += -c
985*53ee8cc1Swenshuai.xi
986*53ee8cc1Swenshuai.xielse
987*53ee8cc1Swenshuai.xi# **********************************************
988*53ee8cc1Swenshuai.xi# Compiler and linker options for Non-OS
989*53ee8cc1Swenshuai.xi# **********************************************
990*53ee8cc1Swenshuai.xi
991*53ee8cc1Swenshuai.xiOS_INC_DIR  =
992*53ee8cc1Swenshuai.xiALL_INC_DIR = $(INCDIR_ASM) $(INCDIR_CHIP) $(INCDIR_LIB) $(INCDIR_LIB_H) $(OS_INC_DIR)
993*53ee8cc1Swenshuai.xiCC_INCS     = $(foreach dir, $(ALL_INC_DIR), -I$(dir) -I$(PUBINC))
994*53ee8cc1Swenshuai.xiCC_INCS     += -I$(AUTOCONFIG)
995*53ee8cc1Swenshuai.xiCC_DEFS     = $(CFG_CC_DEFS) $(CFG_CC_EXTRA_DEFS) -D'OS_NOS' -D'LIB_NAME="$(IMAGENAME).lib"' -D'PWS_AUTOGEN'
996*53ee8cc1Swenshuai.xi
997*53ee8cc1Swenshuai.xi# GCC options:
998*53ee8cc1Swenshuai.xiCC_OPTS     = $(CFG_CC_OPTS) -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Wcast-align
999*53ee8cc1Swenshuai.xiCC_OPTS    += -fomit-frame-pointer -fno-exceptions
1000*53ee8cc1Swenshuai.xiCC_OPTS    += -ffunction-sections -fdata-sections
1001*53ee8cc1Swenshuai.xi
1002*53ee8cc1Swenshuai.xiifeq ($(MCU_TYPE),aeon)
1003*53ee8cc1Swenshuai.xiCC_OPTS    += -march=aeonR2 -EL
1004*53ee8cc1Swenshuai.xiendif
1005*53ee8cc1Swenshuai.xi
1006*53ee8cc1Swenshuai.xi
1007*53ee8cc1Swenshuai.xiifeq ($(MCU_TYPE), arm_ca53)
1008*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE), nos)
1009*53ee8cc1Swenshuai.xiCC_OPTS    += -mno-unaligned-access
1010*53ee8cc1Swenshuai.xielse
1011*53ee8cc1Swenshuai.xiCC_OPTS    += -mstrict-align
1012*53ee8cc1Swenshuai.xiendif
1013*53ee8cc1Swenshuai.xiendif
1014*53ee8cc1Swenshuai.xiifeq ($(MCU_TYPE), arm_ca12)
1015*53ee8cc1Swenshuai.xiCC_OPTS    += -mno-unaligned-access
1016*53ee8cc1Swenshuai.xiendif
1017*53ee8cc1Swenshuai.xiifeq ($(MCU_TYPE), arm_ca7)
1018*53ee8cc1Swenshuai.xiCC_OPTS    += -mno-unaligned-access
1019*53ee8cc1Swenshuai.xiendif
1020*53ee8cc1Swenshuai.xiifeq ($(MCU_TYPE),arm9)
1021*53ee8cc1Swenshuai.xiCC_OPTS    += -mno-unaligned-access
1022*53ee8cc1Swenshuai.xiendif
1023*53ee8cc1Swenshuai.xi
1024*53ee8cc1Swenshuai.xiifeq ($(EXT_PLATFORM_FLAG),mboot)
1025*53ee8cc1Swenshuai.xiCC_OPTS    += -fno-short-enums -Wno-unused -Wno-cast-align -fno-strict-aliasing
1026*53ee8cc1Swenshuai.xiendif
1027*53ee8cc1Swenshuai.xi
1028*53ee8cc1Swenshuai.xiCC_OPTS    += -c
1029*53ee8cc1Swenshuai.xi
1030*53ee8cc1Swenshuai.xiendif
1031*53ee8cc1Swenshuai.xiendif
1032*53ee8cc1Swenshuai.xiendif
1033*53ee8cc1Swenshuai.xiendif
1034*53ee8cc1Swenshuai.xiendif
1035*53ee8cc1Swenshuai.xi
1036*53ee8cc1Swenshuai.xi# AS options:
1037*53ee8cc1Swenshuai.xiAS_OPTS     = $(CFG_AS_OPTS) -G0 -Os
1038*53ee8cc1Swenshuai.xi
1039*53ee8cc1Swenshuai.xi
1040*53ee8cc1Swenshuai.xi# LD options:
1041*53ee8cc1Swenshuai.xiLD_SCRIPT   =
1042*53ee8cc1Swenshuai.xiLD_LIBS     = -L$(DDI_PATH) -L$(OS_LIB_DIR) -L$(CFG_STDLIB_DIR) -T$(LD_SCRIPT)
1043*53ee8cc1Swenshuai.xiLD_OPTS     = $(CFG_LD_OPTS)
1044*53ee8cc1Swenshuai.xi
1045*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),nos)
1046*53ee8cc1Swenshuai.xiLD_OPTS     += -nostdlib
1047*53ee8cc1Swenshuai.xiendif
1048*53ee8cc1Swenshuai.xi
1049*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),ecos)
1050*53ee8cc1Swenshuai.xiLD_OPTS     += -nostdlib -Map $(IMAGE_MAP)
1051*53ee8cc1Swenshuai.xiendif
1052*53ee8cc1Swenshuai.xi
1053*53ee8cc1Swenshuai.xi
1054*53ee8cc1Swenshuai.xiifeq ($(BLT_TYPE),debug)
1055*53ee8cc1Swenshuai.xiCC_OPTS    += -O0 -g3
1056*53ee8cc1Swenshuai.xiCC_DEFS    += -D'MS_DEBUG'
1057*53ee8cc1Swenshuai.xielse
1058*53ee8cc1Swenshuai.xiCC_OPTS    += -Os
1059*53ee8cc1Swenshuai.xiCC_DEFS    += -D'MS_OPTIMIZE'
1060*53ee8cc1Swenshuai.xiendif
1061*53ee8cc1Swenshuai.xi
1062*53ee8cc1Swenshuai.xiCC_OPTS    += $(CFG_CC_EXTRA_OPTS)
1063*53ee8cc1Swenshuai.xiCC_DEFS    += -D'CONFIG_ENABLE_MENUCONFIG'
1064*53ee8cc1Swenshuai.xi# **********************************************
1065*53ee8cc1Swenshuai.xi# C Helper Utilities
1066*53ee8cc1Swenshuai.xi# **********************************************
1067*53ee8cc1Swenshuai.xi# Generate relative path for Doxygen
1068*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),linux)
1069*53ee8cc1Swenshuai.xiDXY_SRC     = $(subst $(PROJ)/,,$(PUBINC))
1070*53ee8cc1Swenshuai.xielse
1071*53ee8cc1Swenshuai.xiDXY_SRC     = $(subst $(PROJ)/,,$(LIB_INC) $(SRC_C_LIB) $(SRCDIR_SYS))
1072*53ee8cc1Swenshuai.xiendif
1073*53ee8cc1Swenshuai.xiDXY_SRC    += $(subst $(PROJ)/,,$(foreach dir,$(MXLIB),$(wildcard $(dir)/*.c)))
1074*53ee8cc1Swenshuai.xi
1075*53ee8cc1Swenshuai.xi# Generate options list for Lint
1076*53ee8cc1Swenshuai.xiifeq ($(shell uname -o),Cygwin)                                     #TODO: revise cygwin related
1077*53ee8cc1Swenshuai.xiLINT_LOG    = $(shell cygpath -m $(CURDIR)/lint_test.log)
1078*53ee8cc1Swenshuai.xiLINT_FILES  = $(shell cygpath -m $(CURDIR)/lint_files.lnt)
1079*53ee8cc1Swenshuai.xiLINT_INC    = $(foreach dir,$(shell cygpath -m $(ALL_INC_DIR)),-i"$(dir)") -i"$(shell cygpath -m $(CFG_LINT))"
1080*53ee8cc1Swenshuai.xielse
1081*53ee8cc1Swenshuai.xiLINT_LOG    = $(CURDIR)/lint_test.log
1082*53ee8cc1Swenshuai.xiLINT_FILES  = $(CURDIR)/lint_files.lnt
1083*53ee8cc1Swenshuai.xiLINT_INC    = $(foreach dir,$(ALL_INC_DIR),-I"$(dir)")
1084*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),linux)
1085*53ee8cc1Swenshuai.xiLINT_INC    += -I/tools/arm-2010.09/arm-none-linux-gnueabi/libc/usr/include/
1086*53ee8cc1Swenshuai.xiLINT_INC    += -I/tools/arm-2010.09/lib/gcc/arm-none-linux-gnueabi/4.5.1/include/
1087*53ee8cc1Swenshuai.xiLINT_INC    += -I/tools/arm/Linaro/gcc-linaro-aarch64-linux-gnu-4.9-2014.07_linux/
1088*53ee8cc1Swenshuai.xiendif
1089*53ee8cc1Swenshuai.xiendif
1090*53ee8cc1Swenshuai.xi
1091*53ee8cc1Swenshuai.xi
1092*53ee8cc1Swenshuai.xi# **********************************************
1093*53ee8cc1Swenshuai.xi# Rules
1094*53ee8cc1Swenshuai.xi# **********************************************
1095*53ee8cc1Swenshuai.xi.PHONY : all setup clean bsp depend docgen $(MXLIB-y) $(MXLIB-m) parallel
1096*53ee8cc1Swenshuai.xi
1097*53ee8cc1Swenshuai.xiparallel:
1098*53ee8cc1Swenshuai.xi	@$(MAKE) -s -f parallel.mk
1099*53ee8cc1Swenshuai.xi
1100*53ee8cc1Swenshuai.xi# Project Build
1101*53ee8cc1Swenshuai.xi
1102*53ee8cc1Swenshuai.xiall: parallel
1103*53ee8cc1Swenshuai.xi
1104*53ee8cc1Swenshuai.xilog_gccver:
1105*53ee8cc1Swenshuai.xi	@$(CC) -v > .GCCver.log 2>&1
1106*53ee8cc1Swenshuai.xi
1107*53ee8cc1Swenshuai.xicheck_build_toolver: log_gccver
1108*53ee8cc1Swenshuai.xi	@echo         "### Start checking workspace tool chain version against $(TOOLCHAIN) $(TOOLCHAIN_VER) ###"
1109*53ee8cc1Swenshuai.xi	@if [ '$(shell grep "gcc version $(TOOLCHAIN_VER)" .GCCver.log)' ] ;\
1110*53ee8cc1Swenshuai.xi		then echo "### Pass checking workspace tool chain version ###" ;\
1111*53ee8cc1Swenshuai.xi			rm .GCCver.log ;\
1112*53ee8cc1Swenshuai.xi		else echo -e "\033[0;31m[Error] Tool chain version should be $(TOOLCHAIN) $(TOOLCHAIN_VER). please check it!!\033[0m" ;\
1113*53ee8cc1Swenshuai.xi		echo "Your workspace tool chain version:" ;\
1114*53ee8cc1Swenshuai.xi		$(CC) -v ;\
1115*53ee8cc1Swenshuai.xi		echo "### End checking workspace tool chain version  ###" ;\
1116*53ee8cc1Swenshuai.xi		rm .GCCver.log ;exit 99;\
1117*53ee8cc1Swenshuai.xi	fi
1118*53ee8cc1Swenshuai.xi
1119*53ee8cc1Swenshuai.xi# Library Document Auto Generation
1120*53ee8cc1Swenshuai.xidocgenOneUtopia :
1121*53ee8cc1Swenshuai.xi	rm -f -r                               dxyOneUtopia_files;
1122*53ee8cc1Swenshuai.xi	-mkdir -p                               dxyOneUtopia_files 2> /dev/null;
1123*53ee8cc1Swenshuai.xi	doxygen -u                               bspOneUtopia.dxyfile;
1124*53ee8cc1Swenshuai.xi# Library Package
1125*53ee8cc1Swenshuai.xibsp :
1126*53ee8cc1Swenshuai.xi	@rm -f -r                               $(BSPLIB_PATH)
1127*53ee8cc1Swenshuai.xi	@rm -f -r                               $(BSPINC_PATH)
1128*53ee8cc1Swenshuai.xi	@rm -f -r                               $(BSPBIN_PATH)
1129*53ee8cc1Swenshuai.xi	@rm -f -r                               $(BSPMSC_PATH)
1130*53ee8cc1Swenshuai.xi	-@mkdir -p                              $(BSPLIB_PATH) 2> /dev/null;
1131*53ee8cc1Swenshuai.xi	-@mkdir -p                              $(BSPINC_PATH) 2> /dev/null;
1132*53ee8cc1Swenshuai.xi	-@mkdir -p                              $(BSPBIN_PATH) 2> /dev/null;
1133*53ee8cc1Swenshuai.xi	-@mkdir -p                              $(BSPMSC_PATH) 2> /dev/null;
1134*53ee8cc1Swenshuai.xi	@cp         $(DDI_PATH)/*.$(LIB_EXT)    $(BSPLIB_PATH)
1135*53ee8cc1Swenshuai.xiifeq ($(ByPassOneUtopia),y)
1136*53ee8cc1Swenshuai.xi	@echo -e "\033[41;36mBypass OneUtopia!!!\033[0m"
1137*53ee8cc1Swenshuai.xi	@cp         $(PUB_INC)                  $(BSPINC_PATH)
1138*53ee8cc1Swenshuai.xi	@cp         $(LIB_INC)                  $(BSPINC_PATH)
1139*53ee8cc1Swenshuai.xi	@cp         $(LIB_INC_2)                $(BSPINC_PATH)
1140*53ee8cc1Swenshuai.xi
1141*53ee8cc1Swenshuai.xielse
1142*53ee8cc1Swenshuai.xiifeq ($(CHIP),$(filter $(CHIP),maserati maxim M7821 M7621))
1143*53ee8cc1Swenshuai.xi	@echo -e "\033[41;36m$(CHIP) Enable OneUtopia\033[0m"
1144*53ee8cc1Swenshuai.xi	@sh Reduced.sh api_with_header_file.csv $(shell echo $(PROJ) |sed -e "s/\/build[/]*$$//g") $$Version
1145*53ee8cc1Swenshuai.xielse
1146*53ee8cc1Swenshuai.xi	@cp         $(PUB_INC)                  $(BSPINC_PATH)
1147*53ee8cc1Swenshuai.xi	@cp         $(LIB_INC)                  $(BSPINC_PATH)
1148*53ee8cc1Swenshuai.xi	@cp         $(LIB_INC_2)                $(BSPINC_PATH)
1149*53ee8cc1Swenshuai.xiendif
1150*53ee8cc1Swenshuai.xiendif
1151*53ee8cc1Swenshuai.xi	@cp         $(LIB_FW_BIN)               $(BSPBIN_PATH)
1152*53ee8cc1Swenshuai.xi	@test -f $(BSPLIB_PATH)/libdrvCIPHER.so && ln -s libdrvCIPHER.so $(BSPLIB_PATH)/libdrvAESDMA.so  || { echo ""; }
1153*53ee8cc1Swenshuai.xiifeq ($(CONFIG_API_DAC), y)
1154*53ee8cc1Swenshuai.xi	@cp         $(LIB_MISC)                 $(BSPMSC_PATH)
1155*53ee8cc1Swenshuai.xiendif
1156*53ee8cc1Swenshuai.xi
1157*53ee8cc1Swenshuai.xiifeq ($(EXT_PLATFORM_FLAG),android)
1158*53ee8cc1Swenshuai.xi	@$(AR) crsP $(BSPLIB_PATH)/libutopia.a $(OBJ_PATH)/*
1159*53ee8cc1Swenshuai.xiendif
1160*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),ecos)
1161*53ee8cc1Swenshuai.xiifeq ($(FPU_ENABLE), 1)
1162*53ee8cc1Swenshuai.xi	@echo "Add Dummy Hardfloat Section for check in ...";
1163*53ee8cc1Swenshuai.xi#	for i in `ls $(BSPLIB_PATH)/*.a`; do $(AR) -r $$i $(CHIP)/hardfloat.o; done
1164*53ee8cc1Swenshuai.xiendif
1165*53ee8cc1Swenshuai.xiendif
1166*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),linux)
1167*53ee8cc1Swenshuai.xiifeq ($(LINK_TYPE),dynamic)
1168*53ee8cc1Swenshuai.xi	@$(CC) $(CFG_CC_OPTS) $(LD_OPTS) $(OBJ_PATH)/*.o $(MLOG_LIB_PATH) -o $(PROJ)/bsp/libutopia.so
1169*53ee8cc1Swenshuai.xi	@$(CC) $(CFG_CC_OPTS) $(LD_OPTS) $(OBJ_PATH)/*.o $(MLOG_LIB_PATH) -s -o $(PROJ)/bsp/libutopia.so.strip
1170*53ee8cc1Swenshuai.xiendif
1171*53ee8cc1Swenshuai.xiendif
1172*53ee8cc1Swenshuai.xiifeq ($(CHIP),$(filter $(CHIP),maserati maxim M7821 M7621))
1173*53ee8cc1Swenshuai.xi	@echo "CHIP: $(CHIP) use Oneutopia-docgen";
1174*53ee8cc1Swenshuai.xi	@make docgenOneUtopia
1175*53ee8cc1Swenshuai.xi	@tar zcvf $(CHIP)_$(OS_TYPE)_$(EXT_PLATFORM_FLAG)_$(CPU_NAME)_$(FPU)_$(LINK_TYPE)_$(BLT_TYPE).doc.tgz dxyOneUtopia_files 1> /dev/null
1176*53ee8cc1Swenshuai.xi	@tar zcvf $(CHIP)_$(OS_TYPE)_$(EXT_PLATFORM_FLAG)_$(CPU_NAME)_$(FPU)_$(LINK_TYPE)_$(BLT_TYPE).tgz bsp 1> /dev/null
1177*53ee8cc1Swenshuai.xielse
1178*53ee8cc1Swenshuai.xi	@echo "Make $(CHIP) $(PROJNAME) board support package...";
1179*53ee8cc1Swenshuai.xi	@make docgen
1180*53ee8cc1Swenshuai.xi	@tar zcvf $(CHIP)_$(OS_TYPE)_$(EXT_PLATFORM_FLAG)_$(CPU_NAME)_$(FPU)_$(LINK_TYPE)_$(BLT_TYPE).doc.tgz dxy_files 1> /dev/null
1181*53ee8cc1Swenshuai.xi	@tar zcvf $(CHIP)_$(OS_TYPE)_$(EXT_PLATFORM_FLAG)_$(CPU_NAME)_$(FPU)_$(LINK_TYPE)_$(BLT_TYPE).tgz bsp 1> /dev/null
1182*53ee8cc1Swenshuai.xiendif
1183*53ee8cc1Swenshuai.xi
1184*53ee8cc1Swenshuai.xi# Library Document Auto Generation
1185*53ee8cc1Swenshuai.xidocgen :
1186*53ee8cc1Swenshuai.xi	rm -f -r                                dxy_files;
1187*53ee8cc1Swenshuai.xi	-mkdir -p                               dxy_files 2> /dev/null;
1188*53ee8cc1Swenshuai.xi	@echo 'INPUT += \ ' >                   dxy.infile;
1189*53ee8cc1Swenshuai.xi	@echo $(DXY_SRC) >>                     dxy.infile;
1190*53ee8cc1Swenshuai.xi	doxygen -u                                bsp.dxyfile;
1191*53ee8cc1Swenshuai.xi#	rm -f                                   dxy.infile;
1192*53ee8cc1Swenshuai.xi	@echo DXY_SRC = $(DXY_SRC)
1193*53ee8cc1Swenshuai.xi
1194*53ee8cc1Swenshuai.xi
1195*53ee8cc1Swenshuai.xi# Project Lint Report
1196*53ee8cc1Swenshuai.xilint :
1197*53ee8cc1Swenshuai.xi	@echo "Generate $(CHIP) $(PROJNAME) lint report $(LINT_LOG)...";
1198*53ee8cc1Swenshuai.xi	@echo `grep 'Error' $(LINT_LOG) | wc -l` LINT Errors
1199*53ee8cc1Swenshuai.xi
1200*53ee8cc1Swenshuai.xi
1201*53ee8cc1Swenshuai.xi# Project Library Build
1202*53ee8cc1Swenshuai.xiSYS_MSG :
1203*53ee8cc1Swenshuai.xi	@echo [Makefile][$(notdir $(DDI_LIB))]
1204*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),ecos)
1205*53ee8cc1Swenshuai.xi    @echo OS_INC_DIR = $(OS_INC_DIR)
1206*53ee8cc1Swenshuai.xiendif
1207*53ee8cc1Swenshuai.xi
1208*53ee8cc1Swenshuai.xiSYS_LIB : $(OBJ_C_CHIP) $(OBJ_C_SYS) $(OBJ_C_ASM) $(OBJ_C_LIB)
1209*53ee8cc1Swenshuai.xi	@echo "syslib" $(OBJ_C_SYS)
1210*53ee8cc1Swenshuai.xiifneq ($(MAKE_TYPE),lint)
1211*53ee8cc1Swenshuai.xiifeq ($(LINK_TYPE),dynamic)
1212*53ee8cc1Swenshuai.xi	@$(CC) $(CFG_CC_OPTS) $(LD_OPTS) -o $(DDI_LIB) $^ $(MLOG_LIB_PATH);
1213*53ee8cc1Swenshuai.xi	@$(OBJCOPY) --add-section .mmodule_version=$(ROOTLIB)/msos/version_info $(DDI_LIB)
1214*53ee8cc1Swenshuai.xielse
1215*53ee8cc1Swenshuai.xiifeq ($(EXT_PLATFORM_FLAG),android)
1216*53ee8cc1Swenshuai.xi	@$(AR) crsP $(DDI_LIB) $^;
1217*53ee8cc1Swenshuai.xielse
1218*53ee8cc1Swenshuai.xi	@$(AR) -cru $(DDI_LIB) $^;
1219*53ee8cc1Swenshuai.xiendif
1220*53ee8cc1Swenshuai.xiendif
1221*53ee8cc1Swenshuai.xiendif
1222*53ee8cc1Swenshuai.xi	@date;
1223*53ee8cc1Swenshuai.xi	@echo '*************************************** Building environment *****************************************'
1224*53ee8cc1Swenshuai.xi	@echo '#'
1225*53ee8cc1Swenshuai.xi	@echo '# CHIP[$(CHIP)] OS[$(OS_TYPE)] CPU[$(CPU_NAME)] FPU[$(FPU)] link_type[$(LINK_TYPE)] release_type[$(BLT_TYPE)] Platform[$(EXT_PLATFORM_FLAG)]'
1226*53ee8cc1Swenshuai.xi	@echo '#'
1227*53ee8cc1Swenshuai.xi
1228*53ee8cc1Swenshuai.xiifeq (1,1)
1229*53ee8cc1Swenshuai.xisyslib : check_build_toolver SYS_MSG SYS_LIB
1230*53ee8cc1Swenshuai.xielse
1231*53ee8cc1Swenshuai.xisyslib :
1232*53ee8cc1Swenshuai.xiendif
1233*53ee8cc1Swenshuai.xi
1234*53ee8cc1Swenshuai.xi$(MXLIB-m):
1235*53ee8cc1Swenshuai.xi	@$(MAKE) -s -C $@ lib
1236*53ee8cc1Swenshuai.xi
1237*53ee8cc1Swenshuai.xi$(MXLIB-y) :
1238*53ee8cc1Swenshuai.xi	@$(MAKE) -s -C $@ lib
1239*53ee8cc1Swenshuai.xiifeq ($(PARA), 1)
1240*53ee8cc1Swenshuai.xi	@if [ ! -f $@/cpptestscan.bdf ]; then					\
1241*53ee8cc1Swenshuai.xi		echo ERROR! No $@/cpptestscan.bdf;					\
1242*53ee8cc1Swenshuai.xi	fi
1243*53ee8cc1Swenshuai.xi	@if [ -f $@/cpptestscan.bdf ]; then						\
1244*53ee8cc1Swenshuai.xi		cat $@/cpptestscan.bdf >> $(PROJ)/cpptestscan.bdf;	\
1245*53ee8cc1Swenshuai.xi		rm $@/cpptestscan.bdf;								\
1246*53ee8cc1Swenshuai.xi	fi
1247*53ee8cc1Swenshuai.xiendif
1248*53ee8cc1Swenshuai.xi
1249*53ee8cc1Swenshuai.xi# Project Source Build
1250*53ee8cc1Swenshuai.xi$(OBJ_C_CHIP) $(OBJ_C_ASM) $(OBJ_C_SYS): $(OBJ_PATH)/%.o : %.c
1251*53ee8cc1Swenshuai.xiifneq ($(MAKE_TYPE),lint)
1252*53ee8cc1Swenshuai.xi	@echo [CC] $(notdir $@)
1253*53ee8cc1Swenshuai.xi	@$(CC) $(CC_OPTS) $(CC_DEFS) $(CC_INCS) -o $@ $<;
1254*53ee8cc1Swenshuai.xielse
1255*53ee8cc1Swenshuai.xi	@echo [LINT] $(notdir $<)
1256*53ee8cc1Swenshuai.xiifeq ($(shell uname -o),Cygwin)
1257*53ee8cc1Swenshuai.xi	@$(LINT_CMD) $(CC_DEFS) $(LINT_INC) $(shell cygpath -m $<) >>$(LINT_LOG)
1258*53ee8cc1Swenshuai.xi	@echo $< >>$(LINT_FILES)
1259*53ee8cc1Swenshuai.xielse
1260*53ee8cc1Swenshuai.xi	@$(LINT_CMD) $(CC_DEFS) $(LINT_INC) $< >>$(LINT_LOG)
1261*53ee8cc1Swenshuai.xi	@echo $< >>$(LINT_FILES)
1262*53ee8cc1Swenshuai.xiendif
1263*53ee8cc1Swenshuai.xiendif
1264*53ee8cc1Swenshuai.xi
1265*53ee8cc1Swenshuai.xi#	@$(AR) -cru $(DDI_LIB) $@;
1266*53ee8cc1Swenshuai.xi
1267*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),linux)
1268*53ee8cc1Swenshuai.xi$(OBJ_C_LIB) $(OBJ_C_FS): $(OBJ_PATH)/%.o : %.c
1269*53ee8cc1Swenshuai.xielse
1270*53ee8cc1Swenshuai.xi$(OBJ_C_LIB) : $(OBJ_PATH)/%.o : %.c
1271*53ee8cc1Swenshuai.xiendif
1272*53ee8cc1Swenshuai.xiifneq ($(MAKE_TYPE),lint)
1273*53ee8cc1Swenshuai.xi	@$(CC) $(CC_OPTS) $(CC_DEFS) $(CC_INCS) -o $@ $<;
1274*53ee8cc1Swenshuai.xielse
1275*53ee8cc1Swenshuai.xi	echo [LINT] $(notdir $<)
1276*53ee8cc1Swenshuai.xiifeq ($(shell uname -o),Cygwin)
1277*53ee8cc1Swenshuai.xi	@$(LINT_CMD) $(CC_DEFS) $(LINT_INC) $(shell cygpath -m $<) >>$(LINT_LOG)
1278*53ee8cc1Swenshuai.xi	echo $< >>$(LINT_FILES)
1279*53ee8cc1Swenshuai.xielse
1280*53ee8cc1Swenshuai.xi	@$(LINT_CMD) $(CC_DEFS) $(LINT_INC) $< >>$(LINT_LOG)
1281*53ee8cc1Swenshuai.xi	echo $< >>$(LINT_FILES)
1282*53ee8cc1Swenshuai.xiendif
1283*53ee8cc1Swenshuai.xiendif
1284*53ee8cc1Swenshuai.xi#ifeq ($(OS_TYPE),$(notdir $(<D)))
1285*53ee8cc1Swenshuai.xi
1286*53ee8cc1Swenshuai.xi
1287*53ee8cc1Swenshuai.xi# Single Driver Build
1288*53ee8cc1Swenshuai.xi$(DRV_DIR): check_build_toolver setup
1289*53ee8cc1Swenshuai.xi	@echo [ddi.mk] $@
1290*53ee8cc1Swenshuai.xi	@$(MAKE) -C $(DDIDRV)/$@ clean lib
1291*53ee8cc1Swenshuai.xi	@echo '**************************************** Building environment ****************************************'
1292*53ee8cc1Swenshuai.xi	@echo '#'
1293*53ee8cc1Swenshuai.xi	@echo '# CHIP[$(CHIP)] OS[$(OS_TYPE)] CPU[$(CPU_NAME)] FPU[$(FPU)] link_type[$(LINK_TYPE)] release_type[$(BLT_TYPE)] Platform[$(EXT_PLATFORM_FLAG)]'
1294*53ee8cc1Swenshuai.xi	@echo '#'
1295*53ee8cc1Swenshuai.xi
1296*53ee8cc1Swenshuai.xi$(API_DIR): check_build_toolver setup
1297*53ee8cc1Swenshuai.xi	@echo [ddi.mk] $@
1298*53ee8cc1Swenshuai.xi	@$(MAKE) -s -C $(DDIAPI)/$@ clean lib
1299*53ee8cc1Swenshuai.xi	@echo '**************************************** Building environment ****************************************'
1300*53ee8cc1Swenshuai.xi	@echo '#'
1301*53ee8cc1Swenshuai.xi	@echo '# CHIP[$(CHIP)] OS[$(OS_TYPE)] CPU[$(CPU_NAME)] FPU[$(FPU)] link_type[$(LINK_TYPE)] release_type[$(BLT_TYPE)] Platform[$(EXT_PLATFORM_FLAG)]'
1302*53ee8cc1Swenshuai.xi	@echo '#'
1303*53ee8cc1Swenshuai.xi
1304*53ee8cc1Swenshuai.ximsos_setup: setup
1305*53ee8cc1Swenshuai.xi	@echo [Makefile][libMsOS.$(LIB_EXT)]
1306*53ee8cc1Swenshuai.xi#	@if	[	-f $(OBJ_PATH)/MsOS_$(OS_TYPE).o	];\
1307*53ee8cc1Swenshuai.xi		then\
1308*53ee8cc1Swenshuai.xi		rm $(OBJ_PATH)/MsOS_$(OS_TYPE).o;\
1309*53ee8cc1Swenshuai.xi	fi
1310*53ee8cc1Swenshuai.xi
1311*53ee8cc1Swenshuai.ximsos: check_build_toolver msos_setup $(DDI_PATH)/libMsOS.$(LIB_EXT)
1312*53ee8cc1Swenshuai.xiifneq ($(MAKE_TYPE),lint)
1313*53ee8cc1Swenshuai.xiifeq ($(LINK_TYPE),dynamic)
1314*53ee8cc1Swenshuai.xi	@$(CC)  $(CFG_CC_OPTS) $(LD_OPTS) -o $(DDI_PATH)/libMsOS.$(LIB_EXT) $(OBJ_C_SYS) $(MLOG_LIB_PATH);
1315*53ee8cc1Swenshuai.xi	@$(OBJCOPY) --add-section .mmodule_version=$(ROOTLIB)/msos/version_info $(DDI_PATH)/libMsOS.$(LIB_EXT)
1316*53ee8cc1Swenshuai.xielse
1317*53ee8cc1Swenshuai.xiifeq ($(EXT_PLATFORM_FLAG),android)
1318*53ee8cc1Swenshuai.xi	@$(AR) crsP $(DDI_PATH)/libMsOS.$(LIB_EXT) $(OBJ_C_SYS);
1319*53ee8cc1Swenshuai.xielse
1320*53ee8cc1Swenshuai.xi	@$(AR) -cru $(DDI_PATH)/libMsOS.$(LIB_EXT) $(OBJ_C_SYS);
1321*53ee8cc1Swenshuai.xiendif
1322*53ee8cc1Swenshuai.xiendif
1323*53ee8cc1Swenshuai.xiendif
1324*53ee8cc1Swenshuai.xi
1325*53ee8cc1Swenshuai.xi$(DDI_PATH)/libMsOS.$(LIB_EXT) : $(OBJ_C_SYS)
1326*53ee8cc1Swenshuai.xi
1327*53ee8cc1Swenshuai.xibuild_env: $(DRV_DIR)
1328*53ee8cc1Swenshuai.xi	@echo 'haha'
1329*53ee8cc1Swenshuai.xi
1330*53ee8cc1Swenshuai.ximsfs_setup: setup
1331*53ee8cc1Swenshuai.xi	@echo [Makefile][libMsFS.$(LIB_EXT)]
1332*53ee8cc1Swenshuai.xi
1333*53ee8cc1Swenshuai.ximsfs: msfs_setup $(DDI_PATH)/libMsFS.$(LIB_EXT)
1334*53ee8cc1Swenshuai.xiifneq ($(MAKE_TYPE),lint)
1335*53ee8cc1Swenshuai.xiifeq ($(LINK_TYPE),dynamic)
1336*53ee8cc1Swenshuai.xi	@$(CC)  $(CFG_CC_OPTS) $(LD_OPTS) -o $(DDI_PATH)/libMsFS.$(LIB_EXT) $(OBJ_C_FS);
1337*53ee8cc1Swenshuai.xielse
1338*53ee8cc1Swenshuai.xiifeq ($(EXT_PLATFORM_FLAG),android)
1339*53ee8cc1Swenshuai.xi	@$(AR) crsP $(DDI_PATH)/libMsFS.$(LIB_EXT) $(OBJ_C_FS);
1340*53ee8cc1Swenshuai.xielse
1341*53ee8cc1Swenshuai.xi	@$(AR) -cru $(DDI_PATH)/libMsFS.$(LIB_EXT) $(OBJ_C_FS);
1342*53ee8cc1Swenshuai.xiendif
1343*53ee8cc1Swenshuai.xiendif
1344*53ee8cc1Swenshuai.xiendif
1345*53ee8cc1Swenshuai.xi
1346*53ee8cc1Swenshuai.xi$(DDI_PATH)/libMsFS.$(LIB_EXT) : $(OBJ_C_FS)
1347*53ee8cc1Swenshuai.xi
1348*53ee8cc1Swenshuai.xi# Project Setup
1349*53ee8cc1Swenshuai.xisetup :
1350*53ee8cc1Swenshuai.xiifeq ($(CHIP),$(filter $(CHIP),maserati maxim M7821 M7621))
1351*53ee8cc1Swenshuai.xi	@echo -e "\033[41;36m $(shell echo $(PROJ) |sed -e "s/\/build[/]*$$//g") \033[0m"
1352*53ee8cc1Swenshuai.xi	@sh MXlibBk.sh $(shell echo $(PROJ) |sed -e "s/\/build[/]*$$//g")
1353*53ee8cc1Swenshuai.xi	@cp $(PROJ)/MsVersion.h $(ROOTLIB)/include/MsVersion.h
1354*53ee8cc1Swenshuai.xiendif
1355*53ee8cc1Swenshuai.xi	@cp $(ROOTLIB)/include/UFO/UFO_$(CHIP).h $(ROOTLIB)/include/UFO.h
1356*53ee8cc1Swenshuai.xi	@sed -i -e 's/#define UFO_PUBLIC_HEADER.*/#define UFO_PUBLIC_HEADER_700/g' $(PUBINC)/UFO.h
1357*53ee8cc1Swenshuai.xiifeq ($(STRUCT_PACK),y)
1358*53ee8cc1Swenshuai.xi	@sed -i -e 's/#define DLL_PACKED.*/#define DLL_PACKED __attribute__((__packed__))/g' $(PUBINC)/MsTypes.h
1359*53ee8cc1Swenshuai.xielse
1360*53ee8cc1Swenshuai.xi	@sed -i -e 's/#define DLL_PACKED.*/#define DLL_PACKED/g' $(PUBINC)/MsTypes.h
1361*53ee8cc1Swenshuai.xiendif
1362*53ee8cc1Swenshuai.xi	-@mkdir -p $(OBJ_PATH) 2> /dev/null;
1363*53ee8cc1Swenshuai.xi	-@mkdir -p $(BIN_PATH) 2> /dev/null;
1364*53ee8cc1Swenshuai.xi	-@mkdir -p $(DDI_PATH) 2> /dev/null;
1365*53ee8cc1Swenshuai.xi	@echo "Make $(CHIP) $(PROJNAME) library...";
1366*53ee8cc1Swenshuai.xi	@date;
1367*53ee8cc1Swenshuai.xiifeq ($(MAKE_TYPE),lint)
1368*53ee8cc1Swenshuai.xi	@rm -rf $(LINT_FILES)
1369*53ee8cc1Swenshuai.xi	@rm -rf $(LINT_LOG)
1370*53ee8cc1Swenshuai.xiendif
1371*53ee8cc1Swenshuai.xi
1372*53ee8cc1Swenshuai.xi
1373*53ee8cc1Swenshuai.xi# Kernel Driver
1374*53ee8cc1Swenshuai.xi# ## LKM2K, KERNELDIR, and EXTRA_CFLAGS were defined in utpa2k.mk
1375*53ee8cc1Swenshuai.xiCFG_2K_DEFS = $(CFG_CC_DEFS)
1376*53ee8cc1Swenshuai.xi
1377*53ee8cc1Swenshuai.xiinclude $(PROJ)/utpa2k.mk
1378*53ee8cc1Swenshuai.xi
1379*53ee8cc1Swenshuai.xiEXTRA_CFLAGS += $(foreach dir, $(ALL_INC_DIR), -I$(dir))
1380*53ee8cc1Swenshuai.xiEXTRA_CFLAGS += -I$(AUTOCONFIG)
1381*53ee8cc1Swenshuai.xiifeq ($(BLT_TYPE),debug)
1382*53ee8cc1Swenshuai.xiEXTRA_CFLAGS    += -D'MS_DEBUG'
1383*53ee8cc1Swenshuai.xielse
1384*53ee8cc1Swenshuai.xiEXTRA_CFLAGS    += -D'MS_OPTIMIZE'
1385*53ee8cc1Swenshuai.xiendif
1386*53ee8cc1Swenshuai.xiutpa2k-srcs = $(foreach dir, $(LKM2K), $(wildcard $(dir)/*.c))
1387*53ee8cc1Swenshuai.xiutpa2k-objs-tmp := $(patsubst %.c,%.o,$(utpa2k-srcs))
1388*53ee8cc1Swenshuai.xiutpa2k-objs := $(subst $(PWD), , $(utpa2k-objs-tmp))
1389*53ee8cc1Swenshuai.xiobj-m := utpa2k.o
1390*53ee8cc1Swenshuai.xi#obj-m := hello.o
1391*53ee8cc1Swenshuai.xi
1392*53ee8cc1Swenshuai.xiEXTRA_CFLAGS += -D'SUPPORT_EVD=1'
1393*53ee8cc1Swenshuai.xiEXTRA_CFLAGS += -D'SUPPORT_NEW_MEM_LAYOUT'
1394*53ee8cc1Swenshuai.xi
1395*53ee8cc1Swenshuai.xikdrv:
1396*53ee8cc1Swenshuai.xi	@cp $(ROOTLIB)/include/UFO/UFO_$(CHIP).h $(ROOTLIB)/include/UFO.h
1397*53ee8cc1Swenshuai.xi	@sed -i -e 's/#define UFO_PUBLIC_HEADER.*/#define UFO_PUBLIC_HEADER_700/g' $(PUBINC)/UFO.h
1398*53ee8cc1Swenshuai.xiifeq ($(STRUCT_PACK),y)
1399*53ee8cc1Swenshuai.xi	@sed -i -e 's/#define DLL_PACKED.*/#define DLL_PACKED __attribute__((__packed__))/g' $(PUBINC)/MsTypes.h
1400*53ee8cc1Swenshuai.xielse
1401*53ee8cc1Swenshuai.xi	@sed -i -e 's/#define DLL_PACKED.*/#define DLL_PACKED/g' $(PUBINC)/MsTypes.h
1402*53ee8cc1Swenshuai.xiendif
1403*53ee8cc1Swenshuai.xi	$(MAKE) -C $(KERNELDIR) M=$(PWD) modules EXTRA_CFLAGS="$(EXTRA_CFLAGS)"
1404*53ee8cc1Swenshuai.xi
1405*53ee8cc1Swenshuai.xi####lsy++
1406*53ee8cc1Swenshuai.xiifeq ($(ExportAllSymbol),y)
1407*53ee8cc1Swenshuai.xi	@sh ./CreateKsym.sh
1408*53ee8cc1Swenshuai.xi	$(MAKE) -s clean
1409*53ee8cc1Swenshuai.xi	@cp $(ROOTLIB)/include/UFO/UFO_$(CHIP).h $(ROOTLIB)/include/UFO.h
1410*53ee8cc1Swenshuai.xi	@sed -i -e 's/#define UFO_PUBLIC_HEADER.*/#define UFO_PUBLIC_HEADER_700/g' $(PUBINC)/UFO.h
1411*53ee8cc1Swenshuai.xi	$(MAKE) -C $(KERNELDIR) M=$(PWD) modules EXTRA_CFLAGS="$(EXTRA_CFLAGS)"
1412*53ee8cc1Swenshuai.xiendif
1413*53ee8cc1Swenshuai.xi
1414*53ee8cc1Swenshuai.xi# Project Clean
1415*53ee8cc1Swenshuai.xiclean :
1416*53ee8cc1Swenshuai.xi	@rm -f $(ROOTLIB)/include/UFO.h
1417*53ee8cc1Swenshuai.xi	@$(foreach dir, $(MXLIB-y), $(MAKE) -s -C $(dir) clean;)
1418*53ee8cc1Swenshuai.xi	@$(foreach dir, $(MXLIB-m), $(MAKE) -s -C $(dir) clean;)
1419*53ee8cc1Swenshuai.xi	@rm -rf $(OBJ_PATH)
1420*53ee8cc1Swenshuai.xi	@rm -rf $(BIN_PATH)
1421*53ee8cc1Swenshuai.xi	@rm -rf $(DDI_PATH)
1422*53ee8cc1Swenshuai.xi	@rm -rf $(PKG_DIR)/include/$(CHIP);
1423*53ee8cc1Swenshuai.xi	@rm -rf $(PKG_DIR)/os;
1424*53ee8cc1Swenshuai.xi	@rm -rf lint_files
1425*53ee8cc1Swenshuai.xi	@rm -rf dxy_files
1426*53ee8cc1Swenshuai.xi	@rm -rf bsp
1427*53ee8cc1Swenshuai.xi	@rm -f *.tgz
1428*53ee8cc1Swenshuai.xi	@rm -f dxy.*
1429*53ee8cc1Swenshuai.xi	@find $(MODULESPATH) \
1430*53ee8cc1Swenshuai.xi		\( -name '*.[os]' -o -name '*.ko' -o -name '.*.cmd' \
1431*53ee8cc1Swenshuai.xi		-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
1432*53ee8cc1Swenshuai.xi		-o -name '*.symtypes' -o -name '*.symvers' -o -name 'modules.order' \
1433*53ee8cc1Swenshuai.xi		-o -name 'Module.markers' -o -name '.tmp_*.o.*' \) \
1434*53ee8cc1Swenshuai.xi		-type f -print | xargs rm -f
1435*53ee8cc1Swenshuai.xi	@find . \
1436*53ee8cc1Swenshuai.xi		\( -name 'utpa2k.ko' -o -name 'utpa2k.mod.c' \
1437*53ee8cc1Swenshuai.xi		-o -name 'utpa2k.mod.o' -o -name 'utpa2k.o' \
1438*53ee8cc1Swenshuai.xi		-o -name '.utpa2k.*' -o -name 'modules.order' -o -name 'Module.symvers' \) \
1439*53ee8cc1Swenshuai.xi		-type f -print | xargs rm -f
1440*53ee8cc1Swenshuai.xi	@rm -rf .tmp_versions
1441*53ee8cc1Swenshuai.xiifeq ($(PARA), 1)
1442*53ee8cc1Swenshuai.xi	@rm -f $(PROJ)/cpptestscan.bdf
1443*53ee8cc1Swenshuai.xiendif
1444*53ee8cc1Swenshuai.xi	@echo "Clean $(CHIP) $(PROJNAME) library..."
1445*53ee8cc1Swenshuai.xi
1446*53ee8cc1Swenshuai.xi
1447*53ee8cc1Swenshuai.xi# Project Dependence
1448*53ee8cc1Swenshuai.xidepend :
1449*53ee8cc1Swenshuai.xi	$(CC) $(CC_OPTS) $(CC_DEFS) $(CC_INCS) -M $(SRC_C_CHIP) $(SRC_C_ASM) $(SRC_C_LIB) > $(BIN_PATH)/depend.mk
1450*53ee8cc1Swenshuai.xi
1451*53ee8cc1Swenshuai.xi
1452*53ee8cc1Swenshuai.xi# Project Dependence Full version
1453*53ee8cc1Swenshuai.xidep :
1454*53ee8cc1Swenshuai.xi	$(CC) $(CC_OPTS) $(CC_DEFS) $(CC_INCS) -M $(SRC_C_CHIP) $(SRC_C_ASM) $(SRC_C_LIB) > $(BIN_PATH)/depend.mk
1455*53ee8cc1Swenshuai.xi	cat $(BIN_PATH)/depend.mk | sed -e 's/\(.*\)\.o/\$$\(OBJ_PATH\)\/\1.o/g' > depend.mk
1456*53ee8cc1Swenshuai.xi
1457*53ee8cc1Swenshuai.xi
1458*53ee8cc1Swenshuai.xi-include depend.mk
1459*53ee8cc1Swenshuai.xi
1460*53ee8cc1Swenshuai.xi# **********************************************
1461*53ee8cc1Swenshuai.xi# Menuconfig
1462*53ee8cc1Swenshuai.xi# **********************************************
1463*53ee8cc1Swenshuai.xiPHONY += all
1464*53ee8cc1Swenshuai.xi_all: all
1465*53ee8cc1Swenshuai.xi
1466*53ee8cc1Swenshuai.xisrctree		:= $(if $(KBUILD_SRC),$(KBUILD_SRC),$(PWD))
1467*53ee8cc1Swenshuai.xi#src		:= $(srctree)
1468*53ee8cc1Swenshuai.xi
1469*53ee8cc1Swenshuai.xiexport srctree objtree
1470*53ee8cc1Swenshuai.xi
1471*53ee8cc1Swenshuai.xiKCONFIG_CONFIG	?= .config
1472*53ee8cc1Swenshuai.xiexport KCONFIG_CONFIG
1473*53ee8cc1Swenshuai.xi
1474*53ee8cc1Swenshuai.xi# SHELL used by kbuild
1475*53ee8cc1Swenshuai.xiCONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
1476*53ee8cc1Swenshuai.xi	  else if [ -x /bin/bash ]; then echo /bin/bash; \
1477*53ee8cc1Swenshuai.xi	  else echo sh; fi ; fi)
1478*53ee8cc1Swenshuai.xi
1479*53ee8cc1Swenshuai.xiHOSTCC       = gcc
1480*53ee8cc1Swenshuai.xiHOSTCXX      = g++
1481*53ee8cc1Swenshuai.xiHOSTCFLAGS   = -Wall -Wmissing-prototypes -Wstrict-prototypes -Os -fomit-frame-pointer
1482*53ee8cc1Swenshuai.xiHOSTCXXFLAGS = -Os
1483*53ee8cc1Swenshuai.xi
1484*53ee8cc1Swenshuai.xi# Beautify output
1485*53ee8cc1Swenshuai.xi# ---------------------------------------------------------------------------
1486*53ee8cc1Swenshuai.xi#
1487*53ee8cc1Swenshuai.xi# Normally, we echo the whole command before executing it. By making
1488*53ee8cc1Swenshuai.xi# that echo $($(quiet)$(cmd)), we now have the possibility to set
1489*53ee8cc1Swenshuai.xi# $(quiet) to choose other forms of output instead, e.g.
1490*53ee8cc1Swenshuai.xi#
1491*53ee8cc1Swenshuai.xi#         quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@
1492*53ee8cc1Swenshuai.xi#         cmd_cc_o_c       = $(CC) $(c_flags) -c -o $@ $<
1493*53ee8cc1Swenshuai.xi#
1494*53ee8cc1Swenshuai.xi# If $(quiet) is empty, the whole command will be printed.
1495*53ee8cc1Swenshuai.xi# If it is set to "quiet_", only the short version will be printed.
1496*53ee8cc1Swenshuai.xi# If it is set to "silent_", nothing will be printed at all, since
1497*53ee8cc1Swenshuai.xi# the variable $(silent_cmd_cc_o_c) doesn't exist.
1498*53ee8cc1Swenshuai.xi#
1499*53ee8cc1Swenshuai.xi# A simple variant is to prefix commands with $(Q) - that's useful
1500*53ee8cc1Swenshuai.xi# for commands that shall be hidden in non-verbose mode.
1501*53ee8cc1Swenshuai.xi#
1502*53ee8cc1Swenshuai.xi#	$(Q)ln $@ :<
1503*53ee8cc1Swenshuai.xi#
1504*53ee8cc1Swenshuai.xi# If KBUILD_VERBOSE equals 0 then the above command will be hidden.
1505*53ee8cc1Swenshuai.xi# If KBUILD_VERBOSE equals 1 then the above command is displayed.
1506*53ee8cc1Swenshuai.xi
1507*53ee8cc1Swenshuai.xiifeq ($(KBUILD_VERBOSE),1)
1508*53ee8cc1Swenshuai.xi  quiet =
1509*53ee8cc1Swenshuai.xi  Q =
1510*53ee8cc1Swenshuai.xielse
1511*53ee8cc1Swenshuai.xi  quiet=quiet_
1512*53ee8cc1Swenshuai.xi  Q = @
1513*53ee8cc1Swenshuai.xiendif
1514*53ee8cc1Swenshuai.xi
1515*53ee8cc1Swenshuai.xi# If the user is running make -s (silent mode), suppress echoing of
1516*53ee8cc1Swenshuai.xi# commands
1517*53ee8cc1Swenshuai.xi
1518*53ee8cc1Swenshuai.xiifneq ($(findstring s,$(MAKEFLAGS)),)
1519*53ee8cc1Swenshuai.xi  quiet=silent_
1520*53ee8cc1Swenshuai.xiendif
1521*53ee8cc1Swenshuai.xi
1522*53ee8cc1Swenshuai.xiexport quiet Q KBUILD_VERBOSE
1523*53ee8cc1Swenshuai.xi
1524*53ee8cc1Swenshuai.xi
1525*53ee8cc1Swenshuai.xi# Look for make include files relative to root of kernel src
1526*53ee8cc1Swenshuai.xiMAKEFLAGS += --include-dir=$(srctree)
1527*53ee8cc1Swenshuai.xi
1528*53ee8cc1Swenshuai.xi# We need some generic definitions (do not try to remake the file).
1529*53ee8cc1Swenshuai.xi$(srctree)/scripts/Kbuild.include: ;
1530*53ee8cc1Swenshuai.xiinclude $(srctree)/scripts/Kbuild.include
1531*53ee8cc1Swenshuai.xi
1532*53ee8cc1Swenshuai.xi# Make variables (CC, etc...)
1533*53ee8cc1Swenshuai.xi
1534*53ee8cc1Swenshuai.xiAWK		= awk
1535*53ee8cc1Swenshuai.xi
1536*53ee8cc1Swenshuai.xiexport HOSTCC
1537*53ee8cc1Swenshuai.xi
1538*53ee8cc1Swenshuai.xi# ===========================================================================
1539*53ee8cc1Swenshuai.xi# Rules shared between *config targets and build targets
1540*53ee8cc1Swenshuai.xi
1541*53ee8cc1Swenshuai.xi# Basic helpers built in scripts/
1542*53ee8cc1Swenshuai.xiPHONY += scripts_basic
1543*53ee8cc1Swenshuai.xiscripts_basic:
1544*53ee8cc1Swenshuai.xi	$(Q)$(MAKE) $(build)=scripts/basic
1545*53ee8cc1Swenshuai.xi	$(Q)rm -f .tmp_quiet_recordmcount
1546*53ee8cc1Swenshuai.xi
1547*53ee8cc1Swenshuai.xi# To avoid any implicit rule to kick in, define an empty command.
1548*53ee8cc1Swenshuai.xiscripts/basic/%: scripts_basic ;
1549*53ee8cc1Swenshuai.xi
1550*53ee8cc1Swenshuai.xiPHONY += outputmakefile
1551*53ee8cc1Swenshuai.xi# outputmakefile generates a Makefile in the output directory, if using a
1552*53ee8cc1Swenshuai.xi# separate output directory. This allows convenient use of make in the
1553*53ee8cc1Swenshuai.xi# output directory.
1554*53ee8cc1Swenshuai.xioutputmakefile:
1555*53ee8cc1Swenshuai.xi
1556*53ee8cc1Swenshuai.xi
1557*53ee8cc1Swenshuai.xi# To make sure we do not include .config for any of the *config targets
1558*53ee8cc1Swenshuai.xi# catch them early, and hand them over to scripts/kconfig/Makefile
1559*53ee8cc1Swenshuai.xi# It is allowed to specify more targets when calling make, including
1560*53ee8cc1Swenshuai.xi# mixing *config targets and build targets.
1561*53ee8cc1Swenshuai.xi# For example 'make oldconfig all'.
1562*53ee8cc1Swenshuai.xi# Detect when mixed targets is specified, and make a second invocation
1563*53ee8cc1Swenshuai.xi# of make so .config is not included in this case either (for *config).
1564*53ee8cc1Swenshuai.xi
1565*53ee8cc1Swenshuai.xi
1566*53ee8cc1Swenshuai.xiconfig-targets := 0
1567*53ee8cc1Swenshuai.ximixed-targets  := 0
1568*53ee8cc1Swenshuai.xidot-config     := 1
1569*53ee8cc1Swenshuai.xi
1570*53ee8cc1Swenshuai.xiifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
1571*53ee8cc1Swenshuai.xi	ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
1572*53ee8cc1Swenshuai.xi		dot-config := 0
1573*53ee8cc1Swenshuai.xi	endif
1574*53ee8cc1Swenshuai.xiendif
1575*53ee8cc1Swenshuai.xi
1576*53ee8cc1Swenshuai.xiifeq ($(KBUILD_EXTMOD),)
1577*53ee8cc1Swenshuai.xi        ifneq ($(filter config %config,$(MAKECMDGOALS)),)
1578*53ee8cc1Swenshuai.xi                config-targets := 1
1579*53ee8cc1Swenshuai.xi                ifneq ($(filter-out config %config,$(MAKECMDGOALS)),)
1580*53ee8cc1Swenshuai.xi                        mixed-targets := 1
1581*53ee8cc1Swenshuai.xi                endif
1582*53ee8cc1Swenshuai.xi        endif
1583*53ee8cc1Swenshuai.xiendif
1584*53ee8cc1Swenshuai.xi
1585*53ee8cc1Swenshuai.xiifeq ($(mixed-targets),1)
1586*53ee8cc1Swenshuai.xi# ===========================================================================
1587*53ee8cc1Swenshuai.xi# We're called with mixed targets (*config and build targets).
1588*53ee8cc1Swenshuai.xi# Handle them one by one.
1589*53ee8cc1Swenshuai.xi
1590*53ee8cc1Swenshuai.xi%:: FORCE
1591*53ee8cc1Swenshuai.xi	$(Q)$(MAKE) -C $(srctree) KBUILD_SRC= $@
1592*53ee8cc1Swenshuai.xi
1593*53ee8cc1Swenshuai.xielse
1594*53ee8cc1Swenshuai.xiifeq ($(config-targets),1)
1595*53ee8cc1Swenshuai.xi# ===========================================================================
1596*53ee8cc1Swenshuai.xi# *config targets only - make sure prerequisites are updated, and descend
1597*53ee8cc1Swenshuai.xi# in scripts/kconfig to make the *config target
1598*53ee8cc1Swenshuai.xi
1599*53ee8cc1Swenshuai.xi# Read arch specific Makefile to set KBUILD_DEFCONFIG as needed.
1600*53ee8cc1Swenshuai.xi# KBUILD_DEFCONFIG may point out an alternative default configuration
1601*53ee8cc1Swenshuai.xi# used for 'make defconfig'
1602*53ee8cc1Swenshuai.xiexport KBUILD_DEFCONFIG KBUILD_KCONFIG
1603*53ee8cc1Swenshuai.xi
1604*53ee8cc1Swenshuai.xiconfig: scripts_basic outputmakefile FORCE
1605*53ee8cc1Swenshuai.xi	$(Q)mkdir -p include/config
1606*53ee8cc1Swenshuai.xi	$(Q)$(MAKE) $(build)=scripts/kconfig $@
1607*53ee8cc1Swenshuai.xi
1608*53ee8cc1Swenshuai.xi%config: scripts_basic outputmakefile FORCE
1609*53ee8cc1Swenshuai.xi	$(Q)mkdir -p include/config
1610*53ee8cc1Swenshuai.xi	$(Q)$(MAKE) $(build)=scripts/kconfig $@
1611*53ee8cc1Swenshuai.xi
1612*53ee8cc1Swenshuai.xielse
1613*53ee8cc1Swenshuai.xi
1614*53ee8cc1Swenshuai.xi
1615*53ee8cc1Swenshuai.xi# Read in config
1616*53ee8cc1Swenshuai.xi-include include/config/auto.conf
1617*53ee8cc1Swenshuai.xi
1618*53ee8cc1Swenshuai.xi# Read in dependencies to all Kconfig* files, make sure to run
1619*53ee8cc1Swenshuai.xi# oldconfig if changes are detected.
1620*53ee8cc1Swenshuai.xi-include include/config/auto.conf.cmd
1621*53ee8cc1Swenshuai.xi
1622*53ee8cc1Swenshuai.xi# To avoid any implicit rule to kick in, define an empty command
1623*53ee8cc1Swenshuai.xi$(KCONFIG_CONFIG) include/config/auto.conf.cmd: ;
1624*53ee8cc1Swenshuai.xi
1625*53ee8cc1Swenshuai.xi# If .config is newer than include/config/auto.conf, someone tinkered
1626*53ee8cc1Swenshuai.xi# with it and forgot to run make oldconfig.
1627*53ee8cc1Swenshuai.xi# if auto.conf.cmd is missing then we are probably in a cleaned tree so
1628*53ee8cc1Swenshuai.xi# we execute the config step to be sure to catch updated Kconfig files
1629*53ee8cc1Swenshuai.xiinclude/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd
1630*53ee8cc1Swenshuai.xi	$(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig
1631*53ee8cc1Swenshuai.xi
1632*53ee8cc1Swenshuai.xi
1633*53ee8cc1Swenshuai.xiendif #ifeq ($(config-targets),1)
1634*53ee8cc1Swenshuai.xiendif #ifeq ($(mixed-targets),1)
1635*53ee8cc1Swenshuai.xi
1636*53ee8cc1Swenshuai.xiPHONY += checkstack kernelrelease kernelversion
1637*53ee8cc1Swenshuai.xi
1638*53ee8cc1Swenshuai.xiPHONY += FORCE
1639*53ee8cc1Swenshuai.xiFORCE:
1640*53ee8cc1Swenshuai.xi
1641*53ee8cc1Swenshuai.xi# Declare the contents of the .PHONY variable as phony.  We keep that
1642*53ee8cc1Swenshuai.xi# information in a variable so we can use it in if_changed and friends.
1643*53ee8cc1Swenshuai.xi.PHONY: $(PHONY)
1644