xref: /utopia/UTPA2-700.0.x/modules/vdec_v1/drv/mvd/Makefile.mvd (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
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