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