u-boot-Makefile注解

上传人:206****923 文档编号:88627386 上传时间:2019-05-05 格式:DOC 页数:9 大小:86.50KB
返回 下载 相关 举报
u-boot-Makefile注解_第1页
第1页 / 共9页
u-boot-Makefile注解_第2页
第2页 / 共9页
u-boot-Makefile注解_第3页
第3页 / 共9页
u-boot-Makefile注解_第4页
第4页 / 共9页
u-boot-Makefile注解_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《u-boot-Makefile注解》由会员分享,可在线阅读,更多相关《u-boot-Makefile注解(9页珍藏版)》请在金锄头文库上搜索。

1、VERSION = 1PATCHLEVEL = 1SUBLEVEL = 6EXTRAVERSION =U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)以上定义了版本的变量,将其组成一个版本号,放入U_BOOT_VERSION变量里HOSTARCH := $(shell uname -m | #执行$(shell后面的shell命令uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/ -e s/po

2、werpc/ppc/ -e s/macppc/ppc/)#对uname -m输出的结果进行过滤通过sed命令将当前主机体系结构选出来,这儿sed -e 后执行替换命令将i.86,sun4u,arm.*,sa110,powerpc,macppc替换为i386,sparc64,arm,ppc,ppc,将替换完的结果放入变量HOSTARCHHOSTOS := $(shell uname -s | tr :upper: :lower: | sed -e s/(cygwin).*/cygwin/)#意义同上,选出当前主机使用的操作系统,tr :upper: :lower:命令将缓冲区内所有字符都变小写,

3、将结果放入HOSTOS 【tr 字符1 字符2】export HOSTARCH HOSTOS #导出变量HOSTARCH HOSTOSVENDOR= #变量VENDOR为空# U-boot 生成一个目标文件来分开外面的文件夹,支持两种方式:# 1)将 0= 加到make命令行如:#make 0=/tmp/build all# 2) 通过设置全局环境变量BUILD_DIR如:#export BUILD_DIR=/tmp/build #make # 第二种方式也可以用MAKEFILE脚本#export BUILD_DIR=/tmp/build #./MAKEALL# 通过第一种方式会覆盖环境变量

4、BUILD_DIR# 如果没有显式指定使用哪种方式,编译脚本会自动进行本地编译,目标文件被存放在当前# 文件夹里# 使用第一种方式获得BUILD_DIRifdef Oifeq ($(origin O), command line)BUILD_DIR := $(O)endifendif# 使用第二种方式获得BUILD_DIRifneq ($(BUILD_DIR),)saved-output := $(BUILD_DIR) # 将目标文件存放目录BUILD_DIR存入saved-output变量# 尝试创建输出目录,如果不存在目标目录就创建它$(shell -d $BUILD_DIR | mkdi

5、r -p $BUILD_DIR)# 验证目录是否创建成功BUILD_DIR := $(shell cd $(BUILD_DIR) & /bin/pwd)# 如果创建失败,打印创建失败信息$(if $(BUILD_DIR),$(error output directory $(saved-output) does not exist)endif # 结束ifneq# 如果BUILD_DIR变量不为空,OBJTREE = BUILD_DIR,否则OBJTREE = CURDIROBJTREE := $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR)SRCTREE :=

6、 $(CURDIR)TOPDIR := $(SRCTREE)LNDIR := $(OBJTREE)# 导出环境变量TOPDIR SRCTREE OBJTREEexport TOPDIR SRCTREE OBJTREE# MKCONFIG = $(CURDIR)/mkconfigMKCONFIG := $(SRCTREE)/mkconfig# 导出环境变量MKCONFIGexport MKCONFIG# 如果OBJTREE != CURDIRifneq ($(OBJTREE),$(SRCTREE)REMOTE_BUILD := 1# 导出环境变量REMOTE_BUILD = 1export RE

7、MOTE_BUILDendif# $(obj) 和 (src)在config.mk里被定义,但是在Makefile没有被定义,由于在Makefile要用# 到,因此要创建之# 如果OBJTREE != CURDIRifneq ($(OBJTREE),$(SRCTREE)obj := $(OBJTREE)/src := $(SRCTREE)/# OBJTREE = CURDIRelseobj :=src :=endif# 导出环境变量obj srcexport obj srcifeq ($(OBJTREE)/include/config.mk,$(wildcard $(OBJTREE)/incl

8、ude/config.mk)# config.mk将包含进来include $(OBJTREE)/include/config.mk# 导出config.mk 文件里的ARCH CPU BOARD VENDOR SOCexport ARCH CPU BOARD VENDOR SOC# 设置交叉编译器的体系结构# CROSS_COMPILE没有被定义ifndef CROSS_COMPILE ifeq ($(HOSTARCH),ppc) # 主机体系结构为ppc CROSS_COMPILE = else# 其它体系结构 ifeq ($(ARCH),ppc)# 目标体系结构为ppc CROSS_CO

9、MPILE = powerpc-linu endif ifeq ($(ARCH),arm) # 目标体系结构为arm CROSS_COMPILE = arm-linux- endif ifeq ($(ARCH),i386) # 目标体系结构为i386 ifeq ($(HOSTARCH),i386) # 主机体系结构为i386 CROSS_COMPILE = else# 主机体系结构为非i386体系结构 CROSS_COMPILE = i386-linux- endif endif ifeq ($(ARCH),mips) # 目标体系结构为mips CROSS_COMPILE = mips_4K

10、C- endif ifeq ($(ARCH),nios) # 目标体系结构为nios CROSS_COMPILE = nios-elf- endif ifeq ($(ARCH),nios2) # 目标体系结构为nios2 CROSS_COMPILE = nios2-elf- endif ifeq ($(ARCH),m68k) # 目标体系结构为m68k CROSS_COMPILE = m68k-elf- endif ifeq ($(ARCH),microblaze) # 目标体系结构为microblaze CROSS_COMPILE = mb- endif ifeq ($(ARCH),blac

11、kfin) # 目标体系结构为blackfin CROSS_COMPILE = bfin-elf-Endififeq ($(ARCH),avr32) # 目标体系结构为avr32 CROSS_COMPILE = avr32-endif endifendif# 导出交叉编译器的体系结构export CROSS_COMPILE# config.mk将包含进来include $(TOPDIR)/config.mk# 下面将根据导出的交叉编译器的体系结构,设置目标文件# 编译顺序很重要,start.o要放在第一个OBJS = cpu/$(CPU)/start.oifeq ($(CPU),i386)OB

12、JS += cpu/$(CPU)/start16.oOBJS += cpu/$(CPU)/reset.oendififeq ($(CPU),ppc4xx)OBJS += cpu/$(CPU)/resetvec.oendififeq ($(CPU),mpc83xx)OBJS += cpu/$(CPU)/resetvec.oendififeq ($(CPU),mpc85xx)OBJS += cpu/$(CPU)/resetvec.oendififeq ($(CPU),mpc86xx)OBJS += cpu/$(CPU)/resetvec.oendififeq ($(CPU),bf533)OBJS

13、+= cpu/$(CPU)/start1.o cpu/$(CPU)/interrupt.o cpu/$(CPU)/cache.oOBJS += cpu/$(CPU)/cplbhdlr.o cpu/$(CPU)/cplbmgr.o cpu/$(CPU)/flush.oendifOBJS := $(addprefix $(obj),$(OBJS)LIBS = lib_generic/libgeneric.aLIBS += board/$(BOARDDIR)/lib$(BOARD).aLIBS += cpu/$(CPU)/lib$(CPU).aifdef SOCLIBS += cpu/$(CPU)/$(SOC)/lib$(SOC).aendifLIBS += lib_$(ARCH)/lib$(ARCH).aLIBS += fs/cramfs/libcramfs.a fs/fat/libfat.a fs/fdos/libfdos.a fs/jffs2/libjffs2.a fs/reiserfs/libreiserfs.a fs/ext2/libext2fs.aLIBS += net/libnet.aLIBS += rtc/librtc.aLIBS += drivers/libdrivers.aLIBS += drivers/nand/libnand.a

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号