AUTHBCH := ./util/bin/authbch6
UB_CONFIG := uboot_v2020.01/.config
PAGE_SIZE = $(shell grep -w CONFIG_OTTO_SNAF_PAGE_SIZE ${UB_CONFIG} | sed 's/CONFIG_OTTO_SNAF_PAGE_SIZE=//')
MAX_FL_PAGE_NUM = 24

all ::
	$(MAKE) -C ./util/authbch ${AUTHBCH}
	@fallocate -l ${MAX_CRYPTO_HEADER_SIZE}  release/signature
	@./uboot_v2020.01/tools/mkimage -E -f ${template_dir}/${FDT_CONFIG} ${FDT_IMG}
	@if [ "$(PAGE_SIZE)" = "2048" ]; then \
		${AUTHBCH} -i ${FDT_IMG} -o ${ENCODE_IMG_2K} -p 0 -d 1 -c 2 -k keys; \
		hexdump -v -e '1/1 "%02X""\n"' ${ENCODE_IMG_2K} > ${ENCODE_IMG_2K}.lst; \
		first_load_page_num=$$((0x`sed -n '5280,5280p' ${ENCODE_IMG_2K}.lst`)); \
		image_size=`stat --printf=%s release/plr.img`; \
		image_page_raw_num=$$(($${image_size} / 2048)); \
		image_page_num=$$(($${image_page_raw_num} + 1 + $${first_load_page_num} / 2)); \
		table_size=`grep PLR_MAP_TABLE_SIZE $(template_dir)/arch.h | tr -s ' ' ' ' | cut -d ' ' -f3`; \
		if [ "$${table_size}" -lt "$${image_page_num}" ]; \
			then echo -e "$(LIGHT_RED)EE: PLR_MAP_TABLE_SIZEE ($${table_size}<$${image_page_num}) is not enough!$(NONE)"; fi; \
		if [ "$${first_load_page_num}" -gt "$${MAX_FL_PAGE_NUM}" ]; \
			then echo -e "$(LIGHT_RED)EE: FL space is not enough!$(NONE)"; fi \
	fi
	@if [ "$(PAGE_SIZE)" = "4096" ]; then \
		${AUTHBCH} -i ${FDT_IMG} -o ${ENCODE_IMG_4K} -p 1 -d 1 -c 2 -k keys;\
		hexdump -v -e '1/1 "%02X""\n"' ${ENCODE_IMG_4K} >  ${ENCODE_IMG_4K}.lst; \
		first_load_page_num=$$((0x`sed -n '9504,9504p'  ${ENCODE_IMG_4K}.lst`)); \
		image_size=`stat --printf=%s release/plr.img`; \
		image_page_raw_num=$$(($${image_size} / 4096)); \
		image_page_num=$$(($${image_page_raw_num} + 1 - $${first_load_page_num} / 4 + $${first_load_page_num})); \
		table_size=`grep PLR_MAP_TABLE_SIZE $(template_dir)/arch.h | tr -s ' ' ' ' | cut -d ' ' -f3`; \
		if [ "$${table_size}" -lt "$${image_page_num}" ]; \
			then echo -e "$(LIGHT_RED)EE: PLR_MAP_TABLE_SIZE ($${table_size}<$${image_page_num}) is not enough ($${image_page_num}})!$(NONE)"; fi; \
		if [ "$${first_load_page_num}" -gt "$${MAX_FL_PAGE_NUM}" ]; \
			then echo -e "$(LIGHT_RED)EE: FL space is too large!$(NONE)"; fi \
	fi
	@rm release/signature
	@rm ./util/authbch/authbch6
