uboot2013-10移植(二)--mkconfig注释

来源:互联网 发布:mac下windows虚拟机 编辑:程序博客网 时间:2024/06/07 13:37
转载地址:http://blog.csdn.net/fjlhlonng/article/details/22043703
[cpp] view plain copy
  1. #!/bin/sh -e  
  2.   
  3. # Script to create header files and links to configure  
  4. # U-Boot for a specific board.  
  5. #  
  6. # Parameters:  Target  Architecture  CPU  Board [VENDOR] [SOC]  
  7. #  
  8. # (C) 2002-2013 DENX Software Engineering, Wolfgang Denk <wd@denx.de>  
  9. #  
  10. # SPDX-License-Identifier:  GPL-2.0+  
  11. #  
  12.   
  13. APPEND=no   # Default: Create new config file  
  14. BOARD_NAME=""   # Name to print in make output  
  15. TARGETS=""  
  16.   
  17. arch=""  
  18. cpu=""  
  19. board=""  
  20. vendor=""  
  21. soc=""  
  22. options=""  
  23.   
  24. if [ $# -eq 2 -a \( "$1" = "-A" \) ] ; then  
  25.     # Automatic mode  
  26.     # !~表示不匹配,~表示匹配,awk对外部变量的引用是先用双引号包含,然后在是用单引号,所以前面的$2表示的是smdkc100  
  27.     line=`awk '($0 !~ /^#/ && $7 ~ /^'"$2"'$/) { print $1, $2, $3, $4, $5, $6, $7, $8 }' boards.cfg`  
  28.     if [ -z "$line" ] ; then  
  29.         echo "make: *** No rule to make target \`$2_config'.  Stop." >&2  
  30.         exit 1  
  31.     fi  
  32.   
  33.     set ${line}  
  34.     # add default board name if needed  
  35.     [ $# = 3 ] && set ${line} ${1}  
  36. fi  
  37.   
  38. # 不存在这些参数  
  39. while [ $# -gt 0 ] ; do  
  40.     case "$1" in  
  41.     --) shift ; break ;;  
  42.     -a) shift ; APPEND=yes ;;  
  43.     -n) shift ; BOARD_NAME="${7%_config}" ; shift ;;  
  44.     -t) shift ; TARGETS="`echo $1 | sed 's:_: :g'` ${TARGETS}" ; shift ;;  
  45.     *)  break ;;  
  46.     esac  
  47. done  
  48.   
  49. # 参数个数小于7或者大于8个则退出脚本  
  50. [ $# -lt 7 ] && exit 1  
  51. [ $# -gt 8 ] && exit 1  
  52.   
  53. # Strip all options and/or _config suffixes  
  54. CONFIG_NAME="${7%_config}" # CONFIG_NAME=smdkc100_config  
  55. # 如果没有设置BOARD_NAME这个变量,那么将它赋值为smdkc100_config  
  56. "${BOARD_NAME}" ] || BOARD_NAME="${7%_config}"  
  57.   
  58. arch="$2"   # ARCH=arm  
  59. cpu=`echo $3 | awk 'BEGIN {FS = ":"} ; {print $1}'` # cpu=armv7  
  60. spl_cpu=`echo $3 | awk 'BEGIN {FS = ":"} ; {print $2}'` # spl_cpu=armv7  
  61. if [ "$6" = "-" ] ; then  
  62.     board=${BOARD_NAME}  
  63. else  
  64.     board="$6"  # board=smdkc100  
  65. fi  
  66. "$5" != "-" ] && vendor="$5" # vendor=samsung  
  67. "$4" != "-" ] && soc="$4" #soc=s5pc1xx  
  68. [ $# -gt 7 ] && [ "$8" != "-" ] && {  
  69.     # check if we have a board config name in the options field  
  70.     # the options field mave have a board config name and a list  
  71.     # of options, both separated by a colon (':'); the options are  
  72.     # separated by commas (',').  
  73.     #  
  74.     # Check for board name  
  75.   # 这里不会执行,下面这条命令的意思是删除$8字串中包括冒号以后的所有字符  
  76.     tmp="${8%:*}"  
  77.     if [ "$tmp" ] ; then  
  78.         CONFIG_NAME="$tmp"  
  79.     fi  
  80.     # Check if we only have a colon...  
  81.     if [ "${tmp}" != "$8" ] ; then  
  82.         # 删除$8中包括冒号以前的所有字符  
  83.         options=${8#*:}  
  84.         TARGETS="`echo ${options} | sed 's:,: :g'` ${TARGETS}"  
  85.     fi  
  86. }  
  87.   
  88. if [ "${ARCH}" -a "${ARCH}" != "${arch}" ]; then  
  89.     echo "Failed: \$ARCH=${ARCH}, should be '${arch}' for ${BOARD_NAME}" 1>&2  
  90.     exit 1  
  91. fi  
  92. # 没有options变量  
  93. if [ "$options" ] ; then  
  94.     echo "Configuring for ${BOARD_NAME} - Board: ${CONFIG_NAME}, Options: ${options}"  
  95. else  
  96.     echo "Configuring for ${BOARD_NAME} board..."  
  97. fi  
  98.   
  99. #  
  100. # Create link to architecture specific headers  
  101. # 相等,所以执行else  
  102. if [ "$SRCTREE" != "$OBJTREE" ] ; then  
  103.     mkdir -p ${OBJTREE}/include  
  104.     mkdir -p ${OBJTREE}/include2  
  105.     cd ${OBJTREE}/include2  
  106.     rm -f asm  
  107.     ln -s ${SRCTREE}/arch/${arch}/include/asm asm  
  108.     LNPREFIX=${SRCTREE}/arch/${arch}/include/asm/  
  109.     cd ../include  
  110.     mkdir -p asm  
  111. else  
  112.     cd ./include  
  113.     rm -f asm  
  114.     ln -s ../arch/${arch}/include/asm asm  
  115. fi  
  116.   
  117. rm -f asm/arch  
  118.   
  119. if [ -z "${soc}" ] ; then  
  120.     ln -s ${LNPREFIX}arch-${cpu} asm/arch   
  121. else   
  122.     ln -s ${LNPREFIX}arch-${soc} asm/arch # 执行这里  
  123. fi  
  124.   
  125. if [ "${arch}" = "arm" ] ; then  
  126.     rm -f asm/proc  
  127.     ln -s ${LNPREFIX}proc-armv asm/proc  
  128. fi  
  129.   
  130. #  
  131. # Create include file for Make  
  132. #  
  133. ( echo "ARCH   = ${arch}"  
  134.     if [ ! -z "$spl_cpu" ] ; then  
  135.     echo 'ifeq ($(CONFIG_SPL_BUILD),y)'  
  136.     echo "CPU    = ${spl_cpu}"  
  137.     echo "else"  
  138.     echo "CPU    = ${cpu}"  
  139.     echo "endif"  
  140.     else  
  141.     echo "CPU    = ${cpu}"  # 执行这里  
  142.     fi  
  143.     echo "BOARD  = ${board}"  
  144.   
  145.     [ "${vendor}" ] && echo "VENDOR = ${vendor}"  
  146.     [ "${soc}"    ] && echo "SOC    = ${soc}"  
  147.     exit 0 ) > config.mk # 把上述变量都创建到这个文件中  
  148.   
  149. # Assign board directory to BOARDIR variable  
  150. if [ -z "${vendor}" ] ; then  
  151.     BOARDDIR=${board}  
  152. else  
  153.     BOARDDIR=${vendor}/${board} # 执行这里,赋值为samsung/smdkc100  
  154. fi  
  155.   
  156. #  
  157. # Create board specific header file  
  158. #  
  159. if [ "$APPEND" = "yes" ]    # Append to existing config file  
  160. then  
  161.     echo >> config.h  
  162. else  
  163.     > config.h       # Create new config file, 我们创建新文件  
  164. fi  
  165. echo "/* Automatically generated - do not edit */" >>config.h  
  166. # 没有设置TARGETS  
  167. for i in ${TARGETS} ; do  
  168.     i="`echo ${i} | sed '/=/ {s/=/  /;q; } ; { s/$/ 1/; }'`"  
  169.     echo "#define CONFIG_${i}" >>config.h ;  
  170. done  
  171.   
  172. # 从这里开始为config.h输入内容  
  173. echo "#define CONFIG_SYS_ARCH  \"${arch}\""  >> config.h  
  174. echo "#define CONFIG_SYS_CPU   \"${cpu}\""   >> config.h  
  175. echo "#define CONFIG_SYS_BOARD \"${board}\"" >> config.h  
  176.   
  177. "${vendor}" ] && echo "#define CONFIG_SYS_VENDOR \"${vendor}\"" >> config.h  
  178.   
  179. "${soc}"    ] && echo "#define CONFIG_SYS_SOC    \"${soc}\""    >> config.h  
  180.   
  181. cat << EOF >> config.h  
  182. #define CONFIG_BOARDDIR board/$BOARDDIR  
  183. #include <config_cmd_defaults.h>  
  184. #include <config_defaults.h>  
  185. #include <configs/${CONFIG_NAME}.h>  
  186. #include <asm/config.h>  
  187. #include <config_fallbacks.h>  
  188. #include <config_uncmd_spl.h>  
  189. EOF  
  190.   
  191. exit 0