#!/bin/bash PRJ_PATH=`pwd` IMG_PATH=${PRJ_PATH}/../images/bin BOARD=imx6ull CROSS_TOOL=arm-linux-gnueabihf- # bootloader tarball path and branch TAR_PATH=/home/guowenxue/imx6ull/bsp/tarball BSP_BRANCH=lf-5.10.52-2.1.0 BOOT=emmc UBOOT_SRC=uboot-imx IMG_NAME=u-boot-${BOARD}-${BOOT}.imx PATCH_FILE=${PRJ_PATH}/patch/${UBOOT_SRC}-${BOARD}.patch CONF_FILE=.cfg-${BOARD} JOBS=`cat /proc/cpuinfo | grep processor | wc -l` set -u set -e STAGE=0 function msg_banner() { STAGE=`expr $STAGE + 1` echo "" echo "+---------------------------------------------+" printf " Stage $STAGE: $1\n" echo "+---------------------------------------------+" echo "" } function do_fetch() { msg_banner "Fetch ${UBOOT_SRC} source code" if [ -d ${UBOOT_SRC} ] ; then printf "\n\n -- ${UBOOT_SRC} fetched already -- \n\n" return 0; fi printf "\n -- decompress ${UBOOT_SRC}-${BSP_BRANCH}.tar.xz now ... -- \n\n" tar -xJf ${TAR_PATH}/${UBOOT_SRC}-${BSP_BRANCH}.tar.xz } function do_patch() { msg_banner "Patch for ${UBOOT_SRC} source code" cd ${UBOOT_SRC} if [ ! -s $CONF_FILE -a -s $PATCH_FILE ] ; then patch -p1 < $PATCH_FILE fi printf "\n\nModify cross compiler in Makefile: $CROSS_TOOL\n\n" sed -i -e "s|^CROSS_COMPILE=.*|CROSS_COMPILE=${CROSS_TOOL}|g" Makefile cd ${PRJ_PATH} } function do_build() { msg_banner "Build for ${UBOOT_SRC} source code" cd ${UBOOT_SRC} if [ ! -f .config ] ; then cp $CONF_FILE .config fi make -j ${JOBS} cp u-boot-dtb.imx ${IMG_NAME} chmod a+x ${IMG_NAME} cd ${PRJ_PATH} } function do_install() { msg_banner "Install $IMG_NAME" cd ${UBOOT_SRC} mkdir -p ${IMG_PATH} cp ${IMG_NAME} ${IMG_PATH} cd ${PRJ_PATH} } function do_clean() { msg_banner "Clean ${UBOOT_SRC} source code" cd ${UBOOT_SRC} cp .config $CONF_FILE make distclean cd ${PRJ_PATH} } function gen_patch() { do_clean mv ${UBOOT_SRC} ${UBOOT_SRC}-${BOARD} do_fetch msg_banner "Generate ${UBOOT_SRC} patch file" set +e diff -Nuar ${UBOOT_SRC} ${UBOOT_SRC}-${BOARD} > ${UBOOT_SRC}-${BOARD}.patch rm -rf ${UBOOT_SRC} mv ${UBOOT_SRC}-${BOARD} ${UBOOT_SRC} } if [[ $# == 1 ]] && [[ $1 == "patch" ]] ; then gen_patch exit 0; fi do_fetch do_patch do_build do_install