#! /bin/bash

set -e

DEVICE_DIR=$(cd `dirname $0`; pwd)
if [ -h $0 ]
then
        CMD=$(readlink $0)
        DEVICE_DIR=$(dirname $CMD)
fi
cd $DEVICE_DIR
cd ../../..
TOP_DIR=$(pwd)

export RK_LOADER_NAME=
source $TOP_DIR/device/rockchip/.BoardConfig.mk

ROCKDEV=$TOP_DIR/rockdev
PRODUCT_PATH=$TOP_DIR/device/rockchip/$RK_TARGET_PRODUCT
PARAMETER=$TOP_DIR/device/rockchip/$RK_TARGET_PRODUCT/$RK_PARAMETER
OEM_DIR=$TOP_DIR/device/rockchip/$RK_TARGET_PRODUCT/$RK_OEM_DIR
USER_DATA_DIR=$TOP_DIR/device/rockchip/userdata/$RK_USERDATA_DIR
MISC_IMG=$TOP_DIR/device/rockchip/rockimg/wipe_all-misc.img
ROOTFS_IMG=$TOP_DIR/$RK_ROOTFS_IMG
ROOTFS_IMG_SOURCE=$TOP_DIR/buildroot/output/$RK_CFG_BUILDROOT/images/rootfs.$RK_ROOTFS_TYPE
RECOVERY_IMG=$TOP_DIR/buildroot/output/$RK_CFG_RECOVERY/images/recovery.img
TRUST_IMG=$TOP_DIR/u-boot/trust.img
UBOOT_IMG=$TOP_DIR/u-boot/uboot.img
BOOT_IMG=$TOP_DIR/kernel/$RK_BOOT_IMG
if [ -z $RK_LOADER_NAME ]; then
	LOADER=$TOP_DIR/u-boot/*_loader_v*.bin
else
	LOADER=$TOP_DIR/u-boot/$RK_LOADER_NAME
fi
MKIMAGE=$TOP_DIR/device/rockchip/common/mk-image.sh
rm -rf $ROCKDEV
mkdir -p $ROCKDEV

# Require buildroot host tools to do image packing.
if [ ! -d "$TARGET_OUTPUT_DIR" ]; then
    echo "Source buildroot/build/envsetup.sh"
    source $TOP_DIR/buildroot/build/envsetup.sh $RK_CFG_BUILDROOT
fi

if [ "${RK_OEM_DIR}" == "dueros"  ];then
	if [ $RK_ARCH == arm ];then
		TARGET_ARM_TYPE=arm32
	else
		TARGET_ARM_TYPE=arm64
		PARAMETER=$TOP_DIR/device/rockchip/$RK_TARGET_PRODUCT/parameter-64bit-dueros.txt
	fi
	OEM_DIR=${ROCKDEV}/.oem
	rm -rf ${OEM_DIR}
	mkdir -p ${OEM_DIR}
	find ${PRODUCT_PATH}/${RK_OEM_DIR} -maxdepth 1 -not -name "spil" \
        	-not -wholename "${PRODUCT_PATH}/${RK_OEM_DIR}" \
        	-exec sh -c 'cp -arf ${0} ${1}' "{}" ${OEM_DIR} \;
	cp -rf ${PRODUCT_PATH}/${RK_OEM_DIR}/spil/${TARGET_ARM_TYPE}/baidu_spil_rk3308_${MIC_NUM}mic ${OEM_DIR}/baidu_spil_rk3308
	echo "copy ${TARGET_ARM_TYPE} with ${MIC_NUM}mic."
else
	OEM_DIR=${PRODUCT_PATH}/${RK_OEM_DIR}
fi


if [ $RK_ROOTFS_IMG ]
then
	if [ -f $ROOTFS_IMG ]
	then
		echo -n "create rootfs.img..."
		ln -rsf $ROOTFS_IMG $ROCKDEV/rootfs.img
		echo "done."
	else
		echo "warning: $ROOTFS_IMG not found!"
		if [ -f $ROOTFS_IMG_SOURCE ];then
			echo "Fallback to $ROOTFS_IMG_SOURCE"
			ln -rsf $ROOTFS_IMG_SOURCE $ROCKDEV/rootfs.img
		fi
	fi
fi

if [ -f $PARAMETER ]
then
	echo -n "create parameter..."
	cp -a $PARAMETER $ROCKDEV/parameter.txt
	echo "done."
else
	echo -e "\e[31m error: $PARAMETER not found! \e[0m"
fi

if [ -f $RECOVERY_IMG ]
then
	echo -n "create recovery.img..."
	cp -a $RECOVERY_IMG $ROCKDEV/recovery.img
	echo "done."
else
	echo -e "\e[31m error: $RECOVERY_IMG not found! \e[0m"
fi

if [ -f $MISC_IMG ]
then
	echo -n "create misc.img..."
	cp -a $MISC_IMG $ROCKDEV/misc.img
	echo "done."
else
	echo -e "\e[31m error: $MISC_IMG not found! \e[0m"
fi
echo -n "$OEM_DIR $RK_OEM_FS_TYPE"
if [ -d $OEM_DIR ]
then
	$MKIMAGE $OEM_DIR $ROCKDEV/oem.img $RK_OEM_FS_TYPE
else
	echo -e "\e[31m error: create oem image fail! \e[0m"
fi

if [ -d $USER_DATA_DIR ]
then
	$MKIMAGE $USER_DATA_DIR $ROCKDEV/userdata.img $RK_USERDATA_FS_TYPE
else
	echo -e "\e[31m error: $USER_DATA_DIR not found! \e[0m"
fi

if [ -f $UBOOT_IMG ]
then
        echo -n "create uboot.img..."
        cp -a $UBOOT_IMG $ROCKDEV/uboot.img
        echo "done."
else
        echo -e "\e[31m error: $UBOOT_IMG not found! \e[0m"
fi

if [ -f $TRUST_IMG ]
then
        echo -n "create trust.img..."
        cp -a $TRUST_IMG $ROCKDEV/trust.img
        echo "done."
else
        echo -e "\e[31m error: $TRUST_IMG not found! \e[0m"
fi

if [ -f $LOADER ]
then
        echo -n "create loader..."
        cp -a $LOADER $ROCKDEV/MiniLoaderAll.bin
        echo "done."
else
	echo -e "\e[31m error: $LOADER not found,or there are multiple loaders! \e[0m"
	rm $LOADER
fi

if [ -f $BOOT_PATH ]
then
	echo -n "create boot.img..."
	cp -a $BOOT_IMG $ROCKDEV/boot.img
	echo "done."
else
	echo -e "\e[31m error: $BOOT_IMG not found! \e[0m"
fi

echo -e "\e[36m Image: image in rockdev is ready \e[0m"

