xref: /utopia/UTPA2-700.0.x/projects/project/curry_android/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
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# Environment
31*53ee8cc1Swenshuai.xi# **********************************************
32*53ee8cc1Swenshuai.xiPROJ        = $(CURDIR)
33*53ee8cc1Swenshuai.xiROOT        = $(PROJ)/../..
34*53ee8cc1Swenshuai.xiROOTLIB     = $(ROOT)/mxlib
35*53ee8cc1Swenshuai.xiDDIAPI      = $(ROOTLIB)/api
36*53ee8cc1Swenshuai.xiDDIDRV      = $(ROOTLIB)/drv
37*53ee8cc1Swenshuai.xiDDIHAL      = $(ROOTLIB)/hal
38*53ee8cc1Swenshuai.xiPUBINC      = $(ROOTLIB)/include
39*53ee8cc1Swenshuai.xi
40*53ee8cc1Swenshuai.xiexport PUBINC
41*53ee8cc1Swenshuai.xi# **********************************************
42*53ee8cc1Swenshuai.xi# Import configure file
43*53ee8cc1Swenshuai.xi# Required:
44*53ee8cc1Swenshuai.xi#	$(ROOT), $(ROOTLIB)
45*53ee8cc1Swenshuai.xi# **********************************************
46*53ee8cc1Swenshuai.xi-include config
47*53ee8cc1Swenshuai.xi
48*53ee8cc1Swenshuai.xi
49*53ee8cc1Swenshuai.xi# **********************************************
50*53ee8cc1Swenshuai.xi# Project specific
51*53ee8cc1Swenshuai.xi# **********************************************
52*53ee8cc1Swenshuai.xi# Base Operating System
53*53ee8cc1Swenshuai.xiOS_BUILT    =
54*53ee8cc1Swenshuai.xi
55*53ee8cc1Swenshuai.xi
56*53ee8cc1Swenshuai.xi# **********************************************
57*53ee8cc1Swenshuai.xi# Directories
58*53ee8cc1Swenshuai.xi# **********************************************
59*53ee8cc1Swenshuai.xi# Source files of specific chip in library
60*53ee8cc1Swenshuai.xiSRCDIR_CHIP = \
61*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)                                  \
62*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/bdma                             \
63*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/sem                              \
64*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/mmio                             \
65*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/uart                             \
66*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/irq                              \
67*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/sys                              \
68*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/miu                              \
69*53ee8cc1Swenshuai.xi
70*53ee8cc1Swenshuai.xi# Source files of library
71*53ee8cc1Swenshuai.xiSRCDIR_LIB  = \
72*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/bdma                                     \
73*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/sem                                      \
74*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/mmio                                     \
75*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/mbx/$(OS_TYPE)                           \
76*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/uart                                     \
77*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/irq                                      \
78*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/sys                                      \
79*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/miu                                      \
80*53ee8cc1Swenshuai.xi
81*53ee8cc1Swenshuai.xi
82*53ee8cc1Swenshuai.xiSRCDIR_SYS = \
83*53ee8cc1Swenshuai.xi            $(ROOTLIB)/msos/$(MCU_TYPE)                             \
84*53ee8cc1Swenshuai.xi            $(ROOTLIB)/msos/$(OS_TYPE)                              \
85*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/msos/$(OS_TYPE)                  \
86*53ee8cc1Swenshuai.xi            $(ROOTLIB)/msos/common                                  \
87*53ee8cc1Swenshuai.xi            $(ROOTLIB)/utopia_core/$(OS_TYPE)
88*53ee8cc1Swenshuai.xi
89*53ee8cc1Swenshuai.xiSRCDIR_FS = \
90*53ee8cc1Swenshuai.xi            $(ROOTLIB)/msfs/$(OS_TYPE)                              \
91*53ee8cc1Swenshuai.xi
92*53ee8cc1Swenshuai.xi# Header file of specific chip
93*53ee8cc1Swenshuai.xiINCDIR_CHIP = \
94*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)                                  \
95*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/bdma                             \
96*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/sem                              \
97*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/mmio                             \
98*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/uart                             \
99*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/irq                              \
100*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/sys                              \
101*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/miu                              \
102*53ee8cc1Swenshuai.xi
103*53ee8cc1Swenshuai.xi# Header file of inline assembly in library
104*53ee8cc1Swenshuai.xiINCDIR_ASM  = \
105*53ee8cc1Swenshuai.xi
106*53ee8cc1Swenshuai.xi# Header files of library
107*53ee8cc1Swenshuai.xiINCDIR_LIB  = \
108*53ee8cc1Swenshuai.xi            $(PROJ)                                                 \
109*53ee8cc1Swenshuai.xi            $(ROOTLIB)                                              \
110*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/bdma                                     \
111*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/miu                                      \
112*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/mbx                                      \
113*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/mbx/$(OS_TYPE)                           \
114*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/sem                                      \
115*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/mmio                                     \
116*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/irq                                      \
117*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/sys                                      \
118*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/mmio                                     \
119*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/uart                                     \
120*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)                                  \
121*53ee8cc1Swenshuai.xi            $(ROOTLIB)/msos                                         \
122*53ee8cc1Swenshuai.xi            $(ROOTLIB)/msos/$(OS_TYPE)                              \
123*53ee8cc1Swenshuai.xi            $(ROOTLIB)/utopia_core/                                 \
124*53ee8cc1Swenshuai.xi            $(ROOTLIB)/msfs                                         \
125*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/audio                                    \
126*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/msos/$(OS_TYPE)                  \
127*53ee8cc1Swenshuai.xi
128*53ee8cc1Swenshuai.xiINCDIR_LIB_H = \
129*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/miu                                      \
130*53ee8cc1Swenshuai.xi
131*53ee8cc1Swenshuai.xi# FW binary files of library
132*53ee8cc1Swenshuai.xiBINDIR_LIB  = \
133*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/hvd                              \
134*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/mvd                              \
135*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/rvd                              \
136*53ee8cc1Swenshuai.xi            $(ROOTLIB)/drv/$(CHIP)/rvd                              \
137*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/audsp                            \
138*53ee8cc1Swenshuai.xi            $(ROOTLIB)/hal/$(CHIP)/tsp                              \
139*53ee8cc1Swenshuai.xi
140*53ee8cc1Swenshuai.xiBIN_PATH    = $(PROJ)/bin
141*53ee8cc1Swenshuai.xiOBJ_PATH    = $(PROJ)/obj
142*53ee8cc1Swenshuai.xiBSPLIB_PATH = $(PROJ)/bsp/lib
143*53ee8cc1Swenshuai.xiBSPINC_PATH = $(PROJ)/bsp/include
144*53ee8cc1Swenshuai.xiBSPBIN_PATH = $(PROJ)/bsp/bin
145*53ee8cc1Swenshuai.xi
146*53ee8cc1Swenshuai.xi
147*53ee8cc1Swenshuai.xi# Search source file path
148*53ee8cc1Swenshuai.xiVPATH       = $(SRCDIR_CHIP) $(SRCDIR_SYS) $(SRCDIR_FS) $(SRCDIR_ASM) $(SRCDIR_LIB)
149*53ee8cc1Swenshuai.xi
150*53ee8cc1Swenshuai.xiinclude $(ROOTLIB)/$(CHIP)_android.mk
151*53ee8cc1Swenshuai.xiinclude $(ROOTLIB)/ddi.mk
152*53ee8cc1Swenshuai.xi
153*53ee8cc1Swenshuai.xi# **********************************************
154*53ee8cc1Swenshuai.xi# Image file names
155*53ee8cc1Swenshuai.xi# **********************************************
156*53ee8cc1Swenshuai.xiIMAGE_BIN   = $(BIN_PATH)/$(IMAGENAME).bin
157*53ee8cc1Swenshuai.xiIMAGE_REC   = $(BIN_PATH)/$(IMAGENAME).rec
158*53ee8cc1Swenshuai.xiIMAGE_ELF   = $(BIN_PATH)/$(IMAGENAME).elf
159*53ee8cc1Swenshuai.xiIMAGE_MAP   = $(BIN_PATH)/$(IMAGENAME).map
160*53ee8cc1Swenshuai.xiIMAGE_DIS   = $(BIN_PATH)/$(IMAGENAME).dis
161*53ee8cc1Swenshuai.xiIMAGE_SIZ   = $(BIN_PATH)/$(IMAGENAME).siz
162*53ee8cc1Swenshuai.xiIMAGE_SYM   = $(BIN_PATH)/$(IMAGENAME).sym
163*53ee8cc1Swenshuai.xi
164*53ee8cc1Swenshuai.xi
165*53ee8cc1Swenshuai.xi# **********************************************
166*53ee8cc1Swenshuai.xi# Files to be compiled
167*53ee8cc1Swenshuai.xi# **********************************************
168*53ee8cc1Swenshuai.xiSRC_C_CHIP  = $(foreach dir, $(SRCDIR_CHIP),  $(wildcard $(dir)/*.c))
169*53ee8cc1Swenshuai.xiSRC_C_ASM   = $(foreach dir, $(SRCDIR_ASM),   $(wildcard $(dir)/*.c))
170*53ee8cc1Swenshuai.xiSRC_C_LIB   = $(foreach dir, $(SRCDIR_LIB),   $(wildcard $(dir)/*.c))
171*53ee8cc1Swenshuai.xiSRC_C_SYS   = $(foreach dir, $(SRCDIR_SYS),   $(wildcard $(dir)/*.c))
172*53ee8cc1Swenshuai.xiSRC_C_FS    = $(foreach dir, $(SRCDIR_FS),    $(wildcard $(dir)/*.c))
173*53ee8cc1Swenshuai.xi
174*53ee8cc1Swenshuai.xiOBJ_C_CHIP0 = $(notdir $(patsubst %.c, %.o,   $(SRC_C_CHIP)))
175*53ee8cc1Swenshuai.xiOBJ_C_ASM0  = $(notdir $(patsubst %.c, %.o,   $(SRC_C_ASM) ))
176*53ee8cc1Swenshuai.xiOBJ_C_LIB0  = $(notdir $(patsubst %.c, %.o,   $(SRC_C_LIB) ))
177*53ee8cc1Swenshuai.xiOBJ_C_SYS0  = $(notdir $(patsubst %.c, %.o,   $(SRC_C_SYS) ))
178*53ee8cc1Swenshuai.xiOBJ_C_FS0   = $(notdir $(patsubst %.c, %.o,   $(SRC_C_FS) ))
179*53ee8cc1Swenshuai.xiOBJ_C_CHIP  = $(foreach file, $(OBJ_C_CHIP0), $(OBJ_PATH)/$(file))
180*53ee8cc1Swenshuai.xiOBJ_C_ASM   = $(foreach file, $(OBJ_C_ASM0),  $(OBJ_PATH)/$(file))
181*53ee8cc1Swenshuai.xiOBJ_C_LIB   = $(foreach file, $(OBJ_C_LIB0),  $(OBJ_PATH)/$(file))
182*53ee8cc1Swenshuai.xiOBJ_C_SYS   = $(foreach file, $(OBJ_C_SYS0),  $(OBJ_PATH)/$(file))
183*53ee8cc1Swenshuai.xiOBJ_C_FS    = $(foreach file, $(OBJ_C_FS0),   $(OBJ_PATH)/$(file))
184*53ee8cc1Swenshuai.xi
185*53ee8cc1Swenshuai.xi
186*53ee8cc1Swenshuai.xi# **********************************************
187*53ee8cc1Swenshuai.xi# Libraries
188*53ee8cc1Swenshuai.xi# **********************************************
189*53ee8cc1Swenshuai.xi
190*53ee8cc1Swenshuai.xiDDI_PATH = $(ROOT)/lib/$(CHIP)_$(OS_TYPE)/$(MCU_TYPE)_$(BLT_TYPE)
191*53ee8cc1Swenshuai.xi
192*53ee8cc1Swenshuai.xi
193*53ee8cc1Swenshuai.xi# Standard Libraries Path
194*53ee8cc1Swenshuai.xi
195*53ee8cc1Swenshuai.xi
196*53ee8cc1Swenshuai.xi# Middleware Libraries Path
197*53ee8cc1Swenshuai.xi
198*53ee8cc1Swenshuai.xi
199*53ee8cc1Swenshuai.xi# Libraries
200*53ee8cc1Swenshuai.xiDDI_LIB = $(DDI_PATH)/lib$(OS_TYPE).$(LIB_EXT)
201*53ee8cc1Swenshuai.xi
202*53ee8cc1Swenshuai.xi# Include files of output library
203*53ee8cc1Swenshuai.xiLIB_INC     =
204*53ee8cc1Swenshuai.xiLIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/asm*.h))
205*53ee8cc1Swenshuai.xiLIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/api*.h))
206*53ee8cc1Swenshuai.xiLIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/drv*.h))
207*53ee8cc1Swenshuai.xiLIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/Ms*.h))
208*53ee8cc1Swenshuai.xiLIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/regCHIP.h))
209*53ee8cc1Swenshuai.xiLIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/$(CFG_BOARD).h))
210*53ee8cc1Swenshuai.xiLIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/utopia.h))
211*53ee8cc1Swenshuai.xiLIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/utopia_dapi.h))
212*53ee8cc1Swenshuai.xiLIB_INC    += $(foreach dir, $(INCDIR_LIB), $(wildcard $(dir)/utopia_driver_id.h))
213*53ee8cc1Swenshuai.xi
214*53ee8cc1Swenshuai.xiLIB_INC    += $(foreach dir, $(MXLIB), $(wildcard $(dir)/api*.h))
215*53ee8cc1Swenshuai.xiLIB_INC    += $(foreach dir, $(MXLIB), $(wildcard $(dir)/drv*.h))
216*53ee8cc1Swenshuai.xi
217*53ee8cc1Swenshuai.xi# FW Binary files of output library
218*53ee8cc1Swenshuai.xiLIB_FW_BIN  =
219*53ee8cc1Swenshuai.xiLIB_FW_BIN += $(foreach dir, $(BINDIR_LIB), $(wildcard $(dir)/fw*.bin))
220*53ee8cc1Swenshuai.xiLIB_FW_BIN += $(foreach dir, $(BINDIR_LIB), $(wildcard $(dir)/fw*.dat))
221*53ee8cc1Swenshuai.xiLIB_FW_BIN += $(foreach dir, $(BINDIR_LIB), $(wildcard $(dir)/out_*.bin))
222*53ee8cc1Swenshuai.xiLIB_FW_BIN += $(foreach dir, $(BINDIR_LIB), $(wildcard $(dir)/aucode_*.h))
223*53ee8cc1Swenshuai.xi
224*53ee8cc1Swenshuai.xi# Public include files
225*53ee8cc1Swenshuai.xiPUB_INC    =
226*53ee8cc1Swenshuai.xiPUB_INC    += $(foreach dir, $(PUBINC), $(wildcard $(dir)/*.h))
227*53ee8cc1Swenshuai.xi
228*53ee8cc1Swenshuai.xi# **********************************************
229*53ee8cc1Swenshuai.xi# Compiler and linker options
230*53ee8cc1Swenshuai.xi# **********************************************
231*53ee8cc1Swenshuai.xiANDROID_DIR = $(ANDROID_BUILD_TOP)
232*53ee8cc1Swenshuai.xiOS_INC_DIR  = $(ANDROID_DIR)/bionic/libc/arch-arm/include \
233*53ee8cc1Swenshuai.xi              $(ANDROID_DIR)/bionic/libc/include \
234*53ee8cc1Swenshuai.xi              $(ANDROID_DIR)/bionic/libstdc++/include \
235*53ee8cc1Swenshuai.xi              $(ANDROID_DIR)/bionic/libc/kernel/common \
236*53ee8cc1Swenshuai.xi              $(ANDROID_DIR)/bionic/libc/kernel/arch-arm \
237*53ee8cc1Swenshuai.xi              $(ANDROID_DIR)/bionic/libm/include \
238*53ee8cc1Swenshuai.xi              $(ANDROID_DIR)/bionic/libm/include/arch/arm \
239*53ee8cc1Swenshuai.xi              $(ANDROID_DIR)/bionic/libthread_db/include \
240*53ee8cc1Swenshuai.xi              $(ANDROID_DIR)/system/core/include
241*53ee8cc1Swenshuai.xiOS_LIB_DIR  =
242*53ee8cc1Swenshuai.xi
243*53ee8cc1Swenshuai.xi
244*53ee8cc1Swenshuai.xiALL_INC_DIR = $(INCDIR_ASM) $(INCDIR_CHIP) $(INCDIR_LIB) $(INCDIR_LIB_H) $(OS_INC_DIR)
245*53ee8cc1Swenshuai.xi
246*53ee8cc1Swenshuai.xiCC_INCS     = $(foreach dir, $(ALL_INC_DIR), -I$(dir) -I$(PUBINC))
247*53ee8cc1Swenshuai.xi
248*53ee8cc1Swenshuai.xiCC_DEFS     = $(CFG_CC_DEFS) -D'OS_LINUX' -D'LIB_NAME="$(IMAGENAME).lib"' -D'PWS_AUTOGEN' -D'SK_RELEASE' -D'MS_OPTIMIZE' -D'ANDROID' -D'TV_OS' -D'CONFIG_MANHATTAN'
249*53ee8cc1Swenshuai.xi
250*53ee8cc1Swenshuai.xi# GCC options:
251*53ee8cc1Swenshuai.xiCC_OPTS     = $(CFG_CC_OPTS) -c
252*53ee8cc1Swenshuai.xi
253*53ee8cc1Swenshuai.xi#----------------------------------------------------------------
254*53ee8cc1Swenshuai.xi# thum mode support, but use arm mode to build.
255*53ee8cc1Swenshuai.xiARCH_ARM_HAVE_THUMB_SUPPORT := true
256*53ee8cc1Swenshuai.xiLOCAL_ARM_MODE := arm
257*53ee8cc1Swenshuai.xi
258*53ee8cc1Swenshuai.xi# $(1): os/arch
259*53ee8cc1Swenshuai.xidefine select-android-config-h
260*53ee8cc1Swenshuai.xi$(ANDROID_DIR)/build/core/combo/include/arch/$(1)/AndroidConfig.h
261*53ee8cc1Swenshuai.xiendef
262*53ee8cc1Swenshuai.xi
263*53ee8cc1Swenshuai.xiarch_variant_cflags := -march=armv7-a \
264*53ee8cc1Swenshuai.xi                       -mfloat-abi=softfp \
265*53ee8cc1Swenshuai.xi                       -mfpu=neon
266*53ee8cc1Swenshuai.xi
267*53ee8cc1Swenshuai.xiarch_variant_ldflags := -Wl,--fix-cortex-a8
268*53ee8cc1Swenshuai.xi
269*53ee8cc1Swenshuai.xiCOMMON_GLOBAL_CFLAGS := -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith
270*53ee8cc1Swenshuai.xiCOMMON_GLOBAL_CPPFLAGS := $(COMMON_GLOBAL_CFLAGS) -Wsign-promo
271*53ee8cc1Swenshuai.xiCOMMON_RELEASE_CFLAGS := -DNDEBUG -UDEBUG
272*53ee8cc1Swenshuai.xiCOMMON_RELEASE_CPPFLAGS := $(COMMON_RELEASE_CFLAGS)
273*53ee8cc1Swenshuai.xi
274*53ee8cc1Swenshuai.xiTARGET_ERROR_FLAGS := -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point
275*53ee8cc1Swenshuai.xiTARGET_GLOBAL_CFLAGS := -fno-exceptions -Wno-multichar
276*53ee8cc1Swenshuai.xiTARGET_GLOBAL_CPPFLAGS :=
277*53ee8cc1Swenshuai.xiTARGET_RELEASE_CFLAGS := -O2 -g -fno-strict-aliasing
278*53ee8cc1Swenshuai.xiTARGET_RELEASE_CPPFLAGS :=
279*53ee8cc1Swenshuai.xi
280*53ee8cc1Swenshuai.xi#----------------------------------------------------------------
281*53ee8cc1Swenshuai.xiTARGET_arm_CFLAGS :=    -O2 \
282*53ee8cc1Swenshuai.xi                        -fomit-frame-pointer \
283*53ee8cc1Swenshuai.xi                        -fstrict-aliasing    \
284*53ee8cc1Swenshuai.xi                        -funswitch-loops
285*53ee8cc1Swenshuai.xi
286*53ee8cc1Swenshuai.xi# Modules can choose to compile some source as thumb. As
287*53ee8cc1Swenshuai.xi# non-thumb enabled targets are supported, this is treated
288*53ee8cc1Swenshuai.xi# as a 'hint'. If thumb is not enabled, these files are just
289*53ee8cc1Swenshuai.xi# compiled as ARM.
290*53ee8cc1Swenshuai.xiifeq ($(ARCH_ARM_HAVE_THUMB_SUPPORT),true)
291*53ee8cc1Swenshuai.xiTARGET_thumb_CFLAGS :=  -mthumb \
292*53ee8cc1Swenshuai.xi                        -Os \
293*53ee8cc1Swenshuai.xi                        -fomit-frame-pointer \
294*53ee8cc1Swenshuai.xi                        -fno-strict-aliasing
295*53ee8cc1Swenshuai.xielse
296*53ee8cc1Swenshuai.xiTARGET_thumb_CFLAGS := $(TARGET_arm_CFLAGS)
297*53ee8cc1Swenshuai.xiendif
298*53ee8cc1Swenshuai.xi
299*53ee8cc1Swenshuai.xi# Set FORCE_ARM_DEBUGGING to "true" in your buildspec.mk
300*53ee8cc1Swenshuai.xi# or in your environment to force a full arm build, even for
301*53ee8cc1Swenshuai.xi# files that are normally built as thumb; this can make
302*53ee8cc1Swenshuai.xi# gdb debugging easier.  Don't forget to do a clean build.
303*53ee8cc1Swenshuai.xi#
304*53ee8cc1Swenshuai.xi# NOTE: if you try to build a -O0 build with thumb, several
305*53ee8cc1Swenshuai.xi# of the libraries (libpv, libwebcore, libkjs) need to be built
306*53ee8cc1Swenshuai.xi# with -mlong-calls.  When built at -O0, those libraries are
307*53ee8cc1Swenshuai.xi# too big for a thumb "BL <label>" to go from one end to the other.
308*53ee8cc1Swenshuai.xiifeq ($(FORCE_ARM_DEBUGGING),true)
309*53ee8cc1Swenshuai.xi  TARGET_arm_CFLAGS += -fno-omit-frame-pointer -fno-strict-aliasing
310*53ee8cc1Swenshuai.xi  TARGET_thumb_CFLAGS += -marm -fno-omit-frame-pointer
311*53ee8cc1Swenshuai.xiendif
312*53ee8cc1Swenshuai.xi
313*53ee8cc1Swenshuai.xiifeq ($(strip $(LOCAL_ARM_MODE)),)
314*53ee8cc1Swenshuai.xi    TARGET_ARCH_CFLAGS := $(TARGET_thumb_CFLAGS)
315*53ee8cc1Swenshuai.xielse
316*53ee8cc1Swenshuai.xi    TARGET_ARCH_CFLAGS := $(TARGET_arm_CFLAGS)
317*53ee8cc1Swenshuai.xiendif
318*53ee8cc1Swenshuai.xi
319*53ee8cc1Swenshuai.xiTARGET_GLOBAL_CFLAGS += \
320*53ee8cc1Swenshuai.xi			-msoft-float -fpic -fPIE \
321*53ee8cc1Swenshuai.xi			-ffunction-sections \
322*53ee8cc1Swenshuai.xi			-fdata-sections \
323*53ee8cc1Swenshuai.xi			-funwind-tables \
324*53ee8cc1Swenshuai.xi			-fstack-protector \
325*53ee8cc1Swenshuai.xi			-Wa,--noexecstack \
326*53ee8cc1Swenshuai.xi			-Werror=format-security \
327*53ee8cc1Swenshuai.xi			-D_FORTIFY_SOURCE=1 \
328*53ee8cc1Swenshuai.xi			-fno-short-enums \
329*53ee8cc1Swenshuai.xi			$(arch_variant_cflags)
330*53ee8cc1Swenshuai.xi
331*53ee8cc1Swenshuai.xiandroid_config_h := $(call select-android-config-h,linux-arm)
332*53ee8cc1Swenshuai.xiTARGET_ANDROID_CONFIG_CFLAGS := -include $(android_config_h) -I $(dir $(android_config_h))
333*53ee8cc1Swenshuai.xiTARGET_GLOBAL_CFLAGS += $(TARGET_ANDROID_CONFIG_CFLAGS)
334*53ee8cc1Swenshuai.xi
335*53ee8cc1Swenshuai.xi# This warning causes dalvik not to build with gcc 4.6.x and -Werror.
336*53ee8cc1Swenshuai.xi# We cannot turn it off blindly since the option is not available
337*53ee8cc1Swenshuai.xi# in gcc-4.4.x.  We also want to disable sincos optimization globally
338*53ee8cc1Swenshuai.xi# by turning off the builtin sin function.
339*53ee8cc1Swenshuai.xiifneq ($(filter 4.6 4.6.%, $(shell $(CC) --version)),)
340*53ee8cc1Swenshuai.xiTARGET_GLOBAL_CFLAGS += -Wno-unused-but-set-variable -fno-builtin-sin \
341*53ee8cc1Swenshuai.xi			-fno-strict-volatile-bitfields
342*53ee8cc1Swenshuai.xiendif
343*53ee8cc1Swenshuai.xi
344*53ee8cc1Swenshuai.xi# This is to avoid the dreaded warning compiler message:
345*53ee8cc1Swenshuai.xi#   note: the mangling of 'va_list' has changed in GCC 4.4
346*53ee8cc1Swenshuai.xi#
347*53ee8cc1Swenshuai.xi# The fact that the mangling changed does not affect the NDK ABI
348*53ee8cc1Swenshuai.xi# very fortunately (since none of the exposed APIs used va_list
349*53ee8cc1Swenshuai.xi# in their exported C++ functions). Also, GCC 4.5 has already
350*53ee8cc1Swenshuai.xi# removed the warning from the compiler.
351*53ee8cc1Swenshuai.xi#
352*53ee8cc1Swenshuai.xiTARGET_GLOBAL_CFLAGS += -Wno-psabi
353*53ee8cc1Swenshuai.xi
354*53ee8cc1Swenshuai.xi# We only need thumb interworking in cases where thumb support
355*53ee8cc1Swenshuai.xi# is available in the architecture, and just to be sure, (and
356*53ee8cc1Swenshuai.xi# since sometimes thumb-interwork appears to be default), we
357*53ee8cc1Swenshuai.xi# specifically disable when thumb support is unavailable.
358*53ee8cc1Swenshuai.xiifeq ($(ARCH_ARM_HAVE_THUMB_SUPPORT),true)
359*53ee8cc1Swenshuai.xiTARGET_GLOBAL_CFLAGS += -mthumb-interwork
360*53ee8cc1Swenshuai.xielse
361*53ee8cc1Swenshuai.xiTARGET_GLOBAL_CFLAGS += -mno-thumb-interwork
362*53ee8cc1Swenshuai.xiendif
363*53ee8cc1Swenshuai.xi
364*53ee8cc1Swenshuai.xiTARGET_GLOBAL_CPPFLAGS += -fvisibility-inlines-hidden
365*53ee8cc1Swenshuai.xi
366*53ee8cc1Swenshuai.xi# More flags/options can be added here
367*53ee8cc1Swenshuai.xiTARGET_RELEASE_CFLAGS := \
368*53ee8cc1Swenshuai.xi			-DNDEBUG \
369*53ee8cc1Swenshuai.xi			-g \
370*53ee8cc1Swenshuai.xi			-Wstrict-aliasing=2 \
371*53ee8cc1Swenshuai.xi			-fgcse-after-reload \
372*53ee8cc1Swenshuai.xi			-frerun-cse-after-loop \
373*53ee8cc1Swenshuai.xi			-frename-registers
374*53ee8cc1Swenshuai.xi
375*53ee8cc1Swenshuai.xi
376*53ee8cc1Swenshuai.xiTARGET_GLOBAL_CFLAGS += $(COMMON_GLOBAL_CFLAGS)
377*53ee8cc1Swenshuai.xiTARGET_GLOBAL_CPPFLAGS += $(COMMON_GLOBAL_CPPFLAGS)
378*53ee8cc1Swenshuai.xiTARGET_RELEASE_CFLAGS += $(COMMON_RELEASE_CFLAGS)
379*53ee8cc1Swenshuai.xiTARGET_RELEASE_CPPFLAGS += $(COMMON_RELEASE_CPPFLAGS)
380*53ee8cc1Swenshuai.xi
381*53ee8cc1Swenshuai.xiTARGET_GLOBAL_CFLAGS += $(TARGET_ERROR_FLAGS) $(TARGET_RELEASE_CFLAGS) $(TARGET_ARCH_CFLAGS)
382*53ee8cc1Swenshuai.xiTARGET_GLOBAL_CPPFLAGS += $(TARGET_ERROR_FLAGS) $(TARGET_RELEASE_CPPFLAGS) $(TARGET_ARCH_CFLAGS)
383*53ee8cc1Swenshuai.xi
384*53ee8cc1Swenshuai.xi#----------------------------------------------------------------
385*53ee8cc1Swenshuai.xiCC_OPTS     += $(TARGET_GLOBAL_CFLAGS)
386*53ee8cc1Swenshuai.xi
387*53ee8cc1Swenshuai.xi# AS options:
388*53ee8cc1Swenshuai.xiAS_OPTS     = $(CFG_AS_OPTS) -G0 -O2
389*53ee8cc1Swenshuai.xi
390*53ee8cc1Swenshuai.xi
391*53ee8cc1Swenshuai.xi# LD options:
392*53ee8cc1Swenshuai.xiLD_SCRIPT   =
393*53ee8cc1Swenshuai.xiLD_LIBS     = -L$(DDI_PATH) -L$(OS_LIB_DIR) -L$(CFG_STDLIB_DIR) -T$(LD_SCRIPT)
394*53ee8cc1Swenshuai.xiLD_OPTS     = $(CFG_LD_OPTS)
395*53ee8cc1Swenshuai.xi
396*53ee8cc1Swenshuai.xiTARGET_GLOBAL_LDFLAGS += \
397*53ee8cc1Swenshuai.xi			-Wl,-z,noexecstack \
398*53ee8cc1Swenshuai.xi			-Wl,-z,relro \
399*53ee8cc1Swenshuai.xi			-Wl,-z,now \
400*53ee8cc1Swenshuai.xi			-Wl,--warn-shared-textrel \
401*53ee8cc1Swenshuai.xi			-Wl,--icf=safe \
402*53ee8cc1Swenshuai.xi			$(arch_variant_ldflags)
403*53ee8cc1Swenshuai.xi
404*53ee8cc1Swenshuai.xiLD_OPTS     += $(TARGET_GLOBAL_LDFLAGS)
405*53ee8cc1Swenshuai.xi
406*53ee8cc1Swenshuai.xi
407*53ee8cc1Swenshuai.xi# **********************************************
408*53ee8cc1Swenshuai.xi# C Helper Utilities
409*53ee8cc1Swenshuai.xi# **********************************************
410*53ee8cc1Swenshuai.xi# Generate relative path for Doxygen
411*53ee8cc1Swenshuai.xiDXY_SRC     = $(subst $(PROJ)/,,$(LIB_INC) $(SRC_C_LIB) $(SRCDIR_SYS))
412*53ee8cc1Swenshuai.xiDXY_SRC     += $(subst $(PROJ)/,,$(foreach dir,$(MXLIB),$(wildcard $(dir)/*.c)))
413*53ee8cc1Swenshuai.xi
414*53ee8cc1Swenshuai.xi# Generate options list for Lint
415*53ee8cc1Swenshuai.xiifeq ($(shell uname -o),Cygwin)                                     #TODO: revise cygwin related
416*53ee8cc1Swenshuai.xiLINT_LOG    = $(shell cygpath -m $(CURDIR)/lint_test.log)
417*53ee8cc1Swenshuai.xiLINT_FILES  = $(shell cygpath -m $(CURDIR)/lint_files.lnt)
418*53ee8cc1Swenshuai.xiLINT_INC    = $(foreach dir,$(shell cygpath -m $(ALL_INC_DIR)),-i"$(dir)") -i"$(shell cygpath -m $(CFG_LINT))"
419*53ee8cc1Swenshuai.xielse
420*53ee8cc1Swenshuai.xiLINT_LOG    = $(CURDIR)/lint_test.log
421*53ee8cc1Swenshuai.xiLINT_FILES  = $(CURDIR)/lint_files.lnt
422*53ee8cc1Swenshuai.xiLINT_INC    = $(foreach dir,$(ALL_INC_DIR),-i"$(dir)") -i"$(CFG_LINT)"
423*53ee8cc1Swenshuai.xiLINT_INC    += -i"$(CURDIR)/../../tools/lint/aeon_include"
424*53ee8cc1Swenshuai.xiLINT_INC    += -i"$(CURDIR)/../../tools/lint/mips-linux-gnu_include"
425*53ee8cc1Swenshuai.xiLINT_INC    += -i"$(CURDIR)/../../tools/lint/mips-sde-elf_include"
426*53ee8cc1Swenshuai.xiendif
427*53ee8cc1Swenshuai.xi
428*53ee8cc1Swenshuai.xi
429*53ee8cc1Swenshuai.xi# **********************************************
430*53ee8cc1Swenshuai.xi# Rules
431*53ee8cc1Swenshuai.xi# **********************************************
432*53ee8cc1Swenshuai.xi.PHONY : all setup clean bsp depend docgen $(MXLIB)
433*53ee8cc1Swenshuai.xi
434*53ee8cc1Swenshuai.xi
435*53ee8cc1Swenshuai.xi# Project Build
436*53ee8cc1Swenshuai.xiall :  setup $(MXLIB) syslib
437*53ee8cc1Swenshuai.xi
438*53ee8cc1Swenshuai.xi# Library Package
439*53ee8cc1Swenshuai.xibsp :
440*53ee8cc1Swenshuai.xi	@rm -f -r                               $(BSPLIB_PATH)
441*53ee8cc1Swenshuai.xi	@rm -f -r                               $(BSPINC_PATH)
442*53ee8cc1Swenshuai.xi	@rm -f -r                               $(BSPBIN_PATH)
443*53ee8cc1Swenshuai.xi	-@mkdir -p                              $(BSPLIB_PATH) 2> /dev/null;
444*53ee8cc1Swenshuai.xi	-@mkdir -p                              $(BSPINC_PATH) 2> /dev/null;
445*53ee8cc1Swenshuai.xi	-@mkdir -p                              $(BSPBIN_PATH) 2> /dev/null;
446*53ee8cc1Swenshuai.xi	@cp         $(DDI_PATH)/*.$(LIB_EXT)    $(BSPLIB_PATH)
447*53ee8cc1Swenshuai.xi	@cp         $(LIB_INC)                  $(BSPINC_PATH)
448*53ee8cc1Swenshuai.xi	@cp         $(PUB_INC)                  $(BSPINC_PATH)
449*53ee8cc1Swenshuai.xi	@cp         $(LIB_FW_BIN)               $(BSPBIN_PATH)
450*53ee8cc1Swenshuai.xi	@$(AR) crsP $(BSPLIB_PATH)/libutopia.a $(OBJ_PATH)/*
451*53ee8cc1Swenshuai.xi	@echo "Make $(CHIP) $(PROJNAME) board support package...";
452*53ee8cc1Swenshuai.xi
453*53ee8cc1Swenshuai.xi# Library Document Auto Generation
454*53ee8cc1Swenshuai.xidocgen :
455*53ee8cc1Swenshuai.xi	rm -f -r                                dxy_files;
456*53ee8cc1Swenshuai.xi	-mkdir -p                               dxy_files 2> /dev/null;
457*53ee8cc1Swenshuai.xi	@echo 'INPUT += \ ' >                   dxy.infile;
458*53ee8cc1Swenshuai.xi	@echo $(DXY_SRC) >>                     dxy.infile;
459*53ee8cc1Swenshuai.xi	doxygen                                 $(IMAGENAME).dxyfile;
460*53ee8cc1Swenshuai.xi#	rm -f                                   dxy.infile;
461*53ee8cc1Swenshuai.xi#	@echo DXY_SRC = $(DXY_SRC)
462*53ee8cc1Swenshuai.xi
463*53ee8cc1Swenshuai.xi
464*53ee8cc1Swenshuai.xi# Project Lint Report
465*53ee8cc1Swenshuai.xilint :
466*53ee8cc1Swenshuai.xi	@echo "Generate $(CHIP) $(PROJNAME) lint report $(LINT_LOG)...";
467*53ee8cc1Swenshuai.xi	@echo `grep 'Error' $(LINT_LOG) | wc -l` LINT Errors
468*53ee8cc1Swenshuai.xi
469*53ee8cc1Swenshuai.xi
470*53ee8cc1Swenshuai.xi# Project Library Build
471*53ee8cc1Swenshuai.xiSYS_MSG :
472*53ee8cc1Swenshuai.xi	@echo [Makefile][$(notdir $(DDI_LIB))]
473*53ee8cc1Swenshuai.xi
474*53ee8cc1Swenshuai.xiSYS_LIB : $(OBJ_C_CHIP) $(OBJ_C_SYS) $(OBJ_C_ASM) $(OBJ_C_LIB)
475*53ee8cc1Swenshuai.xi#Add section :MsOS
476*53ee8cc1Swenshuai.xi	@$(OBJCOPY) --add-section .mmodule_version=$(ROOTLIB)/msos/version_info $(dir $<)MsOS_$(OS_TYPE).o
477*53ee8cc1Swenshuai.xiifneq ($(MAKE_TYPE),lint)
478*53ee8cc1Swenshuai.xiifeq ($(LINK_TYPE),dynamic)
479*53ee8cc1Swenshuai.xi	@$(CC) $(CFG_CC_OPTS) $(LD_OPTS) -o $(DDI_LIB) $^;
480*53ee8cc1Swenshuai.xielse
481*53ee8cc1Swenshuai.xi	@$(AR) crsP $(DDI_LIB) $^;
482*53ee8cc1Swenshuai.xiendif
483*53ee8cc1Swenshuai.xiendif
484*53ee8cc1Swenshuai.xi	@date;
485*53ee8cc1Swenshuai.xi
486*53ee8cc1Swenshuai.xisyslib : SYS_MSG SYS_LIB
487*53ee8cc1Swenshuai.xi
488*53ee8cc1Swenshuai.xi$(MXLIB) :
489*53ee8cc1Swenshuai.xi	@echo [$(CHIP)_android.mk][$(notdir $@)]
490*53ee8cc1Swenshuai.xi	@$(MAKE) -s -C $@ lib
491*53ee8cc1Swenshuai.xiifeq ($(PARA), 1)
492*53ee8cc1Swenshuai.xi	@if [ ! -f $@/cpptestscan.bdf ]; then					\
493*53ee8cc1Swenshuai.xi		echo ERROR! No $@/cpptestscan.bdf;					\
494*53ee8cc1Swenshuai.xi	fi
495*53ee8cc1Swenshuai.xi	@if [ -f $@/cpptestscan.bdf ]; then						\
496*53ee8cc1Swenshuai.xi		cat $@/cpptestscan.bdf >> $(PROJ)/cpptestscan.bdf;	\
497*53ee8cc1Swenshuai.xi		rm $@/cpptestscan.bdf;								\
498*53ee8cc1Swenshuai.xi	fi
499*53ee8cc1Swenshuai.xiendif
500*53ee8cc1Swenshuai.xi
501*53ee8cc1Swenshuai.xi# Project Source Build
502*53ee8cc1Swenshuai.xi$(OBJ_C_CHIP) $(OBJ_C_ASM) $(OBJ_C_SYS) : $(OBJ_PATH)/%.o : %.c
503*53ee8cc1Swenshuai.xiifneq ($(MAKE_TYPE),lint)
504*53ee8cc1Swenshuai.xi	@echo [CC] $(notdir $@)
505*53ee8cc1Swenshuai.xi	@$(CC) $(CC_OPTS) $(CC_DEFS) $(CC_INCS) -o $@ $<;
506*53ee8cc1Swenshuai.xielse
507*53ee8cc1Swenshuai.xi	@echo [LINT] $(notdir $<)
508*53ee8cc1Swenshuai.xiifeq ($(shell uname -o),Cygwin)
509*53ee8cc1Swenshuai.xi	@$(LINT_CMD) $(CC_DEFS) $(LINT_INC) $(shell cygpath -m $<) >>$(LINT_LOG)
510*53ee8cc1Swenshuai.xi	@echo $< >>$(LINT_FILES)
511*53ee8cc1Swenshuai.xielse
512*53ee8cc1Swenshuai.xi	@$(LINT_CMD) $(CC_DEFS) $(LINT_INC) $< >>$(LINT_LOG)
513*53ee8cc1Swenshuai.xi	@echo $< >>$(LINT_FILES)
514*53ee8cc1Swenshuai.xiendif
515*53ee8cc1Swenshuai.xiendif
516*53ee8cc1Swenshuai.xi
517*53ee8cc1Swenshuai.xi#	@$(AR) -cru $(DDI_LIB) $@;
518*53ee8cc1Swenshuai.xi
519*53ee8cc1Swenshuai.xi$(OBJ_C_LIB) $(OBJ_C_FS): $(OBJ_PATH)/%.o : %.c
520*53ee8cc1Swenshuai.xiifneq ($(MAKE_TYPE),lint)
521*53ee8cc1Swenshuai.xi	@$(CC) $(CC_OPTS) $(CC_DEFS) $(CC_INCS) -o $@ $<;
522*53ee8cc1Swenshuai.xielse
523*53ee8cc1Swenshuai.xi	echo [LINT] $(notdir $<)
524*53ee8cc1Swenshuai.xiifeq ($(shell uname -o),Cygwin)
525*53ee8cc1Swenshuai.xi	@$(LINT_CMD) $(CC_DEFS) $(LINT_INC) $(shell cygpath -m $<) >>$(LINT_LOG)
526*53ee8cc1Swenshuai.xi	echo $< >>$(LINT_FILES)
527*53ee8cc1Swenshuai.xielse
528*53ee8cc1Swenshuai.xi	@$(LINT_CMD) $(CC_DEFS) $(LINT_INC) $< >>$(LINT_LOG)
529*53ee8cc1Swenshuai.xi	echo $< >>$(LINT_FILES)
530*53ee8cc1Swenshuai.xiendif
531*53ee8cc1Swenshuai.xiendif
532*53ee8cc1Swenshuai.xi#ifeq ($(OS_TYPE),$(notdir $(<D)))
533*53ee8cc1Swenshuai.xi	@$(OBJCOPY) --add-section .mmodule_version=$(subst /$(OS_TYPE),,$(dir $<D))version_info $@
534*53ee8cc1Swenshuai.xi
535*53ee8cc1Swenshuai.xi# Single Driver Build
536*53ee8cc1Swenshuai.xi$(DRV_DIR): setup
537*53ee8cc1Swenshuai.xi	@echo [ddi.mk] $@
538*53ee8cc1Swenshuai.xi	@$(MAKE) -s -C $(DDIDRV)/$@ clean lib
539*53ee8cc1Swenshuai.xi
540*53ee8cc1Swenshuai.xi$(API_DIR): setup
541*53ee8cc1Swenshuai.xi	@echo [ddi.mk] $@
542*53ee8cc1Swenshuai.xi	@$(MAKE) -s -C $(DDIAPI)/$@ clean lib
543*53ee8cc1Swenshuai.xi
544*53ee8cc1Swenshuai.ximsos_setup: setup
545*53ee8cc1Swenshuai.xi	@echo [Makefile][libMsOS.$(LIB_EXT)]
546*53ee8cc1Swenshuai.xi	@if	[	-f $(OBJ_PATH)/MsOS_$(OS_TYPE).o	];\
547*53ee8cc1Swenshuai.xi		then\
548*53ee8cc1Swenshuai.xi		rm $(OBJ_PATH)/MsOS_$(OS_TYPE).o;\
549*53ee8cc1Swenshuai.xi	fi
550*53ee8cc1Swenshuai.xi
551*53ee8cc1Swenshuai.ximsos: msos_setup $(DDI_PATH)/libMsOS.$(LIB_EXT)
552*53ee8cc1Swenshuai.xiifneq ($(MAKE_TYPE),lint)
553*53ee8cc1Swenshuai.xiifeq ($(LINK_TYPE),dynamic)
554*53ee8cc1Swenshuai.xi	@$(CC)  $(CFG_CC_OPTS) $(LD_OPTS) -o $(DDI_PATH)/libMsOS.$(LIB_EXT) $(OBJ_C_SYS);
555*53ee8cc1Swenshuai.xi	@$(OBJCOPY) --add-section .mmodule_version=$(ROOTLIB)/msos/version_info $(DDI_PATH)/libMsOS.$(LIB_EXT)
556*53ee8cc1Swenshuai.xielse
557*53ee8cc1Swenshuai.xi	@$(AR) crsP $(DDI_PATH)/libMsOS.$(LIB_EXT) $(OBJ_C_SYS);
558*53ee8cc1Swenshuai.xiendif
559*53ee8cc1Swenshuai.xiendif
560*53ee8cc1Swenshuai.xi
561*53ee8cc1Swenshuai.xi$(DDI_PATH)/libMsOS.$(LIB_EXT) : $(OBJ_C_SYS)
562*53ee8cc1Swenshuai.xi
563*53ee8cc1Swenshuai.xi
564*53ee8cc1Swenshuai.ximsfs_setup: setup
565*53ee8cc1Swenshuai.xi	@echo [Makefile][libMsFS.$(LIB_EXT)]
566*53ee8cc1Swenshuai.xi
567*53ee8cc1Swenshuai.ximsfs: msfs_setup $(DDI_PATH)/libMsFS.$(LIB_EXT)
568*53ee8cc1Swenshuai.xiifneq ($(MAKE_TYPE),lint)
569*53ee8cc1Swenshuai.xiifeq ($(LINK_TYPE),dynamic)
570*53ee8cc1Swenshuai.xi	@$(CC)  $(CFG_CC_OPTS) $(LD_OPTS) -o $(DDI_PATH)/libMsFS.$(LIB_EXT) $(OBJ_C_FS);
571*53ee8cc1Swenshuai.xielse
572*53ee8cc1Swenshuai.xi	@$(AR) crsP $(DDI_PATH)/libMsFS.$(LIB_EXT) $(OBJ_C_FS);
573*53ee8cc1Swenshuai.xiendif
574*53ee8cc1Swenshuai.xiendif
575*53ee8cc1Swenshuai.xi
576*53ee8cc1Swenshuai.xi$(DDI_PATH)/libMsFS.$(LIB_EXT) : $(OBJ_C_FS)
577*53ee8cc1Swenshuai.xi
578*53ee8cc1Swenshuai.xi# Project Setup
579*53ee8cc1Swenshuai.xisetup :
580*53ee8cc1Swenshuai.xi	-@mkdir -p $(OBJ_PATH) 2> /dev/null;
581*53ee8cc1Swenshuai.xi	-@mkdir -p $(BIN_PATH) 2> /dev/null;
582*53ee8cc1Swenshuai.xi	-@mkdir -p $(DDI_PATH) 2> /dev/null;
583*53ee8cc1Swenshuai.xi	@echo "Make $(CHIP) $(PROJNAME) library...";
584*53ee8cc1Swenshuai.xi	@date;
585*53ee8cc1Swenshuai.xiifeq ($(MAKE_TYPE),lint)
586*53ee8cc1Swenshuai.xi	@rm -rf $(LINT_FILES)
587*53ee8cc1Swenshuai.xi	@rm -rf $(LINT_LOG)
588*53ee8cc1Swenshuai.xiendif
589*53ee8cc1Swenshuai.xi
590*53ee8cc1Swenshuai.xi
591*53ee8cc1Swenshuai.xi# Project Clean
592*53ee8cc1Swenshuai.xiclean :
593*53ee8cc1Swenshuai.xi	@$(foreach dir, $(MXLIB), $(MAKE) -s -C $(dir) clean;)
594*53ee8cc1Swenshuai.xi	@rm -rf $(OBJ_PATH)
595*53ee8cc1Swenshuai.xi	@rm -rf $(BIN_PATH)
596*53ee8cc1Swenshuai.xi	@rm -rf $(DDI_PATH)
597*53ee8cc1Swenshuai.xi	@rm -rf $(PKG_DIR)/include/$(CHIP);
598*53ee8cc1Swenshuai.xi	@rm -rf $(PKG_DIR)/os;
599*53ee8cc1Swenshuai.xi	@rm -rf lint_files
600*53ee8cc1Swenshuai.xi	@rm -rf dxy_files
601*53ee8cc1Swenshuai.xi	@rm -rf bsp
602*53ee8cc1Swenshuai.xi	@rm -f *.tgz
603*53ee8cc1Swenshuai.xi	@rm -f dxy.*
604*53ee8cc1Swenshuai.xiifeq ($(PARA), 1)
605*53ee8cc1Swenshuai.xi	@rm -f $(PROJ)/cpptestscan.bdf
606*53ee8cc1Swenshuai.xiendif
607*53ee8cc1Swenshuai.xi	@echo "Clean $(CHIP) $(PROJNAME) library..."
608*53ee8cc1Swenshuai.xi
609*53ee8cc1Swenshuai.xi
610*53ee8cc1Swenshuai.xi# Project Dependence
611*53ee8cc1Swenshuai.xidepend :
612*53ee8cc1Swenshuai.xi	$(CC) $(CC_OPTS) $(CC_DEFS) $(CC_INCS) -M $(SRC_C_CHIP) $(SRC_C_ASM) $(SRC_C_LIB) > $(BIN_PATH)/depend.mk
613*53ee8cc1Swenshuai.xi
614*53ee8cc1Swenshuai.xi
615*53ee8cc1Swenshuai.xi# Project Dependence Full version
616*53ee8cc1Swenshuai.xidep :
617*53ee8cc1Swenshuai.xi	$(CC) $(CC_OPTS) $(CC_DEFS) $(CC_INCS) -M $(SRC_C_CHIP) $(SRC_C_ASM) $(SRC_C_LIB) > $(BIN_PATH)/depend.mk
618*53ee8cc1Swenshuai.xi	cat $(BIN_PATH)/depend.mk | sed -e 's/\(.*\)\.o/\$$\(OBJ_PATH\)\/\1.o/g' > depend.mk
619*53ee8cc1Swenshuai.xi
620*53ee8cc1Swenshuai.xi
621*53ee8cc1Swenshuai.xi-include depend.mk
622