# scripts/mkcmd.sh # # (c) Copyright 2013 # Allwinner Technology Co., Ltd. # James Deng # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # Notice: # 1. This script muse source at the top directory of lichee. BUILD_CONFIG=.buildconfig cpu_cores=`cat /proc/cpuinfo | grep "processor" | wc -l` if [ ${cpu_cores} -le 8 ] ; then LICHEE_JLEVEL=${cpu_cores} else LICHEE_JLEVEL=`expr ${cpu_cores} / 2` fi export LICHEE_JLEVEL function mk_error() { echo -e "\033[47;31mERROR: $*\033[0m" } function mk_warn() { echo -e "\033[47;34mWARN: $*\033[0m" } function mk_info() { echo -e "\033[47;30mINFO: $*\033[0m" } # define importance variable LICHEE_TOP_DIR=`pwd` LICHEE_KERN_DIR=${LICHEE_TOP_DIR}/${LICHEE_KERN_VER} LICHEE_ARCH_DIR=${LICHEE_KERN_DIR}/${LICHEE_ARCH} LICHEE_TOOLS_DIR=${LICHEE_TOP_DIR}/tools LICHEE_SATA_DIR=${LICHEE_TOP_DIR}/SATA LICHEE_OUT_DIR=${LICHEE_TOP_DIR}/out MKRULE_FILE=${LICHEE_TOOLS_DIR}/build/mkrule # add support for buildroot-201611 support if [ -n "`echo $LICHEE_KERN_VER | grep "linux-4.4"`" ]; then LICHEE_BR_DIR=${LICHEE_TOP_DIR}/buildroot-201611 else LICHEE_BR_DIR=${LICHEE_TOP_DIR}/buildroot fi # make surce at the top directory of lichee if [ ! -d ${LICHEE_KERN_DIR} -o \ ! -d ${LICHEE_TOOLS_DIR} ] ; then mk_error "You are not at the top directory of lichee." mk_error "Please changes to that directory." exit 1 fi # export importance variable export LICHEE_TOP_DIR export LICHEE_BR_DIR export LICHEE_KERN_DIR export LICHEE_ARCH_DIR export LICHEE_TOOLS_DIR export LICHEE_OUT_DIR platforms=( "android" "dragonboard" "linux" "camdroid" ) function save_config() { local cfgkey=$1 local cfgval=$2 local cfgfile=$3 if [ -f $cfgfile ] && [ -n "$(grep "^[ ]*export[ ]\+$cfgkey[ ]*=" $cfgfile)" ]; then sed -i "s/\(^[ ]*export[ ]\+$cfgkey[ ]*=\).*/\1$cfgval/g" $cfgfile else echo "export $cfgkey=$cfgval" >> $cfgfile fi } function load_config() { local cfgkey=$1 local cfgfile=$2 if [ -f $cfgfile ]; then echo $(grep "^[ ]*export[ ]\+$cfgkey[ ]*=" $cfgfile | tail -n 1 | grep -oP "(?<==).*" | awk '{sub("^[ ]*","");print}') fi } # # This function can get the realpath between $SRC and $DST # function get_realpath() { local src=$(cd $1; pwd); local dst=$(cd $2; pwd); local res="./"; local tmp="$dst" while [ "${src##*$tmp}" == "${src}" ]; do tmp=${tmp%/*}; res=$res"../" done res="$res${src#*$tmp/}" printf "%s" $res } function check_env() { if [ -z "${LICHEE_CHIP}" -o \ -z "${LICHEE_PLATFORM}" -o \ -z "${LICHEE_KERN_VER}" -o \ -z "${LICHEE_ARCH}" -o \ -z "${LICHEE_BOARD}" ] ; then mk_error "run './build.sh config' setup env" exit 1 fi cd ${LICHEE_TOOLS_DIR} ln -sfT $(get_realpath pack/chips/ ./)/${LICHEE_CHIP} product cd - > /dev/null } function init_defconf() { local pattern local defconf local out_dir="common" check_env pattern="${LICHEE_CHIP}_${LICHEE_PLATFORM}_${LICHEE_BOARD}" defconf=`awk '$1=="'$pattern'" {print $2,$3}' ${MKRULE_FILE}` if [ -n "${defconf}" ] ; then export LICHEE_BR_DEFCONF=`echo ${defconf} | awk '{print $1}'` export LICHEE_KERN_DEFCONF=`echo ${defconf} | awk '{print $2}'` # almost null, using common as defconfig, depends on mkrule file out_dir="${LICHEE_BOARD}" else pattern="${LICHEE_CHIP}_${LICHEE_PLATFORM}_${LICHEE_ARCH}" defconf=`awk '$1=="'$pattern'" {print $2,$3}' ${MKRULE_FILE}` if [ -n "${defconf}" ] ; then export LICHEE_BR_DEFCONF=`echo ${defconf} | awk '{print $1}'` export LICHEE_KERN_DEFCONF=`echo ${defconf} | awk '{print $2}'` out_dir="common" else pattern="${LICHEE_CHIP}_${LICHEE_PLATFORM}" defconf=`awk '$1=="'$pattern'" {print $2,$3}' ${MKRULE_FILE}` if [ -n "${defconf}" ] ; then export LICHEE_BR_DEFCONF=`echo ${defconf} | awk '{print $1}'` export LICHEE_KERN_DEFCONF=`echo ${defconf} | awk '{print $2}'` out_dir="common" fi fi fi # mark as diff for output dir & buildroot output dir export LICHEE_PLAT_OUT="${LICHEE_OUT_DIR}/${LICHEE_CHIP}/${LICHEE_PLATFORM}/${out_dir}" export LICHEE_BR_OUT="${LICHEE_PLAT_OUT}/buildroot" mkdir -p ${LICHEE_BR_OUT} } function list_subdir() { echo "$(eval "$(echo "$(ls -d $1/*/)" | sed "s/^/basename /g")")" } function init_key() { local val_list=$1 local cfg_key=$2 local cfg_val=$3 if [ -n "$(echo $val_list | grep -w $cfg_val)" ]; then export $cfg_key=$cfg_val return 0 else return 1 fi } function init_chips() { local cfg_val=$1 # chip local cfg_key="LICHEE_CHIP" local val_list=$(list_subdir $LICHEE_TOOLS_DIR/pack/chips) init_key "$val_list" "$cfg_key" "$cfg_val" return $? } function init_platforms() { local cfg_val=$1 # platform local cfg_key="LICHEE_PLATFORM" local val_list=${platforms[@]} init_key "$val_list" "$cfg_key" "$cfg_val" return $? } function init_kern_ver() { local cfg_val=$1 # kern_ver local cfg_key="LICHEE_KERN_VER" local val_list=$(list_subdir $LICHEE_TOP_DIR | grep "linux-") init_key "$val_list" "$cfg_key" "$cfg_val" return $? } function init_arch() { local cfg_val=$1 # arch local cfg_key="LICHEE_ARCH" local val_list=$(list_subdir $LICHEE_KERN_DIR/arch | grep "arm") init_key "$val_list" "$cfg_key" "$cfg_val" return $? } function init_boards() { local chip=$1 local cfg_val=$2 # board local cfg_key="LICHEE_BOARD" local val_list=$(list_subdir $LICHEE_TOOLS_DIR/pack/chips/$chip/configs | grep -v default) init_key "$val_list" "$cfg_key" "$cfg_val" return $? } function mk_select() { local val_list=$1 local cfg_key=$2 local cnt=0 local cfg_val=$(load_config $cfg_key $BUILD_CONFIG) local cfg_idx=0 local banner=$(echo ${cfg_key:7} | tr '[:upper:]' '[:lower:]') printf "All available $banner:\n" for val in $val_list; do array[$cnt]=$val if [ "X_$cfg_val" == "X_${array[$cnt]}" ]; then cfg_idx=$cnt fi printf "%4d. %s\n" $cnt $val let "cnt++" done while true; do read -p "Choice [${array[$cfg_idx]}]: " choice if [ -z "${choice}" ]; then choice=$cfg_idx fi if [ -z "${choice//[0-9]/}" ] ; then if [ $choice -ge 0 -a $choice -lt $cnt ] ; then cfg_val="${array[$choice]}" break; fi fi printf "Invalid input ...\n" done export $cfg_key=$cfg_val save_config "$cfg_key" "$cfg_val" $BUILD_CONFIG } function list_subdir() { echo "$(eval "$(echo "$(ls -d $1/*/)" | sed "s/^/basename /g")")" } function mk_config() { select_platform select_chip select_kern_ver select_arch select_board } function select_chip() { local val_list=$(list_subdir $LICHEE_TOOLS_DIR/pack/chips) local cfg_key="LICHEE_CHIP" mk_select "$val_list" "$cfg_key" } function select_platform() { local val_list="${platforms[@]}" local cfg_key="LICHEE_PLATFORM" mk_select "$val_list" "$cfg_key" } function select_kern_ver() { local val_list=$(list_subdir $LICHEE_TOP_DIR | grep "linux-") local cfg_key="LICHEE_KERN_VER" mk_select "$val_list" "$cfg_key" } function select_arch() { # for all self config, we normal not use if [ x${CONFIG_ALL} == x${FLAGS_TRUE} ]; then local val_list=$(list_subdir $LICHEE_KERN_DIR/arch | grep "arm") local cfg_key="LICHEE_ARCH" mk_select "$val_list" "$cfg_key" else if [ -n "`echo ${LICHEE_CHIP} | grep "sun5[0-9]i"`" ]; then export LICHEE_ARCH="arm64" else export LICHEE_ARCH="arm" fi save_config "LICHEE_ARCH" "$LICHEE_ARCH" $BUILD_CONFIG fi } function select_board() { local val_list=$(list_subdir $LICHEE_TOOLS_DIR/pack/chips/$LICHEE_CHIP/configs | grep -v default) local cfg_key="LICHEE_BOARD" mk_select "$val_list" "$cfg_key" } function mkbr() { mk_info "build buildroot ..." local build_script="scripts/build.sh" prepare_toolchain (cd ${LICHEE_BR_DIR} && [ -x ${build_script} ] && ./${build_script}) [ $? -ne 0 ] && mk_error "build buildroot Failed" && return 1 mk_info "build buildroot OK." } function clbr() { mk_info "clean buildroot ..." local build_script="scripts/build.sh" (cd ${LICHEE_BR_DIR} && [ -x ${build_script} ] && ./${build_script} "clean") mk_info "clean buildroot OK." } function prepare_toolchain() { local ARCH=""; local GCC=""; local GCC_PREFIX=""; local toolchain_archive=""; local tooldir=""; mk_info "Prepare toolchain ..." if [ "x${LICHEE_ARCH}" = "xarm64" ]; then ARCH="aarch64" if [ -n "`echo $LICHEE_KERN_VER | grep "linux-4.4"`" ]; then toolchain_archive="${LICHEE_TOOLS_DIR}/build/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu.tar.xz"; else toolchain_archive="${LICHEE_TOOLS_DIR}/build/toolchain/gcc-linaro-aarch64.tar.xz"; fi elif [ "x${LICHEE_ARCH}" = "xarm" ]; then ARCH="arm" if [ -n "`echo $LICHEE_KERN_VER | grep "linux-4.4"`" ] || [ -n "`echo $LICHEE_KERN_VER | grep "linux-4.9"`" ]; then toolchain_archive="${LICHEE_TOOLS_DIR}/build/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz"; else toolchain_archive="${LICHEE_TOOLS_DIR}/build/toolchain/gcc-linaro-arm.tar.xz"; fi else exit 1 fi if [ -n "`echo $LICHEE_KERN_VER | grep "linux-4.4"`" ] || [ -n "`echo $LICHEE_KERN_VER | grep "linux-4.9"`" ]; then tooldir=${LICHEE_OUT_DIR}/gcc-linaro-5.3.1-2016.05/gcc-${ARCH} else tooldir=${LICHEE_OUT_DIR}/external-toolchain/gcc-${ARCH} fi if [ ! -d "${tooldir}" ]; then mkdir -p ${tooldir} || exit 1 tar --strip-components=1 -xf ${toolchain_archive} -C ${tooldir} || exit 1 fi GCC=$(find ${tooldir} -perm /a+x -a -regex '.*-gcc'); if [ -z "${GCC}" ]; then tar --strip-components=1 -xf ${toolchain_archive} -C ${tooldir} || exit 1 GCC=$(find ${tooldir} -perm /a+x -a -regex '.*-gcc'); fi GCC_PREFIX=${GCC##*/}; if [ "${tooldir}" == "${LICHEE_TOOLCHAIN_PATH}" \ -a "${LICHEE_CROSS_COMPILER}-gcc" == "${GCC_PREFIX}" \ -a -x "${GCC}" ]; then return fi if ! echo $PATH | grep -q "${tooldir}" ; then export PATH=${tooldir}/bin:$PATH fi LICHEE_CROSS_COMPILER="${GCC_PREFIX%-*}"; if [ -n ${LICHEE_CROSS_COMPILER} ]; then if [ -f ${BUILD_CONFIG} ]; then sed -i '/LICHEE_CROSS_COMPILER.*/d' ${BUILD_CONFIG} sed -i '/LICHEE_TOOLCHAIN_PATH.*/d' ${BUILD_CONFIG} fi export LICHEE_CROSS_COMPILER=${LICHEE_CROSS_COMPILER} export LICHEE_TOOLCHAIN_PATH=${tooldir} save_config "LICHEE_CROSS_COMPILER" "$LICHEE_CROSS_COMPILER" $BUILD_CONFIG save_config "LICHEE_TOOLCHAIN_PATH" "$tooldir" $BUILD_CONFIG fi } function prepare_dragonboard_toolchain() { local ARCH="arm"; local GCC=""; local GCC_PREFIX=""; local toolchain_archive="${LICHEE_TOOLS_DIR}/build/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz"; local tooldir=""; mk_info "Prepare dragonboard toolchain ..." tooldir=${LICHEE_OUT_DIR}/gcc-linaro-5.3.1-2016.05/dragonboard/gcc-arm if [ ! -d "${tooldir}" ]; then mkdir -p ${tooldir} || exit 1 tar --strip-components=1 -xf ${toolchain_archive} -C ${tooldir} || exit 1 fi GCC=$(find ${tooldir} -perm /a+x -a -regex '.*-gcc'); if [ -z "${GCC}" ]; then tar --strip-components=1 -xf ${toolchain_archive} -C ${tooldir} || exit 1 GCC=$(find ${tooldir} -perm /a+x -a -regex '.*-gcc'); fi GCC_PREFIX=${GCC##*/}; if [ "${tooldir}" == "${LICHEE_TOOLCHAIN_PATH}" \ -a "${LICHEE_CROSS_COMPILER}-gcc" == "${GCC_PREFIX}" \ -a -x "${GCC}" ]; then return fi if ! echo $PATH | grep -q "${tooldir}" ; then export PATH=${tooldir}/bin:$PATH fi LICHEE_CROSS_COMPILER="${GCC_PREFIX%-*}"; if [ -n ${LICHEE_CROSS_COMPILER} ]; then export LICHEE_CROSS_COMPILER=${LICHEE_CROSS_COMPILER} export LICHEE_TOOLCHAIN_PATH=${tooldir} fi } function mkkernel() { mk_info "build kernel ..." local build_script="scripts/build.sh" prepare_toolchain # mark kernel .config belong to which platform local config_mark="${LICHEE_KERN_DIR}/.config.mark" if [ -f ${config_mark} ] ; then if ! grep -q "${LICHEE_CHIP}_${LICHEE_BOARD}_${LICHEE_PLATFORM}" ${config_mark} ; then mk_info "clean last time build for different platform" (cd ${LICHEE_KERN_DIR} && [ -x ${build_script} ] && ./${build_script} "clean") rm -rf ${LICHEE_KERN_DIR}/.config echo "${LICHEE_CHIP}_${LICHEE_BOARD}_${LICHEE_PLATFORM}" > ${config_mark} fi else echo "${LICHEE_CHIP}_${LICHEE_BOARD}_${LICHEE_PLATFORM}" > ${config_mark} fi (cd ${LICHEE_KERN_DIR} && [ -x ${build_script} ] && ./${build_script}) [ $? -ne 0 ] && mk_error "build kernel Failed" && return 1 mk_info "build kernel OK." } function clkernel() { local clarg="clean" if [ "x$1" == "xdistclean" ]; then clarg="distclean" fi mk_info "clean kernel ..." local build_script="scripts/build.sh" prepare_toolchain (cd ${LICHEE_KERN_DIR} && [ -x ${build_script} ] && ./${build_script} "$clarg") mk_info "clean kernel OK." } function cldragonboard() { local tooldir=${LICHEE_OUT_DIR}/gcc-linaro-5.3.1-2016.05/dragonboard/gcc-arm [ ! -d ${tooldir} ] && return mk_info "clean dragonboard ..." prepare_dragonboard_toolchain local script_dir="${LICHEE_TOP_DIR}/buildroot/target/common/scripts/" local clean_script="clean.sh" (cd ${script_dir} && [ -x ${clean_script} ] && ./${clean_script}) mk_info "clean dragonboard OK." } function mkboot() { mk_info "build boot ..." mk_info "build boot OK." } function mksata() { if [ "x$PACK_BSPTEST" = "xtrue" ];then clsata mk_info "build sata ..." local build_script="linux/bsptest/script/bsptest.sh" local sata_config="${LICHEE_SATA_DIR}/linux/bsptest/script/Config" . ${sata_config} if [ "x$BTEST_MODULE" = "x" ];then BTEST_MODULE=all fi (cd ${LICHEE_SATA_DIR} && [ -x ${build_script} ] && ./${build_script} -b $BTEST_MODULE) [ $? -ne 0 ] && mk_error "build kernel Failed" && return 1 mk_info "build sata OK." (cd ${LICHEE_SATA_DIR} && [ -x ${build_script} ] && ./${build_script} -s $BTEST_MODULE) fi } function clsata() { mk_info "clear sata ..." local build_script="linux/bsptest/script/bsptest.sh" (cd ${LICHEE_SATA_DIR} && [ -x ${build_script} ] && ./${build_script} -b clean) mk_info "clean sata OK." } function mk_tinyandroid() { local ROOTFS=${LICHEE_PLAT_OUT}/rootfs_tinyandroid mk_info "Build tinyandroid rootfs ..." if [ "$1" = "f" ]; then rm -fr ${ROOTFS} fi if [ ! -f ${ROOTFS} ]; then mkdir -p ${ROOTFS} tar -jxf ${LICHEE_TOOLS_DIR}/build/rootfs_tar/tinyandroid_${LICHEE_ARCH}.tar.bz2 -C ${ROOTFS} fi mkdir -p ${ROOTFS}/lib/modules cp -rf ${LICHEE_KERN_DIR}/output/lib/modules/* \ ${ROOTFS}/lib/modules/ if [ "x$PACK_BSPTEST" = "xtrue" ];then if [ -d ${ROOTFS}/target ];then rm -rf ${ROOTFS}/target/* fi if [ -d ${LICHEE_SATA_DIR}/linux/target ]; then mk_info "copy SATA rootfs_def" cp -a ${LICHEE_SATA_DIR}/linux/target ${ROOTFS}/ fi fi NR_SIZE=`du -sm ${ROOTFS} | awk '{print $1}'` NEW_NR_SIZE=$(((($NR_SIZE+32)/16)*16)) echo "blocks: $NR_SIZE"M" -> $NEW_NR_SIZE"M"" ${LICHEE_TOOLS_DIR}/build/bin/make_ext4fs -l \ $NEW_NR_SIZE"M" ${LICHEE_PLAT_OUT}/rootfs.ext4 ${ROOTFS} fsck.ext4 -y ${LICHEE_PLAT_OUT}/rootfs.ext4 > /dev/null } function mk_defroot() { local ROOTFS=${LICHEE_PLAT_OUT}/rootfs_def local INODES="" local BLOCKS="" mk_info "Build default rootfs ..." if [ "$1" = "f" ]; then rm -fr ${ROOTFS} fi if [ ! -f ${ROOTFS} ]; then mkdir -p ${ROOTFS} if [ -n "`echo $LICHEE_KERN_VER | grep "linux-4.[49]"`" ]; then fakeroot tar -jxf ${LICHEE_TOOLS_DIR}/build/rootfs_tar/target-${LICHEE_ARCH}-linaro-5.3.tar.bz2 -C ${ROOTFS} else tar -jxf ${LICHEE_TOOLS_DIR}/build/rootfs_tar/target_${LICHEE_ARCH}.tar.bz2 -C ${ROOTFS} fi fi mkdir -p ${ROOTFS}/lib/modules cp -rf ${LICHEE_KERN_DIR}/output/lib/modules/* \ ${ROOTFS}/lib/modules/ if [ "x$PACK_BSPTEST" = "xtrue" ];then if [ -d ${ROOTFS}/target ];then rm -rf ${ROOTFS}/target/* fi if [ -d ${LICHEE_SATA_DIR}/linux/target ]; then mk_info "copy SATA rootfs_def" cp -a ${LICHEE_SATA_DIR}/linux/target ${ROOTFS}/ fi fi if [ "x$PACK_STABILITY" = "xtrue" -a -d ${LICHEE_KERN_DIR}/tools/sunxi ];then cp -v ${LICHEE_KERN_DIR}/tools/sunxi/* ${ROOTFS}/bin fi (cd ${ROOTFS}; ln -fs bin/busybox init) export PATH=$PATH:${LICHEE_TOOLS_DIR}/build/bin fakeroot chown -h -R 0:0 ${ROOTFS} fakeroot mke2img -d ${ROOTFS} -G 4 -R 1 -B 0 -I 0 -o ${LICHEE_PLAT_OUT}/rootfs.ext4 cat > ${LICHEE_PLAT_OUT}/.rootfs << EOF chown -h -R 0:0 ${ROOTFS} ${LICHEE_TOOLS_DIR}/build/bin/makedevs -d \ ${LICHEE_TOOLS_DIR}/build/rootfs_tar/_device_table.txt ${ROOTFS} ${LICHEE_TOOLS_DIR}/build/bin/mksquashfs \ ${ROOTFS} ${LICHEE_PLAT_OUT}/rootfs.squashfs -root-owned -no-progress -comp xz -noappend EOF chmod a+x ${LICHEE_PLAT_OUT}/.rootfs fakeroot -- ${LICHEE_PLAT_OUT}/.rootfs } function mkrootfs() { mk_info "build rootfs ..." if [ ${LICHEE_PLATFORM} = "linux" ] ; then if [ "x$PACK_TINY_ANDROID" = "xtrue" ]; then mk_tinyandroid $1 elif [ ${SKIP_BR} -ne 0 ]; then mk_defroot $1 else if [ "x$PACK_BSPTEST" = "xtrue" ];then if [ -d ${LICHEE_BR_OUT}/target ];then rm -rf ${ROOTFS}/target/* fi if [ -d ${LICHEE_SATA_DIR}/linux/target ];then mk_info "copy SATA rootfs" cp -a ${LICHEE_SATA_DIR}/linux/target ${LICHEE_BR_OUT}/target/ fi fi # buildroot-201611 just not using this if [ -z `echo $LICHEE_BR_DIR | grep "201611"` ]; then make O=${LICHEE_BR_OUT} -C ${LICHEE_BR_DIR} \ BR2_TOOLCHAIN_EXTERNAL_PATH=${LICHEE_TOOLCHAIN_PATH} \ BR2_TOOLCHAIN_EXTERNAL_PREFIX=${LICHEE_CROSS_COMPILER} \ BR2_JLEVEL=${LICHEE_JLEVEL} target-post-image fi [ $? -ne 0 ] && mk_error "build rootfs Failed" && return 1 cp ${LICHEE_BR_OUT}/images/rootfs.ext4 ${LICHEE_PLAT_OUT} if [ -f "${LICHEE_BR_OUT}/images/rootfs.squashfs" ]; then cp ${LICHEE_BR_OUT}/images/rootfs.squashfs ${LICHEE_PLAT_OUT} fi fi elif [ ${LICHEE_PLATFORM} = "dragonboard" ] ; then # buildroot-201611 not supporting dragonboard, i am just say sorry, # pls add it, but i just done nothing else if [ -d ${LICHEE_TOP_DIR}/buildroot/target ]; then echo "Regenerating dragonboard Rootfs..." ( cd ${LICHEE_TOP_DIR}/buildroot/target/${LICHEE_PLATFORM}; \ if [ ! -d "./rootfs" ]; then \ echo "extract dragonboard rootfs.tar.gz"; \ tar zxf ../common/rootfs/rootfs.tar.gz; \ fi ) prepare_dragonboard_toolchain mkdir -p ${LICHEE_TOP_DIR}/buildroot/target/${LICHEE_PLATFORM}/rootfs/lib/modules rm -rf ${LICHEE_TOP_DIR}/buildroot/target/${LICHEE_PLATFORM}/rootfs/lib/modules/* cp -rf ${LICHEE_KERN_DIR}/output/lib/modules/* \ ${LICHEE_TOP_DIR}/buildroot/target/${LICHEE_PLATFORM}/rootfs/lib/modules/ (cd ${LICHEE_TOP_DIR}/buildroot/target/common/scripts; ./build.sh) [ $? -ne 0 ] && mk_error "build rootfs Failed" && return 1 cp ${LICHEE_TOP_DIR}/buildroot/target/${LICHEE_PLATFORM}/rootfs.ext4 ${LICHEE_PLAT_OUT} fi else mk_info "skip make rootfs for ${LICHEE_PLATFORM}" fi mk_info "build rootfs OK." } function mklichee() { mk_info "----------------------------------------" mk_info "build lichee ..." mk_info "chip: $LICHEE_CHIP" mk_info "platform: $LICHEE_PLATFORM" mk_info "kernel: $LICHEE_KERN_VER" mk_info "board: $LICHEE_BOARD" mk_info "output: out/${LICHEE_CHIP}/${LICHEE_PLATFORM}/${LICHEE_BOARD}" mk_info "----------------------------------------" check_env if [ ${SKIP_BR} -eq 0 ]; then mkbr fi mkkernel && mksata && mkrootfs $1 [ $? -ne 0 ] && return 1 mk_info "----------------------------------------" mk_info "build lichee OK." mk_info "----------------------------------------" } function mkclean() { clkernel cldragonboard mk_info "clean product output in ${LICHEE_PLAT_OUT} ..." cd ${LICHEE_PLAT_OUT} ls | grep -v "buildroot" | xargs rm -rf cd - > /dev/null } function mkdistclean() { clkernel "distclean" if [ ${SKIP_BR} -eq 0 ]; then clbr fi cldragonboard mk_info "clean entires output dir ..." rm -rf ${LICHEE_OUT_DIR} } function mkpack() { mk_info "packing firmware ..." check_env (cd ${LICHEE_TOOLS_DIR}/pack && \ ./pack -c ${LICHEE_CHIP} -p ${LICHEE_PLATFORM} -b ${LICHEE_BOARD} -k ${LICHEE_KERN_VER} $@) } function mkhelp() { printf " mkscript - lichee build script : 1.0.0 : james : mkboot build boot mkbr build buildroot mkkernel build kernel mkrootfs build rootfs for linux, dragonboard mklichee build total lichee mkclean clean current board output mkdistclean clean entires output mkpack pack firmware for lichee mkhelp show this message " }