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