`

u-boot Makefile 文件分析

 
阅读更多

Makefile文件分析

 

#

#(C)Copyright2000-2010

#WolfgangDenk,DENXSoftwareEngineering,wd@denx.de.

#

#SeefileCREDITSforlistofpeoplewhocontributedtothis

#project.

#

#Thisprogramisfreesoftware;youcanredistributeitand/or

#modifyitunderthetermsoftheGNUGeneralPublicLicenseas

#publishedbytheFreeSoftwareFoundatio;eitherversion2of

#theLicense,or(atyouroption)anylaterversion.

#

#Thisprogramisdistributedinthehopethatitwillbeuseful,

#butWITHOUTANYWARRANTY;withouteventheimpliedwarrantyof

#MERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE. Seethe

#GNUGeneralPublicLicenseformoredetails.

#

#YoushouldhavereceivedacopyoftheGNUGeneralPublicLicense

#alongwiththisprogram;ifnot,writetotheFreeSoftware

#Foundation,Inc.,59TemplePlace,Suite330,Boston,

#MA02111-1307USA

#

 

VERSION=2010#主版本号

PATCHLEVEL=09#次版本号

SUBLEVEL=#修正版本号

EXTRAVERSION=#版本号扩展

ifneq"$(SUBLEVEL)"""

#***u-boot的版本号为2010.09

U_BOOT_VERSION=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)

else

U_BOOT_VERSION=$(VERSION).$(PATCHLEVEL)$(EXTRAVERSION)

endif

TIMESTAMP_FILE=$(obj)include/timestamp_autogenerated.h

VERSION_FILE=$(obj)include/version_autogenerated.h

#***uname-m得到i686,通过管道传送给sed命令

HOSTARCH:=$(shelluname-m|\

#***sed为替换命令,i686替换为i386

sed-es/i.86/i386/\

-es/sun4u/sparc64/\

-es/arm.*/arm/\

-es/sa110/arm/\

-es/ppc64/powerpc/\

-es/ppc/powerpc/\

-es/macppc/powerpc/\

-es/sh.*/sh/)

#***查看平台的系统Linux通过tr命令转为linux,再由sed命令替换

HOSTOS:=$(shelluname-s|tr'[:upper:]''[:lower:]'|\

sed-e's/\(cygwin\).*/cygwin/')

 

#Setshelltobashifpossible,otherwisefallbacktosh

SHELL:=$(shellif[-x"$$BASH"];thenecho$$BASH;\

elseif[-x/bin/bash];thenecho/bin/bash;\

elseechosh;fi;fi)

 

#***变量交由下一层makefile使用

export HOSTARCHHOSTOSSHELL

 

#Dealwithcollidingdefinitionsfromtcshetc.

VENDOR=

 

#########################################################################

#Allowforsilentbuilds

ifeq(,$(findstrings,$(MAKEFLAGS)))

XECHO=echo

else

XECHO=:

endif

 

#########################################################################

#

#U-bootbuildsupportsproducingaobjectfilestotheseparateexternal

#directory.Twousecasesaresupported:

#u-boot支持将目标文件生成在外部文件夹中,以下两种命令可以实现

#1)AddO=tothemakecommandline

#1加入o=命令

#'makeO=/tmp/buildall'

#

#2)SetenvironementvariableBUILD_DIRtopointtothedesiredlocation

#2设置环境变量

#'exportBUILD_DIR=/tmp/build'

#'make'

#

#ThesecondapproachcanalsobeusedwithaMAKEALLscript

#'exportBUILD_DIR=/tmp/build'

#'./MAKEALL'

#

#Commandline'O='settingoverridesBUILD_DIRenvironentvariable.

#

#Whennoneoftheabovemethodsisusedthelocalbuildisperformedand

#theobjectfilesareplacedinthesourcedirectory.

#如果以上两种方式都没有定义,它将会存放在源码目录下

 

#***build_dir赋值

ifdefO

ifeq("$(originO)","commandline")

BUILD_DIR:=$(O)

endif

endif

 

#***如果build_dir不为0,将其设为输出目录

ifneq($(BUILD_DIR),)

saved-output:=$(BUILD_DIR)

 

#Attempttocreateaoutputdirectory.

#***检查build_dir是不是一个目录,如果没有就创建

$(shell[-d${BUILD_DIR}]||mkdir-p${BUILD_DIR})

 

#Verifyifitwassuccessful.

#***检查build_dir目录是否创建成功

BUILD_DIR:=$(shellcd$(BUILD_DIR)&&/bin/pwd)

$(if$(BUILD_DIR),,$(erroroutputdirectory"$(saved-output)"doesnotexist))

endif#ifneq($(BUILD_DIR),)

 

OBJTREE :=$(if$(BUILD_DIR),$(BUILD_DIR),$(CURDIR))

SRCTREE :=$(CURDIR)

#***源码所在目录

TOPDIR :=$(SRCTREE)

#***存放生成文件的目录

LNDIR :=$(OBJTREE)

#***供下一层makefile调用

export TOPDIRSRCTREEOBJTREE

 

#***定义MKCONFIG变量为mkconfig文件

MKCONFIG :=$(SRCTREE)/mkconfig

exportMKCONFIG

 

#***如果输出目录和源码目录不相等,设置REMOTE_BUILD标志位

ifneq($(OBJTREE),$(SRCTREE))

REMOTE_BUILD :=1

exportREMOTE_BUILD

endif

 

#$(obj)and(src)aredefinedinconfig.mkbuthereinmainMakefile

#wealsoneedthembeforeconfig.mkisincludedwhichisthecasefor

#sometargetslikeunconfig,clean,clobber,distclean,etc.

#***如果输出目录和源码目录不相同,对objsrc进行赋值,

#***两者会在config.mk文件中定义,如果在包含之前使用,

#***unconfig,clean,clobber,distclean

ifneq($(OBJTREE),$(SRCTREE))

obj:=$(OBJTREE)/

src:=$(SRCTREE)/

else

obj:=

src:=

endif

exportobjsrc

 

#MakesureCDPATHsettingsdon'tinterfere

unexportCDPATH

 

#########################################################################

 

#The"tools"areneededearly,soputthisfirst

#Don'tincludestuffalreadydonein$(LIBS)

SUBDIRS =tools\

examples/standalone\

examples/api

 

.PHONY:$(SUBDIRS)

 

ifeq($(obj)include/config.mk,$(wildcard$(obj)include/config.mk))

 

#Includeautoconf.mkbeforeconfig.mksothattheconfigoptionsareavailable

#toalltoplevelbuildfiles.Weneedthedummyall:targettopreventthe

#dependencytargetinautoconf.mk.depfrombeingthedefault.

all:

sinclude$(obj)include/autoconf.mk.dep

sinclude$(obj)include/autoconf.mk

 

#loadARCH,BOARD,andCPUconfiguration

#***包含include/config.mk文件

include$(obj)include/config.mk

#***以下几个变量供下一层makefile使用

export ARCHCPUBOARDVENDORSOC

 

#setdefaulttonothingfornativebuilds

#***指定交叉编译器前缀

ifeq($(HOSTARCH),$(ARCH))

CROSS_COMPILE?=

endif

CROSS_COMPILE=arm-arm1176jzfs-linux-gnueabi-

 

#loadotherconfiguration

#***导入配置文件(文件定义了交叉编译器/选项/编译规则)

include$(TOPDIR)/config.mk

 

#########################################################################

#U-Bootobjects....orderisimportant(i.e.startmustbefirst)

#***u-boot需要的目标文件和库文件

OBJS=$(CPUDIR)/start.o

ifeq($(CPU),i386)

OBJS+=$(CPUDIR)/start16.o

OBJS+=$(CPUDIR)/resetvec.o

endif

ifeq($(CPU),ppc4xx)

OBJS+=$(CPUDIR)/resetvec.o

endif

ifeq($(CPU),mpc85xx)

OBJS+=$(CPUDIR)/resetvec.o

endif

#***addprefix为增加前缀函数

OBJS:=$(addprefix$(obj),$(OBJS))

 

#***以下为库文件

LIBS=lib/libgeneric.a

LIBS+=lib/lzma/liblzma.a

LIBS+=lib/lzo/liblzo.a

LIBS+=$(shellif[-fboard/$(VENDOR)/common/Makefile];thenecho\

"board/$(VENDOR)/common/lib$(VENDOR).a";fi)

LIBS+=$(CPUDIR)/lib$(CPU).a

ifdefSOC

LIBS+=$(CPUDIR)/$(SOC)/lib$(SOC).a

endif

ifeq($(CPU),ixp)

LIBS+=arch/arm/cpu/ixp/npe/libnpe.a

endif

LIBS+=arch/$(ARCH)/lib/lib$(ARCH).a

LIBS+=fs/cramfs/libcramfs.afs/fat/libfat.afs/fdos/libfdos.afs/jffs2/libjffs2.a\

fs/reiserfs/libreiserfs.afs/ext2/libext2fs.afs/yaffs2/libyaffs2.a\

fs/ubifs/libubifs.a

LIBS+=net/libnet.a

LIBS+=disk/libdisk.a

LIBS+=drivers/bios_emulator/libatibiosemu.a

LIBS+=drivers/block/libblock.a

LIBS+=drivers/dma/libdma.a

LIBS+=drivers/fpga/libfpga.a

LIBS+=drivers/gpio/libgpio.a

LIBS+=drivers/hwmon/libhwmon.a

LIBS+=drivers/i2c/libi2c.a

LIBS+=drivers/input/libinput.a

LIBS+=drivers/misc/libmisc.a

LIBS+=drivers/mmc/libmmc.a

LIBS+=drivers/mtd/libmtd.a

LIBS+=drivers/mtd/nand/libnand.a

LIBS+=drivers/mtd/onenand/libonenand.a

LIBS+=drivers/mtd/ubi/libubi.a

LIBS+=drivers/mtd/spi/libspi_flash.a

LIBS+=drivers/net/libnet.a

LIBS+=drivers/net/phy/libphy.a

LIBS+=drivers/pci/libpci.a

LIBS+=drivers/pcmcia/libpcmcia.a

LIBS+=drivers/power/libpower.a

LIBS+=drivers/spi/libspi.a

ifeq($(CPU),mpc83xx)

LIBS+=drivers/qe/qe.a

LIBS+=arch/powerpc/cpu/mpc8xxx/lib8xxx.a

endif

ifeq($(CPU),mpc85xx)

LIBS+=drivers/qe/qe.a

LIBS+=arch/powerpc/cpu/mpc8xxx/ddr/libddr.a

LIBS+=arch/powerpc/cpu/mpc8xxx/lib8xxx.a

endif

ifeq($(CPU),mpc86xx)

LIBS+=arch/powerpc/cpu/mpc8xxx/ddr/libddr.a

LIBS+=arch/powerpc/cpu/mpc8xxx/lib8xxx.a

endif

LIBS+=drivers/rtc/librtc.a

LIBS+=drivers/serial/libserial.a

LIBS+=drivers/twserial/libtws.a

LIBS+=drivers/usb/gadget/libusb_gadget.a

LIBS+=drivers/usb/host/libusb_host.a

LIBS+=drivers/usb/musb/libusb_musb.a

LIBS+=drivers/usb/phy/libusb_phy.a

LIBS+=drivers/video/libvideo.a

LIBS+=drivers/watchdog/libwatchdog.a

LIBS+=common/libcommon.a

LIBS+=lib/libfdt/libfdt.a

LIBS+=api/libapi.a

LIBS+=post/libpost.a

 

ifeq($(SOC),omap3)

LIBS+=$(CPUDIR)/omap-common/libomap-common.a

endif

ifeq($(SOC),omap4)

LIBS+=$(CPUDIR)/omap-common/libomap-common.a

endif

 

ifeq($(SOC),s5pc1xx)

LIBS+=$(CPUDIR)/s5p-common/libs5p-common.a

endif

ifeq($(SOC),s5pc2xx)

LIBS+=$(CPUDIR)/s5p-common/libs5p-common.a

endif

 

LIBS:=$(addprefix$(obj),$(LIBS))

.PHONY:$(LIBS)$(TIMESTAMP_FILE)$(VERSION_FILE)

 

LIBBOARD=board/$(BOARDDIR)/lib$(BOARD).a

LIBBOARD:=$(addprefix$(obj),$(LIBBOARD))

 

#AddGCClib

#***加入GCC的库

ifdefUSE_PRIVATE_LIBGCC

ifeq("$(USE_PRIVATE_LIBGCC)","yes")

PLATFORM_LIBGCC=-L$(OBJTREE)/arch/$(ARCH)/lib-lgcc

else

PLATFORM_LIBGCC=-L$(USE_PRIVATE_LIBGCC)-lgcc

endif

else

PLATFORM_LIBGCC=-L$(shelldirname`$(CC)$(CFLAGS)-print-libgcc-file-name`)-lgcc

endif

PLATFORM_LIBS+=$(PLATFORM_LIBGCC)

exportPLATFORM_LIBS

 

#SpecialflagsforCPPwhenprocessingthelinkerscript.

#Passtheversiondownsowecanhandlebackwardscompatibility

#onthefly.

LDPPFLAGS+=\

-include$(TOPDIR)/include/u-boot/u-boot.lds.h\

$(shell$(LD)--version|\

sed-ne's/GNUldversion\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1-DLD_MINOR=\2/p')

 

ifeq($(CONFIG_NAND_U_BOOT),y)

NAND_SPL=nand_spl

U_BOOT_NAND=$(obj)u-boot-nand.bin

endif

 

ifeq($(CONFIG_ONENAND_U_BOOT),y)

ONENAND_IPL=onenand_ipl

U_BOOT_ONENAND=$(obj)u-boot-onenand.bin

ONENAND_BIN?=$(obj)onenand_ipl/onenand-ipl-2k.bin

endif

 

__OBJS:=$(subst$(obj),,$(OBJS))

__LIBS:=$(subst$(obj),,$(LIBS))$(subst$(obj),,$(LIBBOARD))

 

#########################################################################

#########################################################################

#***最终生成的境像文件

#AlwaysappendALLsothatarchconfig.mk'scanaddcustomones

ALL+=$(obj)u-boot.srec$(obj)u-boot.bin$(obj)System.map$(U_BOOT_NAND)$(U_BOOT_ONENAND)

 

all: $(ALL)

 

$(obj)u-boot.hex: $(obj)u-boot

$(OBJCOPY)${OBJCFLAGS}-Oihex$<$@

 

$(obj)u-boot.srec: $(obj)u-boot

$(OBJCOPY)-Osrec$<$@

 

$(obj)u-boot.bin: $(obj)u-boot

$(OBJCOPY)${OBJCFLAGS}-Obinary$<$@

 

$(obj)u-boot.ldr: $(obj)u-boot

$(CREATE_LDR_ENV)

$(LDR)-T$(CONFIG_BFIN_CPU)-c$@$<$(LDR_FLAGS)

 

$(obj)u-boot.ldr.hex: $(obj)u-boot.ldr

$(OBJCOPY)${OBJCFLAGS}-Oihex$<$@-Ibinary

 

$(obj)u-boot.ldr.srec: $(obj)u-boot.ldr

$(OBJCOPY)${OBJCFLAGS}-Osrec$<$@-Ibinary

 

$(obj)u-boot.img: $(obj)u-boot.bin

$(obj)tools/mkimage-A$(ARCH)-Tfirmware-Cnone\

-a$(TEXT_BASE)-e0\

-n$(shellsed-n-e's/.*U_BOOT_VERSION//p'$(VERSION_FILE)|\

sed-e's/"[ ]*$$/for$(BOARD)board"/')\

-d$<$@

 

$(obj)u-boot.imx:$(obj)u-boot.bin

$(obj)tools/mkimage-n$(IMX_CONFIG)-Timximage\

-e$(TEXT_BASE)-d$<$@

 

$(obj)u-boot.kwb:$(obj)u-boot.bin

$(obj)tools/mkimage-n$(KWD_CONFIG)-Tkwbimage\

-a$(TEXT_BASE)-e$(TEXT_BASE)-d$<$@

 

$(obj)u-boot.sha1: $(obj)u-boot.bin

$(obj)tools/ubsha1$(obj)u-boot.bin

 

$(obj)u-boot.dis: $(obj)u-boot

$(OBJDUMP)-d$<>$@

 

GEN_UBOOT=\

UNDEF_SYM=`$(OBJDUMP)-x$(LIBBOARD)$(LIBS)|\

sed-n-e's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\

cd$(LNDIR)&&$(LD)$(LDFLAGS)$$UNDEF_SYM$(__OBJS)\

--start-group$(__LIBS)--end-group$(PLATFORM_LIBS)\

-Mapu-boot.map-ou-boot

$(obj)u-boot: depend$(SUBDIRS)$(OBJS)$(LIBBOARD)$(LIBS)$(LDSCRIPT)$(obj)u-boot.lds

$(GEN_UBOOT)

ifeq($(CONFIG_KALLSYMS),y)

smap=`$(callSYSTEM_MAP,u-boot)|\

awk'$$2~/[tTwW]/{printf$$1$$3"\\\\000"}'`;\

$(CC)$(CFLAGS)-DSYSTEM_MAP="\"$${smap}\""\

-ccommon/system_map.c-o$(obj)common/system_map.o

$(GEN_UBOOT)$(obj)common/system_map.o

endif

 

$(OBJS): depend

$(MAKE)-C$(CPUDIR)$(if$(REMOTE_BUILD),$@,$(notdir$@))

 

$(LIBS): depend$(SUBDIRS)

$(MAKE)-C$(dir$(subst$(obj),,$@))

 

$(LIBBOARD): depend$(LIBS)

$(MAKE)-C$(dir$(subst$(obj),,$@))

 

$(SUBDIRS): depend

$(MAKE)-C$@all

 

$(LDSCRIPT): depend

$(MAKE)-C$(dir$@)$(notdir$@)

 

$(obj)u-boot.lds:$(LDSCRIPT)

$(CPP)$(CPPFLAGS)$(LDPPFLAGS)-ansi-D__ASSEMBLY__-P-<$^>$@

 

$(NAND_SPL): $(TIMESTAMP_FILE)$(VERSION_FILE)$(obj)include/autoconf.mk

$(MAKE)-Cnand_spl/board/$(BOARDDIR)all

 

$(U_BOOT_NAND): $(NAND_SPL)$(obj)u-boot.bin

cat$(obj)nand_spl/u-boot-spl-16k.bin$(obj)u-boot.bin>$(obj)u-boot-nand.bin

 

$(ONENAND_IPL): $(TIMESTAMP_FILE)$(VERSION_FILE)$(obj)include/autoconf.mk

$(MAKE)-Conenand_ipl/board/$(BOARDDIR)all

 

$(U_BOOT_ONENAND): $(ONENAND_IPL)$(obj)u-boot.bin

cat$(ONENAND_BIN)$(obj)u-boot.bin>$(obj)u-boot-onenand.bin

 

$(VERSION_FILE):

@(printf'#defineU_BOOT_VERSION"U-Boot%s%s"\n'"$(U_BOOT_VERSION)"\

'$(shell$(TOPDIR)/tools/setlocalversion$(TOPDIR))')>$@.tmp

@cmp-s$@$@.tmp&&rm-f$@.tmp||mv-f$@.tmp$@

 

$(TIMESTAMP_FILE):

@LC_ALL=Cdate+'#defineU_BOOT_DATE"%b%d%C%y"'>$@

@LC_ALL=Cdate+'#defineU_BOOT_TIME"%T"'>>$@

 

gdbtools:

$(MAKE)-Ctools/gdball||exit1

 

updater:

$(MAKE)-Ctools/updaterall||exit1

 

env:

$(MAKE)-Ctools/envallMTD_VERSION=${MTD_VERSION}||exit1

 

#Explicitlymake_dependinsubdirscontainingmultipletargetstoprevent

#parallelsub-makescreating.dependfilessimultaneously.

dependdep: $(TIMESTAMP_FILE)$(VERSION_FILE)$(obj)include/autoconf.mk

fordirin$(SUBDIRS)$(CPUDIR)$(dir$(LDSCRIPT));do\

$(MAKE)-C$$dir_depend;done

 

TAG_SUBDIRS=$(SUBDIRS)

TAG_SUBDIRS+=$(dir$(__LIBS))

TAG_SUBDIRS+=include

 

tagsctags:

ctags-w-o$(obj)ctags`find$(TAG_SUBDIRS)\

-name'*.[chS]'-print`

 

etags:

etags-a-o$(obj)etags`find$(TAG_SUBDIRS)\

-name'*.[chS]'-print`

cscope:

find$(TAG_SUBDIRS)-name'*.[chS]'-print>cscope.files

cscope-b-q-k

 

SYSTEM_MAP=\

$(NM)$1|\

grep-v'\(compiled\)\|\(\.o$$\)\|\([aUw]\)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)'|\

LC_ALL=Csort

$(obj)System.map: $(obj)u-boot

@$(callSYSTEM_MAP,$<)>$(obj)System.map

 

#

#Auto-generatetheautoconf.mkfile(whichisincludedbyallmakefiles)

#

#Thistargetactuallygenerates2files;autoconf.mkandautoconf.mk.dep.

#thedepfileisonlyincludeinthistoplevelmakefiletodeterminewhen

#toregeneratetheautoconf.mkfile.

$(obj)include/autoconf.mk.dep:$(obj)include/config.hinclude/common.h

@$(XECHO)Generating$@;\

set-e;\

:Generatethedependancies;\

$(CC)-xc-DDO_DEPS_ONLY-M$(HOSTCFLAGS)$(CPPFLAGS)\

-MQ$(obj)include/autoconf.mkinclude/common.h>$@

 

$(obj)include/autoconf.mk:$(obj)include/config.h

@$(XECHO)Generating$@;\

set-e;\

:Extracttheconfigmacros;\

$(CPP)$(CFLAGS)-DDO_DEPS_ONLY-dMinclude/common.h|\

sed-n-ftools/scripts/define2mk.sed>$@.tmp&&\

mv$@.tmp$@

 

#########################################################################

else #!config.mk

all$(obj)u-boot.hex$(obj)u-boot.srec$(obj)u-boot.bin\

$(obj)u-boot.img$(obj)u-boot.dis$(obj)u-boot\

$(filter-outtools,$(SUBDIRS))$(TIMESTAMP_FILE)$(VERSION_FILE)gdbtools\

updaterenvdependdeptagsctagsetagscscope$(obj)System.map:

@echo"Systemnotconfigured-seeREADME">&2

@exit1

 

tools:

$(MAKE)-Ctools

tools-all:

$(MAKE)-CtoolsHOST_TOOLS_ALL=y

endif #config.mk

 

.PHONY:CHANGELOG

CHANGELOG:

gitlog--no-mergesU-Boot-1_1_5..|\

unexpand-a|sed-e's/\s\s*$$//'>$@

 

include/license.h:tools/bin2headerCOPYING

catCOPYING|gzip-9-c|./tools/bin2headerlicense_gzip>include/license.h

#########################################################################

 

#***删除上一次配置生成的文件

unconfig:

@rm-f$(obj)include/config.h$(obj)include/config.mk\

$(obj)board/*/config.tmp$(obj)board/*/*/config.tmp\

$(obj)include/autoconf.mk$(obj)include/autoconf.mk.dep

 

%_config:: unconfig

@$(MKCONFIG)-A$(@:_config=)

 

##%:%_config

## $(MAKE)

 

#

#Functionstogeneratecommonboarddirectorynames

#

lcname =$(shellecho$(1)|sed-e's/\(.*\)_config/\L\1/')

ucname =$(shellecho$(1)|sed-e's/\(.*\)_config/\U\1/')

 

 

 

#########################################################################

#ARM

#=====================================================================

 

######################################################################

##ARM1176Systems

#########################################################################

mini6410_noUSB_config\

#***清理上一次配置生成的文件,include/config.hinclude/config.mk

mini6410_config: unconfig

@mkdir-p$(obj)include$(obj)board/samsung/mini6410

@mkdir-p$(obj)nand_spl/board/samsung/mini6410

@echo"#defineCONFIG_NAND_U_BOOT">$(obj)include/config.h

@echo"CONFIG_NAND_U_BOOT=y">>$(obj)include/config.mk

@if[-z"$(findstringmini6410_noUSB_config,$@)"];then \

echo"RAM_TEXT=0x57e00000">>$(obj)board/samsung/mini6410/config.tmp;\

else \

echo"RAM_TEXT=0xc7e00000">>$(obj)board/samsung/mini6410/config.tmp;\

fi

 

//Parameters:TargetArchitectureCPUBoard[VENDOR][SOC]

@$(MKCONFIG)mini6410armarm1176mini6410samsungs3c64xx

$0$1$2$3$4$5$6

@echo"CONFIG_NAND_U_BOOT=y">>$(obj)include/config.mk

#########################################################################

 

clean:

@rm-f$(obj)examples/standalone/82559_eeprom \

$(obj)examples/standalone/atmel_df_pow2 \

$(obj)examples/standalone/eepro100_eeprom \

$(obj)examples/standalone/hello_world \

$(obj)examples/standalone/interrupt \

$(obj)examples/standalone/mem_to_mem_idma2intr \

$(obj)examples/standalone/sched \

$(obj)examples/standalone/smc91111_eeprom \

$(obj)examples/standalone/test_burst \

$(obj)examples/standalone/timer

@rm-f$(obj)examples/api/demo{,.bin}

@rm-f$(obj)tools/bmp_logo $(obj)tools/easylogo/easylogo\

$(obj)tools/env/{fw_printenv,fw_setenv} \

$(obj)tools/envcrc \

$(obj)tools/gdb/{astest,gdbcont,gdbsend} \

$(obj)tools/gen_eth_addr$(obj)tools/img2srec \

$(obj)tools/mkimage $(obj)tools/mpc86x_clk \

$(obj)tools/ncb $(obj)tools/ubsha1

@rm-f$(obj)board/cray/L1/{bootscript.c,bootscript.image} \

$(obj)board/netstar/{eeprom,crcek,crcit,*.srec,*.bin} \

$(obj)board/trab/trab_fkt$(obj)board/voiceblue/eeprom\

$(obj)board/armltd/{integratorap,integratorcp}/u-boot.lds\

$(obj)u-boot.lds \

$(obj)arch/blackfin/cpu/bootrom-asm-offsets.[chs]

@rm-f$(obj)include/bmp_logo.h

@rm-f$(obj)nand_spl/{u-boot.lds,u-boot-spl,u-boot-spl.map,System.map}

@rm-f$(obj)onenand_ipl/onenand-{ipl,ipl.bin,ipl.map}

@rm-f$(ONENAND_BIN)

@rm-f$(obj)onenand_ipl/u-boot.lds

@rm-f$(TIMESTAMP_FILE)$(VERSION_FILE)

@find$(OBJTREE)-typef\

\(-name'core'-o-name'*.bak'-o-name'*~'\

-o-name'*.o' -o-name'*.a'-o-name'*.exe' \)-print\

|xargsrm-f

 

clobber: clean

@find$(OBJTREE)-typef\(-name.depend\

-o-name'*.srec'-o-name'*.bin'-o-nameu-boot.img\)\

-print0\

|xargs-0rm-f

@rm-f$(OBJS)$(obj)*.bak$(obj)ctags$(obj)etags$(obj)TAGS\

$(obj)cscope.*$(obj)*.*~

@rm-f$(obj)u-boot$(obj)u-boot.map$(obj)u-boot.hex$(ALL)

@rm-f$(obj)u-boot.kwb

@rm-f$(obj)u-boot.imx

@rm-f$(obj)tools/{env/crc32.c,inca-swap-bytes}

@rm-f$(obj)arch/powerpc/cpu/mpc824x/bedbug_603e.c

@rm-f$(obj)include/asm/proc$(obj)include/asm/arch$(obj)include/asm

@[!-d$(obj)nand_spl]||find$(obj)nand_spl-name"*"-typel-print|xargsrm-f

@[!-d$(obj)onenand_ipl]||find$(obj)onenand_ipl-name"*"-typel-print|xargsrm-f

 

ifeq($(OBJTREE),$(SRCTREE))

mrproper\

distclean: clobberunconfig

else

mrproper\

distclean: clobberunconfig

rm-rf$(obj)*

endif

 

backup:

F=`basename$(TOPDIR)`;cd..;\

gtar--force-local-zcvf`LC_ALL=Cdate"+$$F-%Y-%m-%d-%T.tar.gz"`$$F

 

#########################################################################

分享到:
评论

相关推荐

    u-boot的Makefile分析

    u-boot的Makefile分析 u-boot的Makefile分析

    U-Boot_Makefile分析

    u-boot makefile 分析

    u-boot开源代码

    ◆ board:和一些已有开发板有关的文件,比如Makefile和u-boot.lds等都和具体开发板的硬件和地址分配有关。 ◆ common:与体系结构无关的文件,实现各种命令的C文件。 ◆ cpu:CPU相关文件,其中的子目录都是以U-...

    U-BOOT文件比对-UBUNTU

    决定对U-BOOT的makefile进行研究,希望能够理清U-BOOT的来龙去脉。从makefile的执行流程着手分析不失为上策。对生成文件次序有所了解之后,再去看makefile,似乎清晰了好多。 在此,我将分析得出的文件做成xls。希望...

    u-boot-1.1.4移植分析

    本文档详细的分析了u-boot-1.1.4的源代码结构,主要的手段是通过详细的分析它的makefile文件与config.mk文件来实现的

    u-boot 1.1.6 移植

    说明2:U-Boot 1.1.6 的移植,基于ARM7 S3C44B0的hfrk U-Boot 1.1.1能够正常工作的包裹提取适当文件合并至U-Boot 1.1.6中,并适当修改Makefile实现。 &lt;br&gt;提供U-Boot 1.1.6 -MQ问题的解决方案。 提供U-...

    u-boot顶层makefile、mkconfig、config.mk文件分析

    u-boot1.1.6版本顶层makefile文件、mkconfig文件、config.mk文件分析,会对执行make ..._config后的过程进行详细分析,看完这个,移植u-boot决定没问题,至少有个好的开始。如果要后面的移植或u-boot2012版本的说明...

    u-boot学习.zip

    linux-arm u-boot学习 makefile文件 samsung官方文档

    U-Boot-1.16编译过程完全分析(网页文件)

    U-Boot-1.16编译过程完全分析.mht(网页文件) 原作者的分析,害怕丢了,保存一下 作者地址: http://www.cnblogs.com/heaad/archive/2010/07/17/1779806.html

    U-BOOT的移植

    在这个board目录中修改Makefile文件。我们可以再smb共享的文件进入到board文件中 打开Makefile。在第28行的smdk2410.o改为TX2410.o。 在修改中,会遇到没有权限修改文件,我们回到虚拟机中,修改权限: 打开TQ...

    u-boot 完整源码分析 注释

    很多人都分享了u-boot 的分析 , 但是大多也只是分析了它的配置和 Makefile 文件。 源代码很少有分析的, 我这里不仅仅只是分析 了, 还在源代码 上加了注释。很好理解 !

    u-boot-2014.10-comment

    在u-boot-2014.10中的Makefile文件中添加了一些注释,水平有限,不能保证所有注释正确无误。

    uboot代码详细分析.pdf

    u-boot中.lds连接脚本文件的分析 12 分享一篇我总结的uboot学习笔记(转) 15 U-BOOT内存布局及启动过程浅析 22 u-boot中的命令实现 25 U-BOOT环境变量实现 28 1.相关文件 28 2.数据结构 28 3.ENV 的初始化 30 3.1...

    u-boot mkimage 源码包加执行文件

    u-boot mkimage 源码包加执行文件,可以自己编写Makefile编译生成mkimage执行文件,也可以把mkimage放在/usr/local/bin/ 目录下,直接执行!have fun~

    mini2440之U-boot移植详细手册-20100419

    第2 章 U‐BOOT简介............................................................................................................................................ 6 2.1 U‐BOOT的起源......................

    BOOTLODER详细分析,CHM格式

    U-Boot支持许多的处理器和开发板,主要是该软件有良好的架构,本节以使用ARM处理器的smdk2410开发板为例分析U-Boot的启动流程,在其他的处理器架构上,U-Boot也执行类似的启动流程。图14-3是U-Boot在ARM处理器的启动...

    韦东山视频目录+链接整合-1 视频目录

    第9课第2节 u-boot分析之Makefile结构分析 第9课第3节 u-boot分析之源码第1阶段 第9课第3节 u-boot分析之源码第2阶段 第9课第4节 u-boot分析之u-boot命令实现 第9课第5节 u-boot分析_uboot启动内核 第10课第1...

    韦东山Linux视频第1期_裸板_UBoot_文件系统_驱动初步

    第9课第2节 u-boot分析之Makefile结构分析 第9课第3节 u-boot分析之源码第1阶段 第9课第3节 u-boot分析之源码第2阶段 第9课第4节 u-boot分析之u-boot命令实现 第9课第5节 u-boot分析_uboot启动内核 第10课第1...

    testLED.tar.gz

    exynos4412裸机闪灯程序,就是一个闪灯的u-boot,使用 exynos4412 pop。 sdfuse_q --- 里面的文件为三星提供,bl1/bl2/tzsw; build.sh --- 编译脚本,执行./buid.sh 便可编译,记得先搭建环境喔; led.c --- main ...

    Breadbee_dev:用于执行内核和u-boot开发的环境

    这是一个管理构建u-boot和内核映像的环境,因此您可以快速破解u-boot或内核并测试您的工作。 入门 首先,您需要签出此存储库,然后通过运行bootstrap目标使用u-boot,内核和buildroot源将其填充: make bootstrap ...

Global site tag (gtag.js) - Google Analytics