天天看点

uboot主Makefile分析2load ARCH, BOARD, and CPU configuration

#判断编译输出目录和源文件目录是否相同,如果不相同执行obj := $(OBJTREE)/,src := $(SRCTREE)/。如果相同则obj :=,src := 。(用来判断是否为单独文件夹编译)

ifneq ( ( O B J T R E E ) , (OBJTREE), (OBJTREE),(SRCTREE))

obj := $(OBJTREE)/

src := $(SRCTREE)/

else

obj :=

src :=

endif

export obj src

ifeq ($(ARCH),powerpc)

ARCH = ppc

endif

ifeq ( ( o b j ) i n c l u d e / c o n f i g . m k , (obj)include/config.mk, (obj)include/config.mk,(wildcard $(obj)include/config.mk))

load ARCH, BOARD, and CPU configuration

#在源文件目录下的include下生成一个config.mk文件,(这个文件用来配置uboot)

include $(obj)include/config.mk

#导出环境变量

export ARCH CPU BOARD VENDOR SOC

ifndef CROSS_COMPILE

ifeq ( ( H O S T A R C H ) , (HOSTARCH), (HOSTARCH),(ARCH))

CROSS_COMPILE =

else

ifeq ($(ARCH),ppc)

CROSS_COMPILE = ppc_8xx-

endif

#判断是否定义了CROSS_COMPILE

ifndef CROSS_COMPILE

#如果ARCH等于arm则定义arm相关的交叉编译工具链的前缀

ifeq ($(ARCH),arm)

#CROSS_COMPILE = arm-linux-

#CROSS_COMPILE = /usr/local/arm/4.4.1-eabi-cortex-a8/usr/bin/arm-linux-

#CROSS_COMPILE = /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-

#CROSS_COMPILE定义的就是交叉编译工具链的前缀

CROSS_COMPILE = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-

endif

#在最高级目录下生成config.mk文件

include $(TOPDIR)/config.mk

继续阅读