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