[processor-sdk/performance-audio-sr.git] / psdk_cust / pdk_k2g_1_0_1_2_eng / packages / ti / boot / sbl / board / evmK2G / build / makefile
1 # Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
2 #
3 #
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions
6 # are met:
7 #
8 # Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer.
10 #
11 # Redistributions in binary form must reproduce the above copyright
12 # notice, this list of conditions and the following disclaimer in the
13 # documentation and/or other materials provided with the
14 # distribution.
15 #
16 # Neither the name of Texas Instruments Incorporated nor the names of
17 # its contributors may be used to endorse or promote products derived
18 # from this software without specific prior written permission.
19 #
20 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 #
33 # Macro definitions referenced below
34 #
36 SBL_SRC_DIR ?= $(PDK_INSTALL_PATH)/ti/boot/sbl
37 SBLOBJDIR = $(SBL_SRC_DIR)/binary/$(BOARD)/$(BOOTMODE)/obj
38 SBLBINDIR = $(SBL_SRC_DIR)/binary/$(BOARD)/$(BOOTMODE)/bin
39 ARMV7LIBDIR ?= ./lib
40 BINFLAGS = -O binary
42 #Cross tools
43 ifdef TOOLCHAIN_PATH_A15
44 # Support backwards compatibility with KeyStone1 approach
45 CC = $(TOOLCHAIN_PATH_A15)/bin/$(CROSS_TOOL_PRFX)gcc
46 AC = $(TOOLCHAIN_PATH_A15)/bin/$(CROSS_TOOL_PRFX)as
47 AR = $(TOOLCHAIN_PATH_A15)/bin/$(CROSS_TOOL_PRFX)ar
48 LD = $(TOOLCHAIN_PATH_A15)/bin/$(CROSS_TOOL_PRFX)gcc
49 BIN = $(TOOLCHAIN_PATH_A15)/bin/$(CROSS_TOOL_PRFX)objcopy
50 endif
52 # INCLUDE Directories
53 CSL_DIR = $(PDK_INSTALL_PATH)/ti/csl
54 BOARD_DIR = $(PDK_INSTALL_PATH)/ti/board
55 SBL_INC_DIR = $(SBL_SRC_DIR)/board/src
56 SBL_LIB_INC_DIR = $(SBL_SRC_DIR)/src/rprc
57 SBL_SOC_DIR = $(SBL_SRC_DIR)/soc
59 # Libraries
60 BOARD_LIB = "$(PDK_INSTALL_PATH)/ti/board/lib/$(BOARD)/armv7/ti.board.aa15fg"
61 UART_LIB = "$(PDK_INSTALL_PATH)/ti/drv/uart/lib/k2g/armv7/ti.drv.uart.k2g.aa15fg"
62 I2C_LIB = "$(PDK_INSTALL_PATH)/ti/drv/i2c/lib/k2g/armv7/ti.drv.i2c.k2g.aa15fg"
63 MMCSD_LIB = "$(PDK_INSTALL_PATH)/ti/drv/mmcsd/lib/armv7/ti.drv.mmcsd.aa15fg"
64 FATFS_LIB = "$(PDK_INSTALL_PATH)/ti/fs/fatfs/lib/armv7/ti.fs.fatfs.aa15fg"
65 QSPI_LIB = "$(PDK_INSTALL_PATH)/ti/drv/spi/lib/armv7/ti.drv.spi.aa15fg"
66 CSL_LIB = "$(PDK_INSTALL_PATH)/ti/csl/lib/k2g/a15/ti.csl.aa15fg"
67 OSAL_LIB = "$(PDK_INSTALL_PATH)/ti/osal/lib/nonos/k2g/armv7/ti.osal.aa15fg"
69 # BOOTMODE specific CFLAGS
70 ifeq ($(BOOTMODE), mmcsd)
71 INTERNALDEFS += -DBOOT_MMCSD
72 SBL_MMCSD_DIR = $(SBL_SRC_DIR)/src/mmcsd
73 INCDIR := $(CSL_DIR);$(PDK_INSTALL_PATH);$(BOARD_DIR);$(SBL_INC_DIR);$(SBL_LIB_INC_DIR);$(SBL_MMCSD_DIR);$(SBL_SOC_DIR)
74 PERIPHERAL_LIB = $(UART_LIB) $(I2C_LIB) $(OSAL_LIB) $(CSL_LIB) $(MMCSD_LIB) $(FATFS_LIB)
75 endif # ifeq ($(BOOTMODE), mmcsd)
77 ifeq ($(BOOTMODE), qspi)
78 INTERNALDEFS += -DBOOT_QSPI
79 SBL_QSPI_DIR = $(SBL_SRC_DIR)/src/qspi
80 INCDIR := $(CSL_DIR);$(PDK_INSTALL_PATH);$(BOARD_DIR);$(SBL_INC_DIR);$(SBL_LIB_INC_DIR);$(SBL_QSPI_DIR);$(SBL_SOC_DIR)
81 PERIPHERAL_LIB = $(UART_LIB) $(I2C_LIB) $(OSAL_LIB) $(CSL_LIB) $(QSPI_LIB)
82 endif # ifeq ($(BOOTMODE), qspi)
84 # Compiler options
85 INTERNALDEFS += -g -Wall -D__ARMv7 -DSOC_K2G -mcpu=cortex-a15 -mtune=cortex-a15 -marm -mfloat-abi=hard -mfpu=neon -D$(SOC)_BUILD
87 # Linker options
88 INTERNALLINKDEFS = -g -gdwarf-3 -gstrict-dwarf -Wall -mfloat-abi=hard -Wl,--undefined,__aeabi_uidiv -Wl,--undefined,__aeabi_idiv --entry Entry -nostartfiles -static -Wl,--gc-sections -Wl,-T $(SBL_SOC_DIR)/k2g/linker.cmd -Wl,--start-group -l"c" -lrdimon -l"m" -l"nosys" $(BOARD_LIB) $(PERIPHERAL_LIB) -Wl,--end-group $(LDFLAGS)
90 # Executable using device independent library and device object file
91 EXE=sbl.out
93 OBJEXT = o
94 ASMOBJEXT = ao
95 SRCDIR = $(SBL_SRC_DIR)/board
97 INCS = -I. -I$(strip $(subst ;, -I,$(INCDIR)))
99 VPATH=$(SRCDIR):$(SRCDIR)/$(BOARD):$(SBL_SRC_DIR)/board/src:$(SBL_SRC_DIR)/soc/k2g:$(PDK_INSTALL_PATH)/ti/drv/uart/soc/k2g:$(SBL_SRC_DIR)/src/$(BOOTMODE):$(SBL_SRC_DIR)/src/rprc:$(PDK_INSTALL_PATH)/ti/drv/mmcsd/soc/k2g:$(PDK_INSTALL_PATH)/ti/drv/spi/soc/k2g
101 #List the Source Files
102 SRC_C = \
103 sbl_main.c \
104 sbl_rprc.c \
105 sbl_image_copy.c \
106 sbl_slave_boot.c
108 SRC_DRV = \
109 sbl_soc.c
112 ifeq ($(BOOTMODE), qspi)
113 SRC_C += sbl_qspi.c
114 SRC_DRV += SPI_soc.c
115 endif
117 ifeq ($(BOOTMODE), mmcsd)
118 SRC_C += sbl_mmcsd.c
119 SRC_DRV += MMCSD_soc.c
120 endif
123 #Common entry object
124 ENTRY_SRC = sbl_init.S
126 # BOOTMODE specific CFLAGS
127 ifeq ($(BOOTMODE), mmcsd)
128 INTERNALDEFS += -DBOOT_MMCSD
129 SBL_MMCSD_DIR = $(SBL_SRC_DIR)/src/mmcsd
130 INCS += -I$(SBL_MMCSD_DIR)
131 endif # ifeq ($(BOOTMODE), mmcsd)
133 ifeq ($(BOOTMODE), qspi)
134 INTERNALDEFS += -DBOOT_QSPI
135 SBL_QSPI_DIR = $(SBL_SRC_DIR)/src/qspi
136 INCS += -I$(SBL_QSPI_DIR)
137 endif # ifeq ($(BOOTMODE), qspi)
139 # FLAGS for the SourceFiles
140 CFLAGS += -Wall
141 SRC_CFLAGS = -I. $(CFLAGS) -g -gdwarf-3 -gstrict-dwarf -Wall
143 # Make Rule for the SRC Files
144 SRC_OBJS = $(patsubst %.c, $(SBLOBJDIR)/%.$(OBJEXT), $(SRC_C))
145 ENTRY_OBJ = $(patsubst %.S, $(SBLOBJDIR)/%.$(ASMOBJEXT), $(ENTRY_SRC))
146 SRC_DRV_OBJS = $(patsubst %.c, $(SBLOBJDIR)/%.$(OBJEXT), $(SRC_DRV))
148 all:$(SBLBINDIR)/$(EXE) MLO
150 MLO: $(SBLBINDIR)/$(EXE)
151 @$(TOOLCHAIN_PATH_M4)/bin/armhex $(SBLBINDIR)/$(EXE) $(SRCDIR)/$(BOARD)/build/sbl.rmd
152 @mv sbl.hex $(SBLBINDIR)
153 @$(SBL_SRC_DIR)/tools/btoccs/b2ccs $(SBLBINDIR)/sbl.hex $(SBLBINDIR)/sbl.ccs
154 @$(SBL_SRC_DIR)/tools/ccsutil/ccsAddGphdr -infile $(SBLBINDIR)/sbl.ccs -outfile $(SBLBINDIR)/sbl.gphdr -headerEndian BE
155 @$(SBL_SRC_DIR)/tools/ccsutil/ccsAddGptlr -infile $(SBLBINDIR)/sbl.gphdr -outfile $(SBLBINDIR)/sbl.gptlr
156 @$(SBL_SRC_DIR)/tools/byteswap/byteswapccs $(SBLBINDIR)/sbl.gptlr $(SBLBINDIR)/MLO.ccs
157 @$(SBL_SRC_DIR)/tools/btoccs/ccs2bin -swap $(SBLBINDIR)/MLO.ccs $(SBLBINDIR)/MLO
159 $(SBLBINDIR)/$(EXE): $(SRC_OBJS) $(SRC_DRV_OBJS) $(ENTRY_OBJ) $(SBLBINDIR)/.created $(SBLOBJDIR)/.created
160 @echo linking $(SRC_OBJS) $(SRC_DRV_OBJS) $(ENTRY_OBJ) into $@ ...
161 @$(CC) $(SRC_OBJS) $(SRC_DRV_OBJS) $(ENTRY_OBJ) $(INTERNALLINKDEFS) -Wl,-Map=$(SBLBINDIR)/sbl.map -o $@
163 $(SBLOBJDIR)/%.$(OBJEXT): %.c $(SBLOBJDIR)/.created
164 @echo compiling $< ...
165 @$(CC) -c $(SRC_CFLAGS) $(INTERNALDEFS) $(INCS) $< -o $@
167 $(SBLOBJDIR)/%.$(ASMOBJEXT): %.S $(SBLOBJDIR)/.created
168 @echo compiling $< ...
169 $(CC) -c $(INTERNALDEFS) $(INCS) $< -o $@
171 $(SBLOBJDIR)/.created:
172 @mkdir -p $(SBLOBJDIR)
173 @touch $(SBLOBJDIR)/.created
175 $(SBLBINDIR)/.created:
176 @mkdir -p $(SBLBINDIR)
177 @touch $(SBLBINDIR)/.created
179 clean:
180 @rm -f $(SBLBINDIR)/$(EXE)
181 @rm -f $(SRC_OBJS) $(SRC_DRV_OBJS) $(ENTRY_OBJ) $(SBLBINDIR)/.created $(SBLOBJDIR)/.created