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.86/x86/ \
-e s/sun4u/sparc64/ \