1
1.1
MAKEFLAGS += -rR --include-dir=$(CURDIR)
MAKEFLAGS和CURDIR为makefile中的默认变量
使用make -.p可以查看makefile预先定义过的东西
1.2
ifeq ("$(origin V)", "command line")
KBUILD_VERBOSE = $(V)
endif
ifndef KBUILD_VERBOSE
KBUILD_VERBOSE = 0
endif
ifeq ($(KBUILD_VERBOSE), 1)
quiet=
Q=
else
quiet=quiet_
Q=@
endif
这段代码实现了在make的时候使用参数V=1或者V=0实现长短命令log输出切换
原理是通过命令行传进来的V参数构造KBUILD_VERBOSE quiet Q三个变量
在写命令的时候加上$(Q)或者$(quiet)前缀,使得命令文本变成短命令打印的版本
V=0:$(Q)make------->@make @(quiet)sym------->quiet_sym
V=1:$(Q)make------->make @(quiet)sym------->sym
uboot编译时可加上-s变成静默编译,原理是凑出silent_前缀
export quiet Q KBUILD_VERBOSE
之后通过export把这三个变量传给下层makefile
1.3
ifeq ($(KBUILD_SRC),)
# building in the source tree
srctree := .
else
ifeq ($(KBUILD_SRC)/,$(dir $(CURDIR)))
# building in a subdirectory of the source tree
srctree := ..
else
srctree := $(KBUILD_SRC)
endif
endif
objtree := .
src := $(srctree)
obj := $(objtree)
VPATH := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD))
export srctree objtree VPATH
生成源代码路径,和生成文件路径以及VPATH
1.4
HOSTARCH := $(shell uname -m | \
sed -e s/i.8

本文详细探讨了U-Boot的顶层Makefile,包括MAKEFLAGS和CURDIR变量、命令输出控制、编译配置、主机检测、GCC命令生成、交叉编译设置以及.config文件的生成过程。通过对.config的解析,确定了目标平台的ARCH、CPU和BOARD等关键信息,并在后续编译过程中起作用。
最低0.47元/天 解锁文章
609

被折叠的 条评论
为什么被折叠?



