Makefile 33.1 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
# The "tools" are needed early, so put this first
# Don't include stuff already done in $(LIBS)
140
SUBDIRS	= tools
141

142
.PHONY : $(SUBDIRS) $(VERSION_FILE) $(TIMESTAMP_FILE)
143

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

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

157 158 159 160 161
ifndef CONFIG_SANDBOX
SUBDIRS += examples/standalone \
	  examples/api
endif

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

167 168 169
# load other configuration
include $(TOPDIR)/config.mk

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 197 198 199
# 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 已提交
200 201 202
#########################################################################
# U-Boot objects....order is important (i.e. start must be first)

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

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

217 218 219
LIBS  = lib/libgeneric.o
LIBS += lib/lzma/liblzma.o
LIBS += lib/lzo/liblzo.o
220
LIBS += lib/zlib/libz.o
221
LIBS += $(shell if [ -f board/$(VENDOR)/common/Makefile ]; then echo \
222 223
	"board/$(VENDOR)/common/lib$(VENDOR).o"; fi)
LIBS += $(CPUDIR)/lib$(CPU).o
W
wdenk 已提交
224
ifdef SOC
225
LIBS += $(CPUDIR)/$(SOC)/lib$(SOC).o
W
wdenk 已提交
226
endif
S
Stefan Roese 已提交
227
ifeq ($(CPU),ixp)
228
LIBS += arch/arm/cpu/ixp/npe/libnpe.o
S
Stefan Roese 已提交
229
endif
230 231 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
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 已提交
257
ifeq ($(CPU),mpc83xx)
258
LIBS += drivers/qe/libqe.o
259
LIBS += arch/powerpc/cpu/mpc8xxx/ddr/libddr.o
260
LIBS += arch/powerpc/cpu/mpc8xxx/lib8xxx.o
D
Dave Liu 已提交
261
endif
A
Andy Fleming 已提交
262
ifeq ($(CPU),mpc85xx)
263
LIBS += drivers/qe/libqe.o
264
LIBS += drivers/net/fm/libfm.o
265 266
LIBS += arch/powerpc/cpu/mpc8xxx/ddr/libddr.o
LIBS += arch/powerpc/cpu/mpc8xxx/lib8xxx.o
267 268
endif
ifeq ($(CPU),mpc86xx)
269 270
LIBS += arch/powerpc/cpu/mpc8xxx/ddr/libddr.o
LIBS += arch/powerpc/cpu/mpc8xxx/lib8xxx.o
A
Andy Fleming 已提交
271
endif
272 273 274
LIBS += drivers/rtc/librtc.o
LIBS += drivers/serial/libserial.o
LIBS += drivers/twserial/libtws.o
M
Mike Frysinger 已提交
275
LIBS += drivers/usb/eth/libusb_eth.o
276 277 278 279 280 281 282 283 284 285
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
286

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

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

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

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

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

320 321 322 323 324 325 326 327
# 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')

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

331
#########################################################################
W
wdenk 已提交
332 333
#########################################################################

334 335 336 337 338 339 340 341 342 343 344 345 346 347 348
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

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

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

358
all:		$(ALL-y)
W
wdenk 已提交
359

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

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

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

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

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

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

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

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

396
$(obj)u-boot.sha1:	$(obj)u-boot.bin
397
		$(obj)tools/ubsha1 $(obj)u-boot.bin
398

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

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

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

423
$(OBJS):	depend
P
Peter Tyser 已提交
424
		$(MAKE) -C $(CPUDIR) $(if $(REMOTE_BUILD),$@,$(notdir $@))
425

426
$(LIBS):	depend $(SUBDIRS)
427
		$(MAKE) -C $(dir $(subst $(obj),,$@))
W
wdenk 已提交
428

429
$(LIBBOARD):	depend $(LIBS)
W
Wolfgang Denk 已提交
430 431
		$(MAKE) -C $(dir $(subst $(obj),,$@))

432
$(SUBDIRS):	depend
W
wdenk 已提交
433
		$(MAKE) -C $@ all
W
wdenk 已提交
434

435
$(LDSCRIPT):	depend
436 437
		$(MAKE) -C $(dir $@) $(notdir $@)

438 439 440
$(obj)u-boot.lds: $(LDSCRIPT)
		$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@

441
nand_spl:	$(TIMESTAMP_FILE) $(VERSION_FILE) depend
442
		$(MAKE) -C nand_spl/board/$(BOARDDIR) all
443

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

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

450
$(obj)u-boot-onenand.bin:	onenand_ipl $(obj)u-boot.bin
K
Kyungmin Park 已提交
451
		cat $(ONENAND_BIN) $(obj)u-boot.bin > $(obj)u-boot-onenand.bin
452

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

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

458 459 460
$(obj)spl/u-boot-spl.bin:		depend
		$(MAKE) -C spl all

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

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

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

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

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

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

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

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

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

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

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

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

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

574 575
$(TIMESTAMP_FILE):
		@mkdir -p $(dir $(TIMESTAMP_FILE))
576 577 578
		@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 $@
579

M
Mike Frysinger 已提交
580 581 582 583
easylogo env gdb:
	$(MAKE) -C tools/$@ all MTD_VERSION=${MTD_VERSION}
gdbtools: gdb

584
tools-all: easylogo env gdb $(VERSION_FILE) $(TIMESTAMP_FILE)
M
Mike Frysinger 已提交
585 586
	$(MAKE) -C tools HOST_TOOLS_ALL=y

587 588
.PHONY : CHANGELOG
CHANGELOG:
589 590
	git log --no-merges U-Boot-1_1_5.. | \
	unexpand -a | sed -e 's/\s\s*$$//' > $@
591

592
include/license.h: tools/bin2header COPYING
593
	cat COPYING | gzip -9 -c | ./tools/bin2header license_gzip > include/license.h
W
wdenk 已提交
594 595 596
#########################################################################

unconfig:
597
	@rm -f $(obj)include/config.h $(obj)include/config.mk \
598 599
		$(obj)board/*/config.tmp $(obj)board/*/*/config.tmp \
		$(obj)include/autoconf.mk $(obj)include/autoconf.mk.dep
W
wdenk 已提交
600

601 602 603
%_config::	unconfig
	@$(MKCONFIG) -A $(@:_config=)

604 605
sinclude $(obj).boards.depend
$(obj).boards.depend:	boards.cfg
606
	awk '(NF && $$1 !~ /^#/) { print $$1 ": " $$1 "_config; $$(MAKE)" }' $< > $@
607

608 609 610 611 612 613
#
# 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 已提交
614 615 616 617
#########################################################################
## Coldfire
#########################################################################

W
Wolfgang Wegner 已提交
618 619
astro_mcf5373l_config \
astro_mcf5373l_RAM_config :	unconfig
620
	@$(MKCONFIG) -n $@ -t $@ astro_mcf5373l m68k mcf532x mcf5373l astro
W
Wolfgang Wegner 已提交
621

622 623 624 625 626 627 628 629 630 631
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 ; \
632
		echo "CONFIG_SYS_TEXT_BASE = 0x00000000" > $(obj)board/freescale/m52277evb/config.tmp ; \
633 634 635 636 637
		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 ; \
638
		echo "CONFIG_SYS_TEXT_BASE = 0x43E00000" > $(obj)board/freescale/m52277evb/config.tmp ; \
639 640
		cp $(obj)board/freescale/m52277evb/u-boot.stm $(obj)board/freescale/m52277evb/u-boot.lds ; \
	fi
641
	@$(MKCONFIG) -n $@ -a M52277EVB m68k mcf5227x m52277evb freescale
642

643 644 645 646 647 648 649 650 651
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 \
652
		echo "#define NORFLASH_PS32BIT	1" >> $(obj)include/config.h ; \
653
		echo "CONFIG_SYS_TEXT_BASE = 0xFFC00000" > $(obj)board/freescale/m5235evb/config.tmp ; \
654 655
		cp $(obj)board/freescale/m5235evb/u-boot.32 $(obj)board/freescale/m5235evb/u-boot.lds ; \
	else \
656
		echo "CONFIG_SYS_TEXT_BASE = 0xFFE00000" > $(obj)board/freescale/m5235evb/config.tmp ; \
657 658
		cp $(obj)board/freescale/m5235evb/u-boot.16 $(obj)board/freescale/m5235evb/u-boot.lds ; \
	fi
659
	@$(MKCONFIG) -n $@ -a M5235EVB m68k mcf523x m5235evb freescale
660

W
Wolfgang Denk 已提交
661
cobra5272_config :		unconfig
662
	@$(MKCONFIG) $@ m68k mcf52x2 cobra5272
W
Wolfgang Denk 已提交
663

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

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

676 677 678 679 680 681 682
M5329AFEE_config \
M5329BFEE_config :	unconfig
	@case "$@" in \
	M5329AFEE_config)	NAND=0;; \
	M5329BFEE_config)	NAND=16;; \
	esac; \
	if [ "$${NAND}" != "0" ] ; then \
683
		echo "#define NANDFLASH_SIZE	$${NAND}" > $(obj)include/config.h ; \
684
	fi
685
	@$(MKCONFIG) -n $@ -a M5329EVB m68k mcf532x m5329evb freescale
686

687 688 689 690 691 692 693 694 695
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

696 697 698
M54451EVB_config \
M54451EVB_stmicro_config :	unconfig
	@case "$@" in \
T
TsiChung Liew 已提交
699
	M54451EVB_config)		FLASH=NOR;; \
700 701
	M54451EVB_stmicro_config)	FLASH=STMICRO;; \
	esac; \
T
TsiChung Liew 已提交
702
	if [ "$${FLASH}" = "NOR" ] ; then \
703
		echo "CONFIG_SYS_TEXT_BASE = 0x00000000" > $(obj)board/freescale/m54451evb/config.tmp ; \
704 705 706 707
		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 ; \
708
		echo "#define CONFIG_SYS_STMICRO_BOOT"	>> $(obj)include/config.h ; \
709
		echo "CONFIG_SYS_TEXT_BASE = 0x47E00000" > $(obj)board/freescale/m54451evb/config.tmp ; \
710 711
		cp $(obj)board/freescale/m54451evb/u-boot.stm $(obj)board/freescale/m54451evb/u-boot.lds ; \
	fi; \
712
	echo "#define CONFIG_SYS_INPUT_CLKSRC 24000000" >> $(obj)include/config.h ;
713
	@$(MKCONFIG) -n $@ -a M54451EVB m68k mcf5445x m54451evb freescale
714

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

753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768
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; \
769 770 771
	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 ; \
772
	if [ "$${RAM1}" != "0" ] ; then \
773
		echo "#define CONFIG_SYS_DRAMSZ1	$${RAM1}" >> $(obj)include/config.h ; \
774 775
	fi; \
	if [ "$${CODE}" != "0" ] ; then \
776
		echo "#define CONFIG_SYS_NOR1SZ	$${CODE}" >> $(obj)include/config.h ; \
777 778
	fi; \
	if [ "$${VID}" == "1" ] ; then \
779
		echo "#define CONFIG_SYS_VIDEO" >> $(obj)include/config.h ; \
780 781
	fi; \
	if [ "$${USB}" == "1" ] ; then \
782
		echo "#define CONFIG_SYS_USBCTRL" >> $(obj)include/config.h ; \
783
	fi
784
	@$(MKCONFIG) -n $@ -a M5475EVB m68k mcf547x_8x m547xevb freescale
785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801

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;; \
802
	M5485HFE_config)	BOOT=2;CODE=16;VID=1;USB=0;RAM=64;RAM1=0;; \
803
	esac; \
804 805 806
	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 ; \
807
	if [ "$${RAM1}" != "0" ] ; then \
808
		echo "#define CONFIG_SYS_DRAMSZ1	$${RAM1}" >> $(obj)include/config.h ; \
809 810
	fi; \
	if [ "$${CODE}" != "0" ] ; then \
811
		echo "#define CONFIG_SYS_NOR1SZ	$${CODE}" >> $(obj)include/config.h ; \
812 813
	fi; \
	if [ "$${VID}" == "1" ] ; then \
814
		echo "#define CONFIG_SYS_VIDEO" >> $(obj)include/config.h ; \
815 816
	fi; \
	if [ "$${USB}" == "1" ] ; then \
817
		echo "#define CONFIG_SYS_USBCTRL" >> $(obj)include/config.h ; \
818
	fi
819
	@$(MKCONFIG) -n $@ -a M5485EVB m68k mcf547x_8x m548xevb freescale
820

W
wdenk 已提交
821 822 823
#========================================================================
# ARM
#========================================================================
824

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

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

W
wdenk 已提交
845 846 847
omap730p2_config \
omap730p2_cs0boot_config \
omap730p2_cs3boot_config :	unconfig
848
	@mkdir -p $(obj)include
W
wdenk 已提交
849
	@if [ "$(findstring _cs0boot_, $@)" ] ; then \
850
		echo "#define CONFIG_CS0_BOOT" >> $(obj)include/config.h ; \
W
wdenk 已提交
851
	else \
852
		echo "#define CONFIG_CS3_BOOT" >> $(obj)include/config.h ; \
W
wdenk 已提交
853
	fi;
854
	@$(MKCONFIG) -n $@ -a omap730p2 arm arm926ejs omap730p2 ti omap
W
wdenk 已提交
855

856
spear300_config \
857 858
spear310_config \
spear320_config :	unconfig
859
	@$(MKCONFIG) -n $@ -t $@ spear3xx arm arm926ejs $(@:_config=) spear spear
860

861
spear600_config :	unconfig
862
	@$(MKCONFIG) -n $@ -t $@ spear6xx arm arm926ejs $(@:_config=) spear spear
863

864 865 866 867 868 869 870 871
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;
872
	@$(MKCONFIG) -n $@ SX1 arm arm925t sx1
W
wdenk 已提交
873

W
wdenk 已提交
874
#########################################################################
W
wdenk 已提交
875
## XScale Systems
W
wdenk 已提交
876 877
#########################################################################

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

886 887 888
#########################################################################
## ARM1136 Systems
#########################################################################
W
wdenk 已提交
889

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

896 897 898 899 900 901 902 903
#########################################################################
## 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
904
	@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
905 906 907 908 909
	@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 已提交
910
	@$(MKCONFIG) smdk6400 arm arm1176 smdk6400 samsung s3c64xx
911 912
	@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk

W
wdenk 已提交
913 914
#########################################################################
#########################################################################
W
wdenk 已提交
915 916

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

clobber:	clean
958
	@find $(OBJTREE) -type f \( -name '*.depend*' \
W
wdenk 已提交
959 960 961
		-o -name '*.srec' -o -name '*.bin' -o -name u-boot.img \) \
		-print0 \
		| xargs -0 rm -f
L
Li Yang 已提交
962
	@rm -f $(OBJS) $(obj)*.bak $(obj)ctags $(obj)etags $(obj)TAGS \
W
Wolfgang Denk 已提交
963
		$(obj)cscope.* $(obj)*.*~
964
	@rm -f $(obj)u-boot $(obj)u-boot.map $(obj)u-boot.hex $(ALL-y)
965
	@rm -f $(obj)u-boot.kwb
966
	@rm -f $(obj)u-boot.imx
967
	@rm -f $(obj)u-boot.ubl
968
	@rm -f $(obj)tools/{env/crc32.c,inca-swap-bytes}
S
Stefan Roese 已提交
969
	@rm -f $(obj)arch/powerpc/cpu/mpc824x/bedbug_603e.c
970
	@rm -fr $(obj)include/asm/proc $(obj)include/asm/arch $(obj)include/asm
971
	@rm -fr $(obj)include/generated
972 973
	@[ ! -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
974
	@[ ! -d $(obj)mmc_spl ] || find $(obj)mmc_spl -name "*" -type l -print | xargs rm -f
975 976 977

mrproper \
distclean:	clobber unconfig
978
ifneq ($(OBJTREE),$(SRCTREE))
979
	rm -rf $(obj)*
980
endif
W
wdenk 已提交
981 982 983

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

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