]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - keystone-rtos/ibl.git/blob - src/make/makestg2
Post tmp-mike2 merge updates
[keystone-rtos/ibl.git] / src / make / makestg2
1 #*****************************************************************************
2 #* FILE PURPOSE: 2nd stage makefile for the intermediate boot loader
3 #*****************************************************************************
4 #* FILE NAME: makestg2
5 #*
6 #* DESCRIPTION: This makefile is invoked with build specific options
7 #*
8 #******************************************************************************
10 ifndef IBL_ROOT
11         IBL_ROOT=..
12 endif
14 CFG_MODULES= main device
15 MODULES= ethboot nandboot driver hw interp ecc
17 # Note that the Hw module is a two stage clean and handled seperately
18 CLEAN_MODULES=$(addprefix clean_,$(subst hw,,$(MODULES)))
19 CLEAN_MODULES+=$(addprefix clean_,$(CFG_MODULES))
22 TARGETS= c6472 c6474 c6474l c6455 c6457
24 # The main module needs to know the device address of the i2c where the image map resides
25 MAINDEFS=-DIBL_I2C_MAP_TABLE_DATA_BUS_ADDR=$(I2C_BUS_ADDR)
27 # Add build time exclusion definitions
28 MAINDEFS+=$(addprefix -DEXCLUDE_,$(EXCLUDES))
31 # Common symbols are functions which are loaded with the stage load of the IBL, and
32 # also referenced from the second stage
33 COMMON_SYMBOLS= hwI2Cinit hwI2cMasterRead iblBootBtbl iblMalloc iblFree iblMemset iblMemcpy
35 ifeq ($(ENDIAN),little)
36         HEX_OPT= -order L
37         IEXT=     le
38 else
39         HEX_OPT= -order M
40         IEXT=     be
41 endif
43 ifeq ($(COMPACT_I2C),yes)
44   COMPACT= -compact
45 endif
47 include $(IBL_ROOT)/make/$(ARCH)/makedefs.mk
49 export ARCH
50 export TARGET
52 $(TARGETS): iblMain
56 # The I2C creation options. The I2C map file is run through the C pre-processor to generate
57 # the desired I2C mapping. There are three possible configurations - an i2c which has
58 # both endians present, or an I2C with only one of the endians
60 I2C_BE_FILE=      '"ibl_$(TARGET)/ibl.i2c.be.ccs"'
61 I2C_LE_FILE=      '"ibl_$(TARGET)/ibl.i2c.le.ccs"'
62 I2C_INIT_BE_FILE= '"ibl_$(TARGET)/ibl_init.i2c.be.ccs"'
63 I2C_INIT_LE_FILE= '"ibl_$(TARGET)/ibl_init.i2c.le.ccs"'
65 I2C_DEFS= -DI2C_BUS_ADDR=$(I2C_BUS_ADDR) 
67 ifeq ($(I2CROM),both) 
68  I2C_DEFS+= -DINIT_EXE_FILE=$(I2C_INIT_LE_FILE)
69  I2C_DEFS+= -DEXE_FILE_1=$(I2C_LE_FILE) 
70  I2C_DEFS+= -DPAD_FILE_ID_1=1 
71  I2C_DEFS+= -DEXE_FILE_2=$(I2C_BE_FILE) 
72  I2C_DEFS+= -DPAD_FILE_ID_2=2 
73 else 
74  I2C_DEFS+= -DPAD_FILE_ID_1=1
75  I2C_DEFS+= -DPAD_FILE_ID_2=1
77  ifeq ($(I2CROM),little_endian)
78   I2C_DEFS+= -DINIT_EXE_FILE=$(I2C_INIT_LE_FILE)
79   I2C_DEFS+= -DEXE_FILE_1=$(I2C_LE_FILE)
80   I2C_DEFS+= -DEXE_FILE_2='""'
81  else
82   I2C_DEFS+= -DINIT_EXE_FILE=$(I2C_INIT_BE_FILE)
83   I2C_DEFS+= -DEXE_FILE_1='""'
84   I2C_DEFS+= -DEXE_FILE_2=$(I2C_BE_FILE)
85  endif
86 endif
89 i2cRom:
90         $(CC) -ppo -I../cfg/$(TARGET) $(I2C_DEFS) ibl_$(TARGET)/$@.map.pre
91         ../util/romparse/romparse $(COMPACT) -rom_base $(I2C_BUS_ADDR) ibl_$(TARGET)/$@.map.pp
92         $(CP) i2crom.ccs ibl_$(TARGET)/$@.ccs
93         $(CP) i2crom.ccs ibl_$(TARGET)/$@.dat
94         $(RM) i2crom.ccs ibl_le.b ibl.b
101 # Target compare checks if the iblInit is compiled the same for both endians
102 compare:
103         @echo -
104         @sh -c 'if diff -q ibl_$(TARGET)/ibl_init.le.ccs ibl_$(TARGET)/ibl_init.be.ccs ; then echo IBL init endian neutral ; else echo !!! WARNING !!!! IBL ini NOT endian neutral !!! ; fi '
105         @echo -
107 # For the init code a raw image is created as well as the i2c code to verify
108 # endian independent code is generated. The symbols required for linking
109 # the full application are then extracted
110 iblInit: $(CFG_MODULES) $(MODULES) utils
111         cat ibl_$(TARGET)/ibl_init_objs_template.inc | sed -e s/ENDIAN_TAG/$(IEXT)/g > ibl_$(TARGET)/ibl_init_objs.inc
112         $(LD) -o ibl_$(TARGET)/ibl_$(TARGET)_init.out -m ibl_$(TARGET)/ibl_$(TARGET)_init.map ibl_$(TARGET)/ibl_init.cmd $(RTLIBS)
113         $(CP) ibl_$(TARGET)/ibl_$(TARGET)_init.out ibl_$(TARGET)/ibl_$(TARGET)_init.$(IEXT).out
114         $(RM) -f ibl_$(TARGET)/ibl_init_obj.inc
116         hex6x $(HEX_OPT) ibl_$(TARGET)/ibl_init_image.rmd ibl_$(TARGET)/ibl_$(TARGET)_init.out
117         $(CP) ibl_le.b ibl_$(TARGET)/ibl.b
118         ../util/btoccs/b2ccs ibl_$(TARGET)/ibl.b ibl_$(TARGET)/ibl_init.$(IEXT).ccs
120         hex6x $(HEX_OPT) ibl_$(TARGET)/ibl_init.rmd ibl_$(TARGET)/ibl_$(TARGET)_init.out
121         ../util/bconvert/bconvert64x -$(IEXT) ibl_le.b ibl.b
122         $(CP) ibl.b ibl_$(TARGET)
123         ../util/btoccs/b2i2c ibl_$(TARGET)/ibl.b ibl_$(TARGET)/ibl.i2c.b
124         ../util/btoccs/b2ccs ibl_$(TARGET)/ibl.i2c.b ibl_$(TARGET)/ibl_init.i2c.$(IEXT).ccs
126         bash ../util/symExtract/symExtract ibl_$(TARGET)/ibl_$(TARGET)_init.map ibl_$(TARGET)/ibl_init_symbols.inc $(COMMON_SYMBOLS)
128         
129 iblMain: iblInit $(CFG_MODULES) $(MODULES)
130         cat ibl_$(TARGET)/ibl_objs_template.inc | sed -e s/ENDIAN_TAG/$(IEXT)/g > ibl_$(TARGET)/ibl_objs.tmp
131         $(CC) -ppo $(MAINDEFS) -DENDIAN_TAG=$(IEXT) ibl_$(TARGET)/ibl_objs.tmp
132         $(CP) ibl_$(TARGET)/ibl_objs.pp ibl_$(TARGET)/ibl_objs.inc
133         $(LD) -o ibl_$(TARGET)/ibl_$(TARGET).out -m ibl_$(TARGET)/ibl_$(TARGET).$(IEXT).map  ibl_$(TARGET)/ibl.cmd $(RTLIBS)
134         $(CP) ibl_$(TARGET)/ibl_$(TARGET).out ibl_$(TARGET)/ibl_$(TARGET).$(IEXT).out
135         $(RM) -f ibl_$(TARGET)/ibl_obj.inc
137         hex6x $(HEX_OPT) ibl_$(TARGET)/ibl.rmd ibl_$(TARGET)/ibl_$(TARGET).out
138         ../util/bconvert/bconvert64x -$(IEXT) ibl_le.b ibl.b
139         $(CP) ibl.b ibl_$(TARGET)
140         ../util/btoccs/b2i2c ibl_$(TARGET)/ibl.b ibl_$(TARGET)/ibl.i2c.b
141         ../util/btoccs/b2ccs ibl_$(TARGET)/ibl.i2c.b ibl_$(TARGET)/ibl.i2c.$(IEXT).ccs
144 $(MODULES):
145         @echo making $@
146         make -C $(IBL_ROOT)/$@/$(ARCH)/make $@
148 $(CFG_MODULES):
149         @echo making $@
150         make -C $(IBL_ROOT)/$@/$(ARCH)/make CDEFS='$(MAINDEFS)' $@
152 utils:
153         make -C $(IBL_ROOT)/util/btoccs
154         make -C $(IBL_ROOT)/util/romparse TARGET=$(TARGET)
155         make -C $(IBL_ROOT)/util/i2cRead  TARGET=$(TARGET) $(TARGET)
156         make -C $(IBL_ROOT)/util/i2cWrite TARGET=$(TARGET) $(TARGET)
157         make -C $(IBL_ROOT)/util/i2cConfig $(TARGET)
158         make -C $(IBL_ROOT)/util/bconvert
160 clean: $(CLEAN_MODULES) hwClean
161         
163 $(CLEAN_MODULES):
164         @echo cleaning $(subst clean_, ,$@)
165         make -C $(IBL_ROOT)/$(subst clean_,,$@)/$(ARCH)/make clean ARCH=c64x TARGET=$(TARGET)
167 hwClean:
168         @echo cleaning hw
169         make -C $(IBL_ROOT)/hw/$(ARCH)/make cleant ARCH=$(ARCH) TARGET=$(TARGET)
170         
171 cleant:
172         rm -rf ibl_$(TARGET)/ibl_$(TARGET).out
173         rm -rf ibl_$(TARGET)/ibl_$(TARGET).map
174         rm -rf ibl_$(TARGET)/ibl_le.b
175         rm -rf ibl_$(TARGET)/ibl.b
176         rm -rf ibl_$(TARGET)/ibl.i2c.b
177         rm -rf ibl_$(TARGET)/ibl.i2c.ccs
178         rm -rf ibl_$(TARGET)/i2crom.ccs
179