#用来判断是本地编译还是单独文件夹编译
ifneq (
(
O
B
J
T
R
E
E
)
,
(OBJTREE),
(OBJTREE),(SRCTREE))
ifeq (
(
C
U
R
D
I
R
)
,
(CURDIR),
(CURDIR),(SRCTREE))
dir :=
else
dir := $(subst
(
S
R
C
T
R
E
E
)
/
,
,
(SRCTREE)/,,
(SRCTREE)/,,(CURDIR))
endif
obj := $(if
(
d
i
r
)
,
(dir),
(dir),(OBJTREE)/
(
d
i
r
)
/
,
(dir)/,
(dir)/,(OBJTREE)/)
src := $(if
(
d
i
r
)
,
(dir),
(dir),(SRCTREE)/
(
d
i
r
)
/
,
(dir)/,
(dir)/,(SRCTREE)/)
$(shell mkdir -p $(obj))
else
obj :=
src :=
endif
#设置交叉工具编译链(CROSS_COMPILE是我门前面所设置的前缀)
AS = $(CROSS_COMPILE)as
LD = $(CROSS_COMPILE)ld
CC = $(CROSS_COMPILE)gcc
CPP = $(CC) -E
AR = $(CROSS_COMPILE)ar
NM = $(CROSS_COMPILE)nm
LDR = $(CROSS_COMPILE)ldr
STRIP = $(CROSS_COMPILE)strip
OBJCOPY = $(CROSS_COMPILE)objcopy
OBJDUMP = $(CROSS_COMPILE)objdump
RANLIB = $(CROSS_COMPILE)RANLIB
#在输出编译目录的include下生成autoconf.mk文件(作用:用来指导uboot编译的过程,生成这个文件的材料在include/configs/x210_sd.h里,x210_sd.h里的宏定义就是uboot移植的配置)
sinclude $(OBJTREE)/include/autoconf.mk
#在根目录下生成各自的config来包含各自的属性信息
ifdef ARCH
sinclude
(
T
O
P
D
I
R
)
/
(TOPDIR)/
(TOPDIR)/(ARCH)_config.mk # include architecture dependend rules
endif
ifdef CPU
sinclude
(
T
O
P
D
I
R
)
/
c
p
u
/
(TOPDIR)/cpu/
(TOPDIR)/cpu/(CPU)/config.mk # include CPU specific rules
endif
ifdef SOC
sinclude
(
T
O
P
D
I
R
)
/
c
p
u
/
(TOPDIR)/cpu/
(TOPDIR)/cpu/(CPU)/$(SOC)/config.mk # include SoC specific rules
endif
ifdef VENDOR
BOARDDIR =
(
V
E
N
D
O
R
)
/
(VENDOR)/
(VENDOR)/(BOARD)
else
BOARDDIR = $(BOARD)
endif
ifdef BOARD
sinclude
(
T
O
P
D
I
R
)
/
b
o
a
r
d
/
(TOPDIR)/board/
(TOPDIR)/board/(BOARDDIR)/config.mk # include board specific rules
endif
#判断是否定义CONFIG_NAND_U_BOOT=y,如果定义则执行LDSCRIPT :=
(
T
O
P
D
I
R
)
/
b
o
a
r
d
/
(TOPDIR)/board/
(TOPDIR)/board/(BOARDDIR)/u-boot-nand.lds,如果没有定义则执行LDSCRIPT :=
(
T
O
P
D
I
R
)
/
b
o
a
r
d
/
(TOPDIR)/board/
(TOPDIR)/board/(BOARDDIR)/u-boot.lds(u-boot-nand.lds和u-boot.lds都是uboot的编译链接脚本,用来配置uboot是nand编译还是inand编译)
ifeq ($(CONFIG_NAND_U_BOOT),y)
LDSCRIPT :=
(
T
O
P
D
I
R
)
/
b
o
a
r
d
/
(TOPDIR)/board/
(TOPDIR)/board/(BOARDDIR)/u-boot-nand.lds
else
LDSCRIPT :=
(
T
O
P
D
I
R
)
/
b
o
a
r
d
/
(TOPDIR)/board/
(TOPDIR)/board/(BOARDDIR)/u-boot.lds
endif
#判断TEXT_BASE是否不为空,如果是不为空则添加TEXT_BASE(TEXT_BASE是uboot的链接地址)
ifneq (
(
T
E
X
T
B
A
S
E
)
,
)
C
P
P
F
L
A
G
S
+
=
−
D
T
E
X
T
B
A
S
E
=
(TEXT_BASE),) CPPFLAGS += -DTEXT_BASE=
(TEXTBASE),)CPPFLAGS+=−DTEXTBASE=(TEXT_BASE)
endif
#如果TEXT_BASE不为空则将uboot链接到TEXT_BASE地址处
ifneq ($(TEXT_BASE),)
LDFLAGS += -Ttext $(TEXT_BASE)
endif