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