#!/bin/bash source ~/.colorc export TOPDIR=$PWD export TOPOUT=${TOPDIR}/output export YAFFS2_DIN_FILE=${TOPDIR}/src/rootfs export YAFFS2_OUT_NAME=5.dE000S260.rootfs.bin export YAFFS2_OUT_FILE=${TOPOUT}/${YAFFS2_OUT_NAME} export YAFFS2_OUT_COPY=${TOPDIR}/../9.IMGBINS check_compiler() { $GCC_TYPE-gcc -v > /dev/null 2>&1 if [ $? -eq 0 ]; then pinfo "check global gcc type : $GCC_TYPE" else pinfo "check local gcc type : $GCC_PATH" if [ -d $GCC_PATH ]; then pdone "check local gcc valid OK!" export PATH=$GCC_PATH/bin:$PATH $GCC_TYPE-gcc -v > /dev/null 2>&1 if [ $? -eq 0 ]; then pdone "test local gcc valid OK!" else perro "test local gcc valid Failed!" exit 1 fi else perro "check local gcc valid Failed!" exit 1 fi fi } check_env() { if [ -z "$GCC_TYPE" ]; then pwarn "No compile env configured!" pwarn "Set default compile env" export GCC_PATH=$GCC_PATH_DEFAULT export GCC_TYPE=$GCC_TYPE_DEFAULT export HOST=$GCC_TYPE export TARGET=$GCC_TYPE export CC="${HOST}-gcc" export CXX="${HOST}-g++" export OBJC="${CC}" export LD="${HOST}-ld" export ARCH=arm export CROSS_COMPILE=${HOST}- pinfo "--------default compile env------" pinfo "ARCH : $ARCH" pinfo "HOST : $HOST" pinfo "GCC_TYPE : $GCC_TYPE" pinfo "GCC_PATH : $GCC_PATH" pinfo "CROSS_COMPILE: $CROSS_COMPILE" pinfo "---------------------------------" check_compiler else pwarn "Get compile env configured!" pinfo "--------current compile env------" pinfo "ARCH : $ARCH" pinfo "HOST : $HOST" pinfo "GCC_TYPE : $GCC_TYPE" pinfo "GCC_PATH : $GCC_PATH" pinfo "CROSS_COMPILE: $CROSS_COMPILE" pinfo "---------------------------------" fi #Kernel with uImage need mkimage mkimage -V >/dev/null 2>&1 if [ ! $? = 0 ]; then pwarn "No \"mkimage\" found, auto install..." sudo apt-get install u-boot-tools if [ $? = 0 ];then pdone "Install \"mkimage\" finish!" else perro "Install \"mkimage\" failed!" exit 1 fi fi } dir_in() { if [ -d $MODULE_SRC_DIR ]; then pinfo "Now cd \$MODULE_SRC_DIR: $MODULE_SRC_DIR" cd $MODULE_SRC_DIR else perro "\$MODULE_SRC_DIR: $MODULE_SRC_DIR not found!" exit 1 fi } dir_ret() { pinfo "Exit $PWD" cd - > /dev/null } show_help() { pinfo "Input: $0 build" } check_option() { if [ -z "$1" ]; then perro "No extra param!" show_help exit 1 else if [ "x$1" = "xbuild" ]; then $1 else perro "Invalid param : $1" show_help exit 1 fi fi } build() { if [ -f ${YAFFS2_OUT_FILE} ]; then rm -rf ${YAFFS2_OUT_FILE} fi if [ ! -d ${YAFFS2_DIN_FILE} ]; then perro "No YAFFS2 DIN DIR : ${YAFFS2_DIN_FILE}" exit 1 fi if [ ! -d ${TOPOUT} ]; then pwarn "Create TOPOUT : ${TOPOUT}" mkdir -p ${TOPOUT} fi cd ${YAFFS2_DIN_FILE} sudo chown -R root:root ./* cd - > /dev/null mkyaffs2 --inband-tags -p 2048 ${YAFFS2_DIN_FILE} ${YAFFS2_OUT_FILE} ls -lh ${YAFFS2_OUT_FILE} if [ ! -d $YAFFS2_OUT_COPY ]; then pwarn "Create new copy directory" sudo mkdir -p ${YAFFS2_OUT_COPY} sudo chmod 777 ${YAFFS2_OUT_COPY} fi cp ${YAFFS2_OUT_FILE} ${YAFFS2_OUT_COPY} cd ${YAFFS2_DIN_FILE} sudo chown -R $(whoami):$(whoami) ./* cd - > /dev/null } check_option $1