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 DDI 19*53ee8cc1Swenshuai.xi# 20*53ee8cc1Swenshuai.xi# 21*53ee8cc1Swenshuai.xi################################################################################ 22*53ee8cc1Swenshuai.xi 23*53ee8cc1Swenshuai.xiunexport HAL_DIR 24*53ee8cc1Swenshuai.xiunexport DRV_SUB 25*53ee8cc1Swenshuai.xiunexport DRV_NAME 26*53ee8cc1Swenshuai.xiunexport DRV_SRC 27*53ee8cc1Swenshuai.xiunexport DRV_CC_INCS 28*53ee8cc1Swenshuai.xi 29*53ee8cc1Swenshuai.xi 30*53ee8cc1Swenshuai.xi# ********************************************** 31*53ee8cc1Swenshuai.xi# DRV Name 32*53ee8cc1Swenshuai.xi# ********************************************** 33*53ee8cc1Swenshuai.xi#DRV_NAME = ddd 34*53ee8cc1Swenshuai.xi#DRV_SUB = \ 35*53ee8cc1Swenshuai.xi# sss 36*53ee8cc1Swenshuai.xi 37*53ee8cc1Swenshuai.xi# ********************************************** 38*53ee8cc1Swenshuai.xi# HAL Source Files 39*53ee8cc1Swenshuai.xi# ********************************************** 40*53ee8cc1Swenshuai.xi#HAL_DIR = \ 41*53ee8cc1Swenshuai.xi# hhh \ 42*53ee8cc1Swenshuai.xi 43*53ee8cc1Swenshuai.xi 44*53ee8cc1Swenshuai.xi# ********************************************** 45*53ee8cc1Swenshuai.xi# Rules 46*53ee8cc1Swenshuai.xi# ********************************************** 47*53ee8cc1Swenshuai.xi# if API_NAME is defined the driver will be built into API library 48*53ee8cc1Swenshuai.xi# else driver will be built in single driver library 49*53ee8cc1Swenshuai.xiifneq ($(API_NAME), ) 50*53ee8cc1Swenshuai.xiLIB_NAME = api$(API_NAME) 51*53ee8cc1Swenshuai.xielse 52*53ee8cc1Swenshuai.xiLIB_NAME = drv$(DRV_NAME) 53*53ee8cc1Swenshuai.xiendif 54*53ee8cc1Swenshuai.xi 55*53ee8cc1Swenshuai.xiDRV_SRC = $(wildcard $(CURDIR)/*.c) 56*53ee8cc1Swenshuai.xiDRV_SRC += $(foreach dir, $(DRV_SUB), $(wildcard $(CURDIR)/$(dir)/*.c)) 57*53ee8cc1Swenshuai.xiDRV_OBJ = $(foreach file, $(notdir $(patsubst %.c, %.o, $(DRV_SRC))), $(OBJ_PATH)/$(file)) 58*53ee8cc1Swenshuai.xiDRV_IMPORT_SRC = $(foreach dir, $(CURDIR), $(wildcard $(CURDIR)/obj_import/$(OS_TYPE)/$(MCU_TYPE)/*.src)) 59*53ee8cc1Swenshuai.xiDRV_IMPORT_OBJ = $(foreach file, $(notdir $(patsubst %.src, %.o, $(DRV_IMPORT_SRC))), $(OBJ_PATH)/$(file)) 60*53ee8cc1Swenshuai.xiHAL_SRC = $(foreach dir, $(HAL_DIR), $(wildcard $(DDIHAL)/$(CHIP)/$(dir)/*.c)) 61*53ee8cc1Swenshuai.xiHAL_SRC_S = $(foreach dir, $(HAL_DIR), $(wildcard $(DDIHAL)/$(CHIP)/$(dir)/*.s)) 62*53ee8cc1Swenshuai.xiHAL_OBJ = $(foreach file, $(notdir $(patsubst %.c, %.o, $(HAL_SRC))), $(OBJ_PATH)/$(file)) 63*53ee8cc1Swenshuai.xiHAL_OBJ_S = $(foreach file, $(notdir $(patsubst %.s, %.o, $(HAL_SRC_S))), $(OBJ_PATH)/$(file)) 64*53ee8cc1Swenshuai.xiHAL_IMPORT_SRC = $(foreach dir, $(HAL_DIR), $(wildcard $(DDIHAL)/$(CHIP)/$(dir)/obj_import/$(OS_TYPE)/$(MCU_TYPE)/*.src)) 65*53ee8cc1Swenshuai.xiHAL_IMPORT_OBJ = $(foreach file, $(notdir $(patsubst %.src, %.o, $(HAL_IMPORT_SRC))), $(OBJ_PATH)/$(file)) 66*53ee8cc1Swenshuai.xiDRV_INCDIR = $(CURDIR) $(foreach dir,$(DRV_SUB),$(CURDIR)/$(dir)) $(foreach dir,$(HAL_DIR),$(DDIHAL)/$(CHIP)/$(dir)) 67*53ee8cc1Swenshuai.xiDRV_CC_INCS = $(foreach dir,$(DRV_INCDIR),-I$(dir) -I$(PUBINC)) 68*53ee8cc1Swenshuai.xi 69*53ee8cc1Swenshuai.xiifeq ($(MAKE_TYPE),lint) 70*53ee8cc1Swenshuai.xiifeq ($(shell uname -o),Cygwin) 71*53ee8cc1Swenshuai.xiLINT_INC += $(foreach dir,$(shell cygpath -m $(DRV_INCDIR)),-i"$(dir)") 72*53ee8cc1Swenshuai.xielse 73*53ee8cc1Swenshuai.xiLINT_INC += $(foreach dir,$(DRV_INCDIR),-i"$(dir)") 74*53ee8cc1Swenshuai.xiendif 75*53ee8cc1Swenshuai.xiendif 76*53ee8cc1Swenshuai.xi 77*53ee8cc1Swenshuai.xiHAL_OBJ_T = $(HAL_OBJ:.o=.T) 78*53ee8cc1Swenshuai.xiHAL_IMPORT_OBJ_T = $(HAL_IMPORT_OBJ:.o=.T) 79*53ee8cc1Swenshuai.xiDRV_OBJ_T = $(DRV_OBJ:.o=.T) 80*53ee8cc1Swenshuai.xiDRV_IMPORT_OBJ_T = $(DRV_IMPORT_OBJ:.o=.T) 81*53ee8cc1Swenshuai.xi 82*53ee8cc1Swenshuai.xiVPATH = $(DRV_SUB) $(foreach dir, $(HAL_DIR), $(DDIHAL)/$(CHIP)/$(dir)) 83*53ee8cc1Swenshuai.xi 84*53ee8cc1Swenshuai.xiifeq ("$(UTOPIA_BSP_VERSION)", "") 85*53ee8cc1Swenshuai.xiUTOPIA_BSP_VERSION = 000000 86*53ee8cc1Swenshuai.xielse 87*53ee8cc1Swenshuai.xiCC_DEFS += -DUTOPIA_BSP_VERSION=$(UTOPIA_BSP_VERSION) 88*53ee8cc1Swenshuai.xiendif 89*53ee8cc1Swenshuai.xi 90*53ee8cc1Swenshuai.xiifeq ("$(P4PORT)", "") 91*53ee8cc1Swenshuai.xiSW_VERSION_HAL_$(DRV_NAME) = 0 92*53ee8cc1Swenshuai.xielse 93*53ee8cc1Swenshuai.xiHAL_SW_DIR = $(shell echo $(HAL_DIR) | sed 's/ vpu//g') 94*53ee8cc1Swenshuai.xiSW_VERSION_HAL_$(DRV_NAME) = $(shell p4 changes -m1 ./../../hal/$(CHIP)/$(HAL_SW_DIR)/...\#have | egrep Change | awk '{print $$2}') 95*53ee8cc1Swenshuai.xiifeq ("$(SW_VERSION_HAL_$(DRV_NAME))", "") 96*53ee8cc1Swenshuai.xiSW_VERSION_HAL_$(DRV_NAME) = 0 97*53ee8cc1Swenshuai.xiendif 98*53ee8cc1Swenshuai.xiendif 99*53ee8cc1Swenshuai.xiCC_DEFS += -DSW_VERSION_HAL_$(DRV_NAME)=$(SW_VERSION_HAL_$(DRV_NAME)) 100*53ee8cc1Swenshuai.xi 101*53ee8cc1Swenshuai.xiifeq ("$(P4PORT)", "") 102*53ee8cc1Swenshuai.xiSW_VERSION_DRV_$(DRV_NAME) = 0 103*53ee8cc1Swenshuai.xielse 104*53ee8cc1Swenshuai.xiSW_VERSION_DRV_$(DRV_NAME) = $(shell p4 changes -m1 "./...\#have" | egrep Change | awk '{print $$2}') 105*53ee8cc1Swenshuai.xiifeq ("$(SW_VERSION_DRV_$(DRV_NAME))", "") 106*53ee8cc1Swenshuai.xiSW_VERSION_DRV_$(DRV_NAME) = 0 107*53ee8cc1Swenshuai.xiendif 108*53ee8cc1Swenshuai.xiendif 109*53ee8cc1Swenshuai.xiCC_DEFS += -DSW_VERSION_DRV_$(DRV_NAME)=$(SW_VERSION_DRV_$(DRV_NAME)) 110*53ee8cc1Swenshuai.xi 111*53ee8cc1Swenshuai.xiifeq ("$(HAL_DIR)", "demod") 112*53ee8cc1Swenshuai.xiCC_DEFS += -D$(CHIP) 113*53ee8cc1Swenshuai.xiendif 114*53ee8cc1Swenshuai.xi 115*53ee8cc1Swenshuai.xiall : $(HAL_OBJ_T) $(HAL_IMPORT_OBJ_T) $(DRV_OBJ_T) $(DRV_IMPORT_OBJ_T) 116*53ee8cc1Swenshuai.xi 117*53ee8cc1Swenshuai.xi 118*53ee8cc1Swenshuai.xiifneq ($(MAKE_TYPE),lint) 119*53ee8cc1Swenshuai.xiifeq ($(LINK_TYPE),dynamic) 120*53ee8cc1Swenshuai.xiifneq ($(BUILDING_API),1) 121*53ee8cc1Swenshuai.xi ifeq ($(CONFIG_INCREMENTAL_BUILD),y) 122*53ee8cc1Swenshuai.xi @$(CC) $(CFG_CC_OPTS) $(LD_LIBS_INC) $(LD_OPTS) $(DRV_OBJ) $(DRV_IMPORT_OBJ) $(HAL_OBJ_S) $(HAL_OBJ) $(HAL_IMPORT_OBJ) $(MLOG_LIB_PATH) -s -o $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT) 123*53ee8cc1Swenshuai.xi ifeq ($(CONFIG_VERSION_INFO_EMBADE), y) 124*53ee8cc1Swenshuai.xi @sh $(VERSION)/versionembadder.sh $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT) $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT).temp ./version_info 125*53ee8cc1Swenshuai.xi @rm -f $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT) 126*53ee8cc1Swenshuai.xi @mv -f $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT).temp $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT) 127*53ee8cc1Swenshuai.xi endif 128*53ee8cc1Swenshuai.xi else 129*53ee8cc1Swenshuai.xi @$(CC) $(CFG_CC_OPTS) $(LD_OPTS) $(DRV_OBJ) $(DRV_IMPORT_OBJ) $(HAL_OBJ_S) $(HAL_OBJ) $(HAL_IMPORT_OBJ) $(MLOG_LIB_PATH) -o $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT) 130*53ee8cc1Swenshuai.xi @$(OBJCOPY) --add-section .mmodule_version=./version_info $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT) 131*53ee8cc1Swenshuai.xi ifeq ($(CONFIG_VERSION_INFO_EMBADE), y) 132*53ee8cc1Swenshuai.xi @sh $(VERSION)/versionembadder.sh $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT) $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT).temp ./version_info 133*53ee8cc1Swenshuai.xi @rm -f $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT) 134*53ee8cc1Swenshuai.xi @mv -f $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT).temp $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT) 135*53ee8cc1Swenshuai.xi endif 136*53ee8cc1Swenshuai.xi endif 137*53ee8cc1Swenshuai.xiendif 138*53ee8cc1Swenshuai.xielse 139*53ee8cc1Swenshuai.xi @$(AR) cru $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT) $(DRV_OBJ) $(DRV_IMPORT_OBJ) $(HAL_OBJ) $(HAL_IMPORT_OBJ) 140*53ee8cc1Swenshuai.xi ifeq ($(CONFIG_VERSION_INFO_EMBADE), y) 141*53ee8cc1Swenshuai.xi @sh $(VERSION)/versionembadder.sh $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT) $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT).temp ./version_info 142*53ee8cc1Swenshuai.xi @rm -f $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT) 143*53ee8cc1Swenshuai.xi @mv -f $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT).temp $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT) 144*53ee8cc1Swenshuai.xi endif 145*53ee8cc1Swenshuai.xiifeq ($(BLT_TYPE),retail) 146*53ee8cc1Swenshuai.xi @$(STRIP) -S $(DDI_PATH)/lib$(LIB_NAME).$(LIB_EXT) 147*53ee8cc1Swenshuai.xiendif 148*53ee8cc1Swenshuai.xiendif 149*53ee8cc1Swenshuai.xiendif 150*53ee8cc1Swenshuai.xi 151*53ee8cc1Swenshuai.xiifeq ($(PARA), 1) 152*53ee8cc1Swenshuai.xi @if [ -f $(CURDIR)/cpptestscan.bdf ]; then \ 153*53ee8cc1Swenshuai.xi rm -f $(CURDIR)/cpptestscan.bdf; \ 154*53ee8cc1Swenshuai.xi fi 155*53ee8cc1Swenshuai.xiendif 156*53ee8cc1Swenshuai.xi 157*53ee8cc1Swenshuai.xi 158*53ee8cc1Swenshuai.xiifeq ($(TOOLCHAIN),mips-linux-gnu) 159*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),nos) 160*53ee8cc1Swenshuai.xiSW_MBOOT_FLOW = TRUE 161*53ee8cc1Swenshuai.xiendif 162*53ee8cc1Swenshuai.xiendif 163*53ee8cc1Swenshuai.xi 164*53ee8cc1Swenshuai.xi 165*53ee8cc1Swenshuai.xilib : setup all 166*53ee8cc1Swenshuai.xi 167*53ee8cc1Swenshuai.xi$(DRV_IMPORT_OBJ) : 168*53ee8cc1Swenshuai.xi echo find drv import_obj cp from $(filter %$(notdir $*).src,$(DRV_IMPORT_SRC)) to $@ 169*53ee8cc1Swenshuai.xi cp $(filter %$(notdir $*).src,$(DRV_IMPORT_SRC)) $@ 170*53ee8cc1Swenshuai.xi 171*53ee8cc1Swenshuai.xi$(HAL_IMPORT_OBJ): 172*53ee8cc1Swenshuai.xi echo find hal import_obj cp from $(filter %$(notdir $*).src,$(HAL_IMPORT_SRC)) to $@ 173*53ee8cc1Swenshuai.xi cp $(filter %$(notdir $*).src,$(HAL_IMPORT_SRC)) $@ 174*53ee8cc1Swenshuai.xi 175*53ee8cc1Swenshuai.xi$(HAL_OBJ_S) : $(OBJ_PATH)/%.o : %.s 176*53ee8cc1Swenshuai.xi @echo [AS] $(notdir $<) 177*53ee8cc1Swenshuai.xiifeq ($(MCU_TYPE),arm_ca12) 178*53ee8cc1Swenshuai.xi $(AS) -march=armv7-a -mfpu=neon -o $@ $<; 179*53ee8cc1Swenshuai.xiendif 180*53ee8cc1Swenshuai.xiifeq ($(MCU_TYPE),arm9) 181*53ee8cc1Swenshuai.xi $(AS) -march=armv7-a -mfpu=neon -o $@ $<; 182*53ee8cc1Swenshuai.xiendif 183*53ee8cc1Swenshuai.xiifeq ($(MCU_TYPE),arm_ca7) 184*53ee8cc1Swenshuai.xi $(AS) -march=armv7-a -mfpu=neon -o $@ $<; 185*53ee8cc1Swenshuai.xiendif 186*53ee8cc1Swenshuai.xi 187*53ee8cc1Swenshuai.xi$(DRV_OBJ) $(HAL_OBJ) : $(OBJ_PATH)/%.o : %.c 188*53ee8cc1Swenshuai.xiifneq ($(MAKE_TYPE),lint) 189*53ee8cc1Swenshuai.xi @echo [CC] $(notdir $<) 190*53ee8cc1Swenshuai.xi @$(CC) $(CC_OPTS) $(CC_DEFS) $(CC_INCS) $(DRV_CC_INCS) -o $@ $<; 191*53ee8cc1Swenshuai.xiifeq ($(PARA), 1) 192*53ee8cc1Swenshuai.xi @if [ ! -f $(CURDIR)/cpptestscan.bdf ]; then \ 193*53ee8cc1Swenshuai.xi echo ERROR! No $(CURDIR)/cpptestscan.bdf; \ 194*53ee8cc1Swenshuai.xi fi 195*53ee8cc1Swenshuai.xi @if [ -f $(CURDIR)/cpptestscan.bdf ]; then \ 196*53ee8cc1Swenshuai.xi cat $(CURDIR)/cpptestscan.bdf >> $(PROJ)/cpptestscan.bdf; \ 197*53ee8cc1Swenshuai.xi rm -f $(CURDIR)/cpptestscan.bdf; \ 198*53ee8cc1Swenshuai.xi fi 199*53ee8cc1Swenshuai.xiendif 200*53ee8cc1Swenshuai.xi 201*53ee8cc1Swenshuai.xi 202*53ee8cc1Swenshuai.xielse 203*53ee8cc1Swenshuai.xi @echo [LINT] $(notdir $<) 204*53ee8cc1Swenshuai.xiifeq ($(shell uname -o),Cygwin) 205*53ee8cc1Swenshuai.xi @$(LINT_CMD) $(CC_DEFS) $(LINT_INC) $(shell cygpath -m $<) >>$(LINT_LOG) 206*53ee8cc1Swenshuai.xi# @echo $< >>$(LINT_FILES) 207*53ee8cc1Swenshuai.xielse 208*53ee8cc1Swenshuai.xi @$(LINT_CMD) $(CC_DEFS) $(LINT_INC) $< >>$(LINT_LOG) 209*53ee8cc1Swenshuai.xi# @echo $< >>$(LINT_FILES) 210*53ee8cc1Swenshuai.xiendif 211*53ee8cc1Swenshuai.xiendif 212*53ee8cc1Swenshuai.xi 213*53ee8cc1Swenshuai.xi 214*53ee8cc1Swenshuai.xi$(HAL_OBJ_T) $(HAL_IMPORT_OBJ_T) $(DRV_OBJ_T) $(DRV_IMPORT_OBJ_T): $(DRV_OBJ) $(DRV_IMPORT_OBJ) $(HAL_OBJ_S) $(HAL_OBJ) $(HAL_IMPORT_OBJ) 215*53ee8cc1Swenshuai.xiifeq ($(BUILDING_API),1) 216*53ee8cc1Swenshuai.xi @cp $(@:.T=.o) $@; \ 217*53ee8cc1Swenshuai.xi mkdir -p $(OBJ_PATH)/$(LIB_NAME)_T; \ 218*53ee8cc1Swenshuai.xi mv $@ $(OBJ_PATH)/$(LIB_NAME)_T; 219*53ee8cc1Swenshuai.xiendif 220*53ee8cc1Swenshuai.xi 221*53ee8cc1Swenshuai.xi 222*53ee8cc1Swenshuai.xisetup: 223*53ee8cc1Swenshuai.xiifeq ($(LINK_TYPE),dynamic) 224*53ee8cc1Swenshuai.xi @echo [drv_rule.mk][lib$(LIB_NAME).$(LIB_EXT)] 225*53ee8cc1Swenshuai.xielse 226*53ee8cc1Swenshuai.xi @echo [drv_rule.mk][lib$(LIB_NAME).$(LIB_EXT)] 227*53ee8cc1Swenshuai.xiendif 228*53ee8cc1Swenshuai.xi 229*53ee8cc1Swenshuai.xiclean : 230*53ee8cc1Swenshuai.xi @rm -f $(HAL_OBJ_S) 231*53ee8cc1Swenshuai.xi @rm -f $(HAL_OBJ) 232*53ee8cc1Swenshuai.xi @rm -f $(HAL_IMPORT_OBJ) 233*53ee8cc1Swenshuai.xi @rm -f $(DRV_OBJ) 234*53ee8cc1Swenshuai.xi @rm -f $(DRV_IMPORT_OBJ) 235*53ee8cc1Swenshuai.xi @rm -f $(DDI_PATH)/lib$(LIB_NAME).a 236*53ee8cc1Swenshuai.xi @rm -f $(DDI_PATH)/lib$(LIB_NAME).so 237*53ee8cc1Swenshuai.xi 238*53ee8cc1Swenshuai.xi 239*53ee8cc1Swenshuai.xi 240