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