dd218b5525198877d97d9810603c668762fe1858
[keystone-rtos/ibl.git] / src / make / c64x / makeeco.mk
1 #*******************************************************************************
2 #* FILE PURPOSE: Perform standard variable computation and targets for ECOs
3 #*******************************************************************************
4 #* FILE NAME: makeeco.mk
5 #*
6 #* DESCRIPTION: Make include file which computes some variables and defines
7 #*    standard targets for DSP ECOs.
8 #*
9 #*    Input variables:
10 #*         CSRC   : List of C Source files
11 #*         ASMSRC : List of assembly source files
12 #*    Output variables:
13 #*         OBJS   : List of all object files
14 #*
15 #*              
16 #* (C) Copyright 1999-2001 TELOGY Networks, Inc.             
17 #*******************************************************************************
19 # get definitions
20 include $(IBL_ROOT)/make/$(ARCH)/makedefs.mk
22 # If ECODIR is not defined, derive it from ECONAME
23 ifndef ECODIR
24    ECODIR = $(IBL_ROOT)/$(ECONAME)
25 endif
27 # VPATH tells make how to find sources in other directories
28 vpath %.$(ASMEXT) $(ECODIR)/$(CPUDIR)
29 #The vpath below is needed to compile the dsp/memory folder properly
30 vpath %.c $(ECODIR)/$(CPUDIR)/$(CPUTYPEDIR)
31 vpath %.c $(ECODIR)/$(CPUDIR)
32 vpath %.sa $(ECODIR)/$(CPUDIR)
33 vpath %.s62 $(ECODIR)/$(CPUDIR)
34 vpath % $(ECODIR)
36 # Get filenames w/o paths
38 CFILES     = $(foreach file, $(CSRC), $(notdir $(file)))
39 AFILES     = $(foreach file, $(ASMSRC), $(notdir $(file)))
40 LINAFILES  = $(foreach file, $(LINASMSRC), $(notdir $(file)))
41 BIOSSFILES = $(foreach file, $(BIOSASMSRC), $(notdir $(file)))
42 EXCFILES   = $(foreach file, $(EXCSRC), $(notdir $(file)))
43 EXAFILES   = $(foreach file, $(EXASMSRC), $(notdir $(file)))
44 TESTCFILES = $(foreach file, $(TESTCSRC), $(notdir $(file)))
45 TESTAFILES = $(foreach file, $(TESTASMSRC), $(notdir $(file)))
46 TESTLINASMFILES = $(foreach file, $(TESTLINASMSRC), $(notdir $(file)))
49 DFULLPATH = $(patsubst %.s62, %.$(ADEPEXT),$(BIOSSFILES)  \
50               $(patsubst %.c, %.$(CDEPEXT), $(CFILES) $(EXCFILES) $(TESTCFILES)) \
51               $(patsubst %.$(ASMEXT), %.$(ADEPEXT), $(AFILES) $(EXAFILES) $(TESTAFILES) $(BIOSSFILES)) \
52               $(patsubst %.sa, %.$(LDEPEXT), $(LINAFILES) $(TESTLINASMFILES)))
53                         
55 OBJS  = $(COBJS) $(AOBJS)
56 COBJS = $(patsubst %.c, %.$(COBJEXT), $(CFILES))
57 AOBJS = $(patsubst %.s62, %.$(AOBJEXT), $(BIOSSFILES) \
58          $(patsubst %.$(ASMEXT), %.$(AOBJEXT), $(AFILES)) \
59          $(patsubst %.sa, %.$(LOBJEXT), $(LINAFILES)))
60 REFTGT = 
62 DCS  = $(CDCS) $(ADCS)
63 CDCS = $(patsubst %.c, %.$(CDEPEXT), $(CFILES))
64 ADCS = $(patsubst %.s62, %.$(CDEPEXT), $(BIOSSFILES) \
65          $(patsubst %.$(ASMEXT), %.$(CDEPEXT), $(AFILES)) \
66          $(patsubst %.sa, %.$(CDEPEXT), $(LINAFILES)))
69 # extra objects (not built by builtin rules)
70 EXOBJS = $(patsubst %.s62, %.$(AOBJEXT), $(BIOSSFILES) \
71            $(patsubst %.c, %.$(COBJEXT), $(EXCFILES)) \
72            $(patsubst %.$(ASMEXT), %.$(AOBJEXT), $(EXAFILES)))
73  
74 # extra objects (used for test code)
75 TESTOBJS = $(patsubst %.s62, %.$(AOBJEXT), $(BIOSSFILES) \
76              $(patsubst %.c, %.$(COBJEXT), $(TESTCFILES)) \
77              $(patsubst %.$(ASMEXT), %.$(AOBJEXT), $(TESTAFILES)) \
78              $(patsubst %.$(LASMEXT), %.$(LOBJEXT), $(TESTLINASMFILES)))
79  
80 # intermediate files
81 CLEAN_INTERMEDIATES = $(patsubst %.s62, %.lst, $(BIOSSFILES)  \
82                         $(patsubst %.c, %.asm, $(CFILES) $(EXCFILES) $(TESTCFILES)) \
83                         $(patsubst %.c, %.lst, $(CFILES) $(EXCFILES) $(TESTCFILES)) \
84                         $(patsubst %.$(ASMEXT), %.lst, $(AFILES) $(EXAFILES) $(TESTAFILES)) \
85                                                 $(patsubst %.sa, %.asm, $(LINAFILES) $(TESTLINASMFILES)) \
86                                                 $(patsubst %.sa, %.lst, $(LINAFILES) $(TESTLINASMFILES)) \
87                         $(DFULLPATH))
89 # Compute FLATFILES, if necessary
90 ifndef FLATFILES
91   FLATFILES  =$(patsubst %,$(ECODIR)/%,$(CSRC) $(ASMSRC) $(HDR) $(LINASMSRC) $(BIOSASMSRC) )
92 endif
94 # If FLATGGDIR isnt set, and we make flat, then we are making flat for test prg 
95 ifndef FLATGGDIR
96   # This has two magical effects: 1) causes FLATGGDIR to be set now, and
97   # causes recursive makefiles to set the correct FLAT directory even during
98   # recursion.
99   FLATFILES +=$(patsubst %,$(ECODIR)/%,$(TESTCSRC) $(TESTASMSRC) $(TESTHDR))
100   ifdef ECONAME
101     export FLATGGDIR = $(ECONAME)/c64x/make/flat
102   else
103     export FLATGGDIR = $(notdir $(ECODIR))/c64x/make/flat
104   endif
105 endif
107 FLATDIR    =$(ROMROOT)/$(FLATGGDIR)
109 ifneq ($(findstring $(FLAT),yes YES),)
110   FLAT_TARGET =$(REFTGT) flat
111 else
112   FLAT_TARGET =$(REFTGT)
113 endif
115 .PHONY: clean flat gen_flatdir 
117 # standard targets
118 clean:
119         -$(RM) $(OBJS) $(EXOBJS) $(TESTOBJS) $(CLEAN_TARGETS) $(CLEAN_INTERMEDIATES) $(REFTGT)
120         -$(RM) -r flat
122 ifneq ($(findstring $(FLAT),yes YES),)
123 flat: 
124         -mkdir $(subst /,\,$(FLATDIR))
125         -$(CP) -u $(FLATFILES) $(FLATDIR)
127 # Define command to copy targets to flat
128 CPFLATCMD = $(CP) $@ $(FLATDIR)
130 else
132 CPFLATCMD =
134 endif
136 # Copy targets to delivery directory
137 # The variables STDDLV and BOOTLD should be set by calling makefile
138 ifneq ($(BOOTLD),none)
139    CPBOOTLD=$(CP) $(BOOTPATH)/$(BOOTLD) $(DELIVERY)/boot_$(OUTFILE).out
140    CPBOOTLD2=
141 else
142    ifeq ($(GGDSP_CPU),12)
143      CPBOOTLD=$(CP) $(BOOTPATH)/boot5560_pg10_20.out $(DELIVERY)/bootpg10_20_$(OUTFILE).out
144      CPBOOTLD2=
145    else
146      CPBOOTLD=
147      CPBOOTLD2=
148    endif
149 endif
151 # how to build .c and .s files on c64x
152 FNAMEDEF   = -dTNFNAME=$(notdir $<)
153 GGCCOMPILE = $(CC) $(CFLAGS) $(DCFLAGS) $(CDEFS) $(FNAMEDEF) $< -eo.$(COBJEXT)
154 GGLCOMPILE = $(CC) $(CFLAGS) $(DCFLAGS) $(CDEFS) $(FNAMEDEF) $< -eo.$(LOBJEXT)
155 GGACOMPILE = $(AS) $(AFLAGS) $(ADEFS) $< $@ -eo.$(AOBJEXT)
156 GGCMAKEDEP = $(MAKEDEP) $(MAKEDEP_OPT) $(CDEPINC)    -e$(COBJEXT) -o$$.$(CDEPEXT) $< 
157 GGLMAKEDEP = $(MAKEDEP) $(MAKEDEP_OPT) $(ADEPINC) -a -e$(AOBJEXT) -o$$.$(LDEPEXT) $<
158 GGAMAKEDEP = $(MAKEDEP) $(MAKEDEP_OPT) $(ADEPINC) -a -e$(AOBJEXT) -o$$.$(ADEPEXT) $<
159 GGALMAKEDEP = $(MAKEDEP) $(MAKEDEP_OPT) $(ALDEPINC) -a -e$(ALOBJEXT) -o$$.$(ALDEPEXT) $<
161 #Two options of invoking blockexpn:
162 # 1)Passing NUMCH for implicit expansion 
163 # 2)Explicitly giving the number of expansions in the .bex file
164 GGBLOCKEXPN = $(BLOCKEXPN) $< $@
165 GGBLOCKEXPNNUMCH = $(BLOCKEXPN) $< $@ $(NUMCH)
167 %.$(COBJEXT): %.c 
168         $(GGCCOMPILE)
170 # Compilation of Linear Assembly files
171 %.$(LOBJEXT): %.$(LASMEXT)
172         $(GGLCOMPILE)
174 %.$(AOBJEXT): %.$(ASMEXT)
175         $(GGACOMPILE)
177 # Special compilation for BIOS
178 %.$(AOBJEXT): %.s62
179         $(GGACOMPILE)
181 CDEPINC = $(subst \,/,-I$(subst ;, -I,$(C6X_C_DIR)))
182 ADEPINC = $(subst \,/,-I$(subst ;, -I,$(C6X_A_DIR)))
185 %.$(CDEPEXT): %.c
186         $(GGCMAKEDEP)
188 # dependency for .sa files
189 %.$(LDEPEXT): %.sa
190         $(GGLMAKEDEP)
192 %.$(ADEPEXT): %.s
193         $(GGAMAKEDEP)
195 %.$(ADEPEXT): %.s62
196         $(GGAMAKEDEP)
198 # Preprocessing via blockexpn.pl
199 # ggmbuf.bec and ggmheap.bec are not build specific but common.They need to use the
200 # NUMCH parameter
201 %.c: %.bec
202         $(GGBLOCKEXPNNUMCH)
204 #Numch parameter not passed to linker command file / memmap as the number of expansion 
205 #required  may be different from num channels in the build
206 %.h: %.beh
207         $(GGBLOCKEXPN)
209 %.cmd: %.becmd
210         $(GGBLOCKEXPN)  
212 # Reflection page symbol tables
213 # %.oc is included so we inherit the dependancies from the .dc file
214 # Set GGREFDBG=-v# on command line to debug
215 %.ref: %.c %.oc $(REFPAGEDEP)
216         $(REFPAGE) $(GGREFDBG) -iC6X_C_DIR $< -s$@ $(CDEFS) -dGG_REF_PAGE -d6416 -t$(REFSYM)
217         
218 ifneq ($(DOMAKEDEP),no)
219 # include generated dependancies.
220 sinclude $(DFULLPATH)
221 endif
223 # Nothing past this point