Modification for removing makedep.exe requirement
[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 %.c, %.cif, $(CFILES) $(EXCFILES) $(TESTCFILES)) \
85                         $(patsubst %.$(ASMEXT), %.lst, $(AFILES) $(EXAFILES) $(TESTAFILES)) \
86                                                 $(patsubst %.sa, %.asm, $(LINAFILES) $(TESTLINASMFILES)) \
87                                                 $(patsubst %.sa, %.lst, $(LINAFILES) $(TESTLINASMFILES)) \
88                         $(DFULLPATH))
90 # Compute FLATFILES, if necessary
91 ifndef FLATFILES
92   FLATFILES  =$(patsubst %,$(ECODIR)/%,$(CSRC) $(ASMSRC) $(HDR) $(LINASMSRC) $(BIOSASMSRC) )
93 endif
95 # If FLATGGDIR isnt set, and we make flat, then we are making flat for test prg 
96 ifndef FLATGGDIR
97   # This has two magical effects: 1) causes FLATGGDIR to be set now, and
98   # causes recursive makefiles to set the correct FLAT directory even during
99   # recursion.
100   FLATFILES +=$(patsubst %,$(ECODIR)/%,$(TESTCSRC) $(TESTASMSRC) $(TESTHDR))
101   ifdef ECONAME
102     export FLATGGDIR = $(ECONAME)/c64x/make/flat
103   else
104     export FLATGGDIR = $(notdir $(ECODIR))/c64x/make/flat
105   endif
106 endif
108 FLATDIR    =$(ROMROOT)/$(FLATGGDIR)
110 ifneq ($(findstring $(FLAT),yes YES),)
111   FLAT_TARGET =$(REFTGT) flat
112 else
113   FLAT_TARGET =$(REFTGT)
114 endif
116 .PHONY: clean flat gen_flatdir 
118 # standard targets
119 clean:
120         -$(RM) $(OBJS) $(EXOBJS) $(TESTOBJS) $(CLEAN_TARGETS) $(CLEAN_INTERMEDIATES) $(REFTGT)
121         -$(RM) -r flat
123 ifneq ($(findstring $(FLAT),yes YES),)
124 flat: 
125         -mkdir $(subst /,\,$(FLATDIR))
126         -$(CP) -u $(FLATFILES) $(FLATDIR)
128 # Define command to copy targets to flat
129 CPFLATCMD = $(CP) $@ $(FLATDIR)
131 else
133 CPFLATCMD =
135 endif
137 # Copy targets to delivery directory
138 # The variables STDDLV and BOOTLD should be set by calling makefile
139 ifneq ($(BOOTLD),none)
140    CPBOOTLD=$(CP) $(BOOTPATH)/$(BOOTLD) $(DELIVERY)/boot_$(OUTFILE).out
141    CPBOOTLD2=
142 else
143    ifeq ($(GGDSP_CPU),12)
144      CPBOOTLD=$(CP) $(BOOTPATH)/boot5560_pg10_20.out $(DELIVERY)/bootpg10_20_$(OUTFILE).out
145      CPBOOTLD2=
146    else
147      CPBOOTLD=
148      CPBOOTLD2=
149    endif
150 endif
152 # how to build .c and .s files on c64x
153 FNAMEDEF   = -dTNFNAME=$(notdir $<)
154 GGCCOMPILE = $(CC) $(CFLAGS) $(DCFLAGS) $(CDEFS) $(FNAMEDEF) $(FUNCOPTS) $< -eo.$(COBJEXT)
155 GGLCOMPILE = $(CC) $(CFLAGS) $(DCFLAGS) $(CDEFS) $(FNAMEDEF) $< -eo.$(LOBJEXT)
156 GGACOMPILE = $(AS) $(AFLAGS) $(ADEFS) $< -eo.$(AOBJEXT)
157 GGCMAKEDEP = $(CC) $(PPDEP_FLAGS) $(CFLAGS) $(DCFLAGS) $(CDEFS) $(FNAMEDEF) $(FUNCOPTS) $<
158 GGLMAKEDEP = $(CC) $(PPDEP_FLAGS) $(CFLAGS) $(DCFLAGS) $(CDEFS) $(FNAMEDEF) $< 
159 GGAMAKEDEP = $(MAKEDEP) $(MAKEDEP_OPT) $(ADEPINC) -a -e$(AOBJEXT) -o$$.$(ADEPEXT) $<
160 GGALMAKEDEP = $(MAKEDEP) $(MAKEDEP_OPT) $(ALDEPINC) -a -e$(ALOBJEXT) -o$$.$(ALDEPEXT) $<
162 #Two options of invoking blockexpn:
163 # 1)Passing NUMCH for implicit expansion 
164 # 2)Explicitly giving the number of expansions in the .bex file
165 GGBLOCKEXPN = $(BLOCKEXPN) $< $@
166 GGBLOCKEXPNNUMCH = $(BLOCKEXPN) $< $@ $(NUMCH)
168 %.$(COBJEXT): %.c 
169         $(GGCCOMPILE)
171 # Compilation of Linear Assembly files
172 %.$(LOBJEXT): %.$(LASMEXT)
173         $(GGLCOMPILE)
175 %.$(AOBJEXT): %.$(ASMEXT)
176         $(GGACOMPILE)
178 # Special compilation for BIOS
179 %.$(AOBJEXT): %.s62
180         $(GGACOMPILE)
182 CDEPINC = $(subst \,/,-I$(subst ;, -I,$(C6X_C_DIR)))
183 ADEPINC = $(subst \,/,-I$(subst ;, -I,$(C6X_A_DIR)))
186 %.$(CDEPEXT): %.c
187         $(GGCMAKEDEP)
188         sed -e 's/$(notdir $*).obj[ ]*:[ ]*/$(notdir $*).oc $(subst /,\/,$@): /' < $(patsubst %.$(CDEPEXT),%.$(CDEPEXT)_TMP,$@) > $(patsubst %.$(CDEPEXT),%.$(CDEPEXT)_TMP_2,$@)
189         sed -e "s/\\/\//g" < $(patsubst %.$(CDEPEXT),%.$(CDEPEXT)_TMP_2,$@) > $@
190         @$(RM) $(patsubst %.$(CDEPEXT),%.$(CDEPEXT)_TMP,$@) $(patsubst %.$(CDEPEXT),%.$(CDEPEXT)_TMP_2,$@)
192 # dependency for .sa files
193 %.$(LDEPEXT): %.sa
194         $(GGLMAKEDEP)
196 %.$(ADEPEXT): %.s
197         $(GGAMAKEDEP)
199 %.$(ADEPEXT): %.s62
200         $(GGAMAKEDEP)
202 # Preprocessing via blockexpn.pl
203 # ggmbuf.bec and ggmheap.bec are not build specific but common.They need to use the
204 # NUMCH parameter
205 %.c: %.bec
206         $(GGBLOCKEXPNNUMCH)
208 #Numch parameter not passed to linker command file / memmap as the number of expansion 
209 #required  may be different from num channels in the build
210 %.h: %.beh
211         $(GGBLOCKEXPN)
213 %.cmd: %.becmd
214         $(GGBLOCKEXPN)  
216 # Reflection page symbol tables
217 # %.oc is included so we inherit the dependancies from the .dc file
218 # Set GGREFDBG=-v# on command line to debug
219 %.ref: %.c %.oc $(REFPAGEDEP)
220         $(REFPAGE) $(GGREFDBG) -iC6X_C_DIR $< -s$@ $(CDEFS) -dGG_REF_PAGE -d6416 -t$(REFSYM)
221         
222 ifneq ($(DOMAKEDEP),no)
223 # include generated dependancies.
224 sinclude $(DFULLPATH)
225 endif
227 # Nothing past this point