MKCONFIG := $(SRCTREE)/mkconfig 源码树下面有一个mkconfig文件
smdk2410_config : unconfig
@ $(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0 $ @ :以("$1""$2"...)的形式保存所有输入的命令行参数
@@表示在make时不输出make的信息(类似Windows下的echooff)。
$@表示目标 mkconfig smdk2410 arm arm920t smdk2410 NULL s3c24x0 做替换
$0 $1 $2
$(SRCTREE)/mkconfig
while [ $# -gt 0 ] ; do 分析传进来的第一个参数
case "$1" in
--) shift ; break ;;
-a) shift ; APPEND=yes ;;
-n) shift ; BOARD_NAME="${1%%_config}" ; shift ;;
*) break ;;
esac
done
[ "${BOARD_NAME}" ] || BOARD_NAME="$1" 如果条件成立,即已经定义了一个名字
BOARD_NAME = smdk2410
[ $# -lt 4 ] && exit 1 表示它的参数,如果小于4大于6都会退出 $ # :保存程序命令行参数的数目
[ $# -gt 6 ] && exit 1
OBJTREE := $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR)) 如果定义了BUILD_DIR就等于BUILD_DIR 若未定义就等于当前目录
SRCTREE := $(CURDIR)
if [ "$SRCTREE" != "$OBJTREE" ]查看SRCTREE和OBJTREE是否相等,在Makefile中查看,即是否当前目录就是源码目录
cd ./include
rm -f asm
ln -s asm-$2 asm ln -s asm-arm asm 建立一个链接文件指向一个链接文件
if [ -z "$6" -o "$6" = "NULL" ] 判断第六个参数是否为空
ln -s ${LNPREFIX}arch-$3 asm-$2/arch ln -s arch-s3c24x0 asm-arm/arch
ln -s ${LNPREFIX}proc-armv asm-$2/proc
#
# Create include file for Make
#
echo "ARCH = $2" > config.mk >表示新建一个文件
echo "CPU = $3" >> config.mk >>把内容追加过去
echo "BOARD = $4" >> config.mk
内容 ARCH = arm
CPU = arm920t
[ "$5" ] && [ "$5" != "NULL" ] && echo "VENDOR = $5" >> config.mk 第5个参数存在且不为空,输出VENDOR
[ "$6" ] && [ "$6" != "NULL" ] && echo "SOC = $6" >> config.mk
在include目录下面输出cat 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
fi
echo "/* Automatically generated - do not edit */" >>config.h
echo "#include " >>config.h
config.h的内容:
/* Automatically generated - do not edit */
#include
include目录下含有config.h
/include/configs/smdk2410.h
阅读(2965) | 评论(0) | 转发(0) |