#
# Makefile for Customization Files
#

#  Makefile HUXӭn target:
#
# * distclean: R{ɡA^_̺²A
# * all: sĶX d.bin M p.bin
# * csidbase:  csidbase
# * d-files: sĶòͥX D Ϫؿ
#
# F̫@ӬO CornerDE Is~ALO UIWB IsC

RULES_FILE := @rules.mk
include ${RULES_FILE}

#

# export these variables for mkcsxf'ing pre1.dat
export S_SYS_INFO_ECN_NO
export S_SYS_INFO_PV
export S_SYS_INFO_MODEL_NAME
export S_SYS_INFO_EID_RULE
export S_SYS_INFO_DEFAULT_IP
export S_SYS_INFO_ROM_ID
export S_SYS_INFO_FMID

#

CSID_ROOT ?= ../var/csidbase

ifeq (${S_SYS_CPU_BYTEORDER},1)
	UASO := -b
	MKCSXF_BO := b
	MKSQUASHFS_ED := -be
else
	MKSQUASHFS_ED := -le
endif

#

MKCSXF   ?= mkcsxf
BINMAN   ?= binman
MKCRAMFS ?= mkcramfs
MKSQUASHFS ?= mksquashfs
CSIDBASE ?= csidbase
SVN_REV  ?= getsvnrev.sh
UTT      ?= utt -d ${CSID_ROOT}
USC      ?= usc -d ${CSID_ROOT} -f
UAS      ?= uas -d ${CSID_ROOT} ${UASO}

#

TMP_DIR := tmp
WWW_DIR := www
OUT_DIR := .

#

PHONY: all

all: p.bin d.bin

${TMP_DIR}/.tag.dir:
	@mkdir -p tmp
	@echo "" > $@

${WWW_DIR}/.tag.dir:
	@mkdir -p ${WWW_DIR}
	@echo "" > $@

${CSID_ROOT}/csid/.tag.csid: $(wildcard ${CSID_ROOT}/csid/*.h)
	@echo "" > $@

${CSID_ROOT}/.tag.rebuild: ${CSID_ROOT}/csid/.tag.csid
	-rm -f ${CSID_ROOT}/*.db
	${CSIDBASE} -d ${CSID_ROOT} -s ${CSID_ROOT}/csid -r 2>&1
	@echo "" > $@

csidbase: chk_csid_rev ${CSID_ROOT}/.tag.rebuild

chk_csid_rev:
	@if [ `${SVN_REV} ${CSID_ROOT}/csid` != ${CSID_REVISION} ]; then \
		echo "------------------------------------------------------------"; \
		echo "!!! WARNING: CSID revision is not matched (${CSID_REVISION})"; \
		echo "------------------------------------------------------------"; \
	fi

#=============================#
# Upgrade Files for Section P #
#=============================#

p.bin: ${OUT_DIR}/pre1.dat ${TMP_DIR}/p.bms
	${BINMAN} --s ${TMP_DIR}/p.bms
	@echo "+---------------+"
	@echo "| p.bin is done |"
	@echo "+---------------+"

${OUT_DIR}/pre1.dat: pre1.txt csidbase ${RULES_FILE}
	${MKCSXF} -d ${CSID_ROOT} -c${MKCSXF_BO} pre1.txt -o ${OUT_DIR}/pre1.dat -X c

${TMP_DIR}/p.bms: ${TMP_DIR}/.tag.dir ${RULES_FILE}
	@echo "### Feel free to delete me :) ###" > $@
	@echo "r ${OUT_DIR}/pre1.dat"            >> $@
ifeq (${PS_LOC_MARKER},stag)
	@echo "#--- Section Tag Header"          >> $@
	@echo "i stag"                           >> $@
	@echo "-bend ${S_SYS_CPU_BYTEORDER}"     >> $@
	@echo "-id 2"                            >> $@
endif
	@echo "#--- Upgrade Header"              >> $@
	@echo "i auh20"                          >> $@
	@echo "-r  ${S_SYS_INFO_ROM_ID}"         >> $@
	@echo "-lp ${S_SYS_INFO_PV}"             >> $@
	@echo "-es ${PS_ERASE_START}"            >> $@
	@echo "-el ${PS_ERASE_LENGTH}"           >> $@
	@echo "-do ${PS_DATA_OFFSET}"            >> $@
	@echo "-si 2"                            >> $@
ifeq (${PS_LOC_MARKER},stag)
	@echo "-it 4"                            >> $@
	@echo "-io 0"                            >> $@
else
	@echo "-it 0"                            >> $@
	@echo "-io 0"                            >> $@
endif
	@echo "-fm   ${S_SYS_INFO_FMID}"         >> $@
	@echo "-bend ${S_SYS_CPU_BYTEORDER}"     >> $@
	@echo "-dalg ${BIN_AUH20_DALG}"          >> $@
	@echo "-dopt ${BIN_AUH20_DOPT}"          >> $@
	@echo "#--- Section P done!!!"           >> $@
	@echo "w p.bin"                          >> $@
	@echo "#--- quit ---"                    >> $@
	@echo "q"                                >> $@

#=============================#
# Upgrade Files for Section D #
#=============================#

d.bin: ${OUT_DIR}/www.img ${TMP_DIR}/d.bms
	${BINMAN} --s ${TMP_DIR}/d.bms
	@echo "+---------------+"
	@echo "| d.bin is done |"
	@echo "+---------------+"

${OUT_DIR}/www.img: d-files
ifeq (${DS_PACK_TYPE},cramfs)
	${MKCRAMFS} ${WWW_DIR} $@ 2>&1
endif
ifeq (${DS_PACK_TYPE},squashfs)
##	${MKSQUASHFS} ${WWW_DIR} $@ ${MKSQUASHFS_ED}  2>&1
	${MKSQUASHFS} ${WWW_DIR} $@ ${MKSQUASHFS_ED} -2.0  2>&1
endif
ifeq (${DS_PACK_TYPE},targz)
	tar c --exclude .tag.dir www | gzip -9 > $@
endif

d-files: ${WWW_DIR}/.tag.dir extra-files uyghur-files non-uyghur-files

extra-files: ${WWW_DIR}/pre7.dat ${WWW_DIR}/reset.dat

${WWW_DIR}/pre7.dat: pre7.txt ${RULES_FILE}
	${MKCSXF} -d ${CSID_ROOT} -zc${MKCSXF_BO} pre7.txt -o ${WWW_DIR}/pre7.dat -X c

${WWW_DIR}/reset.dat: reset.txt ${RULES_FILE}
	${MKCSXF} -d ${CSID_ROOT} -zc${MKCSXF_BO} reset.txt -o ${WWW_DIR}/reset.dat -X s

uyghur-files: ${TMP_DIR}/.tag.dir ${RULES_FILE}
	@for fin in ${INC_UFILES}; do \
		found=; \
		for fex in ${EXC_UFILES}; do \
			if [ "$$fin" == "$$fex" ]; then \
				found="Y"; \
				break; \
			fi; \
		done; \
		if [ -z "$$found" ]; then \
			${UTT} $$fin ${TMP_DIR}/$$fin.um; \
			if [ $$? == 0 ]; then \
				${USC} ${TMP_DIR}/$$fin.um ${TMP_DIR}/$$fin.us; \
				if [ $$? == 0 ]; then \
					${UAS} ${TMP_DIR}/$$fin.us ${WWW_DIR}/$$fin; \
				fi; \
			fi; \
		fi; \
	done

non-uyghur-files: ${RULES_FILE}
	@for fin in ${INC_NFILES}; do \
		found=; \
		for fex in ${EXC_NFILES}; do \
			if [ "$$fin" == "$$fex" ]; then \
				found="Y"; \
				break; \
			fi; \
		done; \
		if [ -z "$$found" ]; then \
			cp $$fin ${WWW_DIR}/$$fin; \
		fi; \
	done

${TMP_DIR}/d.bms: ${RULES_FILE}
	@echo "### Feel free to delete me :) ###" > $@
	@echo "r ${OUT_DIR}/www.img"             >> $@
ifeq (${DS_LOC_MARKER},stag)
	@echo "#--- Section Tag Header"          >> $@
	@echo "i stag"                           >> $@
	@echo "-bend ${S_SYS_CPU_BYTEORDER}"     >> $@
	@echo "-id 5"                            >> $@
endif
	@echo "#--- Upgrade Header"              >> $@
	@echo "i auh20"                          >> $@
	@echo "-r  ${S_SYS_INFO_ROM_ID}"         >> $@
	@echo "-lp ${S_SYS_INFO_PV}"             >> $@
	@echo "-es ${DS_ERASE_START}"            >> $@
	@echo "-el ${DS_ERASE_LENGTH}"           >> $@
	@echo "-do ${DS_DATA_OFFSET}"            >> $@
	@echo "-si 5"                            >> $@
ifeq (${DS_LOC_MARKER},stag)
	@echo "-it 4"                            >> $@
	@echo "-io 0"                            >> $@
else
	@echo "-it 0"                            >> $@
	@echo "-io 0"                            >> $@
endif
	@echo "-fm   ${S_SYS_INFO_FMID}"         >> $@
	@echo "-bend ${S_SYS_CPU_BYTEORDER}"     >> $@
	@echo "-dalg ${BIN_AUH20_DALG}"          >> $@
	@echo "-dopt ${BIN_AUH20_DOPT}"          >> $@
	@echo "#--- Section D done!!!"           >> $@
	@echo "w d.bin"                          >> $@
	@echo "#--- quit ---"                    >> $@
	@echo "q"                                >> $@

#===========================#
# Preset CSID for UIWB only #
#===========================#

# NOTE! Preset CSID for UIWB must be little endian

.PHONY: pre1 pre7 reset

pre1: pre1.txt csidbase ${RULES_FILE}
	${MKCSXF} -d ${CSID_ROOT} -c pre1.txt -o ${DST_DIR}/pre1.dat -X c

pre7: pre7.txt ${RULES_FILE}
	${MKCSXF} -d ${CSID_ROOT} -zc pre7.txt -o ${DST_DIR}/pre7.dat -X c

reset: reset.txt ${RULES_FILE}
	${MKCSXF} -d ${CSID_ROOT} -zc reset.txt -o ${DST_DIR}/reset.dat -X s

#

clean:
	@-rm -fr ${TMP_DIR} ${WWW_DIR}

distclean: clean
	@-rm -f p.bin ${OUT_DIR}/pre1.dat
	@-rm -f d.bin ${OUT_DIR}/www.img

