微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > GNU ARM汇编--(十七)u-boot的makefile和mkconfig解读

GNU ARM汇编--(十七)u-boot的makefile和mkconfig解读

时间:11-26 来源:互联网 点击:

        1. ###
        2. #定义SUBDIR_TOOLSSUBDIR_EXAMPLES和SUBDIRS
        3. ###############################################
        4. .PHONY:$(SUBDIRS)$(VERSION_FILE)$(TIMESTAMP_FILE)
        5. ########################
        6. #定义几个伪目标
        7. ########################
        8. ifeq($(obj)include/config.mk,$(wildcard$(obj)include/config.mk))
        9. #Includeautoconf.mkbeforeconfig.mksothattheconfigoptionsareavailable
        10. #toalltoplevelbuildfiles.Weneedthedummyall:targettopreventthe
        11. #dependencytargetinautoconf.mk.depfrombeingthedefault.
        12. all:
        13. sinclude$(obj)include/autoconf.mk.dep
        14. sinclude$(obj)include/autoconf.mk
        15. ###################################################################################
        16. #包含auoconf.mk和autoconf.mk.dep文件
        17. ###################################################################################
        18. ifndefCONFIG_SANDBOX
        19. SUBDIRS+=$(SUBDIR_EXAMPLES)
        20. endif
        21. ###################################
        22. #追加SUBDIRS为"toolsexamples/standaloneexamples/api"
        23. ###################################
        24. #loadARCH,BOARD,andCPUconfiguration
        25. include$(obj)include/config.mk
        26. exportARCHCPUBOARDVENDORSOC
        27. #######################################
        28. #包含include/config.mk文件,这个文件是在makexxx_config过程中产生的
        29. #######################################
        30. #setdefaulttonothingfornativebuilds
        31. ifeq($(HOSTARCH),$(ARCH))
        32. CROSS_COMPILE?=
        33. endif
        34. #######################################
        35. #看看注释就知道了,但是很显示我们的HOSTARCH是x86的,目标时arm的
        36. ########################################
        37. #loadotherconfiguration
        38. include$(TOPDIR)/config.mk
        39. #######################################
        40. #包含uboot顶层目录的config.mk文件
        41. #######################################
        42. #IfboardcodeexplicitlyspecifiedLDSCRIPTorCONFIG_SYS_LDSCRIPT,use
        43. #that(orfailifabsent).Otherwise,searchforalinkerscriptina
        44. #standardlocation.
        45. LDSCRIPT_MAKEFILE_DIR=$(dir$(LDSCRIPT))
        46. ##############################################################################
        47. #用等号赋值的变量是递归方式扩展的变量。变量定义时,变量值中对其他变量的引用不会被替换展开;
        48. #而是变量在引用它的地方替换展开的同时,它所引用的其它变量才会被一同替换展开。
        49. #其优点是:
        50. #这种类型变量在定义时,可以引用其它的之前没有定义的变量(可能在后续部分定义,或者是通过make的命令行选项传递的变量)。
        51. #LDSCRIPT变量就是后面才定义的
        52. ##############################################################################
        53. ifndefLDSCRIPT
        54. #LDSCRIPT:=$(TOPDIR)/board/$(BOARDDIR)/u-boot.lds.debug
        55. ifdefCONFIG_SYS_LDSCRIPT
        56. #needtostripoffdoublequotes
        57. LDSCRIPT:=$(subst",,$(CONFIG_SYS_LDSCRIPT))
        58. endif
        59. endif
        60. #######################################################################################
        61. #如果定义了CONFIG_SYS_LDSCRIPT,将CONFIG_SYS_LDSCRIPT代表的字符串去掉双引号后赋值给LDSCRIPT变量
        62. #这里我们并没有定义CONFIG_SYS_LDSCRIPT
        63. #######################################################################################
        64. #Ifthereisnospecifiedlinkscript,welookinanumberofplacesforit
        65. ifndefLDSCRIPT
        66. ifeq($(CONFIG_NAND_U_BOOT),y)
        67. LDSCRIPT:=$(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds
        68. ifeq($(wildcard$(LDSCRIPT)),)
        69. LDSCRIPT:=$(TOPDIR)/$(CPUDIR)/u-boot-nand.lds
        70. endif
        71. endif
        72. ifeq($(wildcard$(LDSCRIPT)),)
        73. LDSCRIPT:=$(TOPDIR)/board/$(BOARDDIR)/u-boot.lds
        74. endif
        75. ifeq($(wildcard$(LDSCRIPT)),)
        76. LDSCRIPT:=$(TOPDIR)/$(CPUDIR)/u-boot.lds
        77. endif
        78. ifeq($(wildcard$(LDSCRIPT)),)
        79. LDSCRIPT:=$(TOPDIR)/arch/$(ARCH)/cpu/u-boot.lds
        80. #WedontexpectaMakefilehere
        81. LDSCRIPT_MAKEFILE_DIR=
        82. endif
        83. ifeq($(wildcard$(LDSCRIPT)),)
        84. $(errorcouldnotfindlinkerscript)
        85. endif
        86. endif
        87. ##########################################################################################
        88. #注释写的很明确,如果没有用CONFIG_SYS_LDSCRIPT指定LDSCRIPT,那么就在几个地方搜
        89. #第一个地方:如果CONFIG_NAND_U_BOOT是y,就用u-boot-nand.lds但是这里没有这个定义
        90. #第一个地方没找到,就找第二个地方:u-boot-2012.07/board/samsung/smdk2410这个目录没有u-boot.lds文件
        91. #第

  • Copyright © 2017-2020 微波EDA网 版权所有

    网站地图

    Top