#!/bin/sh -e #这段是说明是一个shell脚本,后面这个-e选项可以网上搜搜,没特大的意义
# Script to create header files and links to configure
# U-Boot for a specific board.
#
# Parameters: Target Architecture CPU Board [VENDOR] [SOC]
#
# (C) 2002-2006 DENX Software Engineering, Wolfgang Denk
#
APPEND=no # Default: Create new config file
BOARD_NAME="" # Name to print in make output
while [ $# -gt 0 ] ; do #-gt符号意思是大于. $#:意思是终端中命令的后几个参数的总个数。,明显的,个数共和是6,当然大于0了,所以,进入执行
case "$1" in # $1第一个参数,即smdk2410
--) shift ; break ;;
-a) shift ; APPEND=yes ;;
-n) shift ; BOARD_NAME="${1%%_config}" ; shift ;;
*) break ;;
esac
done
#由 ./mkconfig smdk2410 arm arm920t smdk2410 NULL s3c24x0 可以看出,参数中没有上面任意一个,所以直接跳出。
[ "${BOARD_NAME}" ] || BOARD_NAME="$1"
#或运算符,此时BOARD_NAME="$1" =smdk2410
[ $# -lt 4 ] && exit 1
[ $# -gt 6 ] && exit 1 #这两句不会执行,因为个数为6,
echo "Configuring for ${BOARD_NAME} board..."
#
# Create link to architecture specific headers
#
if [ "$SRCTREE" != "$OBJTREE" ] ; then #判断源代码目录和目标文件目录是否一样,因为我们编译时的目标文件目录通常是在源代码目录下的,所以这句不满足
mkdir -p ${OBJTREE}/include
mkdir -p ${OBJTREE}/include2
cd ${OBJTREE}/include2
rm -f asm
ln -s ${SRCTREE}/include/asm-$2 asm
LNPREFIX="../../include2/asm/"
cd ../include
rm -rf asm-$2
rm -f asm
mkdir asm-$2
ln -s asm-$2 asm
else #执行到这里
cd ./include #进入到这里
rm -f asm #然后删除asm文件,首次编译的时候,你回发现是没有这个asm的。
ln -s asm-$2 asm #创建软连接文件,在这里,应该是:ln -s asm-arm asm,因此,在这里也就创建了对应的arm的汇编文件源码了。是一个符号链接asm,指向asm-arm源码文件。
fi
rm -f asm-$2/arch #删除asm-arm/arch下面的所有东西
if [ -z "$6" -o "$6" = "NULL" ] ; then #-z意思是空串,这个-o我也没查到,估计应该是&&的意思,此时$6=s3c24x0 ,当然不为NULL,并且存在了,所以不执行这句
ln -s ${LNPREFIX}arch-$3 asm-$2/arch
else
ln -s ${LNPREFIX}arch-$6 asm-$2/arch #这个${LNPREFIX}为空,所以这句话为:ln -s arch-s3c24x0 asm-arm/arch。
fi
if [ "$2" = "arm" ] ; then #$2,当然就是第二个参数arm了,所以进入其中
rm -f asm-$2/proc #先删除原来的asm-arm/proc
ln -s ${LNPREFIX}proc-armv asm-$2/proc #意思是ln -s proc-armv asm-arm/proc,再次创建一个软连接
fi
#
# Create include file for Make
#
echo "ARCH = $2" > config.mk
echo "CPU = $3" >> config.mk
echo "BOARD = $4" >> config.mk
#上面三句很明显是,(当前在include目录下),想config.mk中写入ARCH =arm,CPU =arm920t BOARD =smdk2410 (当然第一次执行的时候这个config.mk是没有的,就创建,以后在编译的时候就有了,那就直接覆盖)
[ "$5" ] && [ "$5" != "NULL" ] && echo "VENDOR = $5" >> config.mk
#这句是&&运算符,因为$5=NULL,所以后面的就不用执行,直接退出,所以这条语句不会写进去。
[ "$6" ] && [ "$6" != "NULL" ] && echo "SOC = $6" >> config.mk
#同理,这句执行了,是输入SOC = s3c24x0 到config.mk中
#
# Create board specific header file
#
if [ "$APPEND" = "yes" ] # Append to existing config file
then
echo >> config.h
else
> config.h # Create new config file ,创建config.h文件
fi
echo "/* Automatically generated - do not edit */" >>config.h
echo "#include " >>config.h
echo "#include
" >>config.h
#上面这句就简单多了,就是输入入戏几行代码到.config.h中
/* Automatically generated - do not edit */
#include
exit 0