#!/bin/bash PRJ_PATH=`pwd` PRJ_NAME=`basename ${PRJ_PATH}` BOARD=igkboard BSP_BRANCH=lf-5.10.52-2.1.0 CROSS_TOOL=/opt/buildroot/cortexA7/bin/arm-linux- TAR_PATH=${PRJ_PATH}/../tarball IMG_PATH=${PRJ_PATH}/../images/ UBOOT_SRC=uboot-imx IMG_NAME=u-boot-${BOARD}.imx PATCH_FILE=${PRJ_PATH}/patch/${UBOOT_SRC}-${BOARD}.patch CONF_FILE=configs/${BOARD}_defconfig 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} make ${BOARD}_defconfig 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} cp ${IMG_NAME} /tftp cd ${PRJ_PATH} } function do_clean() { msg_banner "Clean ${UBOOT_SRC} source code" cd ${UBOOT_SRC} make distclean cd ${PRJ_PATH} } function gen_patch() { msg_banner "Clean ${UBOOT_SRC} source code" cd ${UBOOT_SRC} make savedefconfig mv defconfig ${CONF_FILE} make distclean cd - 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} } 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; ;; "*") do_usage exit; ;; esac done #defualt do build action do_fetch do_patch do_build do_install exit;