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

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

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

        1. /lib$(BOARD).o
        2. LIBBOARD:=$(addprefix$(obj),$(LIBBOARD))
        3. ###########################################
        4. #为LIBBOARD增加前缀,LIBBOARD就是board/samsung/smdk2410/libsmdk2410.o
        5. ###########################################
        6. #AddGCClib
        7. ifdefUSE_PRIVATE_LIBGCC
        8. ifeq("$(USE_PRIVATE_LIBGCC)","yes")
        9. PLATFORM_LIBGCC=$(OBJTREE)/arch/$(ARCH)/lib/libgcc.o
        10. else
        11. PLATFORM_LIBGCC=-L$(USE_PRIVATE_LIBGCC)-lgcc
        12. endif
        13. else
        14. PLATFORM_LIBGCC:=-L$(shelldirname`$(CC)$(CFLAGS)-print-libgcc-file-name`)-lgcc
        15. endif
        16. PLATFORM_LIBS+=$(PLATFORM_LIBGCC)
        17. exportPLATFORM_LIBS
        18. #SpecialflagsforCPPwhenprocessingthelinkerscript.
        19. #Passtheversiondownsowecanhandlebackwardscompatibility
        20. #onthefly.
        21. LDPPFLAGS+=
        22. -include$(TOPDIR)/include/u-boot/u-boot.lds.h
        23. -DCPUDIR=$(CPUDIR)
        24. $(shell$(LD)--version|
        25. sed-nes/GNUldversion..*/-DLD_MAJOR=1-DLD_MINOR=2/p)
        26. __OBJS:=$(subst$(obj),,$(OBJS))
        27. __LIBS:=$(subst$(obj),,$(LIBS))$(subst$(obj),,$(LIBBOARD))
        28. #########################################################################
        29. #########################################################################
        30. ifneq($(CONFIG_BOARD_SIZE_LIMIT),)
        31. BOARD_SIZE_CHECK=
        32. @actual=`wc-c$@|awk{print$$1}`;
        33. limit=$(CONFIG_BOARD_SIZE_LIMIT);
        34. iftest

          limit;then
        35. echo"$@exceedsfilesizelimit:";
        36. echo"limit:$$limitbytes";
        37. echo"actual:$$actualbytes";
        38. echo"excess:$$((actual-limit))bytes";
        39. exit1;
        40. fi
        41. else
        42. BOARD_SIZE_CHECK=
        43. endif

        这里也给出顶层目录下的config.mk文件的注释:

        [cpp]view plaincopy

        1. #
        2. #(C)Copyright2000-2006
        3. #WolfgangDenk,DENXSoftwareEngineering,wd@denx.de.
        4. #
        5. #SeefileCREDITSforlistofpeoplewhocontributedtothis
        6. #project.
        7. #
        8. #Thisprogramisfreesoftware;youcanredistributeitand/or
        9. #modifyitunderthetermsoftheGNUGeneralPublicLicenseas
        10. #publishedbytheFreeSoftwareFoundation;eitherversion2of
        11. #theLicense,or(atyouroption)anylaterversion.
        12. #
        13. #Thisprogramisdistributedinthehopethatitwillbeuseful,
        14. #butWITHOUTANYWARRANTY;withouteventheimpliedwarrantyof
        15. #MERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.Seethe
        16. #GNUGeneralPublicLicenseformoredetails.
        17. #
        18. #YoushouldhavereceivedacopyoftheGNUGeneralPublicLicense
        19. #alongwiththisprogram;ifnot,writetotheFreeSoftware
        20. #Foundation,Inc.,59TemplePlace,Suite330,Boston,
        21. #MA02111-1307USA
        22. #
        23. #########################################################################
        24. ifeq($(CURDIR),$(SRCTREE))
        25. dir:=
        26. else
        27. dir:=$(subst$(SRCTREE)/,,$(CURDIR))
        28. endif
        29. ###########################################################################
        30. #在顶层makefile中已经分析了CURDIR和SRCTREE都是当前目录,所以这里dir暂时为空
        31. ###########################################################################
        32. ifneq($(OBJTREE),$(SRCTREE))
        33. #CreateobjectfilesforSPLinaseparatedirectory
        34. ifeq($(CONFIG_SPL_BUILD),y)
        35. obj:=$(if$(dir),$(SPLTREE)/$(dir)/,$(SPLTREE)/)
        36. else
        37. obj:=$(if$(dir),$(OBJTREE)/$(dir)/,$(OBJTREE)/)
        38. endif
        39. src:=$(if$(dir),$(SRCTREE)/$(dir)/,$(SRCTREE)/)
        40. $(shellmkdir-p$(obj))
        41. else
        42. #CreateobjectfilesforSPLinaseparatedirectory
        43. ifeq($(CONFIG_SPL_BUILD),y)
        44. obj:=$(if$(dir),$(SPLTREE)/$(dir)/,$(SPLTREE)/)
        45. $(shellmkdir-p$(obj))
        46. else
        47. obj:=
        48. endif
        49. src:=
        50. endif
        51. ########################################################################################
        52. #首先OBJTREE和SRCTREE都是当前目录,所以执行else
        53. #查找CONFIG_SPL_BUILD是否定义为y,在autoconf.mk中,并没有这个定义,所以obj和src暂时也为空
        54. ########################################################################################
        55. #cleantheslate...
        56. PLATFORM_RELFLAGS=
        57. PLATFORM_CPPFLAGS=
        58. PLATFORM_LDFLAGS=
        59. #########################################################################
        60. HOSTCFLAGS=-Wall-Wstrict-prototypes-O2-fomit-frame-pointer
        61. $(HOSTCPPFLAGS)
        62. HOSTSTRIP=strip
        63. #
        64. #MacOSX/DarwinsCpreprocessorisApplespecific.It
        65. #generatesnumerouserrorsandwarnings.Wewanttobypassit
        66. #anduseGNUCscpp.Todothiswepassthe-traditional-cpp
        67. #optiontothecompiler.Noteth

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

    网站地图

    Top