Makefile 33.6 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
TIMESTAMP_FILE = $(obj)include/timestamp_autogenerated.h
34
VERSION_FILE = $(obj)include/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 140
# The "tools" are needed early, so put this first
# Don't include stuff already done in $(LIBS)
SUBDIRS	= tools \
141
	  examples/standalone \
P
Peter Tyser 已提交
142
	  examples/api
143

144
.PHONY : $(SUBDIRS) $(VERSION_FILE)
145

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

148 149 150 151 152 153 154
# 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 已提交
155
# load ARCH, BOARD, and CPU configuration
156
include $(obj)include/config.mk
W
wdenk 已提交
157
export	ARCH CPU BOARD VENDOR SOC
158

159
# set default to nothing for native builds
W
Wolfgang Denk 已提交
160
ifeq ($(HOSTARCH),$(ARCH))
161
CROSS_COMPILE ?=
W
wdenk 已提交
162
endif
W
wdenk 已提交
163

164 165 166
# load other configuration
include $(TOPDIR)/config.mk

167 168 169 170 171 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
# 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 已提交
197 198 199
#########################################################################
# U-Boot objects....order is important (i.e. start must be first)

P
Peter Tyser 已提交
200
OBJS  = $(CPUDIR)/start.o
G
Graeme Russ 已提交
201
ifeq ($(CPU),x86)
P
Peter Tyser 已提交
202 203
OBJS += $(CPUDIR)/start16.o
OBJS += $(CPUDIR)/resetvec.o
W
wdenk 已提交
204
endif
W
wdenk 已提交
205
ifeq ($(CPU),ppc4xx)
P
Peter Tyser 已提交
206
OBJS += $(CPUDIR)/resetvec.o
W
wdenk 已提交
207
endif
W
wdenk 已提交
208
ifeq ($(CPU),mpc85xx)
P
Peter Tyser 已提交
209
OBJS += $(CPUDIR)/resetvec.o
W
wdenk 已提交
210
endif
W
wdenk 已提交
211

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

214 215 216
LIBS  = lib/libgeneric.o
LIBS += lib/lzma/liblzma.o
LIBS += lib/lzo/liblzo.o
217
LIBS += lib/zlib/libz.o
218
LIBS += $(shell if [ -f board/$(VENDOR)/common/Makefile ]; then echo \
219 220
	"board/$(VENDOR)/common/lib$(VENDOR).o"; fi)
LIBS += $(CPUDIR)/lib$(CPU).o
W
wdenk 已提交
221
ifdef SOC
222
LIBS += $(CPUDIR)/$(SOC)/lib$(SOC).o
W
wdenk 已提交
223
endif
S
Stefan Roese 已提交
224
ifeq ($(CPU),ixp)
225
LIBS += arch/arm/cpu/ixp/npe/libnpe.o
S
Stefan Roese 已提交
226
endif
227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253
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 已提交
254
ifeq ($(CPU),mpc83xx)
255 256
LIBS += drivers/qe/libqe.o
LIBS += arch/powerpc/cpu/mpc8xxx/lib8xxx.o
D
Dave Liu 已提交
257
endif
A
Andy Fleming 已提交
258
ifeq ($(CPU),mpc85xx)
259 260 261
LIBS += drivers/qe/libqe.o
LIBS += arch/powerpc/cpu/mpc8xxx/ddr/libddr.o
LIBS += arch/powerpc/cpu/mpc8xxx/lib8xxx.o
262 263
endif
ifeq ($(CPU),mpc86xx)
264 265
LIBS += arch/powerpc/cpu/mpc8xxx/ddr/libddr.o
LIBS += arch/powerpc/cpu/mpc8xxx/lib8xxx.o
A
Andy Fleming 已提交
266
endif
267 268 269
LIBS += drivers/rtc/librtc.o
LIBS += drivers/serial/libserial.o
LIBS += drivers/twserial/libtws.o
M
Mike Frysinger 已提交
270
LIBS += drivers/usb/eth/libusb_eth.o
271 272 273 274 275 276 277 278 279 280
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
281

282
ifeq ($(SOC),omap3)
283
LIBS += $(CPUDIR)/omap-common/libomap-common.o
284 285
endif
ifeq ($(SOC),omap4)
286
LIBS += $(CPUDIR)/omap-common/libomap-common.o
287 288
endif

289
ifeq ($(SOC),s5pc1xx)
290
LIBS += $(CPUDIR)/s5p-common/libs5p-common.o
291 292
endif
ifeq ($(SOC),s5pc2xx)
293
LIBS += $(CPUDIR)/s5p-common/libs5p-common.o
294 295
endif

296
LIBS := $(addprefix $(obj),$(sort $(LIBS)))
297
.PHONY : $(LIBS) $(TIMESTAMP_FILE)
W
wdenk 已提交
298

299
LIBBOARD = board/$(BOARDDIR)/lib$(BOARD).o
W
Wolfgang Denk 已提交
300 301
LIBBOARD := $(addprefix $(obj),$(LIBBOARD))

W
wdenk 已提交
302
# Add GCC lib
303 304
ifdef USE_PRIVATE_LIBGCC
ifeq ("$(USE_PRIVATE_LIBGCC)", "yes")
305
PLATFORM_LIBGCC = $(OBJTREE)/arch/$(ARCH)/lib/libgcc.o
306 307 308 309 310 311 312 313
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 已提交
314

315 316 317 318 319 320 321 322
# 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')

323
__OBJS := $(subst $(obj),,$(OBJS))
W
Wolfgang Denk 已提交
324
__LIBS := $(subst $(obj),,$(LIBS)) $(subst $(obj),,$(LIBBOARD))
325

326
#########################################################################
W
wdenk 已提交
327 328
#########################################################################

329 330 331 332 333 334 335 336 337 338 339 340 341 342 343
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

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

347 348
ALL-$(CONFIG_NAND_U_BOOT) += $(obj)u-boot-nand.bin
ALL-$(CONFIG_ONENAND_U_BOOT) += $(obj)u-boot-onenand.bin
349
ONENAND_BIN ?= $(obj)onenand_ipl/onenand-ipl-2k.bin
350
ALL-$(CONFIG_MMC_U_BOOT) += $(obj)mmc_spl/u-boot-mmc-spl.bin
351
ALL-$(CONFIG_SPL) += $(obj)spl/u-boot-spl.bin
352

353
all:		$(ALL-y)
W
wdenk 已提交
354

355
$(obj)u-boot.hex:	$(obj)u-boot
W
wdenk 已提交
356 357
		$(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@

358
$(obj)u-boot.srec:	$(obj)u-boot
359
		$(OBJCOPY) -O srec $< $@
W
wdenk 已提交
360

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

365
$(obj)u-boot.ldr:	$(obj)u-boot
366
		$(CREATE_LDR_ENV)
367
		$(LDR) -T $(CONFIG_BFIN_CPU) -c $@ $< $(LDR_FLAGS)
368
		$(BOARD_SIZE_CHECK)
369 370 371 372 373 374 375

$(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

376
$(obj)u-boot.img:	$(obj)u-boot.bin
377
		$(obj)tools/mkimage -A $(ARCH) -T firmware -C none \
A
aneeshv 已提交
378
		-O u-boot -a $(CONFIG_SYS_TEXT_BASE) -e 0 \
379
		-n $(shell sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE) | \
380 381 382
			sed -e 's/"[	 ]*$$/ for $(BOARD) board"/') \
		-d $< $@

383
$(obj)u-boot.imx:       $(obj)u-boot.bin
384
		$(obj)tools/mkimage -n  $(CONFIG_IMX_CONFIG) -T imximage \
385
		-e $(CONFIG_SYS_TEXT_BASE) -d $< $@
386

387
$(obj)u-boot.kwb:       $(obj)u-boot.bin
388
		$(obj)tools/mkimage -n $(CONFIG_SYS_KWD_CONFIG) -T kwbimage \
389
		-a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) -d $< $@
390

391
$(obj)u-boot.sha1:	$(obj)u-boot.bin
392
		$(obj)tools/ubsha1 $(obj)u-boot.bin
393

394
$(obj)u-boot.dis:	$(obj)u-boot
W
wdenk 已提交
395 396
		$(OBJDUMP) -d $< > $@

397 398 399 400
$(obj)u-boot.ubl:       $(obj)u-boot-nand.bin
		$(obj)tools/mkimage -n $(UBL_CONFIG) -T ublimage \
		-e $(CONFIG_SYS_TEXT_BASE) -d $< $@

401
GEN_UBOOT = \
W
Wolfgang Denk 已提交
402 403
		UNDEF_SYM=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
		sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
404
		cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) $$UNDEF_SYM $(__OBJS) \
405
			--start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
W
wdenk 已提交
406
			-Map u-boot.map -o u-boot
407 408
$(obj)u-boot:	depend \
		$(SUBDIRS) $(OBJS) $(LIBBOARD) $(LIBS) $(LDSCRIPT) $(obj)u-boot.lds
409 410
		$(GEN_UBOOT)
ifeq ($(CONFIG_KALLSYMS),y)
411 412 413 414
		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
415 416
		$(GEN_UBOOT) $(obj)common/system_map.o
endif
W
wdenk 已提交
417

418
$(OBJS):	depend
P
Peter Tyser 已提交
419
		$(MAKE) -C $(CPUDIR) $(if $(REMOTE_BUILD),$@,$(notdir $@))
420

421
$(LIBS):	depend $(SUBDIRS)
422
		$(MAKE) -C $(dir $(subst $(obj),,$@))
W
wdenk 已提交
423

424
$(LIBBOARD):	depend $(LIBS)
W
Wolfgang Denk 已提交
425 426
		$(MAKE) -C $(dir $(subst $(obj),,$@))

427
$(SUBDIRS):	depend
W
wdenk 已提交
428
		$(MAKE) -C $@ all
W
wdenk 已提交
429

430
$(LDSCRIPT):	depend
431 432
		$(MAKE) -C $(dir $@) $(notdir $@)

433 434 435
$(obj)u-boot.lds: $(LDSCRIPT)
		$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@

436
nand_spl:	$(TIMESTAMP_FILE) $(VERSION_FILE) depend
437
		$(MAKE) -C nand_spl/board/$(BOARDDIR) all
438

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

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

445
$(obj)u-boot-onenand.bin:	onenand_ipl $(obj)u-boot.bin
K
Kyungmin Park 已提交
446
		cat $(ONENAND_BIN) $(obj)u-boot.bin > $(obj)u-boot-onenand.bin
447

448 449 450 451 452
mmc_spl:	$(TIMESTAMP_FILE) $(VERSION_FILE) depend
		$(MAKE) -C mmc_spl/board/$(BOARDDIR) all

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

453 454 455
$(obj)spl/u-boot-spl.bin:		depend
		$(MAKE) -C spl all

456
$(TIMESTAMP_FILE):
457 458
		@LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"' > $@
		@LC_ALL=C date +'#define U_BOOT_TIME "%T"' >> $@
459

460
updater:
M
Mike Frysinger 已提交
461
		$(MAKE) -C tools/updater all
462

D
Daniel Hobi 已提交
463 464
# Explicitly make _depend in subdirs containing multiple targets to prevent
# parallel sub-makes creating .depend files simultaneously.
465 466
depend dep:	$(TIMESTAMP_FILE) $(VERSION_FILE) \
		$(obj)include/autoconf.mk \
467 468
		$(obj)include/generated/generic-asm-offsets.h \
		$(obj)include/generated/asm-offsets.h
P
Peter Tyser 已提交
469
		for dir in $(SUBDIRS) $(CPUDIR) $(dir $(LDSCRIPT)) ; do \
D
Daniel Hobi 已提交
470
			$(MAKE) -C $$dir _depend ; done
W
wdenk 已提交
471

L
Li Yang 已提交
472 473
TAG_SUBDIRS = $(SUBDIRS)
TAG_SUBDIRS += $(dir $(__LIBS))
474 475
TAG_SUBDIRS += include

476 477 478
FIND := find
FINDFLAGS := -L

479
tags ctags:
480
		ctags -w -o $(obj)ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
L
Li Yang 已提交
481
						-name '*.[chS]' -print`
W
wdenk 已提交
482 483

etags:
484
		etags -a -o $(obj)etags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
L
Li Yang 已提交
485
						-name '*.[chS]' -print`
L
Li Yang 已提交
486
cscope:
487 488
		$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \
						cscope.files
L
Li Yang 已提交
489
		cscope -b -q -k
W
wdenk 已提交
490

491 492
SYSTEM_MAP = \
		$(NM) $1 | \
W
wdenk 已提交
493
		grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
494 495 496
		LC_ALL=C sort
$(obj)System.map:	$(obj)u-boot
		@$(call SYSTEM_MAP,$<) > $(obj)System.map
W
wdenk 已提交
497

498 499 500 501 502 503
#
# 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.
504 505
$(obj)include/autoconf.mk.dep: $(obj)include/config.h include/common.h
	@$(XECHO) Generating $@ ; \
506
	set -e ; \
507
	: Generate the dependancies ; \
508
	$(CC) -x c -DDO_DEPS_ONLY -M $(HOSTCFLAGS) $(CPPFLAGS) \
509 510 511 512 513
		-MQ $(obj)include/autoconf.mk include/common.h > $@

$(obj)include/autoconf.mk: $(obj)include/config.h
	@$(XECHO) Generating $@ ; \
	set -e ; \
514
	: Extract the config macros ; \
515
	$(CPP) $(CFLAGS) -DDO_DEPS_ONLY -dM include/common.h | \
516 517
		sed -n -f tools/scripts/define2mk.sed > $@.tmp && \
	mv $@.tmp $@
518

519 520 521 522 523 524 525 526 527 528 529 530
$(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

531 532 533 534 535 536 537 538 539 540 541 542 543 544 545
$(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 已提交
546
#########################################################################
547
else	# !config.mk
548 549
all $(obj)u-boot.hex $(obj)u-boot.srec $(obj)u-boot.bin \
$(obj)u-boot.img $(obj)u-boot.dis $(obj)u-boot \
550
$(filter-out tools,$(SUBDIRS)) $(TIMESTAMP_FILE) \
M
Mike Frysinger 已提交
551
updater depend dep tags ctags etags cscope $(obj)System.map:
W
wdenk 已提交
552 553
	@echo "System not configured - see README" >&2
	@ exit 1
554

555
tools: $(VERSION_FILE)
M
Mike Frysinger 已提交
556
	$(MAKE) -C $@ all
557
endif	# config.mk
W
wdenk 已提交
558

559
$(VERSION_FILE):
560
		@mkdir -p $(dir $(VERSION_FILE))
561 562 563 564 565 566 567 568 569 570 571 572
		@( 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 $@

M
Mike Frysinger 已提交
573 574 575 576
easylogo env gdb:
	$(MAKE) -C tools/$@ all MTD_VERSION=${MTD_VERSION}
gdbtools: gdb

577
tools-all: easylogo env gdb $(VERSION_FILE)
M
Mike Frysinger 已提交
578 579
	$(MAKE) -C tools HOST_TOOLS_ALL=y

580 581
.PHONY : CHANGELOG
CHANGELOG:
582 583
	git log --no-merges U-Boot-1_1_5.. | \
	unexpand -a | sed -e 's/\s\s*$$//' > $@
584

585
include/license.h: tools/bin2header COPYING
586
	cat COPYING | gzip -9 -c | ./tools/bin2header license_gzip > include/license.h
W
wdenk 已提交
587 588 589
#########################################################################

unconfig:
590
	@rm -f $(obj)include/config.h $(obj)include/config.mk \
591 592
		$(obj)board/*/config.tmp $(obj)board/*/*/config.tmp \
		$(obj)include/autoconf.mk $(obj)include/autoconf.mk.dep
W
wdenk 已提交
593

594 595 596
%_config::	unconfig
	@$(MKCONFIG) -A $(@:_config=)

597 598
sinclude $(obj).boards.depend
$(obj).boards.depend:	boards.cfg
599
	awk '(NF && $$1 !~ /^#/) { print $$1 ": " $$1 "_config; $$(MAKE)" }' $< > $@
600

601 602 603 604 605 606
#
# 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 已提交
607 608 609 610
#########################################################################
## Coldfire
#########################################################################

W
Wolfgang Wegner 已提交
611 612
astro_mcf5373l_config \
astro_mcf5373l_RAM_config :	unconfig
613
	@$(MKCONFIG) -n $@ -t $@ astro_mcf5373l m68k mcf532x mcf5373l astro
W
Wolfgang Wegner 已提交
614

615 616 617 618 619 620 621 622 623 624
M52277EVB_config \
M52277EVB_spansion_config \
M52277EVB_stmicro_config :	unconfig
	@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 ; \
625
		echo "CONFIG_SYS_TEXT_BASE = 0x00000000" > $(obj)board/freescale/m52277evb/config.tmp ; \
626 627 628 629 630
		cp $(obj)board/freescale/m52277evb/u-boot.spa $(obj)board/freescale/m52277evb/u-boot.lds ; \
	fi; \
	if [ "$${FLASH}" = "STMICRO" ] ; then \
		echo "#define CONFIG_CF_SBF"	>> $(obj)include/config.h ; \
		echo "#define CONFIG_SYS_STMICRO_BOOT"	>> $(obj)include/config.h ; \
631
		echo "CONFIG_SYS_TEXT_BASE = 0x43E00000" > $(obj)board/freescale/m52277evb/config.tmp ; \
632 633
		cp $(obj)board/freescale/m52277evb/u-boot.stm $(obj)board/freescale/m52277evb/u-boot.lds ; \
	fi
634
	@$(MKCONFIG) -n $@ -a M52277EVB m68k mcf5227x m52277evb freescale
635

636 637 638 639 640 641 642 643 644
M5235EVB_config \
M5235EVB_Flash16_config \
M5235EVB_Flash32_config:	unconfig
	@case "$@" in \
	M5235EVB_config)		FLASH=16;; \
	M5235EVB_Flash16_config)	FLASH=16;; \
	M5235EVB_Flash32_config)	FLASH=32;; \
	esac; \
	if [ "$${FLASH}" != "16" ] ; then \
645
		echo "#define NORFLASH_PS32BIT	1" >> $(obj)include/config.h ; \
646
		echo "CONFIG_SYS_TEXT_BASE = 0xFFC00000" > $(obj)board/freescale/m5235evb/config.tmp ; \
647 648
		cp $(obj)board/freescale/m5235evb/u-boot.32 $(obj)board/freescale/m5235evb/u-boot.lds ; \
	else \
649
		echo "CONFIG_SYS_TEXT_BASE = 0xFFE00000" > $(obj)board/freescale/m5235evb/config.tmp ; \
650 651
		cp $(obj)board/freescale/m5235evb/u-boot.16 $(obj)board/freescale/m5235evb/u-boot.lds ; \
	fi
652
	@$(MKCONFIG) -n $@ -a M5235EVB m68k mcf523x m5235evb freescale
653

W
Wolfgang Denk 已提交
654
cobra5272_config :		unconfig
655
	@$(MKCONFIG) $@ m68k mcf52x2 cobra5272
W
Wolfgang Denk 已提交
656

657
EB+MCF-EV123_config :		unconfig
658 659
	@mkdir -p $(obj)include
	@mkdir -p $(obj)board/BuS/EB+MCF-EV123
660
	@echo "CONFIG_SYS_TEXT_BASE = 0xFFE00000"|tee $(obj)board/BuS/EB+MCF-EV123/textbase.mk
661
	@$(MKCONFIG) -n $@ EB+MCF-EV123 m68k mcf52x2 EB+MCF-EV123 BuS
662 663

EB+MCF-EV123_internal_config :	unconfig
664 665
	@mkdir -p $(obj)include
	@mkdir -p $(obj)board/BuS/EB+MCF-EV123
666
	@echo "CONFIG_SYS_TEXT_BASE = 0xF0000000"|tee $(obj)board/BuS/EB+MCF-EV123/textbase.mk
667
	@$(MKCONFIG) -n $@ EB+MCF-EV123 m68k mcf52x2 EB+MCF-EV123 BuS
668

669 670 671 672 673 674 675
M5329AFEE_config \
M5329BFEE_config :	unconfig
	@case "$@" in \
	M5329AFEE_config)	NAND=0;; \
	M5329BFEE_config)	NAND=16;; \
	esac; \
	if [ "$${NAND}" != "0" ] ; then \
676
		echo "#define NANDFLASH_SIZE	$${NAND}" > $(obj)include/config.h ; \
677
	fi
678
	@$(MKCONFIG) -n $@ -a M5329EVB m68k mcf532x m5329evb freescale
679

680 681 682 683 684 685 686 687 688
M5373EVB_config :	unconfig
	@case "$@" in \
	M5373EVB_config)	NAND=16;; \
	esac; \
	if [ "$${NAND}" != "0" ] ; then \
		echo "#define NANDFLASH_SIZE	$${NAND}" > $(obj)include/config.h ; \
	fi
	@$(MKCONFIG) -a M5373EVB m68k mcf532x m5373evb freescale

689 690 691
M54451EVB_config \
M54451EVB_stmicro_config :	unconfig
	@case "$@" in \
T
TsiChung Liew 已提交
692
	M54451EVB_config)		FLASH=NOR;; \
693 694
	M54451EVB_stmicro_config)	FLASH=STMICRO;; \
	esac; \
T
TsiChung Liew 已提交
695
	if [ "$${FLASH}" = "NOR" ] ; then \
696
		echo "CONFIG_SYS_TEXT_BASE = 0x00000000" > $(obj)board/freescale/m54451evb/config.tmp ; \
697 698 699 700
		cp $(obj)board/freescale/m54451evb/u-boot.spa $(obj)board/freescale/m54451evb/u-boot.lds ; \
	fi; \
	if [ "$${FLASH}" = "STMICRO" ] ; then \
		echo "#define CONFIG_CF_SBF"	>> $(obj)include/config.h ; \
701
		echo "#define CONFIG_SYS_STMICRO_BOOT"	>> $(obj)include/config.h ; \
702
		echo "CONFIG_SYS_TEXT_BASE = 0x47E00000" > $(obj)board/freescale/m54451evb/config.tmp ; \
703 704
		cp $(obj)board/freescale/m54451evb/u-boot.stm $(obj)board/freescale/m54451evb/u-boot.lds ; \
	fi; \
705
	echo "#define CONFIG_SYS_INPUT_CLKSRC 24000000" >> $(obj)include/config.h ;
706
	@$(MKCONFIG) -n $@ -a M54451EVB m68k mcf5445x m54451evb freescale
707

708 709 710 711 712 713
M54455EVB_config \
M54455EVB_atmel_config \
M54455EVB_intel_config \
M54455EVB_a33_config \
M54455EVB_a66_config \
M54455EVB_i33_config \
714 715
M54455EVB_i66_config \
M54455EVB_stm33_config :	unconfig
716 717 718 719 720 721 722 723
	@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;; \
724
	M54455EVB_stm33_config)		FLASH=STMICRO; FREQ=33333333;; \
725
	esac; \
726
	if [ "$${FLASH}" = "INTEL" ] ; then \
727
		echo "#define CONFIG_SYS_INTEL_BOOT" >> $(obj)include/config.h ; \
728
		echo "CONFIG_SYS_TEXT_BASE = 0x00000000" > $(obj)board/freescale/m54455evb/config.tmp ; \
729
		cp $(obj)board/freescale/m54455evb/u-boot.int $(obj)board/freescale/m54455evb/u-boot.lds ; \
730 731
	fi; \
	if [ "$${FLASH}" = "ATMEL" ] ; then \
732
		echo "#define CONFIG_SYS_ATMEL_BOOT"	>> $(obj)include/config.h ; \
733
		echo "CONFIG_SYS_TEXT_BASE = 0x04000000" > $(obj)board/freescale/m54455evb/config.tmp ; \
734
		cp $(obj)board/freescale/m54455evb/u-boot.atm $(obj)board/freescale/m54455evb/u-boot.lds ; \
735
	fi; \
736 737
	if [ "$${FLASH}" = "STMICRO" ] ; then \
		echo "#define CONFIG_CF_SBF"	>> $(obj)include/config.h ; \
738
		echo "#define CONFIG_SYS_STMICRO_BOOT"	>> $(obj)include/config.h ; \
739
		echo "CONFIG_SYS_TEXT_BASE = 0x4FE00000" > $(obj)board/freescale/m54455evb/config.tmp ; \
740 741
		cp $(obj)board/freescale/m54455evb/u-boot.stm $(obj)board/freescale/m54455evb/u-boot.lds ; \
	fi; \
742
	echo "#define CONFIG_SYS_INPUT_CLKSRC $${FREQ}" >> $(obj)include/config.h ; \
743
	$(XECHO) "... with $${FREQ}Hz input clock"
744
	@$(MKCONFIG) -n $@ -a M54455EVB m68k mcf5445x m54455evb freescale
745

746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761
M5475AFE_config \
M5475BFE_config \
M5475CFE_config \
M5475DFE_config \
M5475EFE_config \
M5475FFE_config \
M5475GFE_config :	unconfig
	@case "$@" in \
	M5475AFE_config)	BOOT=2;CODE=0;VID=0;USB=0;RAM=64;RAM1=0;; \
	M5475BFE_config)	BOOT=2;CODE=16;VID=0;USB=0;RAM=64;RAM1=0;; \
	M5475CFE_config)	BOOT=2;CODE=16;VID=1;USB=1;RAM=64;RAM1=0;; \
	M5475DFE_config)	BOOT=2;CODE=0;VID=0;USB=1;RAM=64;RAM1=0;; \
	M5475EFE_config)	BOOT=2;CODE=0;VID=1;USB=1;RAM=64;RAM1=0;; \
	M5475FFE_config)	BOOT=2;CODE=32;VID=1;USB=1;RAM=64;RAM1=64;; \
	M5475GFE_config)	BOOT=4;CODE=0;VID=0;USB=0;RAM=64;RAM1=0;; \
	esac; \
762 763 764
	echo "#define CONFIG_SYS_BUSCLK	133333333" > $(obj)include/config.h ; \
	echo "#define CONFIG_SYS_BOOTSZ	$${BOOT}" >> $(obj)include/config.h ; \
	echo "#define CONFIG_SYS_DRAMSZ	$${RAM}" >> $(obj)include/config.h ; \
765
	if [ "$${RAM1}" != "0" ] ; then \
766
		echo "#define CONFIG_SYS_DRAMSZ1	$${RAM1}" >> $(obj)include/config.h ; \
767 768
	fi; \
	if [ "$${CODE}" != "0" ] ; then \
769
		echo "#define CONFIG_SYS_NOR1SZ	$${CODE}" >> $(obj)include/config.h ; \
770 771
	fi; \
	if [ "$${VID}" == "1" ] ; then \
772
		echo "#define CONFIG_SYS_VIDEO" >> $(obj)include/config.h ; \
773 774
	fi; \
	if [ "$${USB}" == "1" ] ; then \
775
		echo "#define CONFIG_SYS_USBCTRL" >> $(obj)include/config.h ; \
776
	fi
777
	@$(MKCONFIG) -n $@ -a M5475EVB m68k mcf547x_8x m547xevb freescale
778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794

M5485AFE_config \
M5485BFE_config \
M5485CFE_config \
M5485DFE_config \
M5485EFE_config \
M5485FFE_config \
M5485GFE_config \
M5485HFE_config :	unconfig
	@case "$@" in \
	M5485AFE_config)	BOOT=2;CODE=0;VID=0;USB=0;RAM=64;RAM1=0;; \
	M5485BFE_config)	BOOT=2;CODE=16;VID=0;USB=0;RAM=64;RAM1=0;; \
	M5485CFE_config)	BOOT=2;CODE=16;VID=1;USB=1;RAM=64;RAM1=0;; \
	M5485DFE_config)	BOOT=2;CODE=0;VID=0;USB=1;RAM=64;RAM1=0;; \
	M5485EFE_config)	BOOT=2;CODE=0;VID=1;USB=1;RAM=64;RAM1=0;; \
	M5485FFE_config)	BOOT=2;CODE=32;VID=1;USB=1;RAM=64;RAM1=64;; \
	M5485GFE_config)	BOOT=4;CODE=0;VID=0;USB=0;RAM=64;RAM1=0;; \
795
	M5485HFE_config)	BOOT=2;CODE=16;VID=1;USB=0;RAM=64;RAM1=0;; \
796
	esac; \
797 798 799
	echo "#define CONFIG_SYS_BUSCLK	100000000" > $(obj)include/config.h ; \
	echo "#define CONFIG_SYS_BOOTSZ	$${BOOT}" >> $(obj)include/config.h ; \
	echo "#define CONFIG_SYS_DRAMSZ	$${RAM}" >> $(obj)include/config.h ; \
800
	if [ "$${RAM1}" != "0" ] ; then \
801
		echo "#define CONFIG_SYS_DRAMSZ1	$${RAM1}" >> $(obj)include/config.h ; \
802 803
	fi; \
	if [ "$${CODE}" != "0" ] ; then \
804
		echo "#define CONFIG_SYS_NOR1SZ	$${CODE}" >> $(obj)include/config.h ; \
805 806
	fi; \
	if [ "$${VID}" == "1" ] ; then \
807
		echo "#define CONFIG_SYS_VIDEO" >> $(obj)include/config.h ; \
808 809
	fi; \
	if [ "$${USB}" == "1" ] ; then \
810
		echo "#define CONFIG_SYS_USBCTRL" >> $(obj)include/config.h ; \
811
	fi
812
	@$(MKCONFIG) -n $@ -a M5485EVB m68k mcf547x_8x m548xevb freescale
813

W
wdenk 已提交
814 815 816
#========================================================================
# ARM
#========================================================================
817

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

820 821 822
omap1610inn_config \
omap1610inn_cs0boot_config \
omap1610inn_cs3boot_config \
W
wdenk 已提交
823
omap1610inn_cs_autoboot_config \
824 825
omap1610h2_config \
omap1610h2_cs0boot_config \
W
wdenk 已提交
826 827
omap1610h2_cs3boot_config \
omap1610h2_cs_autoboot_config:	unconfig
828
	@mkdir -p $(obj)include
829
	@if [ "$(findstring _cs0boot_, $@)" ] ; then \
830
		echo "#define CONFIG_CS0_BOOT" >> .$(obj)include/config.h ; \
W
wdenk 已提交
831
	elif [ "$(findstring _cs_autoboot_, $@)" ] ; then \
832
		echo "#define CONFIG_CS_AUTOBOOT" >> $(obj)include/config.h ; \
833
	else \
834
		echo "#define CONFIG_CS3_BOOT" >> $(obj)include/config.h ; \
835
	fi;
836
	@$(MKCONFIG) -n $@ -a $(call xtract_omap1610xxx,$@) arm arm926ejs omap1610inn ti omap
W
wdenk 已提交
837

W
wdenk 已提交
838 839 840
omap730p2_config \
omap730p2_cs0boot_config \
omap730p2_cs3boot_config :	unconfig
841
	@mkdir -p $(obj)include
W
wdenk 已提交
842
	@if [ "$(findstring _cs0boot_, $@)" ] ; then \
843
		echo "#define CONFIG_CS0_BOOT" >> $(obj)include/config.h ; \
W
wdenk 已提交
844
	else \
845
		echo "#define CONFIG_CS3_BOOT" >> $(obj)include/config.h ; \
W
wdenk 已提交
846
	fi;
847
	@$(MKCONFIG) -n $@ -a omap730p2 arm arm926ejs omap730p2 ti omap
W
wdenk 已提交
848

849
spear300_config \
850 851
spear310_config \
spear320_config :	unconfig
852
	@$(MKCONFIG) -n $@ -t $@ spear3xx arm arm926ejs $(@:_config=) spear spear
853

854
spear600_config :	unconfig
855
	@$(MKCONFIG) -n $@ -t $@ spear6xx arm arm926ejs $(@:_config=) spear spear
856

857 858 859 860 861 862 863 864
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;
865
	@$(MKCONFIG) -n $@ SX1 arm arm925t sx1
W
wdenk 已提交
866

J
John Rigby 已提交
867 868
tx25_config	: unconfig
	@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
869
	@$(MKCONFIG) $@ arm arm926ejs tx25 karo mx25
J
John Rigby 已提交
870

W
wdenk 已提交
871
#########################################################################
W
wdenk 已提交
872
## XScale Systems
W
wdenk 已提交
873 874
#########################################################################

875
pdnb3_config \
876
scpu_config:	unconfig
877
	@mkdir -p $(obj)include
878
	@if [ "$(findstring scpu_,$@)" ] ; then \
879
		echo "#define CONFIG_SCPU"	>>$(obj)include/config.h ; \
880
	fi
881
	@$(MKCONFIG) -n $@ -a pdnb3 arm ixp pdnb3 prodrive
W
Wolfgang Denk 已提交
882

883 884 885
#########################################################################
## ARM1136 Systems
#########################################################################
W
wdenk 已提交
886

P
Peter Pearse 已提交
887
apollon_config		: unconfig
888
	@mkdir -p $(obj)include
889 890
	@echo "#define CONFIG_ONENAND_U_BOOT" > $(obj)include/config.h
	@echo "CONFIG_ONENAND_U_BOOT = y" >> $(obj)include/config.mk
891
	@$(MKCONFIG) $@ arm arm1136 apollon - omap24xx
P
Peter Pearse 已提交
892

893
imx31_phycore_eet_config \
S
Sascha Hauer 已提交
894
imx31_phycore_config	: unconfig
895
	@mkdir -p $(obj)include
896 897 898
	@if [ -n "$(findstring _eet_,$@)" ]; then			\
		echo "#define CONFIG_IMX31_PHYCORE_EET" >> $(obj)include/config.h;	\
	fi
899
	@$(MKCONFIG) -n $@ -a imx31_phycore arm arm1136 imx31_phycore - mx31
S
Sascha Hauer 已提交
900

901 902 903 904 905 906 907 908
mx31pdk_config \
mx31pdk_nand_config	: unconfig
	@mkdir -p $(obj)include
	@if [ -n "$(findstring _nand_,$@)" ]; then					\
		echo "#define CONFIG_NAND_U_BOOT" >> $(obj)include/config.h;		\
	else										\
		echo "#define CONFIG_SKIP_LOWLEVEL_INIT" >> $(obj)include/config.h;	\
	fi
909
	@$(MKCONFIG) -n $@ -a mx31pdk arm arm1136 mx31pdk freescale mx31
910

911 912 913 914 915 916 917 918
#########################################################################
## 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
919
	@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
920 921 922 923 924
	@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 已提交
925
	@$(MKCONFIG) smdk6400 arm arm1176 smdk6400 samsung s3c64xx
926 927
	@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk

W
wdenk 已提交
928 929
#########################################################################
#########################################################################
W
wdenk 已提交
930 931

clean:
932
	@rm -f $(obj)examples/standalone/82559_eeprom			  \
933
	       $(obj)examples/standalone/atmel_df_pow2			  \
934 935 936 937 938
	       $(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				  \
939
	       $(obj)examples/standalone/smc911{11,x}_eeprom		  \
940 941
	       $(obj)examples/standalone/test_burst			  \
	       $(obj)examples/standalone/timer
P
Peter Tyser 已提交
942
	@rm -f $(obj)examples/api/demo{,.bin}
943 944 945 946 947 948 949 950
	@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}	  \
951
	       $(obj)board/matrix_vision/*/bootscript.img		  \
952
	       $(obj)board/voiceblue/eeprom 				  \
953
	       $(obj)u-boot.lds						  \
954 955
	       $(obj)arch/blackfin/cpu/bootrom-asm-offsets.[chs]	  \
	       $(obj)arch/blackfin/cpu/init.{lds,elf}
956
	@rm -f $(obj)include/bmp_logo.h
957
	@rm -f $(obj)lib/asm-offsets.s
958 959
	@rm -f $(obj)include/generated/asm-offsets.h
	@rm -f $(obj)$(CPUDIR)/$(SOC)/asm-offsets.s
960
	@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 已提交
961
	@rm -f $(obj)onenand_ipl/onenand-{ipl,ipl.bin,ipl.map}
962
	@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 已提交
963
	@rm -f $(ONENAND_BIN)
964
	@rm -f $(obj)onenand_ipl/u-boot.lds
965
	@rm -f $(obj)spl/{u-boot-spl,u-boot-spl.bin,u-boot-spl.lds,u-boot-spl.map}
P
Peter Tyser 已提交
966
	@rm -f $(TIMESTAMP_FILE) $(VERSION_FILE)
967
	@find $(OBJTREE) -type f \
W
wdenk 已提交
968
		\( -name 'core' -o -name '*.bak' -o -name '*~' \
969
		-o -name '*.o'	-o -name '*.a' -o -name '*.exe'	\) -print \
W
wdenk 已提交
970 971 972
		| xargs rm -f

clobber:	clean
973
	@find $(OBJTREE) -type f \( -name '*.depend' \
W
wdenk 已提交
974 975 976
		-o -name '*.srec' -o -name '*.bin' -o -name u-boot.img \) \
		-print0 \
		| xargs -0 rm -f
L
Li Yang 已提交
977
	@rm -f $(OBJS) $(obj)*.bak $(obj)ctags $(obj)etags $(obj)TAGS \
W
Wolfgang Denk 已提交
978
		$(obj)cscope.* $(obj)*.*~
979
	@rm -f $(obj)u-boot $(obj)u-boot.map $(obj)u-boot.hex $(ALL-y)
980
	@rm -f $(obj)u-boot.kwb
981
	@rm -f $(obj)u-boot.imx
982
	@rm -f $(obj)u-boot.ubl
983
	@rm -f $(obj)tools/{env/crc32.c,inca-swap-bytes}
S
Stefan Roese 已提交
984
	@rm -f $(obj)arch/powerpc/cpu/mpc824x/bedbug_603e.c
985
	@rm -fr $(obj)include/asm/proc $(obj)include/asm/arch $(obj)include/asm
986
	@rm -fr $(obj)include/generated
987 988
	@[ ! -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
989
	@[ ! -d $(obj)mmc_spl ] || find $(obj)mmc_spl -name "*" -type l -print | xargs rm -f
990 991 992

mrproper \
distclean:	clobber unconfig
993
ifneq ($(OBJTREE),$(SRCTREE))
994
	rm -rf $(obj)*
995
endif
W
wdenk 已提交
996 997 998

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

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