#!/bin/bash
|
# This shell script used auto download bootloader source code and do cross compile
|
|
source ../scripts/setup_env.sh
|
|
UBOOT_SRC=uboot-imx
|
IMG_NAME=u-boot-${BOARD}.imx
|
|
patch_file=$(eval echo `jq -r ".UBOOT_SRC.PATCH" $JSON_CONF`)
|
arch=$(eval echo `jq -r ".CONFIG.ARCH" $JSON_CONF`)
|
defconf=$(eval echo `jq -r ".CONFIG.DEFCONF" $JSON_CONF`)
|
|
set -u
|
set -e
|
|
function do_fetch()
|
{
|
if [ -d $UBOOT_SRC ] ; then
|
pr_warn "$UBOOT_SRC fetched already."
|
return 0;
|
fi
|
|
do_fetch_json $JSON_CONF UBOOT_SRC $UBOOT_SRC
|
rm -rf *.tar*
|
}
|
|
function do_patch()
|
{
|
cd ${UBOOT_SRC}
|
|
if [ ! -s configs/$defconf -a -s $patch_file ] ; then
|
pr_warn "Patch for ${UBOOT_SRC} source code"
|
patch -p1 < $patch_file
|
fi
|
|
pr_warn "Modify cross compiler in Makefile: $CROSS_TOOL\n"
|
sed -i -e "s|^CROSS_COMPILE=.*|CROSS_COMPILE?=${CROSS_TOOL}|g" Makefile
|
|
cd ${PRJ_PATH}
|
}
|
|
function do_build()
|
{
|
pr_warn "Build for ${UBOOT_SRC} source code"
|
|
cd ${UBOOT_SRC}
|
|
make $defconf
|
make -j ${JOBS}
|
|
cp u-boot-dtb.imx ${IMG_NAME}
|
chmod a+x ${IMG_NAME}
|
|
cd ${PRJ_PATH}
|
}
|
|
|
function do_install()
|
{
|
pr_warn "Install bootloader $IMG_NAME"
|
|
cd ${UBOOT_SRC}
|
|
do_install_json $JSON_CONF "INSTALL"
|
|
cd ${PRJ_PATH}
|
}
|
|
function do_clean()
|
{
|
pr_warn "Clean ${UBOOT_SRC} source code"
|
|
cd ${UBOOT_SRC}
|
|
make distclean
|
|
cd ${PRJ_PATH}
|
}
|
|
function gen_patch()
|
{
|
pr_warn "Clean ${UBOOT_SRC} source code"
|
|
cd ${UBOOT_SRC}
|
make savedefconfig
|
mv defconfig configs/$defconf
|
make distclean
|
cd -
|
|
mv ${UBOOT_SRC} ${UBOOT_SRC}-${BOARD}
|
|
pr_warn "Fetch orignal source code"
|
do_fetch
|
|
pr_warn "Generate ${UBOOT_SRC} patch file"
|
|
set +e
|
diff -Nuar ${UBOOT_SRC} ${UBOOT_SRC}-${BOARD} > $patch_file
|
|
rm -rf ${UBOOT_SRC}
|
mv ${UBOOT_SRC}-${BOARD} ${UBOOT_SRC}
|
}
|
|
function do_usage()
|
{
|
echo ""
|
echo "Usage:"
|
echo " $0 [-b] [-p] [-c] [-h]"
|
echo " -b: download and build $PRJ_NAME"
|
echo " -p: generate $PRJ_NAME patch file"
|
echo " -c: clean the source code"
|
echo " -h: show this help message"
|
echo ""
|
exit;
|
}
|
|
while getopts "bpch" OPTNAME
|
do
|
case "${OPTNAME}" in
|
"b")
|
break;
|
;;
|
|
"p")
|
gen_patch
|
exit;
|
;;
|
|
"c")
|
do_clean
|
exit;
|
;;
|
|
"h")
|
do_usage
|
exit;
|
;;
|
|
"*")
|
do_usage
|
exit;
|
;;
|
esac
|
done
|
|
#defualt do build action
|
|
do_fetch
|
do_patch
|
do_build
|
do_install
|
|
exit;
|