u-Boot 高层Makefile解析(四)
u-Boot 顶层Makefile解析(四)
u-Boot -Makefile(四) 声明 : 以下解析大部分来自网络大神之手 所以可以放心阅读 参考地址不可考 有事请留言 Good luck ######################################################################### # U-Boot objects....order is important (i.e. start must be first) # 目标文件的顺序很重要 start要排第一 OBJS = cpu/$(CPU)/start.o #start.o必须放在目标文件的第一位 因为uboot执行的第一段代码就是start.S # # 某些架构的CPU需要另外的一些目标文件 ifeq ($(CPU),i386) OBJS += cpu/$(CPU)/start16.o OBJS += cpu/$(CPU)/reset.o endif ifeq ($(CPU),ppc4xx) OBJS += cpu/$(CPU)/resetvec.o endif ifeq ($(CPU),mpc83xx) OBJS += cpu/$(CPU)/resetvec.o endif ifeq ($(CPU),mpc85xx) OBJS += cpu/$(CPU)/resetvec.o endif ifeq ($(CPU),mpc86xx) OBJS += cpu/$(CPU)/resetvec.o endif ifeq ($(CPU),bf533) OBJS += cpu/$(CPU)/start1.o cpu/$(CPU)/interrupt.o cpu/$(CPU)/cache.o OBJS += cpu/$(CPU)/cplbhdlr.o cpu/$(CPU)/cplbmgr.o cpu/$(CPU)/flush.o endif OBJS := $(addprefix $(obj),$(OBJS)) #将$(obj)做为前缀添加在$(OBJS)中每个文件的前面 # $(addprefix prefix,names)参数prefix是前缀 将其添加在names(names代表文件名 之间用空格隔开)的前面 # 最后生成的每个文件也用空格隔开来 # 编译U-BOOT所需库文件 LIBS = lib_generic/libgeneric.a LIBS += board/$(BOARDDIR)/lib$(BOARD).a LIBS += cpu/$(CPU)/lib$(CPU).a ifdef SOC LIBS += cpu/$(CPU)/$(SOC)/lib$(SOC).a endif LIBS += lib_$(ARCH)/lib$(ARCH).a LIBS += fs/cramfs/libcramfs.a fs/fat/libfat.a fs/fdos/libfdos.a fs/jffs2/libjffs2.a \ fs/reiserfs/libreiserfs.a fs/ext2/libext2fs.a LIBS += net/libnet.a LIBS += disk/libdisk.a LIBS += rtc/librtc.a LIBS += dtt/libdtt.a LIBS += drivers/libdrivers.a LIBS += drivers/nand/libnand.a LIBS += drivers/nand_legacy/libnand_legacy.a LIBS += drivers/sk98lin/libsk98lin.a LIBS += post/libpost.a post/cpu/libcpu.a LIBS += common/libcommon.a LIBS += $(BOARDLIBS) LIBS := $(addprefix $(obj),$(LIBS)) .PHONY : $(LIBS) # .PHONY声明伪目标 # Add GCC lib #添加GCC库 PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc # The "tools" are needed early, so put this first # Don't include stuff already done in $(LIBS) SUBDIRS = tools \ #伪目标SUBDIRS 用于执行tools、examples、post、post\cpu子目录下的make文件 examples \ post \ post/cpu .PHONY : $(SUBDIRS) # .PHONY声明伪目标 ifeq ($(CONFIG_NAND_U_BOOT),y) NAND_SPL = nand_spl U_BOOT_NAND = $(obj)u-boot-nand.bin endif __OBJS := $(subst $(obj),,$(OBJS)) #把$(obj)从$(OBJS)、$(LIBS)中删除 __LIBS := $(subst $(obj),,$(LIBS)) #$(obj)是$(OBJTREE)/ 或者为 空 #$(OBJTREE)是BUILD_DIR(自定义目录或者是源码目录) # $(subst from,to,text) 在文本"text"中用"to"替换所有的"from"