Makefile 29.5 KB
Newer Older
W
wdenk 已提交
1
#
W
Wolfgang Denk 已提交
2
# (C) Copyright 2000-2011
W
wdenk 已提交
3 4 5 6 7 8 9
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
#
# See file CREDITS for list of people who contributed to this
# project.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
10
# published by the Free Software Foundatio; either version 2 of
W
wdenk 已提交
11 12 13 14
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
15
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
W
wdenk 已提交
16 17 18 19 20 21 22 23
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
# MA 02111-1307 USA
#

W
Wolfgang Denk 已提交
24
VERSION = 2011
W
Wolfgang Denk 已提交
25
PATCHLEVEL = 09
26
SUBLEVEL =
W
Wolfgang Denk 已提交
27
EXTRAVERSION =
28
ifneq "$(SUBLEVEL)" ""
29
U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
30 31 32
else
U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL)$(EXTRAVERSION)
endif
33 34
TIMESTAMP_FILE = $(obj)include/generated/timestamp_autogenerated.h
VERSION_FILE = $(obj)include/generated/version_autogenerated.h
35

W
wdenk 已提交
36
HOSTARCH := $(shell uname -m | \
G
Graeme Russ 已提交
37
	sed -e s/i.86/x86/ \
W
wdenk 已提交
38 39 40
	    -e s/sun4u/sparc64/ \
	    -e s/arm.*/arm/ \
	    -e s/sa110/arm/ \
K
Kumar Gala 已提交
41 42
	    -e s/ppc64/powerpc/ \
	    -e s/ppc/powerpc/ \
N
Nobuhiro Iwamatsu 已提交
43 44
	    -e s/macppc/powerpc/\
	    -e s/sh.*/sh/)
W
wdenk 已提交
45

46
HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
W
wdenk 已提交
47 48
	    sed -e 's/\(cygwin\).*/cygwin/')

49 50 51 52 53 54
# Set shell to bash if possible, otherwise fall back to sh
SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
	else if [ -x /bin/bash ]; then echo /bin/bash; \
	else echo sh; fi; fi)

export	HOSTARCH HOSTOS SHELL
W
wdenk 已提交
55 56 57 58

# Deal with colliding definitions from tcsh etc.
VENDOR=

59 60 61 62 63 64 65 66
#########################################################################
# Allow for silent builds
ifeq (,$(findstring s,$(MAKEFLAGS)))
XECHO = echo
else
XECHO = :
endif

W
wdenk 已提交
67
#########################################################################
68 69 70
#
# U-boot build supports producing a object files to the separate external
# directory. Two use cases are supported:
71
#
72 73 74 75 76 77 78 79 80 81
# 1) Add O= to the make command line
# 'make O=/tmp/build all'
#
# 2) Set environement variable BUILD_DIR to point to the desired location
# 'export BUILD_DIR=/tmp/build'
# 'make'
#
# The second approach can also be used with a MAKEALL script
# 'export BUILD_DIR=/tmp/build'
# './MAKEALL'
82
#
83
# Command line 'O=' setting overrides BUILD_DIR environent variable.
84
#
85 86
# When none of the above methods is used the local build is performed and
# the object files are placed in the source directory.
87
#
88 89 90 91 92 93 94 95 96

ifdef O
ifeq ("$(origin O)", "command line")
BUILD_DIR := $(O)
endif
endif

ifneq ($(BUILD_DIR),)
saved-output := $(BUILD_DIR)
97 98 99 100

# Attempt to create a output directory.
$(shell [ -d ${BUILD_DIR} ] || mkdir -p ${BUILD_DIR})

S
Stefan Roese 已提交
101
# Verify if it was successful.
102 103 104 105 106
BUILD_DIR := $(shell cd $(BUILD_DIR) && /bin/pwd)
$(if $(BUILD_DIR),,$(error output directory "$(saved-output)" does not exist))
endif # ifneq ($(BUILD_DIR),)

OBJTREE		:= $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR))
107
SPLTREE		:= $(OBJTREE)/spl
108 109 110
SRCTREE		:= $(CURDIR)
TOPDIR		:= $(SRCTREE)
LNDIR		:= $(OBJTREE)
111
export	TOPDIR SRCTREE OBJTREE SPLTREE
112 113 114

MKCONFIG	:= $(SRCTREE)/mkconfig
export MKCONFIG
W
wdenk 已提交
115

116
ifneq ($(OBJTREE),$(SRCTREE))
W
Wolfgang Denk 已提交
117
REMOTE_BUILD	:= 1
118 119 120 121 122 123 124 125 126 127 128 129
export REMOTE_BUILD
endif

# $(obj) and (src) are defined in config.mk but here in main Makefile
# we also need them before config.mk is included which is the case for
# some targets like unconfig, clean, clobber, distclean, etc.
ifneq ($(OBJTREE),$(SRCTREE))
obj := $(OBJTREE)/
src := $(SRCTREE)/
else
obj :=
src :=
130
endif
131 132
export obj src

W
Wolfgang Denk 已提交
133 134 135
# Make sure CDPATH settings don't interfere
unexport CDPATH

W
wdenk 已提交
136 137
#########################################################################

138 139
# The "tools" are needed early, so put this first
# Don't include stuff already done in $(LIBS)
140 141 142 143 144 145 146 147
# The "examples" conditionally depend on U-Boot (say, when USE_PRIVATE_LIBGCC
# is "yes"), so compile examples after U-Boot is compiled.
SUBDIR_TOOLS = tools
SUBDIR_EXAMPLES = examples/standalone examples/api
SUBDIRS = $(SUBDIR_TOOLS)
ifndef CONFIG_SANDBOX
SUBDIRS += $(SUBDIR_EXAMPLES)
endif
148

149
.PHONY : $(SUBDIRS) $(VERSION_FILE) $(TIMESTAMP_FILE)
150

151
ifeq ($(obj)include/config.mk,$(wildcard $(obj)include/config.mk))
W
wdenk 已提交
152

153 154 155 156 157 158 159
# Include autoconf.mk before config.mk so that the config options are available
# to all top level build files.  We need the dummy all: target to prevent the
# dependency target in autoconf.mk.dep from being the default.
all:
sinclude $(obj)include/autoconf.mk.dep
sinclude $(obj)include/autoconf.mk

W
wdenk 已提交
160
# load ARCH, BOARD, and CPU configuration
161
include $(obj)include/config.mk
W
wdenk 已提交
162
export	ARCH CPU BOARD VENDOR SOC
163

164
# set default to nothing for native builds
W
Wolfgang Denk 已提交
165
ifeq ($(HOSTARCH),$(ARCH))
166
CROSS_COMPILE ?=
W
wdenk 已提交
167
endif
W
wdenk 已提交
168

169 170 171
# load other configuration
include $(TOPDIR)/config.mk

172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201
# If board code explicitly specified LDSCRIPT or CONFIG_SYS_LDSCRIPT, use
# that (or fail if absent).  Otherwise, search for a linker script in a
# standard location.

ifndef LDSCRIPT
	#LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds.debug
	ifdef CONFIG_SYS_LDSCRIPT
		# need to strip off double quotes
		LDSCRIPT := $(subst ",,$(CONFIG_SYS_LDSCRIPT))
	endif
endif

ifndef LDSCRIPT
	ifeq ($(CONFIG_NAND_U_BOOT),y)
		LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds
		ifeq ($(wildcard $(LDSCRIPT)),)
			LDSCRIPT := $(TOPDIR)/$(CPUDIR)/u-boot-nand.lds
		endif
	endif
	ifeq ($(wildcard $(LDSCRIPT)),)
		LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds
	endif
	ifeq ($(wildcard $(LDSCRIPT)),)
		LDSCRIPT := $(TOPDIR)/$(CPUDIR)/u-boot.lds
	endif
	ifeq ($(wildcard $(LDSCRIPT)),)
$(error could not find linker script)
	endif
endif

W
wdenk 已提交
202 203 204
#########################################################################
# U-Boot objects....order is important (i.e. start must be first)

P
Peter Tyser 已提交
205
OBJS  = $(CPUDIR)/start.o
G
Graeme Russ 已提交
206
ifeq ($(CPU),x86)
P
Peter Tyser 已提交
207 208
OBJS += $(CPUDIR)/start16.o
OBJS += $(CPUDIR)/resetvec.o
W
wdenk 已提交
209
endif
W
wdenk 已提交
210
ifeq ($(CPU),ppc4xx)
P
Peter Tyser 已提交
211
OBJS += $(CPUDIR)/resetvec.o
W
wdenk 已提交
212
endif
W
wdenk 已提交
213
ifeq ($(CPU),mpc85xx)
P
Peter Tyser 已提交
214
OBJS += $(CPUDIR)/resetvec.o
W
wdenk 已提交
215
endif
W
wdenk 已提交
216

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

219 220 221
LIBS  = lib/libgeneric.o
LIBS += lib/lzma/liblzma.o
LIBS += lib/lzo/liblzo.o
222
LIBS += lib/zlib/libz.o
223
LIBS += $(shell if [ -f board/$(VENDOR)/common/Makefile ]; then echo \
224 225
	"board/$(VENDOR)/common/lib$(VENDOR).o"; fi)
LIBS += $(CPUDIR)/lib$(CPU).o
W
wdenk 已提交
226
ifdef SOC
227
LIBS += $(CPUDIR)/$(SOC)/lib$(SOC).o
W
wdenk 已提交
228
endif
S
Stefan Roese 已提交
229
ifeq ($(CPU),ixp)
230
LIBS += arch/arm/cpu/ixp/npe/libnpe.o
S
Stefan Roese 已提交
231
endif
232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258
LIBS += arch/$(ARCH)/lib/lib$(ARCH).o
LIBS += fs/cramfs/libcramfs.o fs/fat/libfat.o fs/fdos/libfdos.o fs/jffs2/libjffs2.o \
	fs/reiserfs/libreiserfs.o fs/ext2/libext2fs.o fs/yaffs2/libyaffs2.o \
	fs/ubifs/libubifs.o
LIBS += net/libnet.o
LIBS += disk/libdisk.o
LIBS += drivers/bios_emulator/libatibiosemu.o
LIBS += drivers/block/libblock.o
LIBS += drivers/dma/libdma.o
LIBS += drivers/fpga/libfpga.o
LIBS += drivers/gpio/libgpio.o
LIBS += drivers/hwmon/libhwmon.o
LIBS += drivers/i2c/libi2c.o
LIBS += drivers/input/libinput.o
LIBS += drivers/misc/libmisc.o
LIBS += drivers/mmc/libmmc.o
LIBS += drivers/mtd/libmtd.o
LIBS += drivers/mtd/nand/libnand.o
LIBS += drivers/mtd/onenand/libonenand.o
LIBS += drivers/mtd/ubi/libubi.o
LIBS += drivers/mtd/spi/libspi_flash.o
LIBS += drivers/net/libnet.o
LIBS += drivers/net/phy/libphy.o
LIBS += drivers/pci/libpci.o
LIBS += drivers/pcmcia/libpcmcia.o
LIBS += drivers/power/libpower.o
LIBS += drivers/spi/libspi.o
D
Dave Liu 已提交
259
ifeq ($(CPU),mpc83xx)
260
LIBS += drivers/qe/libqe.o
261
LIBS += arch/powerpc/cpu/mpc8xxx/ddr/libddr.o
262
LIBS += arch/powerpc/cpu/mpc8xxx/lib8xxx.o
D
Dave Liu 已提交
263
endif
A
Andy Fleming 已提交
264
ifeq ($(CPU),mpc85xx)
265
LIBS += drivers/qe/libqe.o
266
LIBS += drivers/net/fm/libfm.o
267 268
LIBS += arch/powerpc/cpu/mpc8xxx/ddr/libddr.o
LIBS += arch/powerpc/cpu/mpc8xxx/lib8xxx.o
269 270
endif
ifeq ($(CPU),mpc86xx)
271 272
LIBS += arch/powerpc/cpu/mpc8xxx/ddr/libddr.o
LIBS += arch/powerpc/cpu/mpc8xxx/lib8xxx.o
A
Andy Fleming 已提交
273
endif
274 275 276
LIBS += drivers/rtc/librtc.o
LIBS += drivers/serial/libserial.o
LIBS += drivers/twserial/libtws.o
M
Mike Frysinger 已提交
277
LIBS += drivers/usb/eth/libusb_eth.o
278 279 280 281 282 283 284 285 286 287
LIBS += drivers/usb/gadget/libusb_gadget.o
LIBS += drivers/usb/host/libusb_host.o
LIBS += drivers/usb/musb/libusb_musb.o
LIBS += drivers/usb/phy/libusb_phy.o
LIBS += drivers/video/libvideo.o
LIBS += drivers/watchdog/libwatchdog.o
LIBS += common/libcommon.o
LIBS += lib/libfdt/libfdt.o
LIBS += api/libapi.o
LIBS += post/libpost.o
288

289
ifeq ($(SOC),omap3)
290
LIBS += $(CPUDIR)/omap-common/libomap-common.o
291 292
endif
ifeq ($(SOC),omap4)
293
LIBS += $(CPUDIR)/omap-common/libomap-common.o
294 295
endif

296
ifeq ($(SOC),s5pc1xx)
297
LIBS += $(CPUDIR)/s5p-common/libs5p-common.o
298 299
endif
ifeq ($(SOC),s5pc2xx)
300
LIBS += $(CPUDIR)/s5p-common/libs5p-common.o
301 302
endif

303
LIBS := $(addprefix $(obj),$(sort $(LIBS)))
304
.PHONY : $(LIBS)
W
wdenk 已提交
305

306
LIBBOARD = board/$(BOARDDIR)/lib$(BOARD).o
W
Wolfgang Denk 已提交
307 308
LIBBOARD := $(addprefix $(obj),$(LIBBOARD))

W
wdenk 已提交
309
# Add GCC lib
310 311
ifdef USE_PRIVATE_LIBGCC
ifeq ("$(USE_PRIVATE_LIBGCC)", "yes")
312
PLATFORM_LIBGCC = $(OBJTREE)/arch/$(ARCH)/lib/libgcc.o
313 314 315 316 317 318 319 320
else
PLATFORM_LIBGCC = -L $(USE_PRIVATE_LIBGCC) -lgcc
endif
else
PLATFORM_LIBGCC = -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
endif
PLATFORM_LIBS += $(PLATFORM_LIBGCC)
export PLATFORM_LIBS
W
wdenk 已提交
321

322 323 324 325 326 327 328 329
# Special flags for CPP when processing the linker script.
# Pass the version down so we can handle backwards compatibility
# on the fly.
LDPPFLAGS += \
	-include $(TOPDIR)/include/u-boot/u-boot.lds.h \
	$(shell $(LD) --version | \
	  sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p')

330
__OBJS := $(subst $(obj),,$(OBJS))
W
Wolfgang Denk 已提交
331
__LIBS := $(subst $(obj),,$(LIBS)) $(subst $(obj),,$(LIBBOARD))
332

333
#########################################################################
W
wdenk 已提交
334 335
#########################################################################

336 337 338 339 340 341 342 343 344 345 346 347 348 349 350
ifneq ($(CONFIG_BOARD_SIZE_LIMIT),)
BOARD_SIZE_CHECK = \
	@actual=`wc -c $@ | awk '{print $$1}'`; \
	limit=$(CONFIG_BOARD_SIZE_LIMIT); \
	if test $$actual -gt $$limit; then \
		echo "$@ exceeds file size limit:"; \
		echo "  limit:  $$limit bytes"; \
		echo "  actual: $$actual bytes"; \
		echo "  excess: $$((actual - limit)) bytes"; \
		exit 1; \
	fi
else
BOARD_SIZE_CHECK =
endif

351
# Always append ALL so that arch config.mk's can add custom ones
352
ALL-y += $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map
353

354 355
ALL-$(CONFIG_NAND_U_BOOT) += $(obj)u-boot-nand.bin
ALL-$(CONFIG_ONENAND_U_BOOT) += $(obj)u-boot-onenand.bin
356
ONENAND_BIN ?= $(obj)onenand_ipl/onenand-ipl-2k.bin
357
ALL-$(CONFIG_MMC_U_BOOT) += $(obj)mmc_spl/u-boot-mmc-spl.bin
358
ALL-$(CONFIG_SPL) += $(obj)spl/u-boot-spl.bin
359

360
all:		$(ALL-y) $(SUBDIR_EXAMPLES)
W
wdenk 已提交
361

362
$(obj)u-boot.hex:	$(obj)u-boot
W
wdenk 已提交
363 364
		$(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@

365
$(obj)u-boot.srec:	$(obj)u-boot
366
		$(OBJCOPY) -O srec $< $@
W
wdenk 已提交
367

368
$(obj)u-boot.bin:	$(obj)u-boot
W
wdenk 已提交
369
		$(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
370
		$(BOARD_SIZE_CHECK)
W
wdenk 已提交
371

372
$(obj)u-boot.ldr:	$(obj)u-boot
373
		$(CREATE_LDR_ENV)
374
		$(LDR) -T $(CONFIG_BFIN_CPU) -c $@ $< $(LDR_FLAGS)
375
		$(BOARD_SIZE_CHECK)
376 377 378 379 380 381 382

$(obj)u-boot.ldr.hex:	$(obj)u-boot.ldr
		$(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@ -I binary

$(obj)u-boot.ldr.srec:	$(obj)u-boot.ldr
		$(OBJCOPY) ${OBJCFLAGS} -O srec $< $@ -I binary

383
$(obj)u-boot.img:	$(obj)u-boot.bin
384
		$(obj)tools/mkimage -A $(ARCH) -T firmware -C none \
A
aneeshv 已提交
385
		-O u-boot -a $(CONFIG_SYS_TEXT_BASE) -e 0 \
386
		-n $(shell sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE) | \
387 388 389
			sed -e 's/"[	 ]*$$/ for $(BOARD) board"/') \
		-d $< $@

390
$(obj)u-boot.imx:       $(obj)u-boot.bin
391
		$(obj)tools/mkimage -n  $(CONFIG_IMX_CONFIG) -T imximage \
392
		-e $(CONFIG_SYS_TEXT_BASE) -d $< $@
393

394
$(obj)u-boot.kwb:       $(obj)u-boot.bin
395
		$(obj)tools/mkimage -n $(CONFIG_SYS_KWD_CONFIG) -T kwbimage \
396
		-a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) -d $< $@
397

398
$(obj)u-boot.sha1:	$(obj)u-boot.bin
399
		$(obj)tools/ubsha1 $(obj)u-boot.bin
400

401
$(obj)u-boot.dis:	$(obj)u-boot
W
wdenk 已提交
402 403
		$(OBJDUMP) -d $< > $@

404 405 406 407
$(obj)u-boot.ubl:       $(obj)u-boot-nand.bin
		$(obj)tools/mkimage -n $(UBL_CONFIG) -T ublimage \
		-e $(CONFIG_SYS_TEXT_BASE) -d $< $@

408 409 410 411 412 413
ifeq ($(CONFIG_SANDBOX),y)
GEN_UBOOT = \
		cd $(LNDIR) && $(CC) $(SYMS) -T $(obj)u-boot.lds \
			-Wl,--start-group $(__LIBS) -Wl,--end-group \
			$(PLATFORM_LIBS) -Wl,-Map -Wl,u-boot.map -o u-boot
else
414
GEN_UBOOT = \
W
Wolfgang Denk 已提交
415 416
		UNDEF_SYM=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
		sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
417
		cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) $$UNDEF_SYM $(__OBJS) \
418
			--start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
W
wdenk 已提交
419
			-Map u-boot.map -o u-boot
420 421
endif

422
$(obj)u-boot:	depend \
423
		$(SUBDIR_TOOLS) $(OBJS) $(LIBBOARD) $(LIBS) $(LDSCRIPT) $(obj)u-boot.lds
424 425
		$(GEN_UBOOT)
ifeq ($(CONFIG_KALLSYMS),y)
426 427 428 429
		smap=`$(call SYSTEM_MAP,u-boot) | \
			awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \
		$(CC) $(CFLAGS) -DSYSTEM_MAP="\"$${smap}\"" \
			-c common/system_map.c -o $(obj)common/system_map.o
430 431
		$(GEN_UBOOT) $(obj)common/system_map.o
endif
W
wdenk 已提交
432

433
$(OBJS):	depend
P
Peter Tyser 已提交
434
		$(MAKE) -C $(CPUDIR) $(if $(REMOTE_BUILD),$@,$(notdir $@))
435

436
$(LIBS):	depend $(SUBDIR_TOOLS)
437
		$(MAKE) -C $(dir $(subst $(obj),,$@))
W
wdenk 已提交
438

439
$(LIBBOARD):	depend $(LIBS)
W
Wolfgang Denk 已提交
440 441
		$(MAKE) -C $(dir $(subst $(obj),,$@))

442
$(SUBDIRS):	depend
W
wdenk 已提交
443
		$(MAKE) -C $@ all
W
wdenk 已提交
444

445 446
$(SUBDIR_EXAMPLES): $(obj)u-boot

447
$(LDSCRIPT):	depend
448 449
		$(MAKE) -C $(dir $@) $(notdir $@)

450 451 452
$(obj)u-boot.lds: $(LDSCRIPT)
		$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@

453
nand_spl:	$(TIMESTAMP_FILE) $(VERSION_FILE) depend
454
		$(MAKE) -C nand_spl/board/$(BOARDDIR) all
455

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

459
onenand_ipl:	$(TIMESTAMP_FILE) $(VERSION_FILE) $(obj)include/autoconf.mk
S
Stefan Roese 已提交
460
		$(MAKE) -C onenand_ipl/board/$(BOARDDIR) all
461

462
$(obj)u-boot-onenand.bin:	onenand_ipl $(obj)u-boot.bin
K
Kyungmin Park 已提交
463
		cat $(ONENAND_BIN) $(obj)u-boot.bin > $(obj)u-boot-onenand.bin
464

465 466 467 468 469
mmc_spl:	$(TIMESTAMP_FILE) $(VERSION_FILE) depend
		$(MAKE) -C mmc_spl/board/$(BOARDDIR) all

$(obj)mmc_spl/u-boot-mmc-spl.bin:	mmc_spl

470 471 472
$(obj)spl/u-boot-spl.bin:		depend
		$(MAKE) -C spl all

473
updater:
M
Mike Frysinger 已提交
474
		$(MAKE) -C tools/updater all
475

D
Daniel Hobi 已提交
476 477
# Explicitly make _depend in subdirs containing multiple targets to prevent
# parallel sub-makes creating .depend files simultaneously.
478 479
depend dep:	$(TIMESTAMP_FILE) $(VERSION_FILE) \
		$(obj)include/autoconf.mk \
480 481
		$(obj)include/generated/generic-asm-offsets.h \
		$(obj)include/generated/asm-offsets.h
P
Peter Tyser 已提交
482
		for dir in $(SUBDIRS) $(CPUDIR) $(dir $(LDSCRIPT)) ; do \
D
Daniel Hobi 已提交
483
			$(MAKE) -C $$dir _depend ; done
W
wdenk 已提交
484

L
Li Yang 已提交
485 486
TAG_SUBDIRS = $(SUBDIRS)
TAG_SUBDIRS += $(dir $(__LIBS))
487 488
TAG_SUBDIRS += include

489 490 491
FIND := find
FINDFLAGS := -L

492
tags ctags:
493
		ctags -w -o $(obj)ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
L
Li Yang 已提交
494
						-name '*.[chS]' -print`
W
wdenk 已提交
495 496

etags:
497
		etags -a -o $(obj)etags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
L
Li Yang 已提交
498
						-name '*.[chS]' -print`
L
Li Yang 已提交
499
cscope:
500 501
		$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \
						cscope.files
L
Li Yang 已提交
502
		cscope -b -q -k
W
wdenk 已提交
503

504 505
SYSTEM_MAP = \
		$(NM) $1 | \
W
wdenk 已提交
506
		grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
507 508 509
		LC_ALL=C sort
$(obj)System.map:	$(obj)u-boot
		@$(call SYSTEM_MAP,$<) > $(obj)System.map
W
wdenk 已提交
510

511 512 513 514 515 516
#
# Auto-generate the autoconf.mk file (which is included by all makefiles)
#
# This target actually generates 2 files; autoconf.mk and autoconf.mk.dep.
# the dep file is only include in this top level makefile to determine when
# to regenerate the autoconf.mk file.
517 518
$(obj)include/autoconf.mk.dep: $(obj)include/config.h include/common.h
	@$(XECHO) Generating $@ ; \
519
	set -e ; \
520
	: Generate the dependancies ; \
521
	$(CC) -x c -DDO_DEPS_ONLY -M $(HOSTCFLAGS) $(CPPFLAGS) \
522 523 524 525 526
		-MQ $(obj)include/autoconf.mk include/common.h > $@

$(obj)include/autoconf.mk: $(obj)include/config.h
	@$(XECHO) Generating $@ ; \
	set -e ; \
527
	: Extract the config macros ; \
528
	$(CPP) $(CFLAGS) -DDO_DEPS_ONLY -dM include/common.h | \
529 530
		sed -n -f tools/scripts/define2mk.sed > $@.tmp && \
	mv $@.tmp $@
531

532 533 534 535 536 537 538 539 540 541 542 543
$(obj)include/generated/generic-asm-offsets.h:	$(obj)include/autoconf.mk.dep \
	$(obj)lib/asm-offsets.s
	@$(XECHO) Generating $@
	tools/scripts/make-asm-offsets $(obj)lib/asm-offsets.s $@

$(obj)lib/asm-offsets.s:	$(obj)include/autoconf.mk.dep \
	$(src)lib/asm-offsets.c
	@mkdir -p $(obj)lib
	$(CC) -DDO_DEPS_ONLY \
		$(CFLAGS) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \
		-o $@ $(src)lib/asm-offsets.c -c -S

544 545 546 547 548 549 550 551 552 553 554 555 556 557 558
$(obj)include/generated/asm-offsets.h:	$(obj)include/autoconf.mk.dep \
	$(obj)$(CPUDIR)/$(SOC)/asm-offsets.s
	@echo Generating $@
	tools/scripts/make-asm-offsets $(obj)$(CPUDIR)/$(SOC)/asm-offsets.s $@

$(obj)$(CPUDIR)/$(SOC)/asm-offsets.s:	$(obj)include/autoconf.mk.dep
	@mkdir -p $(obj)$(CPUDIR)/$(SOC)
	if [ -f $(src)$(CPUDIR)/$(SOC)/asm-offsets.c ];then \
		$(CC) -DDO_DEPS_ONLY \
		$(CFLAGS) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \
			-o $@ $(src)$(CPUDIR)/$(SOC)/asm-offsets.c -c -S; \
	else \
		touch $@; \
	fi

W
wdenk 已提交
559
#########################################################################
560
else	# !config.mk
561 562
all $(obj)u-boot.hex $(obj)u-boot.srec $(obj)u-boot.bin \
$(obj)u-boot.img $(obj)u-boot.dis $(obj)u-boot \
563
$(filter-out tools,$(SUBDIRS)) \
M
Mike Frysinger 已提交
564
updater depend dep tags ctags etags cscope $(obj)System.map:
W
wdenk 已提交
565 566
	@echo "System not configured - see README" >&2
	@ exit 1
567

568
tools: $(VERSION_FILE) $(TIMESTAMP_FILE)
M
Mike Frysinger 已提交
569
	$(MAKE) -C $@ all
570
endif	# config.mk
W
wdenk 已提交
571

572
$(VERSION_FILE):
573
		@mkdir -p $(dir $(VERSION_FILE))
574 575 576 577 578 579 580 581 582 583 584 585
		@( localvers='$(shell $(TOPDIR)/tools/setlocalversion $(TOPDIR))' ; \
		   printf '#define PLAIN_VERSION "%s%s"\n' \
			"$(U_BOOT_VERSION)" "$${localvers}" ; \
		   printf '#define U_BOOT_VERSION "U-Boot %s%s"\n' \
			"$(U_BOOT_VERSION)" "$${localvers}" ; \
		) > $@.tmp
		@( printf '#define CC_VERSION_STRING "%s"\n' \
		 '$(shell $(CC) --version | head -n 1)' )>>  $@.tmp
		@( printf '#define LD_VERSION_STRING "%s"\n' \
		 '$(shell $(LD) -v | head -n 1)' )>>  $@.tmp
		@cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@

586 587
$(TIMESTAMP_FILE):
		@mkdir -p $(dir $(TIMESTAMP_FILE))
588 589 590
		@LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"' > $@.tmp
		@LC_ALL=C date +'#define U_BOOT_TIME "%T"' >> $@.tmp
		@cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@
591

M
Mike Frysinger 已提交
592 593 594 595
easylogo env gdb:
	$(MAKE) -C tools/$@ all MTD_VERSION=${MTD_VERSION}
gdbtools: gdb

596
tools-all: easylogo env gdb $(VERSION_FILE) $(TIMESTAMP_FILE)
M
Mike Frysinger 已提交
597 598
	$(MAKE) -C tools HOST_TOOLS_ALL=y

599 600
.PHONY : CHANGELOG
CHANGELOG:
601 602
	git log --no-merges U-Boot-1_1_5.. | \
	unexpand -a | sed -e 's/\s\s*$$//' > $@
603

604
include/license.h: tools/bin2header COPYING
605
	cat COPYING | gzip -9 -c | ./tools/bin2header license_gzip > include/license.h
W
wdenk 已提交
606 607 608
#########################################################################

unconfig:
609
	@rm -f $(obj)include/config.h $(obj)include/config.mk \
610 611
		$(obj)board/*/config.tmp $(obj)board/*/*/config.tmp \
		$(obj)include/autoconf.mk $(obj)include/autoconf.mk.dep
W
wdenk 已提交
612

613 614 615
%_config::	unconfig
	@$(MKCONFIG) -A $(@:_config=)

616 617
sinclude $(obj).boards.depend
$(obj).boards.depend:	boards.cfg
618
	awk '(NF && $$1 !~ /^#/) { print $$1 ": " $$1 "_config; $$(MAKE)" }' $< > $@
619

620 621 622 623 624 625
#
# Functions to generate common board directory names
#
lcname	= $(shell echo $(1) | sed -e 's/\(.*\)_config/\L\1/')
ucname	= $(shell echo $(1) | sed -e 's/\(.*\)_config/\U\1/')

W
wdenk 已提交
626 627 628
#########################################################################
## Coldfire
#########################################################################
629 630 631
M52277EVB_config \
M52277EVB_spansion_config \
M52277EVB_stmicro_config :	unconfig
632 633
	@mkdir -p $(obj)include
	@mkdir -p $(obj)board/freescale/m52277evb
634 635 636 637 638 639 640
	@case "$@" in \
	M52277EVB_config)		FLASH=SPANSION;; \
	M52277EVB_spansion_config)	FLASH=SPANSION;; \
	M52277EVB_stmicro_config)	FLASH=STMICRO;; \
	esac; \
	if [ "$${FLASH}" = "SPANSION" ] ; then \
		echo "#define CONFIG_SYS_SPANSION_BOOT"	>> $(obj)include/config.h ; \
641
		echo "CONFIG_SYS_TEXT_BASE = 0x00000000" > $(obj)board/freescale/m52277evb/config.tmp ; \
642 643 644 645
	fi; \
	if [ "$${FLASH}" = "STMICRO" ] ; then \
		echo "#define CONFIG_CF_SBF"	>> $(obj)include/config.h ; \
		echo "#define CONFIG_SYS_STMICRO_BOOT"	>> $(obj)include/config.h ; \
646
		echo "CONFIG_SYS_TEXT_BASE = 0x43E00000" > $(obj)board/freescale/m52277evb/config.tmp ; \
647
	fi
648
	@$(MKCONFIG) -n $@ -a M52277EVB m68k mcf5227x m52277evb freescale
649

650 651 652
M5235EVB_config \
M5235EVB_Flash16_config \
M5235EVB_Flash32_config:	unconfig
653 654
	@mkdir -p $(obj)include
	@mkdir -p $(obj)board/freescale/m5235evb
655 656 657 658 659 660
	@case "$@" in \
	M5235EVB_config)		FLASH=16;; \
	M5235EVB_Flash16_config)	FLASH=16;; \
	M5235EVB_Flash32_config)	FLASH=32;; \
	esac; \
	if [ "$${FLASH}" != "16" ] ; then \
661
		echo "#define NORFLASH_PS32BIT	1" >> $(obj)include/config.h ; \
662
		echo "CONFIG_SYS_TEXT_BASE = 0xFFC00000" > $(obj)board/freescale/m5235evb/config.tmp ; \
663
	else \
664
		echo "CONFIG_SYS_TEXT_BASE = 0xFFE00000" > $(obj)board/freescale/m5235evb/config.tmp ; \
665
	fi
666
	@$(MKCONFIG) -n $@ -a M5235EVB m68k mcf523x m5235evb freescale
667

668
EB+MCF-EV123_config :		unconfig
669
	@mkdir -p $(obj)board/BuS/EB+MCF-EV123
670
	@echo "CONFIG_SYS_TEXT_BASE = 0xFFE00000"|tee $(obj)board/BuS/EB+MCF-EV123/textbase.mk
671
	@$(MKCONFIG) -n $@ EB+MCF-EV123 m68k mcf52x2 EB+MCF-EV123 BuS
672 673

EB+MCF-EV123_internal_config :	unconfig
674
	@mkdir -p $(obj)board/BuS/EB+MCF-EV123
675
	@echo "CONFIG_SYS_TEXT_BASE = 0xF0000000"|tee $(obj)board/BuS/EB+MCF-EV123/textbase.mk
676
	@$(MKCONFIG) -n $@ EB+MCF-EV123 m68k mcf52x2 EB+MCF-EV123 BuS
677

678 679
M54451EVB_config \
M54451EVB_stmicro_config :	unconfig
680 681
	@mkdir -p $(obj)include
	@mkdir -p $(obj)board/freescale/m54451evb
682
	@case "$@" in \
T
TsiChung Liew 已提交
683
	M54451EVB_config)		FLASH=NOR;; \
684 685
	M54451EVB_stmicro_config)	FLASH=STMICRO;; \
	esac; \
T
TsiChung Liew 已提交
686
	if [ "$${FLASH}" = "NOR" ] ; then \
687
		echo "CONFIG_SYS_TEXT_BASE = 0x00000000" > $(obj)board/freescale/m54451evb/config.tmp ; \
688 689 690
	fi; \
	if [ "$${FLASH}" = "STMICRO" ] ; then \
		echo "#define CONFIG_CF_SBF"	>> $(obj)include/config.h ; \
691
		echo "#define CONFIG_SYS_STMICRO_BOOT"	>> $(obj)include/config.h ; \
692
		echo "CONFIG_SYS_TEXT_BASE = 0x47E00000" > $(obj)board/freescale/m54451evb/config.tmp ; \
693
	fi; \
694
	echo "#define CONFIG_SYS_INPUT_CLKSRC 24000000" >> $(obj)include/config.h ;
695
	@$(MKCONFIG) -n $@ -a M54451EVB m68k mcf5445x m54451evb freescale
696

697 698 699 700 701 702
M54455EVB_config \
M54455EVB_atmel_config \
M54455EVB_intel_config \
M54455EVB_a33_config \
M54455EVB_a66_config \
M54455EVB_i33_config \
703 704
M54455EVB_i66_config \
M54455EVB_stm33_config :	unconfig
705 706
	@mkdir -p $(obj)include
	@mkdir -p $(obj)board/freescale/m54455evb
707 708 709 710 711 712 713 714
	@case "$@" in \
	M54455EVB_config)		FLASH=ATMEL; FREQ=33333333;; \
	M54455EVB_atmel_config)		FLASH=ATMEL; FREQ=33333333;; \
	M54455EVB_intel_config)		FLASH=INTEL; FREQ=33333333;; \
	M54455EVB_a33_config)		FLASH=ATMEL; FREQ=33333333;; \
	M54455EVB_a66_config)		FLASH=ATMEL; FREQ=66666666;; \
	M54455EVB_i33_config)		FLASH=INTEL; FREQ=33333333;; \
	M54455EVB_i66_config)		FLASH=INTEL; FREQ=66666666;; \
715
	M54455EVB_stm33_config)		FLASH=STMICRO; FREQ=33333333;; \
716
	esac; \
717
	if [ "$${FLASH}" = "INTEL" ] ; then \
718
		echo "#define CONFIG_SYS_INTEL_BOOT" >> $(obj)include/config.h ; \
719
		echo "CONFIG_SYS_TEXT_BASE = 0x00000000" > $(obj)board/freescale/m54455evb/config.tmp ; \
720 721
	fi; \
	if [ "$${FLASH}" = "ATMEL" ] ; then \
722
		echo "#define CONFIG_SYS_ATMEL_BOOT"	>> $(obj)include/config.h ; \
723
		echo "CONFIG_SYS_TEXT_BASE = 0x04000000" > $(obj)board/freescale/m54455evb/config.tmp ; \
724
	fi; \
725 726
	if [ "$${FLASH}" = "STMICRO" ] ; then \
		echo "#define CONFIG_CF_SBF"	>> $(obj)include/config.h ; \
727
		echo "#define CONFIG_SYS_STMICRO_BOOT"	>> $(obj)include/config.h ; \
728
		echo "CONFIG_SYS_TEXT_BASE = 0x4FE00000" > $(obj)board/freescale/m54455evb/config.tmp ; \
729
	fi; \
730
	echo "#define CONFIG_SYS_INPUT_CLKSRC $${FREQ}" >> $(obj)include/config.h ; \
731
	$(XECHO) "... with $${FREQ}Hz input clock"
732
	@$(MKCONFIG) -n $@ -a M54455EVB m68k mcf5445x m54455evb freescale
733

W
wdenk 已提交
734 735 736
#========================================================================
# ARM
#========================================================================
737

U
Ulf Samuelsson 已提交
738 739
xtract_omap1610xxx = $(subst _cs0boot,,$(subst _cs3boot,,$(subst _cs_autoboot,,$(subst _config,,$1))))

740 741 742
omap1610inn_config \
omap1610inn_cs0boot_config \
omap1610inn_cs3boot_config \
W
wdenk 已提交
743
omap1610inn_cs_autoboot_config \
744 745
omap1610h2_config \
omap1610h2_cs0boot_config \
W
wdenk 已提交
746 747
omap1610h2_cs3boot_config \
omap1610h2_cs_autoboot_config:	unconfig
748
	@mkdir -p $(obj)include
749
	@if [ "$(findstring _cs0boot_, $@)" ] ; then \
750
		echo "#define CONFIG_CS0_BOOT" >> .$(obj)include/config.h ; \
W
wdenk 已提交
751
	elif [ "$(findstring _cs_autoboot_, $@)" ] ; then \
752
		echo "#define CONFIG_CS_AUTOBOOT" >> $(obj)include/config.h ; \
753
	else \
754
		echo "#define CONFIG_CS3_BOOT" >> $(obj)include/config.h ; \
755
	fi;
756
	@$(MKCONFIG) -n $@ -a $(call xtract_omap1610xxx,$@) arm arm926ejs omap1610inn ti omap
W
wdenk 已提交
757

W
wdenk 已提交
758 759 760
omap730p2_config \
omap730p2_cs0boot_config \
omap730p2_cs3boot_config :	unconfig
761
	@mkdir -p $(obj)include
W
wdenk 已提交
762
	@if [ "$(findstring _cs0boot_, $@)" ] ; then \
763
		echo "#define CONFIG_CS0_BOOT" >> $(obj)include/config.h ; \
W
wdenk 已提交
764
	else \
765
		echo "#define CONFIG_CS3_BOOT" >> $(obj)include/config.h ; \
W
wdenk 已提交
766
	fi;
767
	@$(MKCONFIG) -n $@ -a omap730p2 arm arm926ejs omap730p2 ti omap
W
wdenk 已提交
768

769
spear300_config \
770 771
spear310_config \
spear320_config :	unconfig
772
	@$(MKCONFIG) -n $@ -t $@ spear3xx arm arm926ejs $(@:_config=) spear spear
773

774
spear600_config :	unconfig
775
	@$(MKCONFIG) -n $@ -t $@ spear6xx arm arm926ejs $(@:_config=) spear spear
776

777 778 779 780 781 782 783 784
SX1_stdout_serial_config \
SX1_config:		unconfig
	@mkdir -p $(obj)include
	@if [ "$(findstring _stdout_serial_, $@)" ] ; then \
		echo "#undef CONFIG_STDOUT_USBTTY" >> $(obj)include/config.h ; \
	else \
		echo "#define CONFIG_STDOUT_USBTTY" >> $(obj)include/config.h ; \
	fi;
785
	@$(MKCONFIG) -n $@ SX1 arm arm925t sx1
W
wdenk 已提交
786

W
wdenk 已提交
787
#########################################################################
W
wdenk 已提交
788
## XScale Systems
W
wdenk 已提交
789 790
#########################################################################

791
pdnb3_config \
792
scpu_config:	unconfig
793
	@mkdir -p $(obj)include
794
	@if [ "$(findstring scpu_,$@)" ] ; then \
795
		echo "#define CONFIG_SCPU"	>>$(obj)include/config.h ; \
796
	fi
797
	@$(MKCONFIG) -n $@ -a pdnb3 arm ixp pdnb3 prodrive
W
Wolfgang Denk 已提交
798

799 800 801
#########################################################################
## ARM1136 Systems
#########################################################################
W
wdenk 已提交
802

P
Peter Pearse 已提交
803
apollon_config		: unconfig
804
	@mkdir -p $(obj)include
805 806
	@echo "#define CONFIG_ONENAND_U_BOOT" > $(obj)include/config.h
	@echo "CONFIG_ONENAND_U_BOOT = y" >> $(obj)include/config.mk
807
	@$(MKCONFIG) $@ arm arm1136 apollon - omap24xx
P
Peter Pearse 已提交
808

809 810 811 812 813 814 815 816
#########################################################################
## ARM1176 Systems
#########################################################################
smdk6400_noUSB_config	\
smdk6400_config	:	unconfig
	@mkdir -p $(obj)include $(obj)board/samsung/smdk6400
	@mkdir -p $(obj)nand_spl/board/samsung/smdk6400
	@echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
817
	@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
818 819 820 821 822
	@if [ -z "$(findstring smdk6400_noUSB_config,$@)" ]; then			\
		echo "RAM_TEXT = 0x57e00000" >> $(obj)board/samsung/smdk6400/config.tmp;\
	else										\
		echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/samsung/smdk6400/config.tmp;\
	fi
W
Wolfgang Denk 已提交
823
	@$(MKCONFIG) smdk6400 arm arm1176 smdk6400 samsung s3c64xx
824 825
	@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk

W
wdenk 已提交
826 827
#########################################################################
#########################################################################
W
wdenk 已提交
828 829

clean:
830
	@rm -f $(obj)examples/standalone/82559_eeprom			  \
831
	       $(obj)examples/standalone/atmel_df_pow2			  \
832 833 834 835 836
	       $(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				  \
837
	       $(obj)examples/standalone/smc911{11,x}_eeprom		  \
838 839
	       $(obj)examples/standalone/test_burst			  \
	       $(obj)examples/standalone/timer
P
Peter Tyser 已提交
840
	@rm -f $(obj)examples/api/demo{,.bin}
841 842 843 844 845 846 847 848
	@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}	  \
849
	       $(obj)board/matrix_vision/*/bootscript.img		  \
850
	       $(obj)board/voiceblue/eeprom 				  \
851
	       $(obj)u-boot.lds						  \
852 853
	       $(obj)arch/blackfin/cpu/bootrom-asm-offsets.[chs]	  \
	       $(obj)arch/blackfin/cpu/init.{lds,elf}
854
	@rm -f $(obj)include/bmp_logo.h
855
	@rm -f $(obj)lib/asm-offsets.s
856 857
	@rm -f $(obj)include/generated/asm-offsets.h
	@rm -f $(obj)$(CPUDIR)/$(SOC)/asm-offsets.s
858
	@rm -f $(obj)nand_spl/{u-boot.lds,u-boot-nand_spl.lds,u-boot-spl,u-boot-spl.map,System.map}
K
Kyungmin Park 已提交
859
	@rm -f $(obj)onenand_ipl/onenand-{ipl,ipl.bin,ipl.map}
860
	@rm -f $(obj)mmc_spl/{u-boot.lds,u-boot-spl,u-boot-spl.map,u-boot-spl.bin,u-boot-mmc-spl.bin}
K
Kyungmin Park 已提交
861
	@rm -f $(ONENAND_BIN)
862
	@rm -f $(obj)onenand_ipl/u-boot.lds
863
	@rm -f $(obj)spl/{u-boot-spl,u-boot-spl.bin,u-boot-spl.lds,u-boot-spl.map}
P
Peter Tyser 已提交
864
	@rm -f $(TIMESTAMP_FILE) $(VERSION_FILE)
865
	@find $(OBJTREE) -type f \
W
wdenk 已提交
866
		\( -name 'core' -o -name '*.bak' -o -name '*~' \
867
		-o -name '*.o'	-o -name '*.a' -o -name '*.exe'	\) -print \
W
wdenk 已提交
868 869 870
		| xargs rm -f

clobber:	clean
871
	@find $(OBJTREE) -type f \( -name '*.depend*' \
W
wdenk 已提交
872 873 874
		-o -name '*.srec' -o -name '*.bin' -o -name u-boot.img \) \
		-print0 \
		| xargs -0 rm -f
L
Li Yang 已提交
875
	@rm -f $(OBJS) $(obj)*.bak $(obj)ctags $(obj)etags $(obj)TAGS \
W
Wolfgang Denk 已提交
876
		$(obj)cscope.* $(obj)*.*~
877
	@rm -f $(obj)u-boot $(obj)u-boot.map $(obj)u-boot.hex $(ALL-y)
878
	@rm -f $(obj)u-boot.kwb
879
	@rm -f $(obj)u-boot.imx
880
	@rm -f $(obj)u-boot.ubl
881
	@rm -f $(obj)tools/{env/crc32.c,inca-swap-bytes}
S
Stefan Roese 已提交
882
	@rm -f $(obj)arch/powerpc/cpu/mpc824x/bedbug_603e.c
883
	@rm -fr $(obj)include/asm/proc $(obj)include/asm/arch $(obj)include/asm
884
	@rm -fr $(obj)include/generated
885 886
	@[ ! -d $(obj)nand_spl ] || find $(obj)nand_spl -name "*" -type l -print | xargs rm -f
	@[ ! -d $(obj)onenand_ipl ] || find $(obj)onenand_ipl -name "*" -type l -print | xargs rm -f
887
	@[ ! -d $(obj)mmc_spl ] || find $(obj)mmc_spl -name "*" -type l -print | xargs rm -f
888 889 890

mrproper \
distclean:	clobber unconfig
891
ifneq ($(OBJTREE),$(SRCTREE))
892
	rm -rf $(obj)*
893
endif
W
wdenk 已提交
894 895 896

backup:
	F=`basename $(TOPDIR)` ; cd .. ; \
897
	gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F
W
wdenk 已提交
898 899

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