blob: 3a82644187e795654b539be38cd00bf20a028a4c [file] [log] [blame]
##
#
# Makefile
#
# GNU makefile for bootLoader object
##
USE_BCM_CMD_ARRAY?=1
CUR_DIR=$(shell readlink -f .)
ifeq ($(strip $(CPU_ARCH)),arm)
CROSS_COMPILE=$(CROSS_COMPILE_AARCH32)
else ifeq ($(strip $(CPU_ARCH)),arm64)
CROSS_COMPILE=$(CROSS_COMPILE_AARCH64)
else
$(error unsupported CPU_ARCH "$(CPU_ARCH)")
endif
ifeq ($(strip $(CROSS_COMPILE)),)
$(error CROSS_COMPILE is not set)
endif
#
# Source tree roots
#
PROJ_DIR = .
# Common GCC flags
CFLAGS = -W -Wall -Werror -g -gdwarf-2 -nostdlib -fno-builtin -fno-strict-aliasing
#CFLAGS += -mfloat-abi=hard -mfpu=neon-vfpv4 -march=armv7-a -marm
SFLAGS = -W -Wall -Werror -g -gdwarf-2 -nostdlib -fno-builtin
#SFLAGS += -mfloat-abi=hard -mfpu=neon-vfpv4 -march=armv7-a -marm
# Ensure initialized value is put in '.data' section
CFLAGS += -fno-zero-initialized-in-bss
# Speed up LZ4 decompressing
CFLAGS += -DCPU_HAS_EFFICIENT_UNALIGNED_MEMORY_ACCESS=1
HOST_CFLAGS = -W -Wall -g -gdwarf-2 -O0
CHIPVERSIONS = -DBERLIN \
-DBERLIN_B_0=0x1000 -DBERLIN_C_0=0x2000 -DBERLIN_A_0=0x0000 -DBERLIN_A_1=0x0010 -DBERLIN_A_2=0x0020 \
-DBERLIN_BG2=0x3000 -DBERLIN_BG2_Z1=0x3000 -DBERLIN_BG2_Z2=0x3010 -DBERLIN_BG2_A0=0x3020 -DBERLIN_BG2_A1=0x3030 \
-DBERLIN_BG2CDP=0x3040 -DBERLIN_BG2_CT=0x3050 -DBERLIN_BG2_Q=0x3060 -DBERLIN_BG2_DTV=0x3070 \
-DBERLIN_BG2CD_A0=0x3035
CHIPVERSIONS += -DBERLIN_BG4_CD=0x30A0
CHIPVERSIONS += -DBERLIN_BG4CDP=0x30D0 -DBERLIN_CHIP_VERSION=BERLIN_BG4CDP
CFLAGS += $(CHIPVERSIONS)
SFLAGS += $(CHIPVERSIONS)
HOST_CFLAGS += $(CHIPVERSIONS)
LDFLAGS = -T source/arch/$(CPU_ARCH)/bootloader_64.lds -Map bootloader.map -Bstatic
#OPTIMIZE=-O0
OPTIMIZE=-Os
CFLAGS += $(OPTIMIZE) -DBOOTLOADER -DDEBUG -I$(CUR_DIR)/common/include -I$(CUR_DIR)/source
SFLAGS += $(OPTIMIZE) -DBOOTLOADER -DDEBUG -I$(CUR_DIR)/common/include -I$(CUR_DIR)/source
HOST_CFLAGS += $(OPTIMIZE)
BERLIN_CHIP_LOWCASE := $(shell echo $(BERLIN_CHIP) | tr '[A-Z]' '[a-z]')
ENABLE_USB_CONSOLE := $(shell echo $(ENABLE_USB_CONSOLE))
ifeq ($(ENABLE_USB_CONSOLE), 1)
CFLAGS += -D_ENABLE_USB_CONSOLE
endif
ifeq ($(FCT_BOOTLOADER),true)
CFLAGS += -DFCT_BOOTLOADER
endif
CHIP_INC_DIR := $(PROJ_DIR)/common/include/chip/$(BERLIN_CHIP_LOWCASE)/$(CPU_TYPE)
CHIP_SRC_DIR := $(PROJ_DIR)/common/chip/$(BERLIN_CHIP_LOWCASE)/$(CPU_TYPE)
# Determine last commit in src tree and status to add to
# bootloader version info. configure.am, sm.bin are modified
# by build scripts, so ignore them during index check.
GIT_LAST_COMMIT = $(shell git rev-parse --verify --short HEAD)
GIT_TREE_DIRTY = $(if $(shell git diff-index --name-only HEAD | \
grep -E -v '(configure.am|sm.bin)'),-dirty)
CFLAGS += -DBOOTLOADER_VERSION=\"$(GIT_LAST_COMMIT)$(GIT_TREE_DIRTY)\"
### BG4CDP ###
ifeq ($(BERLIN_CHIP), $(filter $(BERLIN_CHIP), BG4CDP AS370))
ifeq ($(BERLIN_CHIP), BG4CDP)
CFLAGS += -DBERLIN_SOC_BG4CDP
endif
ifeq ($(BERLIN_CHIP), AS370)
CFLAGS += -DBERLIN_SOC_AS370
endif
BOARD_DIR=customization/$(BERLIN_CHIP_LOWCASE)/$(PLATFORM)
SUPPORT_FASTLOGO = 0
SUPPORT_AVPLL_INIT = 0
INCLUDE_DIR = $(CHIP_INC_DIR)
#FASTLOGO_LIB += $(LIB_CDP_A0)
#FASTLOGO_LD += -Lboard/bg2cdp_a0/out_bg2cdp_a0 -lbg2cdp_a0
LDFLAGS += --fix-cortex-a53-843419
CFLAGS += -mfix-cortex-a53-835769
else
$(error BERLIN_CHIP "$(BERLIN_CHIP)" is not supported!)
endif
CFLAGS += -I$(BOARD_DIR) -I$(OBJDIR)
SFLAGS += -I$(BOARD_DIR) -I$(OBJDIR)
ifeq ($(BERLIN_CHIP), $(filter $(BERLIN_CHIP), BG4CDP AS370))
FASTLOGO_DIR=customization/$(BERLIN_CHIP_LOWCASE)/FASTLOGO
DHUB_DIR=customization/$(BERLIN_CHIP_LOWCASE)/DHUB
AVPLL_DIR=customization/$(BERLIN_CHIP_LOWCASE)/AVPLL
else
DHUB=$(BOARD_DIR)/DHUB
AVPLL=$(BOARD_DIR)/AVPLL
THINVPP=$(BOARD_DIR)/THINVPP
#THINVPP_INCLUDE_DIR = $(THINVPP)/source/include/include_BG2_CDP
endif
CFLAGS += -DBERLIN_C_SERIES -I$(INCLUDE_DIR) -Icommon/drivers/nand_ctrl/include/ -Icommon/drivers/nand_ctrl/ -DCPU0_START_ADDR=$(CPU0_START_ADDR)
SFLAGS += -DBERLIN_C_SERIES -I$(INCLUDE_DIR)
HOST_CFLAGS += -I$(INCLUDE_DIR)
ifeq ($(SUPPORT_FASTLOGO),1)
SUPPORT_SHOWLOGO = 1
SUPPORT_AVPLL_INIT = 1
ifeq ($(BERLIN_CHIP), $(filter $(BERLIN_CHIP), BG4CDP AS370))
CFLAGS += -DBOOTLOADER_FASTLOGO=1 -DLOGO_ENABLE_MAIN=1 -DLOGO_ENABLE_PIP=0 -DLOGO_ENABLE_AUX=0
else
CFLAGS += -DBOOTLOADER_FASTLOGO=1 -DLOGO_ENABLE_MAIN=1 -DLOGO_ENABLE_PIP=1 -DLOGO_ENABLE_AUX=1
endif
ifeq ($(SUPPORT_SHOWLOGO),1)
CFLAGS += -DBOOTLOADER_SHOWLOGO=1
endif
ifeq ($(BERLIN_CHIP), $(filter $(BERLIN_CHIP), BG4CDP AS370))
#SHOW_LOGOFRAME
CFLAGS += -I$(FASTLOGO_DIR)/
CFLAGS += -I$(FASTLOGO_DIR)/include/common/
CFLAGS += -I$(FASTLOGO_DIR)/include/vpp/
CFLAGS += -I$(DHUB_DIR)/include/
CFLAGS += -I$(AVPLL_DIR)/include/
endif
###
### CFLAGS += -I$(THINVPP)/include
### CFLAGS += -I$(THINVPP)/source/include
### CFLAGS += -I$(THINVPP)/source/FE/include
### CFLAGS += -I$(THINVPP)/source/SCL/include
### CFLAGS += -I$(THINVPP)/source/CPCB/include
### CFLAGS += -I$(THINVPP)/source/BE/include
### CFLAGS += -I$(THINVPP)/source/MISC/include
### CFLAGS += -I$(AVPLL)/include
### CFLAGS += -I$(DHUB)/include
else
SUPPORT_SHOWLOGO = 0
endif
ifeq ($(SUPPORT_AVPLL_INIT),1)
ifeq ($(BERLIN_CHIP), $(filter $(BERLIN_CHIP), BG4CDP AS370))
CFLAGS += -DBOOTLOADER_INIT_AVPLL
CFLAGS += -I$(AVPLL_DIR)/include/
endif
endif
CFLAGS += -I$(CUR_DIR)/include/
SFLAGS += -I$(CUR_DIR)/include/
HOST_CFLAGS += -I$(CUR_DIR)/include/
CFLAGS += -I$(CUR_DIR)/../../include/
CFLAGS += -I$(CUR_DIR)/common/lib/lz4/lib/
CFLAGS += -I$(CUR_DIR)/common/lib/ -DSTATIC=static
CFLAGS += -I$(CHIP_SRC_DIR)/include
#
# Common source
#
Source := $(PROJ_DIR)/source/arch/$(CPU_ARCH)/init_64.S \
$(PROJ_DIR)/source/arch/$(CPU_ARCH)/mmu_64.S \
$(PROJ_DIR)/source/arch/$(CPU_ARCH)/cache_64.S \
$(PROJ_DIR)/source/arch/$(CPU_ARCH)/jump_64.S \
$(PROJ_DIR)/source/util.c \
$(PROJ_DIR)/common/lib/string.c \
$(BOARD_DIR)/pin_init.c \
$(BOARD_DIR)/led.c \
$(CHIP_SRC_DIR)/board_init_common.c \
$(CHIP_SRC_DIR)/diag_pll.c \
$(CHIP_SRC_DIR)/pinmux.c \
$(CHIP_SRC_DIR)/chip_init.c \
$(CHIP_SRC_DIR)/chip_id.c \
$(CHIP_SRC_DIR)/gpio.c \
$(CHIP_SRC_DIR)/power_ctrl.c \
$(PROJ_DIR)/common/lib/crc32.c \
$(BOARD_DIR)/power_tuning.c
Source += $(PROJ_DIR)/common/lib/lz4/lib/lz4.c \
$(PROJ_DIR)/common/lib/lz4/lib/lz4hc.c \
$(PROJ_DIR)/common/lib/lz4/lib/lz4frame.c \
$(PROJ_DIR)/common/lib/lz4/lib/xxhash.c \
$(PROJ_DIR)/common/lib/lz4/programs/lz4cli.c \
$(PROJ_DIR)/common/lib/xz/decompress_unxz.c
# Drivers: tz
CFLAGS += -Icommon/drivers/tz
Source += $(PROJ_DIR)/common/drivers/tz/tz_nw_boot.c \
$(PROJ_DIR)/common/drivers/tz/smc_64.S
# Drivers: UART
Source += $(PROJ_DIR)/common/drivers/uart/apb_uart_driver.c $(PROJ_DIR)/common/drivers/uart/lgpl_printf.c
CFLAGS += -I$(PROJ_DIR)/common/drivers/uart \
-I$(PROJ_DIR)/common/drivers/i2c
#Driver: i2c_led
Source += $(PROJ_DIR)/common/drivers/i2c_led/i2c_led_driver.c $(PROJ_DIR)/common/drivers/i2c_led/rgb_led.c \
$(PROJ_DIR)/common/drivers/i2c_led/rgb_led_lp5018.c $(PROJ_DIR)/common/drivers/i2c_led/rgb_led_aw210xx.c
CFLAGS += -I$(PROJ_DIR)/common/drivers/i2c_led
# FDT code
Source += $(PROJ_DIR)/source/fdt/fdt_rw.c \
$(PROJ_DIR)/source/fdt/fdt_ro.c \
$(PROJ_DIR)/source/fdt/fdt.c \
$(PROJ_DIR)/source/fdt/fdt_addresses.c \
$(PROJ_DIR)/source/fdt/fdt_empty_tree.c \
$(PROJ_DIR)/source/fdt/fdt_mrvl.c \
$(PROJ_DIR)/source/fdt/fdt_strerror.c \
$(PROJ_DIR)/source/fdt/fdt_sw.c \
$(PROJ_DIR)/source/fdt/fdt_wip.c
CFLAGS += -I$(PROJ_DIR)/source/fdt
ifeq ($(BERLIN_CHIP), $(filter $(BERLIN_CHIP), BG4CDP AS370))
ifeq ($(SUPPORT_FASTLOGO),1)
#SHOW_LOGOFRAME
Source += $(FASTLOGO_DIR)/show_logoframe.c
Source += $(FASTLOGO_DIR)/source/vpp/vpp_api.c
Source += $(FASTLOGO_DIR)/source/vpp/vpp_mem.c
Source += $(FASTLOGO_DIR)/source/vpp/vpp_isr.c
Source += $(FASTLOGO_DIR)/source/vpp/framequeue.c
Source += $(FASTLOGO_DIR)/source/vpp/vpp_cfg.c
Source += $(FASTLOGO_DIR)/source/vpp/vpp_bcmbuf.c
Source += $(DHUB_DIR)/source/avio_dhub_drv.c
Source += $(DHUB_DIR)/source/hal_dhub.c
endif
ifeq ($(SUPPORT_AVPLL_INIT),1)
Source += $(AVPLL_DIR)/source/avpll_api.c
endif
endif
#ifeq ($(SUPPORT_FASTLOGO),1)
#Source += $(wildcard $(THINVPP)/source/*.c)
#Source += $(wildcard $(THINVPP)/source/FE/source/*.c)
#Source += $(wildcard $(THINVPP)/source/SCL/source/*.c)
#Source += $(wildcard $(THINVPP)/source/CPCB/source/*.c)
#Source += $(wildcard $(THINVPP)/source/BE/source/*.c)
#Source += $(wildcard $(THINVPP)/source/MISC/source/*.c)
#Source += $(wildcard $(AVPLL)/source/*.c)
#Source += $(wildcard $(DHUB)/source/*.c)
#ifeq ($(SUPPORT_SHOWLOGO),1)
#Source += $(PROJ_DIR)/showlogo.c
#endif
#endif
#bg4cdp irq
ifeq ($(BERLIN_CHIP), $(filter $(BERLIN_CHIP), BG4CDP AS370))
Source += $(PROJ_DIR)/source/arch/arm64/armv8_fun.c
Source += $(PROJ_DIR)/source/arch/arm64/exception.S
Source += $(PROJ_DIR)/source/arch/arm64/gic_diag.c
CFLAGS += -I$(PROJ_DIR)/source/arch/arm64/
SFLAGS += -I$(PROJ_DIR)/source/arch/arm64/
endif
ifeq ($(BOOT_TYPE),USBBOOT)
Source += $(PROJ_DIR)/source/usbboot_bootloader.c
CFLAGS += -D_ENABLE_USB_CONSOLE
endif
ifeq ($(BOOT_TYPE),NAND_BOOT)
Source += $(PROJ_DIR)/source/bootloader.c
CFLAGS += -DNAND_BOOT
SFLAGS += -DNAND_BOOT
ENABLE_NAND=y
endif
ifeq ($(BOOT_TYPE),EMMC_BOOT)
Source += $(PROJ_DIR)/source/bootloader.c
CFLAGS += -DEMMC_BOOT
SFLAGS += -DEMMC_BOOT
ENABLE_EMMC=y
ifeq ($(AB_BOOTFLOW), y)
Source += $(PROJ_DIR)/common/drivers/misc/boot_mode.c
CFLAGS += -I$(PROJ_DIR)/common/drivers/misc
CFLAGS += -DCONFIG_AB_BOOTFLOW
SFLAGS += -DCONFIG_AB_BOOTFLOW
endif
endif
Source += $(PROJ_DIR)/source/android/ctype.c \
$(PROJ_DIR)/source/android/strtol.c
#Source += $(CHIP_DIR)/list_speed.c $(PROJ_DIR)/diag_api.c
#CustomizeFile := $(PROJ_DIR)/customization/$(PLATFORM)/bootloader_customize.c
#ifeq ($(CustomizeFile), $(wildcard $(CustomizeFile)))
#Source += $(CustomizeFile)
#else
#Source += $(PROJ_DIR)/customization/default/bootloader_customize.c
#endif
CFLAGS += -Icommon/drivers/pwm/
Source += common/drivers/pwm/pwm_driver.c
Source += source/led_pwm.c
ifneq ($(PV_COMP), )
CFLAGS += -DPV_COMP
Source += common/drivers/pv_comp/pv_compensation.c
Source += common/drivers/pv_comp/pmic_select.c
CFLAGS += -Icommon/drivers/pv_comp
ifeq ($(PV_COMP), I2C)
CFLAGS += -DI2C -DI2C_NEWDRIVER
ifeq ($(CPU_TYPE), A0)
Source += $(CHIP_SRC_DIR)/chip_voltage_info_A0.c
else
Source += $(CHIP_SRC_DIR)/chip_voltage_info_Z1.c
endif
Source += common/drivers/i2c/diag_i2c.c
Source += common/drivers/i2c/i2c_pvd_m88pg86x.c
Source += common/drivers/i2c/i2c_pvd_sy8824b.c
Source += common/drivers/i2c/i2c_pvd_ncp6335d.c
Source += common/drivers/i2c/i2c_pvd_sy20276.c
Source += common/drivers/i2c/i2c_pvd_sy20278.c
endif
endif
ifneq ($(CPUPLL), )
CFLAGS += -DCPUPLL=$(CPUPLL)
endif
ifeq ($(ENABLE_NAND), y)
Source += common/drivers/nand_ctrl/nand_drv.c \
$(PROJ_DIR)/common/drivers/flash_ts/nflash_drv.c \
$(PROJ_DIR)/common/drivers/flash_ts/flash_ts.c
CFLAGS += -Icommon/drivers/flash -Icommon/drivers/flash_ts
CFLAGS += -DENABLE_NAND
SFLAGS += -DENABLE_NAND
ifeq ($(RANDOMIZER), y)
CFLAGS += -DENABLE_RANDOMIZER
SFLAGS += -DENABLE_RANDOMIZER
endif
ifeq ($(ROOTFS_TYPE), SQUASHFS)
CFLAGS += -DROOTFS_SQUASHFS
endif
ifeq ($(CONFIG_SLC), y)
CFLAGS += -DCONFIG_SLC
SFLAGS += -DCONFIG_SLC
endif
ifeq ($(CONFIG_ENHANCED_SLC), y)
CFLAGS += -DCONFIG_ENHANCED_SLC
SFLAGS += -DCONFIG_ENHANCED_SLC
endif
ifeq ($(CONFIG_NAND_READ_RETRY), y)
CFLAGS += -DCONFIG_NAND_READ_RETRY
SFLAGS += -DCONFIG_NAND_READ_RETRY
endif
ifeq ($(NFCECCCLK), 400)
CFLAGS += -DNFCECCCLK_400
SFLAGS += -DNFCECCCLK_400
endif
endif
ifeq ($(ENABLE_EMMC), y)
Source += common/drivers/emmc_v5/emmcDiag.c \
common/drivers/emmc_v5/emmcHC.c \
common/drivers/flash/flash_adaptor.c \
common/drivers/flash/load_gpt.c \
$(PROJ_DIR)/common/drivers/watchdog/dw_watchdog.c \
$(PROJ_DIR)/common/drivers/flash_ts/flash_ts.c \
$(PROJ_DIR)/common/drivers/flash_ts/emmc_drv.c
CFLAGS += -Icommon/drivers/emmc_v5 -Icommon/drivers/flash -Icommon/drivers/flash_ts -Icommon/drivers/watchdog
CFLAGS += -DENABLE_EMMC -DCONFIG_DCACHE
SFLAGS += -DENABLE_EMMC -DCONFIG_DCACHE
CFLAGS += -Icommon/lib/ext4
Source += common/lib/div64.c \
common/lib/ext4/dev.c \
common/lib/ext4/ext4_common.c \
common/lib/ext4/ext4fs.c
ifeq ($(EXTERNAL_EMMC), y)
CFLAGS += -DEXTERNAL_EMMC
SFLAGS += -DEXTERNAL_EMMC
endif
endif
#ifeq ($(SUPPORT_SHOWLOGO),1)
#Source += $(CHIP_DIR)/irqHandler.S $(CHIP_DIR)/gicDiag.c
#CFLAGS += -I$(PROJ_DIR)/sdio_ctrl
#endif
Source += common/drivers/timer/timer.c common/drivers/timer/apb_timer.c
ifeq ($(CONFIG_USB), y)
ifeq ($(CONFIG_USB_DWC2), y)
Source += \
common/drivers/usb_ctrl/dwc2/dwc2.c \
common/drivers/usb_ctrl/dwc2/diag_USB.c \
common/drivers/usb_ctrl/dwc2/usb_mass.c \
common/drivers/usb_ctrl/dwc2/usb_hub.c \
common/drivers/usb_ctrl/dwc2/usb_enum.c \
common/drivers/usb_ctrl/dwc2/usb2_debug.c \
common/drivers/usb_ctrl/dwc2/usb2_util.c \
common/drivers/usb_ctrl/dwc2/usb2_phy.c \
common/drivers/usb_ctrl/dwc2/diag_buffpool.c \
common/drivers/usb_ctrl/dwc2/diag_armv8.S \
common/drivers/usb_ctrl/dwc2/usb_interface.c \
common/drivers/usb_ctrl/dwc2/diag_misc.c
CFLAGS += -Icommon/drivers/timer -Icommon/drivers/usb_ctrl/dwc2/include
SFLAGS += -Icommon/drivers/timer -Icommon/drivers/usb_ctrl/dwc2/include
CFLAGS += -DCONFIG_USB
SFLAGS += -DCONFIG_USB
else
Source += common/drivers/usb_ctrl/usb.c common/drivers/usb_ctrl/ehci-hcd.c \
common/drivers/usb_ctrl/ehci-berlin.c common/drivers/usb_ctrl/usb_storage.c
CFLAGS += -Icommon/drivers/timer -Icommon/drivers/usb_ctrl
SFLAGS += -Icommon/drivers/timer -Icommon/drivers/usb_ctrl
HOST_CFLAGS += -Icommon/drivers/timer -Icommon/drivers/usb_ctrl
CFLAGS += -DCONFIG_USB
SFLAGS += -DCONFIG_USB
ifeq ($(CONFIG_USB0_STORAGE), y)
CFLAGS += -DCONFIG_USB0_STORAGE
SFLAGS += -DCONFIG_USB0_STORAGE
endif
ifeq ($(CONFIG_USB1_STORAGE), y)
CFLAGS += -DCONFIG_USB1_STORAGE
SFLAGS += -DCONFIG_USB1_STORAGE
endif
endif
endif
ifeq ($(CONNECT_BUTTON_ENABLE), y)
CFLAGS += -DENABLE_CONNECT_BTN
SFLAGS += -DENABLE_CONNECT_BTN
endif
ifeq ($(CONFIG_GPT), y)
CFLAGS += -DCONFIG_GPT
SFLAGS += -DCONFIG_GPT
endif
ifeq ($(DISABLE_CRASH_COUNTER), y)
CFLAGS += -DDISABLE_CRASH_COUNTER
SFLAGS += -DDISABLE_CRASH_COUNTER
endif
ifeq ($(ENABLE_EMMC)_$(ENABLE_NAND), y_y)
$(error "NAND and EMMC could not be enabled at the same time !")
endif
#
# Common objects
#
#Object := $(patsubst %.S,%.o,$(Source))
#Object := $(patsubst %.c,%.o,$(Object))
TMPDIR=.tmp_$(BOOT_TYPE)
OBJDIR=$(TMPDIR)/$(BOOT_TYPE)
Object := $(Source)
Object := $(patsubst %.c,$(OBJDIR)/%.o,$(Object))
Object := $(patsubst %.S,$(OBJDIR)/%.o,$(Object))
Objtree := $(abspath $(dir $(Object)))
#
# Include the make variables (CC, etc...)
#
AS = $(CROSS_COMPILE)as
# TODO(wzhong): use default gold linker.
LD = $(CROSS_COMPILE)ld.bfd
CC = $(CROSS_COMPILE)gcc
CPP = $(CROSS_COMPILE)g++
AR = $(CROSS_COMPILE)ar
NM = $(CROSS_COMPILE)nm
STRIP = $(CROSS_COMPILE)strip
OBJCOPY = $(CROSS_COMPILE)objcopy
OBJDUMP = $(CROSS_COMPILE)objdump
GCCINCDIR = $(shell $(CC) -print-file-name=include)
PLATFORM_LIBS = -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
#
# Common rule
#
$(OBJDIR)/%.o: %.c
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $(PROJ_DIR)/$<
$(OBJDIR)/%.o: %.S
$(CC) $(SFLAGS) $(EXTRA_CFLAGS) -c -o $@ $(PROJ_DIR)/$<
#
# Common Make targets
#
.PHONY: all init clean fresh
all: bootloader
# @./addheader.sh $<.elf $<.img
# @./encryption.sh $<.img $<.img.en
init:
#############################################################################
## Source = $(Source)
## Object = $(Object)
#############################################################################
@mkdir -p $(Objtree)
bootloader: header $(Object) $(FASTLOGO_LIB)
#############################################################################
## SUPPORT_FASTLOGO = $(SUPPORT_FASTLOGO)
## SUPPORT_SHOWLOGO = $(SUPPORT_SHOWLOGO)
#############################################################################
$(LD) $(LDFLAGS) $(EXTRA_LDFLAGS) -o $@.elf $(Object) $(FASTLOGO_LD) $(PLATFORM_LIBS)
$(OBJCOPY) -O binary $@.elf $@.bin
$(OBJDUMP) -D $@.elf > $@.S
cp bootloader.elf bootloader_en.elf
.PHONY: header
header: init $(INCLUDE_DIR)/Galois_memmap.h $(INCLUDE_DIR)/global.h
@./script/header.sh $(INCLUDE_DIR)/Galois_memmap.h $(OBJDIR)/memmap.h MEMMAP_
@./script/header.sh $(INCLUDE_DIR)/global.h $(OBJDIR)/ra_gbl.h RA_Gbl_
@./script/header.sh $(INCLUDE_DIR)/MctrlSS.h $(OBJDIR)/mem_ctrl.h RA_MctrlSS_
@./script/header.sh $(INCLUDE_DIR)/drmdmx.h $(OBJDIR)/figo_drm.h Figo_Drm_
@#./script/header.sh $(INCLUDE_DIR)/drm_sw_spec.h $(OBJDIR)/drm.h DRM_
@./script/header.sh $(INCLUDE_DIR)/soc.h $(OBJDIR)/Berlin_SoC.h System
clean:
@rm -rf board/bg2cdp_a0/.tmp_*
@rm -rf board/bg2cdp_a0/out_*
@rm -rf board/bg2cdp_z1/.tmp_*
@rm -rf board/bg2cdp_z1/out_*
@rm -rf .tmp_*
@rm -rf $(Object) $(FIGO_Object) bootloader.elf bootloader.map bootloader.bin configure.ame
@rm -rf memmap.h ra_gbl.h mem_ctrl.h figo_drm.h drm.h
@rm -rf flash.bin encrypt
@rm -rf debug.log
@rm -rf figo_sram.bin figo_sram.elf figo_sram_bin.c
@rm -rf code echobin flash_en.bin
@rm -rf cold_cmd_table.bin warm_cmd_table.bin
@rm -rf loader.bin loader_en.bin sm.en.bin
@rm -rf global.h Galois_memmap.h
@rm -rf gen_uboot_scr
fresh: clean
@rm -rf linux_param.h customer_key_store.h Berlin_SoC.h
@rm -rf *.bin *.log *.img *.info
@rm -rf version layout.*
@rm -rf *.o */*.o
.PHONY: regen
regen: clean all
.PHONY: bg2cdp_a0
bg2cdp_a0:
CC="$(CC)" \
AR="$(AR)" \
PROJ_DIR="$(CUR_DIR)" \
CFLAGS="$(CFLAGS)" \
make -C board/bg2cdp_a0 -f fastlogo.mak
.PHONY: bg2cdp_z1
bg2cdp_z1:
CC="$(CC)" \
AR="$(AR)" \
PROJ_DIR="$(CUR_DIR)" \
CFLAGS="$(CFLAGS)" \
make -C board/bg2cdp_z1 -f fastlogo.mak