#
# (C) Copyright 2000-2006 版权所有:2000~2006
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.            Wolfgang Denk一个开发人员的名字DENX Software Engineering公司名称wd@denx.de邮箱
#
# See file CREDITS for list of people who contributed to this            可以看看CREDITS,里面有为uboot做出贡献的所有开发人员
# project.
#
# This program is free software; you can redistribute it and/or      这个程序是一个自由软件,你可以重新发布它,或者在自由软件基金组织所颁布的
# modify it under the terms of the GNU General Public License as      GNU GPL(GNU 公共许可协议)的前提下修改它;注意,不论是第二版的GPL还是
# published by the Free Software Foundatio; either version 2 of        任何更新的版本,都可以,这由你选择。
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,              我们之所以发布这个程序,是希望它能够对你有用,但是我们不做任何担保;
# but WITHOUT ANY WARRANTY; without even the implied warranty of      不保证任何的可销售性和任何给予特殊目的的合适性。想要了解详细内容,
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        你可以参考GNU GPL。
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License    你应该已经得到了GNU General Public License的一个拷贝,因为它就包含在
# along with this program; if not, write to the Free Software                    这个工程的源代码包中。如果没有,你可以写信给自由软件基金组织,以获取一份。
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
# MA 02111-1307 USA
#
VERSION = 1
PATCHLEVEL = 1
SUBLEVEL = 6
EXTRAVERSION =
U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)    #1.1.6版
VERSION_FILE = $(obj)include/version_autogenerated.h                                      #版本文件
# uname 命令将正在使用的操作系统名写到标准输出中
# -m 显示硬件运行系统的机器 ID 号
# 定义变量,HOSTARCH里面存储的是机器ID号,即主机架构类型
HOSTARCH := $(shell uname -m | \            #可以把shell脚本写到makefile里面,这是make中的shell function,相当于shell中的命令替换。
sed      -e s/i.86/i386/ \                      #shell uname -m 获得机器硬件名称
include意思    -e s/sun4u/sparc64/ \                #sed -e s/arm.*/arm/ 的意思是把前缀为arm的所有模式替换为arm。结合前面的uname命令来理解就是:
    -e s/arm.*/arm/ \              #把uname -m的结果(主机架构类型或者称为机器ID号)通过管道传递给sed命令,然后把前缀为arm的所有模式替换为arm。
    -e s/sa110/arm/ \                    #sed的语法:    sed [  -n ] Script [ File ... ]
    -e s/powerpc/ppc/ \              #                  sed [  -n ] [ -e Script ] ... [ -f ScriptFile ] ... [ File ... ]
    -e s/macppc/ppc/)                #sed 命令根据编辑脚本,去修改指定的 File 文件(这里file是作为一个输入参数的)的行,并将其写到标准输出。
#sed 命令包含很多功能,用于选择要修改的行(请注意,sed是针对行进行操作的),并只对选择的行作更改。
#sed 命令使用两个工作空间来保留修改的行:保留选定行的 "模式空间" 和暂时存储行的 "保留空间"。
#这里的编辑脚本由单独的子命令构成,每个单独的行对应着一个子命令。sed子命令的格式如下:[address-range] function[modifiers],即:[地址范围] 函数[修改符]
#sed 命令通过将一个输入行读入模式空间,依次应用所有的 sed 子命令(这些子命令的地址选择了该行),
#并将模式空间写到标准输出来处理每个输入的 File 输入文件(file就是输入参数)。然后清除模式空间,并对输入的 File 中指定的每行重复该过程。
#一些 sed 子命令使用保留空间来保存后继检索的所有的,或部分的模式空间。
#当命令包含地址(行号或搜索模式)时,该命令只会对被寻址的行起作用。否则,该命令适用于所有的行。
#注意,这里的参数"-e"的意思是:使用 Script 变量作为编辑脚本。如果你只使用一个 -e 标志并且不使用-f 标志,则可以省略 -e 标志。
#注意,这里的 "sed -e s/arm.*/arm/"表示把前缀为arm的所有模式替换为arm,也就是sed s/pattern/replacement/flags
#用 replacement 字符串代替在模式空间中首次出现的pattern 参数。除了空格或换行符,在 s 子命令之后显示的任何字符都能代替 /(斜杠)分隔符。 
#uname -s 表示:显示系统名,标志缺省为开,即uname命令不带任何参数的输出和加参数-s输出相同,即Linux
#tr是一个shell命令,可以实现许多sed的功能,这里 tr '[:upper:]' '[:lower:]'的意思是把管道中的Linux 中的大写字母L 转换成小写字母l
#下面这句话的意思是定义变量HOSTOS,HOSTOS里面存放的是主机安装的,并且当前正在运行的操作系统。
HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
    sed -e 's/\(cygwin\).*/cygwin/')      # 这一句的意思是检测出主机安装的,并且当前正在运行的操作系统名,并把这个系统名中的大写字母转换为小写字母, 
                                      # 然后在通过sed流编辑器匹配所有的,这个系统名中出现的"\(cygwin\).*"模式,然后再用"cygwin"模式替换。
#export HOSTARCH HOSTOS  的意思是输出两个makefile变量HOSTARCH和HOSTOS               
export HOSTARCH HOSTOS               
# Deal with colliding definitions from tcsh etc.  用来处理来自tcsh的互相冲突的定义等等
# 一般来说,shell可以分成两类。第一类是由 Bourne shell 衍生出来的包括 
# sh,ksh,bash,与zsh。第二类是由 C shell 衍生出来的,包括 csh 与 
# tcsh。除此之外还有一个rc,有人认为该自成一类,有人认为该归类在Bourne shell。 
VENDOR =  #开发商
>>>>>>>>>>>>>>###
#
# U-boot build supports producing a object files to the separate external
# U-boot 的编译过程可以支持向一个自己定义的路径生成最终的目标文件
# directory. Two use cases are supported:
# 这里提供了两种用法:
#
# 1) Add O= to the make command line #第一种用法:通过在终端执行命令make O=/dir(即你指定的生成的目标文件的存放目录)
# 'make O=/tmp/build all'
#
# 2) Set environement variable BUILD_DIR to point to the desired location #第二种用法:通过设置环境变量来指定目标文件存放目录,如下所示:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论