1*53ee8cc1Swenshuai.xi######################################################################### 2*53ee8cc1Swenshuai.xi# 3*53ee8cc1Swenshuai.xi# Makefile used for building application. 4*53ee8cc1Swenshuai.xi# 5*53ee8cc1Swenshuai.xi# The default target (all) builds application in three formats : 6*53ee8cc1Swenshuai.xi# venus.rec : Image in S-record format. 7*53ee8cc1Swenshuai.xi# venus.bin : Image in binary format. 8*53ee8cc1Swenshuai.xi# venus.elf : Image in ELF format. 9*53ee8cc1Swenshuai.xi# venus.map : Linker generated map file. 10*53ee8cc1Swenshuai.xi# venus.dis : Disassembly of image. 11*53ee8cc1Swenshuai.xi# venus.siz : Sizes of sections. 12*53ee8cc1Swenshuai.xi# venus.sym : Symbols. 13*53ee8cc1Swenshuai.xi# 14*53ee8cc1Swenshuai.xi# Other targets are : 15*53ee8cc1Swenshuai.xi# clean : Deletes all files generated by makefile. 16*53ee8cc1Swenshuai.xi# depend : Builds dependency file. 17*53ee8cc1Swenshuai.xi# 18*53ee8cc1Swenshuai.xi######################################################################### 19*53ee8cc1Swenshuai.xi 20*53ee8cc1Swenshuai.xi# ********************************************** 21*53ee8cc1Swenshuai.xi# Build Options 22*53ee8cc1Swenshuai.xi# ********************************************** 23*53ee8cc1Swenshuai.xi 24*53ee8cc1Swenshuai.xiDRIVERNAME = mvd 25*53ee8cc1Swenshuai.xi 26*53ee8cc1Swenshuai.xi# Chip: u2 / u3 / t2 / t3 27*53ee8cc1Swenshuai.xiCHIP = t2 28*53ee8cc1Swenshuai.xi 29*53ee8cc1Swenshuai.xi# MCU: aeon / mips4ke / mips34k 30*53ee8cc1Swenshuai.xiMCU_TYPE = aeon 31*53ee8cc1Swenshuai.xi 32*53ee8cc1Swenshuai.xi# OS: ecos / linux / nos 33*53ee8cc1Swenshuai.xiOS_TYPE = nos 34*53ee8cc1Swenshuai.xi 35*53ee8cc1Swenshuai.xi# Version: Debug or Retail 36*53ee8cc1Swenshuai.xiVERSION = Retail 37*53ee8cc1Swenshuai.xi 38*53ee8cc1Swenshuai.xi# Makefile for DVB system 39*53ee8cc1Swenshuai.xiTV_SYSTEM = DVB 40*53ee8cc1Swenshuai.xi 41*53ee8cc1Swenshuai.xiENDIAN = EL 42*53ee8cc1Swenshuai.xi 43*53ee8cc1Swenshuai.xi# Country/Region, temporarily for DVB only 44*53ee8cc1Swenshuai.xiDVB_REGION_UNDEFINED = 0 # invalid setting 45*53ee8cc1Swenshuai.xiDVB_REGION_UK = 1 # UK 46*53ee8cc1Swenshuai.xiDVB_REGION_GERMANY = 2 # Germany 47*53ee8cc1Swenshuai.xi 48*53ee8cc1Swenshuai.xiDVB_REGION = $(DVB_REGION_UK) 49*53ee8cc1Swenshuai.xi 50*53ee8cc1Swenshuai.xi 51*53ee8cc1Swenshuai.xi# Image name 52*53ee8cc1Swenshuai.xiIMAGENAME = $(MCU_TYPE)_$(DRIVERNAME) 53*53ee8cc1Swenshuai.xi 54*53ee8cc1Swenshuai.xi 55*53ee8cc1Swenshuai.xi# ********************************************** 56*53ee8cc1Swenshuai.xi# Tool Chain 57*53ee8cc1Swenshuai.xi# ********************************************** 58*53ee8cc1Swenshuai.xi 59*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),ecos) 60*53ee8cc1Swenshuai.xi 61*53ee8cc1Swenshuai.xiCROSS = mipsisa32-elf- 62*53ee8cc1Swenshuai.xi 63*53ee8cc1Swenshuai.xiendif 64*53ee8cc1Swenshuai.xi 65*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),linux) 66*53ee8cc1Swenshuai.xiCROSS = mips-linux-gnu- 67*53ee8cc1Swenshuai.xi 68*53ee8cc1Swenshuai.xiCC_FLAG = -march=aeon1 -mhard-div -mhard-mul 69*53ee8cc1Swenshuai.xi 70*53ee8cc1Swenshuai.xiendif 71*53ee8cc1Swenshuai.xi 72*53ee8cc1Swenshuai.xiifeq ($(OS_TYPE),nos) 73*53ee8cc1Swenshuai.xiCROSS = aeon- 74*53ee8cc1Swenshuai.xi 75*53ee8cc1Swenshuai.xiCFG_OPTS = -D$(CHIP) -D'MSOS_TYPE_NOS' 76*53ee8cc1Swenshuai.xi 77*53ee8cc1Swenshuai.xiCC_OPTS = -c -Wall -$(ENDIAN) 78*53ee8cc1Swenshuai.xi 79*53ee8cc1Swenshuai.xiCC_OPTS += -march=aeon1 -mhard-div -mhard-mul 80*53ee8cc1Swenshuai.xiCC_OPTS += -mredzone-size=4 -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -fomit-frame-pointer -fno-exceptions -ffunction-sections -fdata-sections 81*53ee8cc1Swenshuai.xi 82*53ee8cc1Swenshuai.xiifeq ($(VERSION),Debug) 83*53ee8cc1Swenshuai.xiCFG_OPTS += -D'MSOS_DEBUG' -D'MSOS_DEBUG_LV5' 84*53ee8cc1Swenshuai.xiCC_OPTS += $(CC_OPTS0) -O 85*53ee8cc1Swenshuai.xielse 86*53ee8cc1Swenshuai.xiCFG_OPTS += -D'MSOS_RETAIL' -D'MSOS_DEBUG_LV5' 87*53ee8cc1Swenshuai.xiCC_OPTS += $(CC_OPTS0) -O2 88*53ee8cc1Swenshuai.xiendif 89*53ee8cc1Swenshuai.xi 90*53ee8cc1Swenshuai.xiCC_OPTS += $(CFG_OPTS) 91*53ee8cc1Swenshuai.xi 92*53ee8cc1Swenshuai.xiIMAGE_LIB = $(BINPATH)/lib$(DRIVERNAME).a 93*53ee8cc1Swenshuai.xi 94*53ee8cc1Swenshuai.xiendif 95*53ee8cc1Swenshuai.xi 96*53ee8cc1Swenshuai.xiCC = $(CROSS)gcc 97*53ee8cc1Swenshuai.xiCPP = $(CROSS)cpp 98*53ee8cc1Swenshuai.xiLD = $(CROSS)ld 99*53ee8cc1Swenshuai.xiOBJCOPY = $(CROSS)objcopy 100*53ee8cc1Swenshuai.xiOBJDUMP = $(CROSS)objdump 101*53ee8cc1Swenshuai.xiSIZE = $(CROSS)size 102*53ee8cc1Swenshuai.xiAR = $(CROSS)ar 103*53ee8cc1Swenshuai.xiNM = $(CROSS)nm 104*53ee8cc1Swenshuai.xi# ********************************************** 105*53ee8cc1Swenshuai.xi# Directories 106*53ee8cc1Swenshuai.xi# ********************************************** 107*53ee8cc1Swenshuai.xi 108*53ee8cc1Swenshuai.xiOSDIR = ../../msos 109*53ee8cc1Swenshuai.xiMXLIBDIR = ../../ 110*53ee8cc1Swenshuai.xiHALDIR = ../../hal/$(CHIP) 111*53ee8cc1Swenshuai.xiDRVAPI = ../$(DRIVERNAME) 112*53ee8cc1Swenshuai.xiDRVDRV = ../$(DRIVERNAME) 113*53ee8cc1Swenshuai.xiDRVHAL = $(HALDIR)/$(DRIVERNAME) 114*53ee8cc1Swenshuai.xiMMIODIR = ../mmio 115*53ee8cc1Swenshuai.xiPATH_INSTALL = ../../../lib/$(OS_TYPE)/$(CHIP)/$(DRIVERNAME) 116*53ee8cc1Swenshuai.xi 117*53ee8cc1Swenshuai.xi# Source files 118*53ee8cc1Swenshuai.xiSRC_FILE = $(DRVDRV)/drvMVD.c \ 119*53ee8cc1Swenshuai.xi $(DRVDRV)/mvd_cc.c \ 120*53ee8cc1Swenshuai.xi $(DRVHAL)/halMVD.c \ 121*53ee8cc1Swenshuai.xi $(DRVHAL)/osalMVD.c 122*53ee8cc1Swenshuai.xi 123*53ee8cc1Swenshuai.xi# Header include file 124*53ee8cc1Swenshuai.xiINC_DIR = -I$(DRVDIR)/include -I$(MXLIBDIR) -I$(DRVDRV) -I$(DRVHAL) -I$(OSDIR) -I$(HALDIR) -I$(MMIODIR) 125*53ee8cc1Swenshuai.xi 126*53ee8cc1Swenshuai.xiBINDIR = ./lib 127*53ee8cc1Swenshuai.xiBINPATH = $(BINDIR) 128*53ee8cc1Swenshuai.xiOBJDIR = obj 129*53ee8cc1Swenshuai.xiOBJPATH = $(OBJDIR) 130*53ee8cc1Swenshuai.xi#TOOLS = $(ROOT)/Tools 131*53ee8cc1Swenshuai.xi 132*53ee8cc1Swenshuai.xiVPATH = $(dir $(SRC_FILE)) 133*53ee8cc1Swenshuai.xi 134*53ee8cc1Swenshuai.xi# ********************************************** 135*53ee8cc1Swenshuai.xi# Addition 136*53ee8cc1Swenshuai.xi# ********************************************** 137*53ee8cc1Swenshuai.xi# Keep it for addition of options 138*53ee8cc1Swenshuai.xiCC_TVOPTS = 139*53ee8cc1Swenshuai.xi 140*53ee8cc1Swenshuai.xi# ********************************************** 141*53ee8cc1Swenshuai.xi# Tools 142*53ee8cc1Swenshuai.xi# ********************************************** 143*53ee8cc1Swenshuai.xi 144*53ee8cc1Swenshuai.xi# ********************************************** 145*53ee8cc1Swenshuai.xi# Files to be compiled 146*53ee8cc1Swenshuai.xi# ********************************************** 147*53ee8cc1Swenshuai.xiSRC_S = $(filter %.S, $(SRC_FILE)) 148*53ee8cc1Swenshuai.xiSRC_C = $(filter %.c, $(SRC_FILE)) 149*53ee8cc1Swenshuai.xiSRC_O = $(filter %.o, $(SRC_FILE)) 150*53ee8cc1Swenshuai.xiSRC_B = $(filter %.bin, $(SRC_FILE)) 151*53ee8cc1Swenshuai.xiSRC = $(SRC_C) 152*53ee8cc1Swenshuai.xi 153*53ee8cc1Swenshuai.xiOBJ_S0 = $(notdir $(patsubst %.S, %.o, $(SRC_S))) 154*53ee8cc1Swenshuai.xiOBJ_C0 = $(notdir $(patsubst %.c, %.o, $(SRC_C))) 155*53ee8cc1Swenshuai.xiOBJ_C_H0 = $(notdir $(patsubst %.c, %.o, $(SRC_C_H))) 156*53ee8cc1Swenshuai.xiOBJ_B0 = $(notdir $(patsubst %.bin, %.o, $(SRC_B))) 157*53ee8cc1Swenshuai.xi 158*53ee8cc1Swenshuai.xiOBJ_S = $(foreach file, $(OBJ_S0), $(OBJPATH)/$(file) ) 159*53ee8cc1Swenshuai.xiOBJ_C = $(foreach file, $(OBJ_C0), $(OBJPATH)/$(file) ) 160*53ee8cc1Swenshuai.xiOBJ_C_H = $(foreach file, $(OBJ_C_H0), $(OBJPATH)/$(file) ) 161*53ee8cc1Swenshuai.xiOBJ_B = $(foreach file, $(OBJ_B0), $(OBJPATH)/$(file) ) 162*53ee8cc1Swenshuai.xi 163*53ee8cc1Swenshuai.xiOBJ = $(OBJ_C) $(OBJ_C_H) $(OBJ_B) 164*53ee8cc1Swenshuai.xi 165*53ee8cc1Swenshuai.xi 166*53ee8cc1Swenshuai.xi# *********************************************************************** 167*53ee8cc1Swenshuai.xi# Libraries 168*53ee8cc1Swenshuai.xi# *********************************************************************** 169*53ee8cc1Swenshuai.xi# Standard Libraries 170*53ee8cc1Swenshuai.xi 171*53ee8cc1Swenshuai.xi 172*53ee8cc1Swenshuai.xi# ********************************************** 173*53ee8cc1Swenshuai.xi# Compiler and linker options 174*53ee8cc1Swenshuai.xi# ********************************************** 175*53ee8cc1Swenshuai.xi 176*53ee8cc1Swenshuai.xiINCLUDE = $(INC_DIR) 177*53ee8cc1Swenshuai.xiCC_OPTS0 = -c $(INCLUDE) $(CC_FLAG) $(CC_TVOPTS) 178*53ee8cc1Swenshuai.xi 179*53ee8cc1Swenshuai.xiLD_SCRIPT = target.ld 180*53ee8cc1Swenshuai.xi 181*53ee8cc1Swenshuai.xiLDLIB = -L$(OS_LIB_DIR) -T$(LD_SCRIPT) -lc 182*53ee8cc1Swenshuai.xi# -lc 183*53ee8cc1Swenshuai.xi 184*53ee8cc1Swenshuai.xi 185*53ee8cc1Swenshuai.xi# ********************************************** 186*53ee8cc1Swenshuai.xi# Rules 187*53ee8cc1Swenshuai.xi# ********************************************** 188*53ee8cc1Swenshuai.xi.PHONY : all clean depend 189*53ee8cc1Swenshuai.xi.SUFFIXES: .bin 190*53ee8cc1Swenshuai.xi 191*53ee8cc1Swenshuai.xi# Project Build 192*53ee8cc1Swenshuai.xiall : setup $(IMAGE_LIB) 193*53ee8cc1Swenshuai.xi 194*53ee8cc1Swenshuai.xi$(IMAGE_LIB) : depend $(OBJ_S) $(OBJ_C) $(OBJ_C_H) $(OBJ_B) 195*53ee8cc1Swenshuai.xi $(AR) rcsv $@ $(OBJ_S) $(OBJ_C) $(OBJ_C_H) $(OBJ_B) 196*53ee8cc1Swenshuai.xi 197*53ee8cc1Swenshuai.xi$(OBJ_S) : $(OBJPATH)/%.o : %.S 198*53ee8cc1Swenshuai.xi $(CC) $(CC_OPTS) -o $@ $< 199*53ee8cc1Swenshuai.xi 200*53ee8cc1Swenshuai.xi$(OBJ_C) : $(OBJPATH)/%.o : %.c 201*53ee8cc1Swenshuai.xi $(CC) $(CC_OPTS) -o $@ $< 202*53ee8cc1Swenshuai.xi 203*53ee8cc1Swenshuai.xi$(OBJ_C_H) : $(OBJPATH)/%.o : %.c 204*53ee8cc1Swenshuai.xi $(CC) $(CC_OPTS) -o $@ $<; 205*53ee8cc1Swenshuai.xi 206*53ee8cc1Swenshuai.xi$(OBJ_B) : $(OBJPATH)/%.o : %.bin 207*53ee8cc1Swenshuai.xi $(shell cd $(dir $<); $(OBJCOPY) -I binary -O elf32-littleaeon -B aeon --prefix-sections=bin $(notdir $<) $(abspath $@)) 208*53ee8cc1Swenshuai.xi 209*53ee8cc1Swenshuai.xi# Project Setup 210*53ee8cc1Swenshuai.xisetup : 211*53ee8cc1Swenshuai.xi mkdir -p $(BINDIR) 212*53ee8cc1Swenshuai.xi echo "Make $(IMAGENAME) $(TV_SYSTEM) project..." 213*53ee8cc1Swenshuai.xi 214*53ee8cc1Swenshuai.xi# Project Clean 215*53ee8cc1Swenshuai.xiclean : 216*53ee8cc1Swenshuai.xi rm -f $(OBJPATH)/*.o 217*53ee8cc1Swenshuai.xi echo "Clean $(IMAGENAME) $(TV_SYSTEM) project..." 218*53ee8cc1Swenshuai.xi 219*53ee8cc1Swenshuai.xi 220*53ee8cc1Swenshuai.xiinstall: 221*53ee8cc1Swenshuai.xi mkdir -p $(PATH_INSTALL) 222*53ee8cc1Swenshuai.xi [ -n $(PATH_INSTALL) ] && install $(IMAGE_LIB) $(PATH_INSTALL) 223*53ee8cc1Swenshuai.xi 224*53ee8cc1Swenshuai.xi$(OBJPATH)/depend.mk : Makefile 225*53ee8cc1Swenshuai.xi mkdir -p $(OBJPATH) 226*53ee8cc1Swenshuai.xi $(CC) $(INCLUDE) $(CC_OPTS) -MM $(SRC) > $(OBJPATH)/depend.mk 227*53ee8cc1Swenshuai.xi 228*53ee8cc1Swenshuai.xi-include $(OBJPATH)/depend.mk 229