#!/bin/bash # This shell script used auto download bootloader source code and do cross compile source ../scripts/setup_env.sh PRJ_PATH=`pwd` UBOOT_SRC=uboot-imx IMG_NAME=u-boot-${BOARD}.imx arch=arm defconf=${BOARD}_defconfig patch_file=${PRJ_PATH}/patch/uboot-imx-${BSP_VER}.patch logo_file=${PRJ_PATH}/patch/logo_uboot_364x128.bmp 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 } 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 "Copy logo file: `basename $logo_file` " if [ ! -s tools/logos/lingyun.bmp ] ; then cp $logo_file tools/logos/lingyun.bmp fi pr_warn "Modify cross compiler in Makefile: $CROSS_TOOL" 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}-${BSP_VER} pr_warn "Fetch orignal source code" do_fetch pr_warn "Generate ${UBOOT_SRC} patch file" set +e diff -Nuar -x lingyun.bmp ${UBOOT_SRC} ${UBOOT_SRC}-${BSP_VER} > $patch_file rm -rf ${UBOOT_SRC} mv ${UBOOT_SRC}-${BSP_VER} ${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;