ubuntu 16.04开发环境编译某版本的脚本

2020-06-10  本文已影响0人  小桥流水啦啦啦
#!/bin/bash

CURRENT_PATH=${PWD}
UBOOT_SRC="./uboot"
KERNEL_SRC="./linux"
ROOTFS_SRC="./rootfs"
SDTOOL_PATH="./sdtool"
DRIVER_PATH="./source/drivers"
APP_PATH="./source/app"

# echo ${UBOOT_SRC}
# echo ${KERNEL_SRC}
# echo ${ROOTFS_SRC}

#. /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi

makeUbootFunc(){
    cd ${UBOOT_SRC}
    make distclean
    make mx6q-c-sabresd_defconfig
    make -j5
    cp u-boot.imx uboot-6q.tran
    mv uboot-6q.tran u-boot-6q.imx
    echo "====================================="
    echo "u-boot compile finished!"
    echo "====================================="
    cd ${CURRENT_PATH}
}
makeKernelFunc(){
    cd ${KERNEL_SRC}
    make distclean
    make imx_v7_defconfig
    make zImage -j8
    make dtbs -j8
    make modules -j8
    echo "====================================="
    echo "Linux kernel compile finished!"
    echo "====================================="
    cd ${CURRENT_PATH}
}
makeDriverFunc(){
    cd ${CURRENT_PATH} && cd ${DRIVER_PATH}/PowerCtrl && make all && cd ${CURRENT_PATH}
    cp -f ${DRIVER_PATH}/PowerCtrl/usource/powerctrl ${ROOTFS_SRC}/usr/bin
    echo "====================================="
    echo "Compile powerctrl finished!"
    echo "====================================="
    cd ${CURRENT_PATH} && cd ${DRIVER_PATH}/SerialParPortDev && make all
    cd ${CURRENT_PATH}
    cp -f ${DRIVER_PATH}/SerialParPortDev/ksource/SerialParPortDev.ko ${ROOTFS_SRC}/opt/printer/driver
    echo "====================================="
    echo "Compile SerialParPortDev.ko finished!"
    echo "====================================="
    cd ${CURRENT_PATH} && cd ${DRIVER_PATH}/printer && make && cd ${CURRENT_PATH}
    cp -f ${DRIVER_PATH}/printer/usource/getusblpstatus ${ROOTFS_SRC}/usr/bin
    echo "====================================="
    echo "Compile getusblpstatus finished!"
    echo "====================================="
    cd ${CURRENT_PATH}
}
makeAppFunc(){
    cd ${CURRENT_PATH} && cd ${APP_PATH} && ./compile.sh make qmlvideo && cd ${CURRENT_PATH}
    echo "====================================="
    echo "app compile finished!"
    echo "====================================="
}
makeRootfsFunc(){
    cd ${ROOTFS_SRC}
    if  [ -f ./rootfs.tar.bz2 ]; then
        rm rootfs.tar.bz2
    fi
    fakeroot tar -jcvf rootfs.tar.bz2 *
    echo "====================================="
    echo "Generating rootfs OK!"
    echo "====================================="
    cd ${CURRENT_PATH}
}
makeVersionFunc(){
    cd ${CURRENT_PATH}
    mkdir -p ./sdtool/target
    cp -f ${UBOOT_SRC}/u-boot-6q.imx ./sdtool/target
    cp -f ${KERNEL_SRC}/arch/arm/boot/zImage ./sdtool/target
    cp -f ${KERNEL_SRC}/arch/arm/boot/dts/imx6q-c-sabresd.dtb ./sdtool/target
    cp -f ${ROOTFS_SRC}/rootfs.tar.bz2 ./sdtool/target
    echo "====================================="
    echo "Version copy finished!"
    echo "====================================="
}
makeSdVersionFunc(){
    cd ${SDTOOL_PATH}
    tar -cjf ./update.tar.bz2 ./sdrun ./target
    echo "====================================="
    echo "D38 sd linux version is compiled finished!"
    echo "====================================="
    cd ${CURRENT_PATH}
}
cleanUbootFunc(){
    cd ${UBOOT_SRC} && make distclean && cd ${CURRENT_PATH}
    echo "====================================="
    echo "Clean uboot finished!"
    echo "====================================="
}
cleanKernelFunc(){
    cd ${KERNEL_SRC} && make distclean && cd ${CURRENT_PATH}
    echo "====================================="
    echo "Clean Kernel finished!"
    echo "====================================="
}
cleanDriverFunc(){
    cd ${CURRENT_PATH} && cd ${DRIVER_PATH}/PowerCtrl/ && make clean
    echo "====================================="
    echo "Clean powerctrl finished!"
    echo "====================================="
    cd ${CURRENT_PATH} && cd ${DRIVER_PATH}/SerialParPortDev/ && make clean
    echo "====================================="
    echo "Clean SerialParPortDev finished!"
    echo "====================================="
    cd ${CURRENT_PATH} && cd ${DRIVER_PATH}/printer/ && make clean
    echo "====================================="
    echo "Clean getusblpstatus finished!"
    echo "====================================="
    cd ${CURRENT_PATH}
}
cleanAppFunc(){
    cd ${CURRENT_PATH} && cd ${APP_PATH} && ./compile.sh clean qmlvideo && cd ${CURRENT_PATH}
    echo "====================================="
    echo "Clean app finished!"
    echo "====================================="
}
cleanRootfsFunc(){
    cd ${ROOTFS_SRC} && rm -rf rootfs.tar.bz2 && cd ${CURRENT_PATH}    
}
cleanSdVersionFunc(){
    cd ${SDTOOL_PATH}
    rm -rf ./target/imx6q-c-sabresd.dtb
    rm -rf ./target/rootfs.tar.bz2
    rm -rf ./target/u-boot-6q.imx
    rm -rf ./target/zImage
    rm -rf ./update.tar.bz2

    echo "====================================="
    echo "Old Version clean Finished!"
    echo "====================================="
    cd ${CURRENT_PATH}
}

cat << EOF
    ----------------------------------------------------------------------------------------------------------------
    Firstly,you need configure the cross-compile environment handly before make or clean.
    . /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi
    ----------------------------------------------------------------------------------------------------------------    
    ./tenv make uboot      ---    Compile Uboot.
    ./tenv make kernel     ---    Compile Linux Kernel,include source/drivers
    ./tenv make app        ---    Compile App
    ./tenv make rootfs     ---    Package the D38 Rootfs.
    ./tenv make version    ---    Copy uboot、kernel、rootfs... to sdtool/target.
    ./tenv make sdversion  ---    tar sdtool/target to update.tar.bz2.
    ./tenv make all        ---    do make uboot/make kernel/make rootfs/make version/make sdversion simultaneously.
    ./tenv clean uboot     ---    Clean UBoot.
    ./tenv clean kernel    ---    Clean Linux Kernel,include source/drivers.
    ./tenv clean app       ---    Clean app
    ./tenv clean rootfs    ---    delete rootfs.tar.bz2.
    ./tenv clean sdversion ---    delete sdtool/target/* and delete update.tar.bz2.
    ./tenv clean all       ---    do clean uboot/clean kernel/clean rootfs/clean sdversion.
    ----------------------------------------------------------------------------------------------------------------
EOF


case "$1" in
    "make")
        case "$2" in
            "uboot")
                makeUbootFunc
            ;;
            "kernel")
                makeKernelFunc
                makeDriverFunc
            ;;
            "app")
                echo "make app"
                makeAppFunc
            ;;
            "rootfs")
                makeRootfsFunc
            ;;
            "version")
                makeVersionFunc
            ;;
            "sdversion")
                makeSdVersionFunc
            ;;
            "all")
                makeUbootFunc
                makeKernelFunc
                makeAppFunc
                makeDriverFunc
                makeRootfsFunc
                makeVersionFunc
                makeSdVersionFunc
            ;;
            *)
                echo "./tenv make Default, make nothing!"
            ;;
        esac
        ;;

    "clean")
        case "$2" in
            "uboot")
                cleanUbootFunc
            ;;
            "kernel")
                cleanDriverFunc
                cleanKernelFunc
            ;;
            "app")
                cleanAppFunc
            ;;
            "rootfs")
                cleanRootfsFunc
            ;;
            "version")
                echo "Do nothing!"
            ;;
            "sdversion")
                cleanSdVersionFunc
            ;;
            "all")
                cleanUbootFunc
                cleanDriverFunc
                cleanAppFunc
                cleanKernelFunc
                cleanRootfsFunc
                cleanSdVersionFunc
            ;;
            *)
                echo "./tenv clean Default, clean nothing!"
            ;;
        esac
        ;;

    *)
        echo "./tenv Default, do nothing!"
    ;;
esac



上一篇 下一篇

猜你喜欢

热点阅读