blob: 4dc0a924b2010553a4e705a27a7350e78e792cee [file] [log] [blame]
include $(COMMON_BUILD_DIR)/clear_vars.mk
-include $(SCP_BUILD_DIR)/clear_vars.mk
###########################################################
## Common SCP build environment
###########################################################
RV33_VAR := MRV33E25
REL_ROOT_DIR := ../../../..
CROSS_COMPILE = $(REL_ROOT_DIR)/prebuilt/clang/md32rv/linux-x86
#CROSS_COMPILE = /mtkeda/Utility/CodeLine/md32rv/1.4.1/ToolChain/LLVM/
#CROSS_COMPILE = /mtkeda/Utility/Doble/md32rv/rv1.4.1_printf/ToolChain/LLVM/
CC := $(CROSS_COMPILE)/bin/clang
CPP := $(CROSS_COMPILE)/bin/clang-cpp
LLD := $(CROSS_COMPILE)/bin/ld.lld
#LLD := /mtkeda/Utility/Doble/md32rv/alpha70/ToolChain/LLVM/bin/ld.lld
AR := $(CROSS_COMPILE)/bin/llvm-ar
RANLIB := $(CROSS_COMPILE)/bin/llvm-ranlib
OBJCOPY := $(CROSS_COMPILE)/bin/llvm-objcopy
OBJDUMP := $(CROSS_COMPILE)/bin/llvm-objdump
SIZE := $(CROSS_COMPILE)/bin/llvm-size
STRIP := $(CROSS_COMPILE)/bin/strip
READELF := $(CROSS_COMPILE)/bin/llvm-readelf
LLVM_RTLIB := $(CROSS_COMPILE)/lib/clang/7.0.0/lib/riscv32/$(RV33_VAR)
LLVM_DKWLIB := $(CROSS_COMPILE)/dkwlib/$(RV33_VAR)/lib
LLVM_NEWLIB := $(CROSS_COMPILE)/riscv32-elf/$(RV33_VAR)/lib
LLVM_INCLUDE := $(CROSS_COMPILE)/riscv32-elf/$(RV33_VAR)/include
LLVM_DKWINC := $(COMMON_INCLUDE_DIR)/dkwlib_inc/
#TMP_MODULE_ROOT := /proj/mtk11261/misc/alps/vendor/mediatek/proprietary/tinysys/private/ESL_simulator/ESL_RV33/toolchain/riscv32
#GOBJDUMP := $(TMP_MODULE_ROOT)/bin/riscv32-unknown-elf-objdump
#READELF := $(TMP_MODULE_ROOT)/bin/riscv32-unknown-elf-readelf
#OBJCOPY := $(TMP_MODULE_ROOT)/bin/riscv32-unknown-elf-objcopy
# Apply default environment if CROSS_COMPILE is not defined
ifeq (,$(CROSS_COMPILE))
REL_ROOT_DIR := ../../../../..
MRV_MODULE_ROOT := $(REL_ROOT_DIR)/prebuilt/clang/md32rv/linux-x86
CC := $(MRV_MODULE_ROOT)/bin/clang
CPP := $(MRV_MODULE_ROOT)/bin/clang-cpp
LLD := $(MRV_MODULE_ROOT)/bin/ld.lld
AR := $(MRV_MODULE_ROOT)/bin/llvm-ar
RANLIB := $(MRV_MODULE_ROOT)/bin/llvm-ranlib
OBJCOPY := $(MRV_MODULE_ROOT)/bin/llvm-objcopy
OBJDUMP := $(MRV_MODULE_ROOT)/bin/llvm-objdump
SIZE := $(MRV_MODULE_ROOT)/bin/llvm-size
#STRIP := $(MRV_MODULE_ROOT)/bin/strip
READELF := $(MRV_MODULE_ROOT)/bin/llvm-readelf
LLVM_RTLIB := $(MRV_MODULE_ROOT)/lib/clang/5.0.1/lib/riscv32/$(RV33_VAR)
LLVM_NEWLIB := $(MRV_MODULE_ROOT)/riscv32-elf/$(RV33_VAR)/lib
endif # CROSS_COMPILE is not defined
ifeq (1,$(V))
$(info $(TINYSYS_MEDMCU): CC=$(CC))
$(info $(TINYSYS_MEDMCU): CPP=$(CPP))
$(info $(TINYSYS_MEDMCU): LLD=$(LLD))
$(info $(TINYSYS_MEDMCU): AR=$(AR))
$(info $(TINYSYS_MEDMCU): RANLIB=$(RANLIB))
$(info $(TINYSYS_MEDMCU): OBJCOPY=$(OBJCOPY))
$(info $(TINYSYS_MEDMCU): OBJDUMP=$(OBJDUMP))
$(info $(TINYSYS_MEDMCU): SIZE=$(SIZE))
$(info $(TINYSYS_MEDMCU): STRIP=$(STRIP))
$(info $(TINYSYS_MEDMCU): READELF=$(READELF))
$(info $(TINYSYS_MEDMCU): LLVM_RTLIB=$(LLVM_RTLIB))
$(info $(TINYSYS_MEDMCU): LLVM_DKWLIB=$(LLVM_DKWLIB))
endif
CFLAGS += -Werror -Wall -Wextra -Wshadow -Wpointer-arith -Wbad-function-cast \
-Wcast-align -Wsign-compare -Waggregate-return -Wstrict-prototypes \
-Wmissing-prototypes -Wmissing-declarations -Wunused \
-Wno-unused-parameter -Wno-format \
-g -fomit-frame-pointer -fno-strict-aliasing \
-fno-builtin -mllvm -enable-printf-opt=false -Os -D__gracefulExit -DLLVM \
--target=riscv32-unknown-elf -mcpu=$(RV33_VAR)
# Define build type. Default to release
BUILD_TYPE ?= release
ifeq (1,$(V))
$(info $(TINYSYS_MEDMCU): BUILD_TYPE=$(BUILD_TYPE))
endif
ifeq (debug,$(strip $(BUILD_TYPE)))
CFLAGS += -DTINYSYS_DEBUG_BUILD
endif
###########################################################
## Processor-based environment and targets
###########################################################
PROCESSOR_DIR := $(SCP_PROJECT_DIR)/$(PROCESSOR)
PLATFORM_BASE_DIR := $(PROCESSOR_DIR)/$(PLATFORM)
PLATFORM_DIR := $(PLATFORM_BASE_DIR)/platform
PROJECT_DIR := $(PLATFORM_BASE_DIR)/$(PROJECT)
ifeq (,$(wildcard $(PROJECT_DIR)))
PROJECT_DIR := $(PLATFORM_BASE_DIR)/internal/$(PROJECT)
endif
PLATFORM_FEATURES_DIR := $(PLATFORM_DIR)/features
SCP_BUILT_DIR := $(SCP_BUILT_DIR)/$(PROCESSOR)/medmcu
DRIVERS_PLATFORM_DIR := $(SCP_DRIVERS_DIR)/$(PROCESSOR)/$(PLATFORM)
GENERATED_DIR := $(SCP_BUILT_DIR)/generated
GENERATED_INCLUDE_DIR := $(GENERATED_DIR)/include
$(PROCESSOR).TINYSYS_CONFIG_H := $(GENERATED_INCLUDE_DIR)/tinysys_config.h
$(PROCESSOR).BIN_BUILT := \
$(SCP_BUILT_DIR)/$(TINYSYS_MEDMCU)-$(PROCESSOR).bin
$(PROCESSOR)_MEDHW_GC0_PM.BIN_BUILT := $(SCP_BUILT_DIR)/medhw-gc0-pm.bin
$(PROCESSOR)_MEDHW_GC1_PM.BIN_BUILT := $(SCP_BUILT_DIR)/medhw-gc1-pm.bin
$(PROCESSOR)_MEDHW_GC2_PM.BIN_BUILT := $(SCP_BUILT_DIR)/medhw-gc2-pm.bin
$(PROCESSOR)_MEDHW_GC0_DM.BIN_BUILT := $(SCP_BUILT_DIR)/medhw-gc0-dm.bin
$(PROCESSOR)_MEDHW_GC1_DM.BIN_BUILT := $(SCP_BUILT_DIR)/medhw-gc1-dm.bin
$(PROCESSOR)_MEDHW_GC2_DM.BIN_BUILT := $(SCP_BUILT_DIR)/medhw-gc2-dm.bin
$(PROCESSOR)_MEDHW.BIN_BUILT := $(SCP_BUILT_DIR)/medhw.bin
# Set to no on DVT and SLT load
CFG_HEAP_ON_L1TCM = yes
ifeq (yes,$(CFG_HEAP_ON_L1TCM))
$(PROCESSOR)_L1TCM.BIN_BUILT := \
$(SCP_BUILT_DIR)/$(TINYSYS_MEDMCU)-$(PROCESSOR)_L1TCM.bin
else
$(PROCESSOR)_DRAM.BIN_BUILT := \
$(SCP_BUILT_DIR)/$(TINYSYS_MEDMCU)-$(PROCESSOR)_DRAM.bin
endif
$(PROCESSOR).LINK_LD := $(SCP_BUILT_DIR)/link.ld
SCP_BIN_STEM := $(basename $($(PROCESSOR).BIN_BUILT))
$(PROCESSOR).BIN_NH := $(SCP_BIN_STEM)-no-mtk-header.bin
$(PROCESSOR).BIN_MEDHW_NH := $(DRIVERS_PLATFORM_DIR)/med/medhw/bin
MEDHW_GC0_PM := assembly_code_medhw_gc0.bin
MEDHW_GC1_PM := assembly_code_medhw_gc1.bin
MEDHW_GC2_PM := assembly_code_medhw_gc2.bin
MEDHW_GC0_DM := dm_data_medhw_gc0.bin
MEDHW_GC1_DM := dm_data_medhw_gc1.bin
MEDHW_GC2_DM := dm_data_medhw_gc2.bin
ifeq (yes,$(CFG_HEAP_ON_L1TCM))
$(PROCESSOR).BIN_L1TCM_NH := $(SCP_BIN_STEM)_L1TCM-no-mtk-header.bin
else
$(PROCESSOR).BIN_DRAM_NH := $(SCP_BIN_STEM)_DRAM-no-mtk-header.bin
endif
$(PROCESSOR).ELF_FILE := $(SCP_BIN_STEM).elf
$(PROCESSOR).MAP_FILE := $(SCP_BIN_STEM).map
$(PROCESSOR).ASM_FILE := $(SCP_BIN_STEM).asm
$(PROCESSOR).ASM2_FILE := $(SCP_BIN_STEM).asm2
$(PROCESSOR).RELF_FILE := $(SCP_BIN_STEM).relf
$(PROCESSOR).IMG_HDR_CFG := $(SCP_BUILT_DIR)/img_hdr_$(notdir $(SCP_BIN_STEM)).cfg
$(PROCESSOR)_MEDHW_GC0_PM.IMG_HDR_CFG := $(SCP_BUILT_DIR)/img_hdr_medhw-gc0-pm.cfg
$(PROCESSOR)_MEDHW_GC1_PM.IMG_HDR_CFG := $(SCP_BUILT_DIR)/img_hdr_medhw-gc1-pm.cfg
$(PROCESSOR)_MEDHW_GC2_PM.IMG_HDR_CFG := $(SCP_BUILT_DIR)/img_hdr_medhw-gc2-pm.cfg
$(PROCESSOR)_MEDHW_GC0_DM.IMG_HDR_CFG := $(SCP_BUILT_DIR)/img_hdr_medhw-gc0-dm.cfg
$(PROCESSOR)_MEDHW_GC1_DM.IMG_HDR_CFG := $(SCP_BUILT_DIR)/img_hdr_medhw-gc1-dm.cfg
$(PROCESSOR)_MEDHW_GC2_DM.IMG_HDR_CFG := $(SCP_BUILT_DIR)/img_hdr_medhw-gc2-dm.cfg
ifeq (yes,$(CFG_HEAP_ON_L1TCM))
$(PROCESSOR)_L1TCM.IMG_HDR_CFG := $(SCP_BUILT_DIR)/img_hdr_$(notdir $(SCP_BIN_STEM))_l1tcm.cfg
else
$(PROCESSOR)_DRAM.IMG_HDR_CFG := $(SCP_BUILT_DIR)/img_hdr_$(notdir $(SCP_BIN_STEM))_dram.cfg
endif
# ESL-specific outputs
$(PROCESSOR).ESL_AP_LINK_LD := $(SCP_BUILT_DIR)/link.ap.ld
$(PROCESSOR).ESL_MCU0_LINK_LD := $(SCP_BUILT_DIR)/link.mcu0.ld
$(PROCESSOR).ESL_MCU1_LINK_LD := $(SCP_BUILT_DIR)/link.mcu1.ld
$(PROCESSOR).ESL_AP_ELF := $(SCP_BIN_STEM).ap.elf
$(PROCESSOR).ESL_MCU0_ELF := $(SCP_BIN_STEM).mcu0.elf
$(PROCESSOR).ESL_MCU1_ELF := $(SCP_BIN_STEM).mcu1.elf
$(PROCESSOR).ESL_AP_MAP := $(SCP_BIN_STEM).ap.map
$(PROCESSOR).ESL_MCU0_MAP := $(SCP_BIN_STEM).mcu0.map
$(PROCESSOR).ESL_MCU1_MAP := $(SCP_BIN_STEM).mcu1.map
$(PROCESSOR).ESL_AP_ASM := $(SCP_BIN_STEM).ap.asm
$(PROCESSOR).ESL_MCU0_ASM := $(SCP_BIN_STEM).mcu0.asm
$(PROCESSOR).ESL_MCU1_ASM := $(SCP_BIN_STEM).mcu1.asm
$(PROCESSOR).ESL_AP_BIN := $(SCP_BIN_STEM).ap.bin
$(PROCESSOR).ESL_MCU0_BIN := $(SCP_BIN_STEM).mcu0.bin
$(PROCESSOR).ESL_MCU1_BIN := $(SCP_BIN_STEM).mcu1.bin
PLATFORM_MK := $(PLATFORM_DIR)/platform.mk
ifeq ($(wildcard $(PLATFORM_MK)),)
$(error $(TINYSYS_MEDMCU): $(PLATFORM_MK) is missing)
endif
# Reset any previously defined SCP options before including my own definitions
$(foreach v,$(SCP_PREVIOUS_CFG_OPTS), \
$(eval $(v) := ) \
)
scp_old_cfgs := $(.VARIABLES)
include $(PLATFORM_MK)
scp_new_cfgs := $(.VARIABLES)
SCP_PREVIOUS_CFG_OPTS := \
$(filter CFG_%,$(filter-out $(scp_old_cfgs),$(scp_new_cfgs)))
ifneq (yesyes,$(CFG_ESL_BUILD)$(CFG_ESL_DUAL_CORE))
ALL_SCP_BINS := $(ALL_SCP_BINS) $($(PROCESSOR).BIN_BUILT)
else
ALL_SCP_ESL_BINS := $(ALL_SCP_ESL_BINS) \
$($(PROCESSOR).ESL_AP_BIN) \
$($(PROCESSOR).ESL_MCU0_BIN) \
$($(PROCESSOR).ESL_MCU1_BIN)
endif
INCLUDES += $(GENERATED_INCLUDE_DIR)
INCLUDES += $(LLVM_DKWINC)
CFLAGS += -include $($(PROCESSOR).TINYSYS_CONFIG_H)
# Include project-specific files only when available
ifneq ($(wildcard $(PROJECT_DIR)/inc),)
INCLUDES += $(PROJECT_DIR)/inc
endif
ifneq ($(wildcard $(PROJECT_DIR)/src/project.c),)
C_FILES += $(wildcard $(PROJECT_DIR)/src/project.c)
endif
C_FILES := $(patsubst ./%,%,$(C_FILES))
S_FILES := $(patsubst ./%,%,$(S_FILES))
C_OBJS := $(sort $(C_FILES:%.c=$(SCP_BUILT_DIR)/%.o))
S_OBJS := $(sort $(S_FILES:%.S=$(SCP_BUILT_DIR)/%.o))
OBJS += $(sort $(C_OBJS) $(S_OBJS))
$(OBJS): $($(PROCESSOR).TINYSYS_CONFIG_H)
# Set dependency
DEPS += $(sort $(filter-out %.d,$(MAKEFILE_LIST)))
# Stash the list of configuration names and values to generate config header
CONFIG_MK_FILES := \
$(PLATFORM_MK) \
$(wildcard $(PROJECT_DIR)/project.mk)
$(call stash_config_options,$(CONFIG_MK_FILES))
INCLUDES := $(call normalize-includes,$(INCLUDES))
###########################################################
## Generic build targets
###########################################################
$(C_OBJS): PRIVATE_BUILD_TAG := $(TINYSYS_MEDMCU)
$(C_OBJS): PRIVATE_CC := $(CC)
$(C_OBJS): PRIVATE_CFLAGS := $(CFLAGS)
$(C_OBJS): PRIVATE_INCLUDES := $(INCLUDES)
$(C_OBJS): $(SCP_BUILT_DIR)/%.o: %.c
$(compile-c-or-s-to-o)
$(S_OBJS): PRIVATE_BUILD_TAG := $(TINYSYS_MEDMCU)
$(S_OBJS): PRIVATE_CC := $(CC)
$(S_OBJS): PRIVATE_CFLAGS := $(CFLAGS)
$(S_OBJS): PRIVATE_INCLUDES := $(INCLUDES)
$(S_OBJS): $(SCP_BUILT_DIR)/%.o: %.S
$(compile-c-or-s-to-o)
# Generate header file that contains all config options and its values
.PHONY: configheader
configheader: $($(PROCESSOR).TINYSYS_CONFIG_H)
.PHONY: $($(PROCESSOR).TINYSYS_CONFIG_H)
$($(PROCESSOR).TINYSYS_CONFIG_H): PRIVATE_PROCESSOR := $(PROCESSOR)
$($(PROCESSOR).TINYSYS_CONFIG_H):
$(call gen-tinysys-header,__TINYSYS_CONFIG_H, \
$($(PRIVATE_PROCESSOR).CONFIG_OPTIONS), $(TINYSYS_MEDMCU),)
$(OBJS): $(DEPS)
-include $(OBJS:.o=.d)
###########################################################
## Processor-based SCP build targets
###########################################################
$($(PROCESSOR).BIN_BUILT): PRIVATE_PROCESSOR:= $(PROCESSOR)
$($(PROCESSOR).BIN_BUILT): PRIVATE_BIN_NH := $($(PROCESSOR).BIN_NH)
$($(PROCESSOR).BIN_BUILT): PRIVATE_BUILT_DIR := $(SCP_BUILT_DIR)
$($(PROCESSOR).BIN_BUILT): PRIVATE_IMG_HDR_CFG := $($(PROCESSOR).IMG_HDR_CFG)
$($(PROCESSOR).BIN_BUILT): PRIVATE_BIN_MEDHW_GC0_PM_BUILT := $($(PROCESSOR)_MEDHW_GC0_PM.BIN_BUILT)
$($(PROCESSOR).BIN_BUILT): PRIVATE_BIN_MEDHW_GC1_PM_BUILT := $($(PROCESSOR)_MEDHW_GC1_PM.BIN_BUILT)
$($(PROCESSOR).BIN_BUILT): PRIVATE_BIN_MEDHW_GC2_PM_BUILT := $($(PROCESSOR)_MEDHW_GC2_PM.BIN_BUILT)
$($(PROCESSOR).BIN_BUILT): PRIVATE_BIN_MEDHW_GC0_DM_BUILT := $($(PROCESSOR)_MEDHW_GC0_DM.BIN_BUILT)
$($(PROCESSOR).BIN_BUILT): PRIVATE_BIN_MEDHW_GC1_DM_BUILT := $($(PROCESSOR)_MEDHW_GC1_DM.BIN_BUILT)
$($(PROCESSOR).BIN_BUILT): PRIVATE_BIN_MEDHW_GC2_DM_BUILT := $($(PROCESSOR)_MEDHW_GC2_DM.BIN_BUILT)
$($(PROCESSOR).BIN_BUILT): PRIVATE_BIN_MEDHW_NH := $($(PROCESSOR).BIN_MEDHW_NH)
$($(PROCESSOR).BIN_BUILT): PRIVATE_MEDHW_GC0_PM_IMG_HDR_CFG := $($(PROCESSOR)_MEDHW_GC0_PM.IMG_HDR_CFG)
$($(PROCESSOR).BIN_BUILT): PRIVATE_MEDHW_GC1_PM_IMG_HDR_CFG := $($(PROCESSOR)_MEDHW_GC1_PM.IMG_HDR_CFG)
$($(PROCESSOR).BIN_BUILT): PRIVATE_MEDHW_GC2_PM_IMG_HDR_CFG := $($(PROCESSOR)_MEDHW_GC2_PM.IMG_HDR_CFG)
$($(PROCESSOR).BIN_BUILT): PRIVATE_MEDHW_GC0_DM_IMG_HDR_CFG := $($(PROCESSOR)_MEDHW_GC0_DM.IMG_HDR_CFG)
$($(PROCESSOR).BIN_BUILT): PRIVATE_MEDHW_GC1_DM_IMG_HDR_CFG := $($(PROCESSOR)_MEDHW_GC1_DM.IMG_HDR_CFG)
$($(PROCESSOR).BIN_BUILT): PRIVATE_MEDHW_GC2_DM_IMG_HDR_CFG := $($(PROCESSOR)_MEDHW_GC2_DM.IMG_HDR_CFG)
$($(PROCESSOR).BIN_BUILT): PRIVATE_ELF_FILE := $($(PROCESSOR).ELF_FILE)
$($(PROCESSOR).BIN_BUILT): PRIVATE_PLATFORM_DIR := $(PLATFORM_DIR)
$($(PROCESSOR).BIN_BUILT): PRIVATE_PROJECT_DIR := $(PROJECT_DIR)
ifeq (yes,$(CFG_HEAP_ON_L1TCM))
$($(PROCESSOR).BIN_BUILT): PRIVATE_BIN_L1TCM_BUILT := $($(PROCESSOR)_L1TCM.BIN_BUILT)
$($(PROCESSOR).BIN_BUILT): PRIVATE_BIN_L1TCM_NH := $($(PROCESSOR).BIN_L1TCM_NH)
$($(PROCESSOR).BIN_BUILT): PRIVATE_L1TCM_IMG_HDR_CFG := $($(PROCESSOR)_L1TCM.IMG_HDR_CFG)
else
$($(PROCESSOR).BIN_BUILT): PRIVATE_BIN_DRAM_BUILT := $($(PROCESSOR)_DRAM.BIN_BUILT)
$($(PROCESSOR).BIN_BUILT): PRIVATE_BIN_DRAM_NH := $($(PROCESSOR).BIN_DRAM_NH)
$($(PROCESSOR).BIN_BUILT): PRIVATE_DRAM_IMG_HDR_CFG := $($(PROCESSOR)_DRAM.IMG_HDR_CFG)
endif
$($(PROCESSOR).BIN_BUILT): PRIVATE_OBJCOPY := $(OBJCOPY)
ifeq (yes,$(CFG_HEAP_ON_L1TCM))
$($(PROCESSOR).BIN_BUILT): $($(PROCESSOR).ELF_FILE) \
$($(PROCESSOR).IMG_HDR_CFG) $($(PROCESSOR)_DRAM.IMG_HDR_CFG) $(DEPS) \
$($(PROCESSOR)_MEDHW_GC0_PM.IMG_HDR_CFG) $($(PROCESSOR)_MEDHW_GC1_PM.IMG_HDR_CFG) $($(PROCESSOR)_MEDHW_GC2_PM.IMG_HDR_CFG) \
$($(PROCESSOR)_MEDHW_GC0_DM.IMG_HDR_CFG) $($(PROCESSOR)_MEDHW_GC1_DM.IMG_HDR_CFG) $($(PROCESSOR)_MEDHW_GC2_DM.IMG_HDR_CFG) $(DEPS) \
| $(OBJSIZE) $(MKIMAGE)
else
$($(PROCESSOR).BIN_BUILT): $($(PROCESSOR).ELF_FILE) \
$($(PROCESSOR).IMG_HDR_CFG) $($(PROCESSOR)_L1TCM.IMG_HDR_CFG) $(DEPS) \
$($(PROCESSOR)_MEDHW_GC0_PM.IMG_HDR_CFG) $($(PROCESSOR)_MEDHW_GC1_PM.IMG_HDR_CFG) $($(PROCESSOR)_MEDHW_GC2_PM.IMG_HDR_CFG) \
$($(PROCESSOR)_MEDHW_GC0_DM.IMG_HDR_CFG) $($(PROCESSOR)_MEDHW_GC1_DM.IMG_HDR_CFG) $($(PROCESSOR)_MEDHW_GC2_DM.IMG_HDR_CFG) $(DEPS) \
| $(OBJSIZE) $(MKIMAGE)
endif
@echo '$(TINYSYS_MEDMCU): BIN $@'
ifeq (yes,$(CFG_HEAP_ON_L1TCM))
$(hide)$(PRIVATE_OBJCOPY) -O binary --remove-section .l1tcm_region $(PRIVATE_ELF_FILE) $(PRIVATE_BIN_NH)
#$(hide)$(PRIVATE_OBJCOPY) -O binary $(PRIVATE_ELF_FILE) $(PRIVATE_BIN_NH)
-rm -f $(PRIVATE_BIN_L1TCM_NH)
-rm -f $(PRIVATE_BIN_L1TCM_BUILT)
-$(hide)$(PRIVATE_OBJCOPY) -O binary --only-keep=.l1tcm_region $(PRIVATE_ELF_FILE) $(PRIVATE_BIN_L1TCM_NH)
@if [ -s '$(PRIVATE_BIN_L1TCM_NH)' ]; then \
echo "$(TINYSYS_MEDMCU): enable cache support for $(PRIVATE_PROCESSOR)"; \
$(MKIMAGE) $(PRIVATE_BIN_L1TCM_NH) $(PRIVATE_L1TCM_IMG_HDR_CFG) > $(PRIVATE_BIN_L1TCM_BUILT); \
fi;
else
$(hide)$(PRIVATE_OBJCOPY) -O binary --remove-section .dram_region $(PRIVATE_ELF_FILE) $(PRIVATE_BIN_NH)
#$(hide)$(PRIVATE_OBJCOPY) -O binary $(PRIVATE_ELF_FILE) $(PRIVATE_BIN_NH)
-rm -f $(PRIVATE_BIN_DRAM_NH)
-rm -f $(PRIVATE_BIN_DRAM_BUILT)
-$(hide)$(PRIVATE_OBJCOPY) -O binary --only-keep=.dram_region $(PRIVATE_ELF_FILE) $(PRIVATE_BIN_DRAM_NH)
@if [ -s '$(PRIVATE_BIN_DRAM_NH)' ]; then \
echo "$(TINYSYS_MEDMCU): enable cache support for $(PRIVATE_PROCESSOR)"; \
$(MKIMAGE) $(PRIVATE_BIN_DRAM_NH) $(PRIVATE_DRAM_IMG_HDR_CFG) > $(PRIVATE_BIN_DRAM_BUILT); \
fi;
endif
@if [ -s '$(PRIVATE_BIN_MEDHW_NH)/$(MEDHW_GC0_PM)' ]; then \
echo "$(TINYSYS_MEDMCU): $(MEDHW_GC0_PM) binary found"; \
$(MKIMAGE) $(PRIVATE_BIN_MEDHW_NH)/$(MEDHW_GC0_PM) $(PRIVATE_MEDHW_GC0_PM_IMG_HDR_CFG) > $(PRIVATE_BIN_MEDHW_GC0_PM_BUILT); \
$(MKIMAGE) $(PRIVATE_BIN_MEDHW_NH)/$(MEDHW_GC0_DM) $(PRIVATE_MEDHW_GC0_DM_IMG_HDR_CFG) > $(PRIVATE_BIN_MEDHW_GC0_DM_BUILT); \
cat $(PRIVATE_BIN_MEDHW_GC0_PM_BUILT) $(PRIVATE_BIN_MEDHW_GC0_DM_BUILT) > $($(PROCESSOR)_MEDHW.BIN_BUILT); \
fi;
@if [ -s '$(PRIVATE_BIN_MEDHW_NH)/$(MEDHW_GC1_PM)' ]; then \
echo "$(TINYSYS_MEDMCU): $(MEDHW_GC1_PM) binary found"; \
$(MKIMAGE) $(PRIVATE_BIN_MEDHW_NH)/$(MEDHW_GC1_PM) $(PRIVATE_MEDHW_GC1_PM_IMG_HDR_CFG) > $(PRIVATE_BIN_MEDHW_GC1_PM_BUILT); \
$(MKIMAGE) $(PRIVATE_BIN_MEDHW_NH)/$(MEDHW_GC1_DM) $(PRIVATE_MEDHW_GC1_DM_IMG_HDR_CFG) > $(PRIVATE_BIN_MEDHW_GC1_DM_BUILT); \
cat $(PRIVATE_BIN_MEDHW_GC1_PM_BUILT) $(PRIVATE_BIN_MEDHW_GC1_DM_BUILT) >> $($(PROCESSOR)_MEDHW.BIN_BUILT); \
fi;
@if [ -s '$(PRIVATE_BIN_MEDHW_NH)/$(MEDHW_GC2_PM)' ]; then \
echo "$(TINYSYS_MEDMCU): $(MEDHW_GC2_PM) binary found"; \
$(MKIMAGE) $(PRIVATE_BIN_MEDHW_NH)/$(MEDHW_GC2_PM) $(PRIVATE_MEDHW_GC2_PM_IMG_HDR_CFG) > $(PRIVATE_BIN_MEDHW_GC2_PM_BUILT); \
$(MKIMAGE) $(PRIVATE_BIN_MEDHW_NH)/$(MEDHW_GC2_DM) $(PRIVATE_MEDHW_GC2_DM_IMG_HDR_CFG) > $(PRIVATE_BIN_MEDHW_GC2_DM_BUILT); \
cat $(PRIVATE_BIN_MEDHW_GC2_PM_BUILT) $(PRIVATE_BIN_MEDHW_GC2_DM_BUILT) >> $($(PROCESSOR)_MEDHW.BIN_BUILT); \
fi;
$(hide)$(MKIMAGE) $(PRIVATE_BIN_NH) $(PRIVATE_IMG_HDR_CFG) > $@
ifeq (yes,$(CFG_HEAP_ON_L1TCM))
.PHONY: $($(PROCESSOR)_L1TCM.BIN_BUILT)
else
.PHONY: $($(PROCESSOR)_DRAM.BIN_BUILT)
endif
ifeq (1,$(V))
$(hide)$(SIZE) $(PRIVATE_ELF_FILE)
$(hide)$(OBJSIZE) $(PRIVATE_BUILT_DIR)/$(SCP_RTOS_SRC_DIR)
$(hide)$(OBJSIZE) $(PRIVATE_BUILT_DIR)/$(PRIVATE_PLATFORM_DIR)
$(hide)$(OBJSIZE) $(PRIVATE_BUILT_DIR)/$(PRIVATE_PROJECT_DIR)
endif
MY_LIBFLAGS_SEARCH_PATH := $(patsubst -L%,%,$(filter -L%,$(LIBFLAGS)))
MY_LIBFLAGS_SEARCH_NAME := $(patsubst -l%,lib%.a,$(filter -l%,$(LIBFLAGS)))
MY_LIBFLAGS_SEARCH_FILE := $(wildcard $(foreach p,$(MY_LIBFLAGS_SEARCH_PATH),$(foreach n,$(MY_LIBFLAGS_SEARCH_NAME),$(p)/$(n))))
$($(PROCESSOR).ELF_FILE): PRIVATE_CC := $(CC)
$($(PROCESSOR).ELF_FILE): PRIVATE_LLD := $(LLD)
$($(PROCESSOR).ELF_FILE): PRIVATE_PLATFORM := $(PLATFORM)
$($(PROCESSOR).ELF_FILE): PRIVATE_MAP_FILE := $($(PROCESSOR).MAP_FILE)
$($(PROCESSOR).ELF_FILE): PRIVATE_ASM_FILE := $($(PROCESSOR).ASM_FILE)
$($(PROCESSOR).ELF_FILE): PRIVATE_LDFLAGS := $(LDFLAGS)
$($(PROCESSOR).ELF_FILE): PRIVATE_LIBS := $(LIBFLAGS)
$($(PROCESSOR).ELF_FILE): PRIVATE_OBJDUMP := $(OBJDUMP)
$($(PROCESSOR).ELF_FILE): PRIVATE_RV33_VAR := $(RV33_VAR)
$($(PROCESSOR).ELF_FILE): PRIVATE_OBJS := $(OBJS)
$($(PROCESSOR).ELF_FILE): PRIVATE_LINK_LD := $($(PROCESSOR).LINK_LD)
$($(PROCESSOR).ELF_FILE): $(OBJS)
$($(PROCESSOR).ELF_FILE): $(MY_LIBFLAGS_SEARCH_FILE)
$($(PROCESSOR).ELF_FILE): $($(PROCESSOR).LINK_LD) $(DEPS)
@echo '$(TINYSYS_MEDMCU): ELF $@'
@mkdir -p $(dir $@)
$(hide)$(PRIVATE_LLD) -Map=$(PRIVATE_MAP_FILE) -o $@ -T $(PRIVATE_LINK_LD) $(PRIVATE_LDFLAGS) $(PRIVATE_OBJS) $(PRIVATE_LIBS)
$(hide)$(PRIVATE_OBJDUMP) -mcpu=$(PRIVATE_RV33_VAR) -S $@ > $(PRIVATE_ASM_FILE)
#$(hide)$(GOBJDUMP) -S $@ > $($(PROCESSOR).ASM2_FILE)
#$(hide)$(READELF) -a $@ > $($(PROCESSOR).RELF_FILE)
@echo '$(TINYSYS_MEDMCU): Memory Check'
$(hide)PLATFORM=$(PRIVATE_PLATFORM) $(MCHECK) -d SCP $(SCP_SETTING_INI) $(PRIVATE_MAP_FILE)
$($(PROCESSOR).LINK_LD): PRIVATE_CC := $(CC)
$($(PROCESSOR).LINK_LD): PRIVATE_CFLAGS := $(CFLAGS)
$($(PROCESSOR).LINK_LD): PRIVATE_INCLUDES := $(INCLUDES)
$($(PROCESSOR).LINK_LD): $(PLATFORM_DIR)/link.ld.c configheader
@echo '$(TINYSYS_MEDMCU): CC $@'
@mkdir -p $(dir $@)
$(hide)$(PRIVATE_CC) -Xpreprocessor $(PRIVATE_CFLAGS) $(PRIVATE_INCLUDES) -E -P $< -o $@_tmp
$(hide)$(GEN_LINK_LD) -i $@_tmp -o $@
$($(PROCESSOR).IMG_HDR_CFG): $(DEPS)
$(call gen-image-header,$(TINYSYS_MEDMCU))
ifeq (yes,$(CFG_HEAP_ON_L1TCM))
$($(PROCESSOR)_L1TCM.IMG_HDR_CFG): $(DEPS)
$(call gen-image-header,$(TINYSYS_MEDMCU))
else
$($(PROCESSOR)_DRAM.IMG_HDR_CFG): $(DEPS)
$(call gen-image-header,$(TINYSYS_MEDMCU))
endif
$($(PROCESSOR)_MEDHW_GC0_PM.IMG_HDR_CFG): $(DEPS)
$(call gen-image-header,$(TINYSYS_MEDMCU))
$($(PROCESSOR)_MEDHW_GC1_PM.IMG_HDR_CFG): $(DEPS)
$(call gen-image-header,$(TINYSYS_MEDMCU))
$($(PROCESSOR)_MEDHW_GC2_PM.IMG_HDR_CFG): $(DEPS)
$(call gen-image-header,$(TINYSYS_MEDMCU))
$($(PROCESSOR)_MEDHW_GC0_DM.IMG_HDR_CFG): $(DEPS)
$(call gen-image-header,$(TINYSYS_MEDMCU))
$($(PROCESSOR)_MEDHW_GC1_DM.IMG_HDR_CFG): $(DEPS)
$(call gen-image-header,$(TINYSYS_MEDMCU))
$($(PROCESSOR)_MEDHW_GC2_DM.IMG_HDR_CFG): $(DEPS)
$(call gen-image-header,$(TINYSYS_MEDMCU))
###########################################################
## ESL object definition
###########################################################
ESL_AP_C_FILES := $(patsubst ./%,%,$(ESL_AP_C_FILES))
ESL_AP_S_FILES := $(patsubst ./%,%,$(ESL_AP_S_FILES))
ESL_MCU_C_FILES := $(patsubst ./%,%,$(ESL_MCU_C_FILES))
ESL_MCU_S_FILES := $(patsubst ./%,%,$(ESL_MCU_S_FILES))
ESL_AP_C_OBJS := $(sort $(ESL_AP_C_FILES:%.c=$(SCP_BUILT_DIR)/%.o))
ESL_MCU_C_OBJS := $(sort $(ESL_MCU_C_FILES:%.c=$(SCP_BUILT_DIR)/%.o))
ESL_AP_S_OBJS := $(sort $(ESL_AP_S_FILES:%.S=$(SCP_BUILT_DIR)/%.o))
ESL_MCU_S_OBJS := $(sort $(ESL_MCU_S_FILES:%.S=$(SCP_BUILT_DIR)/%.o))
ESL_AP_OBJS := $(sort $(ESL_AP_C_OBJS) $(ESL_AP_S_OBJS))
ESL_MCU_OBJS := $(sort $(ESL_MCU_C_OBJS) $(ESL_MCU_S_OBJS))
ESL_C_OBJS := $(sort $(ESL_AP_C_OBJS) $(ESL_MCU_C_OBJS))
ESL_S_OBJS := $(sort $(ESL_AP_S_OBJS) $(ESL_MCU_S_OBJS))
$(ESL_C_OBJS) $(ESL_S_OBJS): $($(PROCESSOR).TINYSYS_CONFIG_H)
###########################################################
## ESL build targets
###########################################################
$(ESL_C_OBJS) $(ESL_S_OBJS): $(DEPS)
$(ESL_C_OBJS): PRIVATE_BUILD_TAG := $(TINYSYS_MEDMCU)
$(ESL_C_OBJS): PRIVATE_CC := $(CC)
$(ESL_C_OBJS): PRIVATE_CFLAGS := $(CFLAGS)
$(ESL_C_OBJS): PRIVATE_INCLUDES := $(INCLUDES)
$(ESL_C_OBJS): $(SCP_BUILT_DIR)/%.o: %.c
$(compile-c-or-s-to-o)
$(ESL_S_OBJS): PRIVATE_BUILD_TAG := $(TINYSYS_MEDMCU)
$(ESL_S_OBJS): PRIVATE_CC := $(CC)
$(ESL_S_OBJS): PRIVATE_CFLAGS := $(CFLAGS)
$(ESL_S_OBJS): PRIVATE_INCLUDES := $(INCLUDES)
$(ESL_S_OBJS): $(SCP_BUILT_DIR)/%.o: %.S
$(compile-c-or-s-to-o)
# ESL LDs
$($(PROCESSOR).ESL_AP_LINK_LD): PRIVATE_CC := $(CC)
$($(PROCESSOR).ESL_AP_LINK_LD): PRIVATE_CFLAGS := $(CFLAGS) -Xpreprocessor -DPLAT_DUAL -DPLAT_DUAL_AP -E -P
$($(PROCESSOR).ESL_AP_LINK_LD): PRIVATE_INCLUDES := $(INCLUDES)
$($(PROCESSOR).ESL_AP_LINK_LD): $(PLATFORM_DIR)/link.ld.c configheader
@echo '$(TINYSYS_MEDMCU): CC $@'
@mkdir -p $(dir $@)
$(hide)$(PRIVATE_CC) $(PRIVATE_CFLAGS) $(PRIVATE_INCLUDES) -E -P $< -o $@
$($(PROCESSOR).ESL_MCU0_LINK_LD): PRIVATE_CC := $(CC)
$($(PROCESSOR).ESL_MCU0_LINK_LD): PRIVATE_CFLAGS := $(CFLAGS) -Xpreprocessor -DPLAT_DUAL -DPLAT_DUAL_MCU0 -E -P
$($(PROCESSOR).ESL_MCU0_LINK_LD): PRIVATE_INCLUDES := $(INCLUDES)
$($(PROCESSOR).ESL_MCU0_LINK_LD): $(PLATFORM_DIR)/link.ld.c configheader
@echo '$(TINYSYS_MEDMCU): CC $@'
@mkdir -p $(dir $@)
$(hide)$(PRIVATE_CC) $(PRIVATE_CFLAGS) $(PRIVATE_INCLUDES) -E -P $< -o $@
$($(PROCESSOR).ESL_MCU1_LINK_LD): PRIVATE_CC := $(CC)
$($(PROCESSOR).ESL_MCU1_LINK_LD): PRIVATE_CFLAGS := $(CFLAGS) -Xpreprocessor -DPLAT_DUAL -DPLAT_DUAL_MCU1 -E -P
$($(PROCESSOR).ESL_MCU1_LINK_LD): PRIVATE_INCLUDES := $(INCLUDES)
$($(PROCESSOR).ESL_MCU1_LINK_LD): $(PLATFORM_DIR)/link.ld.c configheader
@echo '$(TINYSYS_MEDMCU): CC $@'
@mkdir -p $(dir $@)
$(hide)$(PRIVATE_CC) $(PRIVATE_CFLAGS) $(PRIVATE_INCLUDES) -E -P $< -o $@
# ESL ELFs
$($(PROCESSOR).ESL_AP_ELF): PRIVATE_LLD := $(LLD)
$($(PROCESSOR).ESL_AP_ELF): PRIVATE_LINK_LD := $($(PROCESSOR).ESL_AP_LINK_LD)
$($(PROCESSOR).ESL_AP_ELF): PRIVATE_MAP_FILE := $($(PROCESSOR).ESL_AP_MAP)
$($(PROCESSOR).ESL_AP_ELF): PRIVATE_LDFLAGS := $(LDFLAGS)
$($(PROCESSOR).ESL_AP_ELF): PRIVATE_LIBS := $(LIBFLAGS)
$($(PROCESSOR).ESL_AP_ELF): PRIVATE_OBJS := $(OBJS)
$($(PROCESSOR).ESL_AP_ELF): PRIVATE_AP_OBJS := $(ESL_AP_OBJS)
$($(PROCESSOR).ESL_AP_ELF): $($(PROCESSOR).ESL_AP_LINK_LD) $(OBJS) $(ESL_AP_OBJS)
$(hide)$(PRIVATE_LLD) -Map=$(PRIVATE_MAP_FILE) -o $@ -T $(PRIVATE_LINK_LD) $(PRIVATE_LDFLAGS) $(PRIVATE_OBJS) $(PRIVATE_AP_OBJS) $(PRIVATE_LIBS)
$($(PROCESSOR).ESL_MCU0_ELF): PRIVATE_LLD := $(LLD)
$($(PROCESSOR).ESL_MCU0_ELF): PRIVATE_LINK_LD := $($(PROCESSOR).ESL_MCU0_LINK_LD)
$($(PROCESSOR).ESL_MCU0_ELF): PRIVATE_MAP_FILE := $($(PROCESSOR).ESL_MCU0_MAP)
$($(PROCESSOR).ESL_MCU0_ELF): PRIVATE_LDFLAGS := $(LDFLAGS)
$($(PROCESSOR).ESL_MCU0_ELF): PRIVATE_LIBS := $(LIBFLAGS)
$($(PROCESSOR).ESL_MCU0_ELF): PRIVATE_OBJS := $(OBJS)
$($(PROCESSOR).ESL_MCU0_ELF): PRIVATE_MCU_OBJS := $(ESL_MCU_OBJS)
$($(PROCESSOR).ESL_MCU0_ELF): $($(PROCESSOR).ESL_MCU0_LINK_LD) $(OBJS) $(ESL_MCU_OBJS)
$(hide)$(PRIVATE_LLD) -Map=$(PRIVATE_MAP_FILE) -o $@ -T $(PRIVATE_LINK_LD) $(PRIVATE_LDFLAGS) $(PRIVATE_OBJS) $(PRIVATE_MCU_OBJS) $(PRIVATE_LIBS)
$($(PROCESSOR).ESL_MCU1_ELF): PRIVATE_LLD := $(LLD)
$($(PROCESSOR).ESL_MCU1_ELF): PRIVATE_LINK_LD := $($(PROCESSOR).ESL_MCU1_LINK_LD)
$($(PROCESSOR).ESL_MCU1_ELF): PRIVATE_MAP_FILE := $($(PROCESSOR).ESL_MCU1_MAP)
$($(PROCESSOR).ESL_MCU1_ELF): PRIVATE_LDFLAGS := $(LDFLAGS)
$($(PROCESSOR).ESL_MCU1_ELF): PRIVATE_LIBS := $(LIBFLAGS)
$($(PROCESSOR).ESL_MCU1_ELF): PRIVATE_OBJS := $(OBJS)
$($(PROCESSOR).ESL_MCU1_ELF): PRIVATE_MCU_OBJS := $(ESL_MCU_OBJS)
$($(PROCESSOR).ESL_MCU1_ELF): $($(PROCESSOR).ESL_MCU1_LINK_LD) $(OBJS) $(ESL_MCU_OBJS)
$(hide)$(PRIVATE_LLD) -Map=$(PRIVATE_MAP_FILE) -o $@ -T $(PRIVATE_LINK_LD) $(PRIVATE_LDFLAGS) $(PRIVATE_OBJS) $(PRIVATE_MCU_OBJS) $(PRIVATE_LIBS)
# ESL BINs
$($(PROCESSOR).ESL_AP_BIN): PRIVATE_OBJDUMP := $(OBJDUMP)
$($(PROCESSOR).ESL_AP_BIN): PRIVATE_OBJCOPY := $(OBJCOPY)
$($(PROCESSOR).ESL_AP_BIN): PRIVATE_ELF_FILE := $($(PROCESSOR).ESL_AP_ELF)
$($(PROCESSOR).ESL_AP_BIN): PRIVATE_ASM_FILE := $($(PROCESSOR).ESL_AP_ASM)
$($(PROCESSOR).ESL_AP_BIN): PRIVATE_RV33_VAR := $(RV33_VAR)
$($(PROCESSOR).ESL_AP_BIN): $($(PROCESSOR).ESL_AP_ELF)
@echo '$(TINYSYS_MEDMCU): ASM $(PRIVATE_ASM_FILE)'
$(hide)$(PRIVATE_OBJDUMP) -mcpu=$(PRIVATE_RV33_VAR) -S $< > $(PRIVATE_ASM_FILE)
@echo '$(TINYSYS_MEDMCU): BIN $@'
$(hide)$(PRIVATE_OBJCOPY) -O binary $(PRIVATE_ELF_FILE) $@
$($(PROCESSOR).ESL_MCU0_BIN): PRIVATE_OBJDUMP := $(OBJDUMP)
$($(PROCESSOR).ESL_MCU0_BIN): PRIVATE_OBJCOPY := $(OBJCOPY)
$($(PROCESSOR).ESL_MCU0_BIN): PRIVATE_ELF_FILE := $($(PROCESSOR).ESL_MCU0_ELF)
$($(PROCESSOR).ESL_MCU0_BIN): PRIVATE_ASM_FILE := $($(PROCESSOR).ESL_MCU0_ASM)
$($(PROCESSOR).ESL_MCU0_BIN): PRIVATE_RV33_VAR := $(RV33_VAR)
$($(PROCESSOR).ESL_MCU0_BIN): $($(PROCESSOR).ESL_MCU0_ELF)
$(hide)$(PRIVATE_OBJDUMP) -mcpu=$(PRIVATE_RV33_VAR) -S $< > $(PRIVATE_ASM_FILE)
@echo '$(TINYSYS_MEDMCU): BIN $@'
$(hide)$(PRIVATE_OBJCOPY) -O binary $(PRIVATE_ELF_FILE) $@
$($(PROCESSOR).ESL_MCU1_BIN): PRIVATE_OBJDUMP := $(OBJDUMP)
$($(PROCESSOR).ESL_MCU1_BIN): PRIVATE_OBJCOPY := $(OBJCOPY)
$($(PROCESSOR).ESL_MCU1_BIN): PRIVATE_ELF_FILE := $($(PROCESSOR).ESL_MCU1_ELF)
$($(PROCESSOR).ESL_MCU1_BIN): PRIVATE_ASM_FILE := $($(PROCESSOR).ESL_MCU1_ASM)
$($(PROCESSOR).ESL_MCU1_BIN): PRIVATE_RV33_VAR := $(RV33_VAR)
$($(PROCESSOR).ESL_MCU1_BIN): $($(PROCESSOR).ESL_MCU1_ELF)
$(hide)$(PRIVATE_OBJDUMP) -mcpu=$(PRIVATE_RV33_VAR) -S $< > $(PRIVATE_ASM_FILE)
@echo '$(TINYSYS_MEDMCU): BIN $@'
$(hide)$(PRIVATE_OBJCOPY) -O binary $(PRIVATE_ELF_FILE) $@
-include $(OBJS:.o=.d)
-include $($(sort $(ESL_C_OBJS) $(ESL_S_OBJS)):.o=.d)