GNU ARM汇编--(十七)u-boot的makefile和mkconfig解读
时间:11-26
来源:互联网
点击:
- ###
- #定义SUBDIR_TOOLSSUBDIR_EXAMPLES和SUBDIRS
- ###############################################
- .PHONY:$(SUBDIRS)$(VERSION_FILE)$(TIMESTAMP_FILE)
- ########################
- #定义几个伪目标
- ########################
- ifeq($(obj)include/config.mk,$(wildcard$(obj)include/config.mk))
- #Includeautoconf.mkbeforeconfig.mksothattheconfigoptionsareavailable
- #toalltoplevelbuildfiles.Weneedthedummyall:targettopreventthe
- #dependencytargetinautoconf.mk.depfrombeingthedefault.
- all:
- sinclude$(obj)include/autoconf.mk.dep
- sinclude$(obj)include/autoconf.mk
- ###################################################################################
- #包含auoconf.mk和autoconf.mk.dep文件
- ###################################################################################
- ifndefCONFIG_SANDBOX
- SUBDIRS+=$(SUBDIR_EXAMPLES)
- endif
- ###################################
- #追加SUBDIRS为"toolsexamples/standaloneexamples/api"
- ###################################
- #loadARCH,BOARD,andCPUconfiguration
- include$(obj)include/config.mk
- exportARCHCPUBOARDVENDORSOC
- #######################################
- #包含include/config.mk文件,这个文件是在makexxx_config过程中产生的
- #######################################
- #setdefaulttonothingfornativebuilds
- ifeq($(HOSTARCH),$(ARCH))
- CROSS_COMPILE?=
- endif
- #######################################
- #看看注释就知道了,但是很显示我们的HOSTARCH是x86的,目标时arm的
- ########################################
- #loadotherconfiguration
- include$(TOPDIR)/config.mk
- #######################################
- #包含uboot顶层目录的config.mk文件
- #######################################
- #IfboardcodeexplicitlyspecifiedLDSCRIPTorCONFIG_SYS_LDSCRIPT,use
- #that(orfailifabsent).Otherwise,searchforalinkerscriptina
- #standardlocation.
- LDSCRIPT_MAKEFILE_DIR=$(dir$(LDSCRIPT))
- ##############################################################################
- #用等号赋值的变量是递归方式扩展的变量。变量定义时,变量值中对其他变量的引用不会被替换展开;
- #而是变量在引用它的地方替换展开的同时,它所引用的其它变量才会被一同替换展开。
- #其优点是:
- #这种类型变量在定义时,可以引用其它的之前没有定义的变量(可能在后续部分定义,或者是通过make的命令行选项传递的变量)。
- #LDSCRIPT变量就是后面才定义的
- ##############################################################################
- ifndefLDSCRIPT
- #LDSCRIPT:=$(TOPDIR)/board/$(BOARDDIR)/u-boot.lds.debug
- ifdefCONFIG_SYS_LDSCRIPT
- #needtostripoffdoublequotes
- LDSCRIPT:=$(subst",,$(CONFIG_SYS_LDSCRIPT))
- endif
- endif
- #######################################################################################
- #如果定义了CONFIG_SYS_LDSCRIPT,将CONFIG_SYS_LDSCRIPT代表的字符串去掉双引号后赋值给LDSCRIPT变量
- #这里我们并没有定义CONFIG_SYS_LDSCRIPT
- #######################################################################################
- #Ifthereisnospecifiedlinkscript,welookinanumberofplacesforit
- ifndefLDSCRIPT
- ifeq($(CONFIG_NAND_U_BOOT),y)
- LDSCRIPT:=$(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds
- ifeq($(wildcard$(LDSCRIPT)),)
- LDSCRIPT:=$(TOPDIR)/$(CPUDIR)/u-boot-nand.lds
- endif
- endif
- ifeq($(wildcard$(LDSCRIPT)),)
- LDSCRIPT:=$(TOPDIR)/board/$(BOARDDIR)/u-boot.lds
- endif
- ifeq($(wildcard$(LDSCRIPT)),)
- LDSCRIPT:=$(TOPDIR)/$(CPUDIR)/u-boot.lds
- endif
- ifeq($(wildcard$(LDSCRIPT)),)
- LDSCRIPT:=$(TOPDIR)/arch/$(ARCH)/cpu/u-boot.lds
- #WedontexpectaMakefilehere
- LDSCRIPT_MAKEFILE_DIR=
- endif
- ifeq($(wildcard$(LDSCRIPT)),)
- $(errorcouldnotfindlinkerscript)
- endif
- endif
- ##########################################################################################
- #注释写的很明确,如果没有用CONFIG_SYS_LDSCRIPT指定LDSCRIPT,那么就在几个地方搜
- #第一个地方:如果CONFIG_NAND_U_BOOT是y,就用u-boot-nand.lds但是这里没有这个定义
- #第一个地方没找到,就找第二个地方:u-boot-2012.07/board/samsung/smdk2410这个目录没有u-boot.lds文件
- #第
ARM汇编u-bootmakefilemkconfi 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)