#
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/image.mk

T_VERSION_CONFIG := $(T_PRODUCT_CONFIG_DIR)/$(PROFILE)/version.config
T_DEVICE_INFO_CONFIG := $(T_PRODUCT_CONFIG_DIR)/$(PROFILE)/device_info.config
T_BUILDTIME_CONFIG := $(KERNEL_BUILD_DIR)/.build_time
T_FWLIST_CONFIG := $(T_PRODUCT_CONFIG_DIR)/$(PROFILE)/firmware.config
T_BUILDROOT_CONFIG := $(T_PRODUCT_CONFIG_DIR)/$(PROFILE)/buildroot.config

# get product infomation for generating firmware
include $(T_DEVICE_INFO_CONFIG)

ENTRY_POINT:=0x40000000
ifneq ($(IMG_EP),)
ENTRY_POINT:=$(IMG_EP)
endif

define SingleProfile
  define Image/Build/Profile/$(PROFILE)
	$$(call Image/Build/Template/$$(1),$(1),$(PROFILE),$(IMG_SIZE),$(IMG_LA),$(ENTRY_POINT))
  endef
endef

# 什么也不用做
define Image/BuildKernel
endef

MKSLPFW_FLAGS =

ifeq ($(CONFIG_EXT_FW_UPGRADE),y)
	T_EXT_FW_CONFIG := $(T_PRODUCT_CONFIG_DIR)/$(PROFILE)/ext_fw.config
	PR_CONFIG_PATH := $(T_PRODUCT_CONFIG_DIR)/$(PROFILE)
	MKSLPFW_FLAGS := -c $(PR_CONFIG_PATH) \
			 -g $(T_EXT_FW_CONFIG)
endif

define Image/Build/NVMP
ifeq ($(CONFIG_ISP_IN_FLASH),y)
	-mkdir $(BIN_DIR)/isp_config
endif
	touch $(KDIR)/usr_conf_data
	-$(STAGING_DIR_HOST)/bin/mkslpfw \
		-F $(3) \
		-L $(4) \
		-E $(5) \
		-k $(KDIR)/zImage \
		-r $(KDIR)/root.$(1) \
		-b $(KDIR)/bootloader.bin \
		-f $(KDIR)/factory_boot.bin \
		-p $(PROFILE) \
		-R $(REVISION) \
		-v $(T_VERSION_CONFIG) \
		-d $(T_DEVICE_INFO_CONFIG) \
		-t $(T_BUILDTIME_CONFIG) \
		-l $(T_FWLIST_CONFIG) \
		-u $(KDIR)/usr_conf_data \
		-o $(BIN_DIR) $(MKSLPFW_FLAGS) \
		-B $(T_BUILDROOT_CONFIG) \
		-a 0x1000
	-rm -f $(T_BUILDTIME_CONFIG)
endef

define Image/Build/Template/romfs
	$(call Image/Build/$(1),romfs,$(2),$(3),$(4),$(5))
endef

$(eval $(call SingleProfile,NVMP))

# 将各目录的romfs镜像进行拼接
define Image/Build/romfs
#	cd $(BUILD_DIR);$(PLATFORM_DIR)/image/mkromfs.py --binary root-$(BOARD) $(KDIR)/root.romfs --addr 0X83FE3000   # for rt-thread
#	cd $(BUILD_DIR);$(PLATFORM_DIR)/image/mkromfs.py --binary root-$(BOARD) $(KDIR)/root.romfs --addr 0X80C00000
#	更新sdk至20210308版本后，需要通过genromfs进行文件系统打包
	cd $(BUILD_DIR);$(PLATFORM_DIR)/image/genromfs -d root-$(BOARD) -f $(KDIR)/root.romfs -V "aliosromfs"
endef

# LiteOS镜像链接拷贝压缩为通用函数，放在rtos-kernel-defaults.mk中完成
define Image/Prepare
endef

define Image/Build
  $(call Image/Build/$(1))
  $(call Image/Build/Profile/$(PROFILE),$(1))
endef

$(eval $(call BuildImage))
