Makefile文件分析
#
#(C)Copyright2000-2010
#WolfgangDenk,DENXSoftwareEngineering,[email protected].
#
#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.
#***如果输出目录和源码目录不相同,对obj和src进行赋值,
#***两者会在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))')>[email protected]
@cmp-s$@[email protected][email protected]||[email protected]$@
$(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>[email protected]&&\
#########################################################################
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.h和include/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
#########################################################################