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

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

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

        1. atthe-traditional-cppflag
        2. #DOESNOThavethesamesemanticsasGNUCsflag,allitdoes
        3. #isinvoketheGNUpreprocessorinstockANSI/ISOCfashion.
        4. #
        5. #Appleslinkerissimilar,thankstothenew2stagelinking
        6. #multiplesymboldefinitionsaretreatedaserrors,hencethe
        7. #-multiply_definedsuppressoptiontoturnoffthiserror.
        8. #
        9. ifeq($(HOSTOS),darwin)
        10. #getmajorandminorproductversion(e.g.10and6forSnowLeopard)
        11. DARWIN_MAJOR_VERSION=$(shellsw_vers-productVersion|cut-f1-d.)
        12. DARWIN_MINOR_VERSION=$(shellsw_vers-productVersion|cut-f2-d.)
        13. os_x_before=$(shellif[$(DARWIN_MAJOR_VERSION)-le$(1)-a
        14. $(DARWIN_MINOR_VERSION)-le$(2)];thenecho"$(3)";elseecho"$(4)";fi;)
        15. #SnowLeopardsbuildenvironmenthasnolongerrestrictionsasdescribedabove
        16. HOSTCC=$(callos_x_before,10,5,"cc","gcc")
        17. HOSTCFLAGS+=$(callos_x_before,10,4,"-traditional-cpp")
        18. HOSTLDFLAGS+=$(callos_x_before,10,5,"-multiply_definedsuppress")
        19. else
        20. HOSTCC=gcc
        21. endif
        22. ifeq($(HOSTOS),cygwin)
        23. HOSTCFLAGS+=-ansi
        24. endif
        25. #Webuildsomefileswithextrapedanticflagstotrytominimizethings
        26. #thatwontbuildonsomeweirdhostcompiler--thoughtherearelotsof
        27. #exceptionsforfilesthatarentcomplaint.
        28. HOSTCFLAGS_NOPED=$(filter-out-pedantic,$(HOSTCFLAGS))
        29. HOSTCFLAGS+=-pedantic
        30. ############################################################
        31. #HOSTCFLAGS_NOPED是利用filter-out函数从HOSTCFLAGS中过滤掉-pedantic选项
        32. #而HOSTCFLAGS追加上-pedantic选项
        33. ############################################################
        34. #########################################################################
        35. #
        36. #Optionchecker,gccversion(courtesylinuxkernel)toensure
        37. #onlysupportedcompileroptionsareused
        38. #
        39. CC_OPTIONS_CACHE_FILE:=$(OBJTREE)/include/generated/cc_options.mk
        40. CC_TEST_OFILE:=$(OBJTREE)/include/generated/cc_test_file.o
        41. -include$(CC_OPTIONS_CACHE_FILE)
        42. #############################################################################
        43. #定义编译选项
        44. #在cc_options.mk中有如下选项:
        45. #CC_OPTIONS+=-marm
        46. #CC_OPTIONS+=-mno-thumb-interwork
        47. #CC_OPTIONS+=-mapcs-32
        48. #CC_OPTIONS+=-malignment-traps
        49. #CC_OPTIONS+=-Wno-format-nonliteral
        50. #CC_OPTIONS+=-Wno-format-security
        51. #CC_OPTIONS+=-mabi=apcs-gnu
        52. #CC_OPTIONS+=-mabi=aapcs-linux
        53. #############################################################################
        54. cc-option-sys=$(shellmkdir-p$(dir$(CC_TEST_OFILE));
        55. if$(CC)$(CFLAGS)$(1)-S-xc/dev/null-o$(CC_TEST_OFILE)
        56. >/dev/null2>&1;then
        57. echoCC_OPTIONS+=$(strip$1)>>$(CC_OPTIONS_CACHE_FILE);
        58. echo"$(1)";fi)
        59. ifeq($(CONFIG_CC_OPT_CACHE_DISABLE),y)
        60. cc-option=$(strip$(if$(callcc-option-sys,$1),$1,$2))
        61. else
        62. cc-option=$(strip$(if$(findstring$1,$(CC_OPTIONS)),$1,
        63. $(if$(callcc-option-sys,$1),$1,$2)))
        64. endif
        65. ###########################################################################################
        66. #定义两个函数,cc-option-sys被cc-option调用
        67. #cc-option被后面的函数调用
        68. ############################################################################################
        69. #cc-version
        70. #Usagegcc-ver:=$(callcc-version)
        71. cc-version=$(shell$(SHELL)$(SRCTREE)/tools/gcc-version.sh$(CC))
        72. ##########################################################################################
        73. #使用tools/gcc-version.sh脚本来获取编译器的版本
        74. #在顶层makefile中,有调用cc-version函数
        75. ##########################################################################################
        76. #
        77. #Includethemakevariables(CC,etc...)
        78. #
        79. AS=$(CROSS_COMPILE)as
        80. LD=$(CROSS_COMPILE)ld
        81. CC=$(CROSS_COMPILE)gcc
        82. CPP=$(CC)-E
        83. AR=$(CROSS_COMPILE)ar
        84. NM=$(CROSS_COMPILE)nm
        85. LDR=$(CROSS_COMPILE)ldr
        86. STRIP=$(CROSS_COMPILE)strip
        87. OBJCOPY=$(CROSS_COMPILE)objcopy
        88. OBJDUMP=$(CROSS_COMPILE)objdump
        89. RANLIB=$(CROSS_COMPILE)RANLIB
        90. DTC=dtc
        91. #########################################################################
        92. #定义汇编器,连接器,编译器,打包工具,反汇编工具,值的注意的RANLIB的作用是在静态库有添加新的.o后,负责更新索引.
        93. #####################

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

    网站地图

    Top