uboot Makefile 分析
配置过程
3329 hi3531a_config: unconfig
3330 @$(MKCONFIG) $(@:_config=) arm hi3531a hi3531a NULL hi3531a
//hi3531a_config依赖 unconfig
553 unconfig:
554 @rm -f $(obj)include/config.h $(obj)include/config.mk \
555 $(obj)board/*/config.tmp $(obj)board/*/*/config.tmp \
556 $(obj)include/autoconf.mk $(obj)include/autoconf.mk.dep
执行完 unconfig 之后
执行源码顶层目录下的 mkconfig ,参数为 hi3531a arm hi3531a hi3531a NULL hi3531a
mkconfig是一个脚本文件
会做以下几件事情
链接一个arch/arm/include/asm/arch-hi3531a到在arch/arm/include/asm/下的arch
链接一个arch/arm/include/asm/proc-armv 到在arch/arm/include/asm/下的proc
链接arch/arm/include/asm 到include/asm
在include目录下创建一个文件config.mk
在include目录下创建一个文件config.h
编译过程
1//首先找到第一个目标
344 # Always append ALL so that arch config.mk's can add custom ones
345 ALL += $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(U_BOOT_NAND) $(U_BOOT_ONENAND)
346
347 all: $(ALL)
2//首先会include include/config.mk
153 # load ARCH, BOARD, and CPU configuration
154 include $(obj)include/config.mk
155 export ARCH CPU BOARD VENDOR SOC
3//然后根据 include/config.h 生成 CONFIG文件(autoconf.mk)
//第一个是生成include/autoconf.mk的依赖文件
//第二个是根据include/config.h的文件内容,利用tools/scripts/define2mk.sed脚本将所有的CONFIG提取到autoconf.mk文件中
508 #
509 # Auto-generate the autoconf.mk file (which is included by all makefiles)
510 #
511 # This target actually generates 2 files; autoconf.mk and autoconf.mk.dep.
512 # the dep file is only include in this top level makefile to determine when
513 # to regenerate the autoconf.mk file.
514 $(obj)include/autoconf.mk.dep: $(obj)include/config.h include/common.h
515 @$(XECHO) Generating $@ ; \
516 set -e ; \
517 : Generate the dependancies ; \
518 $(CC) -x c -DDO_DEPS_ONLY -M $(HOSTCFLAGS) $(CPPFLAGS) \
519 -MQ $(obj)include/autoconf.mk include/common.h > $@
520
521 $(obj)include/autoconf.mk: $(obj)include/config.h
522 @$(XECHO) Generating $@ ; \
523 set -e ; \
524 : Extract the config macros ; \
525 $(CPP) $(CFLAGS) -DDO_DEPS_ONLY -dM include/common.h | \
526 sed -n -f tools/scripts/define2mk.sed > $@.tmp && \
527 mv $@.tmp $@
4/include include/autoconf.mk
5/切到相应目录下make,并打包成.a文件
6/根据连接文件u-boot.lds链接.a文件
uboot Makefile
版本:u-boot-2010.06