Makefile 31.1 KB
Newer Older
W
wdenk 已提交
1
#
2
# (C) Copyright 2000-2013
W
wdenk 已提交
3 4
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
#
5
# SPDX-License-Identifier:	GPL-2.0+
W
wdenk 已提交
6 7
#

T
Tom Rini 已提交
8 9
VERSION = 2014
PATCHLEVEL = 01
W
Wolfgang Denk 已提交
10
SUBLEVEL =
T
Tom Rini 已提交
11
EXTRAVERSION =
12
ifneq "$(SUBLEVEL)" ""
13
U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
14 15 16
else
U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL)$(EXTRAVERSION)
endif
17 18
TIMESTAMP_FILE = include/generated/timestamp_autogenerated.h
VERSION_FILE = include/generated/version_autogenerated.h
19

W
wdenk 已提交
20
HOSTARCH := $(shell uname -m | \
G
Graeme Russ 已提交
21
	sed -e s/i.86/x86/ \
W
wdenk 已提交
22 23 24
	    -e s/sun4u/sparc64/ \
	    -e s/arm.*/arm/ \
	    -e s/sa110/arm/ \
K
Kumar Gala 已提交
25 26
	    -e s/ppc64/powerpc/ \
	    -e s/ppc/powerpc/ \
N
Nobuhiro Iwamatsu 已提交
27 28
	    -e s/macppc/powerpc/\
	    -e s/sh.*/sh/)
W
wdenk 已提交
29

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

33
export	HOSTARCH HOSTOS
W
wdenk 已提交
34 35 36 37

# Deal with colliding definitions from tcsh etc.
VENDOR=

38 39 40 41 42 43 44 45
#########################################################################
# Allow for silent builds
ifeq (,$(findstring s,$(MAKEFLAGS)))
XECHO = echo
else
XECHO = :
endif

46 47 48 49 50
# kbuild supports saving output files in a separate directory.
# To locate output files in a separate directory two syntaxes are supported.
# In both cases the working directory must be the root of the kernel src.
# 1) O=
# Use "make O=dir/to/store/output/files/"
51
#
52 53 54 55 56
# 2) Set KBUILD_OUTPUT
# Set the environment variable KBUILD_OUTPUT to point to the directory
# where the output files shall be placed.
# export KBUILD_OUTPUT=dir/to/store/output/files/
# make
57
#
58 59 60 61 62 63 64
# The O= assignment takes precedence over the KBUILD_OUTPUT environment
# variable.


# KBUILD_SRC is set on invocation of make in OBJ directory
# KBUILD_SRC is not intended to be used by the regular user (for now)
ifeq ($(KBUILD_SRC),)
65

66 67
# OK, Make called in directory where kernel src resides
# Do we want to locate output files in a separate directory?
68
ifeq ("$(origin O)", "command line")
69 70 71 72 73
  KBUILD_OUTPUT := $(O)
endif

ifeq ("$(origin W)", "command line")
  export KBUILD_ENABLE_EXTRA_GCC_CHECKS := $(W)
74 75
endif

76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
# That's our default target when none is given on the command line
PHONY := _all
_all:

# Cancel implicit rules on top Makefile
$(CURDIR)/Makefile Makefile: ;

ifneq ($(KBUILD_OUTPUT),)
# Invoke a second make in the output directory, passing relevant variables
# check that the output directory actually exists
saved-output := $(KBUILD_OUTPUT)
KBUILD_OUTPUT := $(shell cd $(KBUILD_OUTPUT) && /bin/pwd)
$(if $(KBUILD_OUTPUT),, \
     $(error output directory "$(saved-output)" does not exist))

PHONY += $(MAKECMDGOALS) sub-make

$(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make
	@:

sub-make: FORCE
	$(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT) \
	KBUILD_SRC=$(CURDIR) \
	KBUILD_EXTMOD="$(KBUILD_EXTMOD)" -f $(CURDIR)/Makefile \
	$(filter-out _all sub-make,$(MAKECMDGOALS))

# Leave processing to above invocation of make
skip-makefile := 1
endif # ifneq ($(KBUILD_OUTPUT),)
endif # ifeq ($(KBUILD_SRC),)

# We process the rest of the Makefile if this is the final invocation of make
ifeq ($(skip-makefile),)

PHONY += all
_all: all

srctree		:= $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR))
objtree		:= $(CURDIR)
src		:= $(srctree)
obj		:= $(objtree)

VPATH		:= $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD))

export srctree objtree VPATH

122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
# Call a source code checker (by default, "sparse") as part of the
# C compilation.
#
# Use 'make C=1' to enable checking of re-compiled files.
#
# See the linux kernel file "Documentation/sparse.txt" for more details,
# including where to get the "sparse" utility.

ifdef C
ifeq ("$(origin C)", "command line")
CHECKSRC := $(C)
endif
endif
ifndef CHECKSRC
  CHECKSRC = 0
endif
export CHECKSRC

140
OBJTREE		:= $(objtree)
141
SPLTREE		:= $(OBJTREE)/spl
142
TPLTREE		:= $(OBJTREE)/tpl
143
SRCTREE		:= $(srctree)
144
TOPDIR		:= $(SRCTREE)
145
export	TOPDIR SRCTREE OBJTREE SPLTREE TPLTREE
146 147 148

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

W
Wolfgang Denk 已提交
150 151 152
# Make sure CDPATH settings don't interfere
unexport CDPATH

W
wdenk 已提交
153 154
#########################################################################

155 156
# The "tools" are needed early, so put this first
# Don't include stuff already done in $(LIBS)
157 158 159 160
# 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
SUBDIRS = $(SUBDIR_TOOLS)
161

162
.PHONY : $(SUBDIRS) $(VERSION_FILE) $(TIMESTAMP_FILE)
163

164
ifeq (include/config.mk,$(wildcard include/config.mk))
W
wdenk 已提交
165

166 167 168 169
# 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:
170 171
sinclude include/autoconf.mk.dep
sinclude include/autoconf.mk
172

173 174
SUBDIR_EXAMPLES-y := examples/standalone
SUBDIR_EXAMPLES-$(CONFIG_API) += examples/api
175
ifndef CONFIG_SANDBOX
176
SUBDIRS += $(SUBDIR_EXAMPLES-y)
177 178
endif

W
wdenk 已提交
179
# load ARCH, BOARD, and CPU configuration
180
include include/config.mk
W
wdenk 已提交
181
export	ARCH CPU BOARD VENDOR SOC
182

183
# set default to nothing for native builds
W
Wolfgang Denk 已提交
184
ifeq ($(HOSTARCH),$(ARCH))
185
CROSS_COMPILE ?=
W
wdenk 已提交
186
endif
W
wdenk 已提交
187

188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224
# SHELL used by kbuild
CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
	  else if [ -x /bin/bash ]; then echo /bin/bash; \
	  else echo sh; fi ; fi)

HOSTCC       = gcc
HOSTCFLAGS   = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer

ifeq ($(HOSTOS),cygwin)
HOSTCFLAGS	+= -ansi
endif

# Mac OS X / Darwin's C preprocessor is Apple specific.  It
# generates numerous errors and warnings.  We want to bypass it
# and use GNU C's cpp.	To do this we pass the -traditional-cpp
# option to the compiler.  Note that the -traditional-cpp flag
# DOES NOT have the same semantics as GNU C's flag, all it does
# is invoke the GNU preprocessor in stock ANSI/ISO C fashion.
#
# Apple's linker is similar, thanks to the new 2 stage linking
# multiple symbol definitions are treated as errors, hence the
# -multiply_defined suppress option to turn off this error.
#
ifeq ($(HOSTOS),darwin)
# get major and minor product version (e.g. '10' and '6' for Snow Leopard)
DARWIN_MAJOR_VERSION	= $(shell sw_vers -productVersion | cut -f 1 -d '.')
DARWIN_MINOR_VERSION	= $(shell sw_vers -productVersion | cut -f 2 -d '.')

os_x_before	= $(shell if [ $(DARWIN_MAJOR_VERSION) -le $(1) -a \
	$(DARWIN_MINOR_VERSION) -le $(2) ] ; then echo "$(3)"; else echo "$(4)"; fi ;)

# Snow Leopards build environment has no longer restrictions as described above
HOSTCC       = $(call os_x_before, 10, 5, "cc", "gcc")
HOSTCFLAGS  += $(call os_x_before, 10, 4, "-traditional-cpp")
HOSTLDFLAGS += $(call os_x_before, 10, 5, "-multiply_defined suppress")
endif

225 226 227
# Look for make include files relative to root of kernel src
MAKEFLAGS += --include-dir=$(srctree)

M
Masahiro Yamada 已提交
228 229 230 231
# We need some generic definitions (do not try to remake the file).
$(srctree)/scripts/Kbuild.include: ;
include $(srctree)/scripts/Kbuild.include

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
# Make variables (CC, etc...)

AS		= $(CROSS_COMPILE)as
# Always use GNU ld
ifneq ($(shell $(CROSS_COMPILE)ld.bfd -v 2> /dev/null),)
LD		= $(CROSS_COMPILE)ld.bfd
else
LD		= $(CROSS_COMPILE)ld
endif
CC		= $(CROSS_COMPILE)gcc
CPP		= $(CC) -E
AR		= $(CROSS_COMPILE)ar
NM		= $(CROSS_COMPILE)nm
LDR		= $(CROSS_COMPILE)ldr
STRIP		= $(CROSS_COMPILE)strip
OBJCOPY		= $(CROSS_COMPILE)objcopy
OBJDUMP		= $(CROSS_COMPILE)objdump
AWK		= awk
RANLIB		= $(CROSS_COMPILE)RANLIB
DTC		= dtc
CHECK		= sparse

CHECKFLAGS     := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
		  -Wbitwise -Wno-return-void -D__CHECK_ENDIAN__ $(CF)

257 258 259 260 261 262 263 264 265
# Use UBOOTINCLUDE when you must reference the include/ directory.
# Needed to be compatible with the O= option
UBOOTINCLUDE    :=
ifneq ($(OBJTREE),$(SRCTREE))
UBOOTINCLUDE	+= -I$(OBJTREE)/include
endif
UBOOTINCLUDE	+= -I$(srctree)/include \
		-I$(srctree)/arch/$(ARCH)/include

266 267 268 269 270 271 272
KBUILD_CPPFLAGS := -D__KERNEL__

KBUILD_CFLAGS   := -Wall -Wstrict-prototypes \
		   -Wno-format-security \
		   -fno-builtin -ffreestanding
KBUILD_AFLAGS   := -D__ASSEMBLY__

273 274 275 276 277
export CONFIG_SHELL HOSTCC HOSTCFLAGS HOSTLDFLAGS CROSS_COMPILE AS LD CC
export CPP AR NM LDR STRIP OBJCOPY OBJDUMP
export MAKE AWK
export DTC CHECK CHECKFLAGS

278
export KBUILD_CPPFLAGS NOSTDINC_FLAGS UBOOTINCLUDE
279 280 281 282 283 284 285 286 287 288 289 290 291 292 293
export KBUILD_CFLAGS KBUILD_AFLAGS

KBUILD_CFLAGS += -Os #-fomit-frame-pointer

ifdef BUILD_TAG
KBUILD_CFLAGS += -DBUILD_TAG='"$(BUILD_TAG)"'
endif

KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)

KBUILD_CFLAGS	+= -g
# $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g<format>
# option to the assembler.
KBUILD_AFLAGS	+= -g

294 295 296
NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
CHECKFLAGS     += $(NOSTDINC_FLAGS)

297 298 299 300 301 302 303 304 305 306 307 308
# Report stack usage if supported
KBUILD_CFLAGS += $(call cc-option,-fstack-usage)

KBUILD_CFLAGS += $(call cc-option,-Wno-format-nonliteral)

# turn jbsr into jsr for m68k
ifeq ($(ARCH),m68k)
ifeq ($(findstring 3.4,$(shell $(CC) --version)),3.4)
KBUILD_AFLAGS += -Wa,-gstabs,-S
endif
endif

309 310 311
# load other configuration
include $(TOPDIR)/config.mk

312 313 314 315 316 317
ifneq ($(CONFIG_SYS_TEXT_BASE),)
KBUILD_CPPFLAGS += -DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE)
endif

export CONFIG_SYS_TEXT_BASE

318
LDFLAGS_u-boot += -T u-boot.lds $(LDFLAGS_FINAL)
319 320 321 322
ifneq ($(CONFIG_SYS_TEXT_BASE),)
LDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE)
endif

323
# Targets which don't build the source code
324
NON_BUILD_TARGETS = backup clean clobber distclean mrproper tidy unconfig %_config
325 326 327

# Only do the generic board check when actually building, not configuring
ifeq ($(filter $(NON_BUILD_TARGETS),$(MAKECMDGOALS)),)
328 329 330 331 332
ifeq ($(__HAVE_ARCH_GENERIC_BOARD),)
ifneq ($(CONFIG_SYS_GENERIC_BOARD),)
CHECK_GENERIC_BOARD = $(error Your architecture does not support generic board. \
Please undefined CONFIG_SYS_GENERIC_BOARD in your board config file)
endif
333 334 335
endif
endif

336 337 338 339
# 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.

340 341
LDSCRIPT_MAKEFILE_DIR = $(dir $(LDSCRIPT))

342 343 344 345
ifndef LDSCRIPT
	#LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds.debug
	ifdef CONFIG_SYS_LDSCRIPT
		# need to strip off double quotes
346
		LDSCRIPT := $(CONFIG_SYS_LDSCRIPT:"%"=%)
347 348 349
	endif
endif

350
# If there is no specified link script, we look in a number of places for it
351 352 353 354 355 356 357 358 359 360 361 362 363
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
364 365 366 367 368
	ifeq ($(wildcard $(LDSCRIPT)),)
		LDSCRIPT := $(TOPDIR)/arch/$(ARCH)/cpu/u-boot.lds
		# We don't expect a Makefile here
		LDSCRIPT_MAKEFILE_DIR =
	endif
369 370 371 372 373
	ifeq ($(wildcard $(LDSCRIPT)),)
$(error could not find linker script)
	endif
endif

W
wdenk 已提交
374 375 376
#########################################################################
# U-Boot objects....order is important (i.e. start must be first)

377 378 379
head-y := $(CPUDIR)/start.o
head-$(CONFIG_4xx) += arch/powerpc/cpu/ppc4xx/resetvec.o
head-$(CONFIG_MPC85xx) += arch/powerpc/cpu/mpc85xx/resetvec.o
W
wdenk 已提交
380

381
OBJS := $(head-y)
382

383
HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n)
384

385 386 387
LIBS-y += lib/
LIBS-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/
LIBS-y += $(CPUDIR)/
W
wdenk 已提交
388
ifdef SOC
389
LIBS-y += $(CPUDIR)/$(SOC)/
W
wdenk 已提交
390
endif
391 392 393
LIBS-$(CONFIG_IXP4XX_NPE) += drivers/net/npe/
LIBS-$(CONFIG_OF_EMBED) += dts/
LIBS-y += arch/$(ARCH)/lib/
394
LIBS-y += fs/
395 396 397 398 399 400 401 402 403
LIBS-y += net/
LIBS-y += disk/
LIBS-y += drivers/
LIBS-y += drivers/dma/
LIBS-y += drivers/gpio/
LIBS-y += drivers/i2c/
LIBS-y += drivers/input/
LIBS-y += drivers/mmc/
LIBS-y += drivers/mtd/
404
LIBS-$(CONFIG_CMD_NAND) += drivers/mtd/nand/
405
LIBS-y += drivers/mtd/onenand/
406
LIBS-$(CONFIG_CMD_UBI) += drivers/mtd/ubi/
407 408 409 410 411 412 413 414 415 416 417
LIBS-y += drivers/mtd/spi/
LIBS-y += drivers/net/
LIBS-y += drivers/net/phy/
LIBS-y += drivers/pci/
LIBS-y += drivers/power/ \
	drivers/power/fuel_gauge/ \
	drivers/power/mfd/ \
	drivers/power/pmic/ \
	drivers/power/battery/
LIBS-y += drivers/spi/
LIBS-$(CONFIG_FMAN_ENET) += drivers/net/fm/
418
LIBS-$(CONFIG_SYS_FSL_DDR) += drivers/ddr/fsl/
419 420 421 422 423 424 425 426 427 428
LIBS-y += drivers/serial/
LIBS-y += drivers/usb/eth/
LIBS-y += drivers/usb/gadget/
LIBS-y += drivers/usb/host/
LIBS-y += drivers/usb/musb/
LIBS-y += drivers/usb/musb-new/
LIBS-y += drivers/usb/phy/
LIBS-y += drivers/usb/ulpi/
LIBS-y += common/
LIBS-y += lib/libfdt/
429
LIBS-$(CONFIG_API) += api/
430
LIBS-$(CONFIG_HAS_POST) += post/
431
LIBS-y += test/
432

433
ifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35 mxs vf610))
434
LIBS-y += arch/$(ARCH)/imx-common/
435 436
endif

437 438
LIBS-$(CONFIG_ARM) += arch/arm/cpu/
LIBS-$(CONFIG_PPC) += arch/powerpc/cpu/
439

440
LIBS-y += board/$(BOARDDIR)/
441

442
LIBS-y := $(patsubst %/, %/built-in.o, $(LIBS-y))
443
LIBS := $(sort $(LIBS-y))
444
.PHONY : $(LIBS)
W
wdenk 已提交
445

W
wdenk 已提交
446
# Add GCC lib
447 448
ifdef USE_PRIVATE_LIBGCC
ifeq ("$(USE_PRIVATE_LIBGCC)", "yes")
449
PLATFORM_LIBGCC = $(OBJTREE)/arch/$(ARCH)/lib/libgcc.o
450 451 452 453
else
PLATFORM_LIBGCC = -L $(USE_PRIVATE_LIBGCC) -lgcc
endif
else
W
Wolfgang Denk 已提交
454
PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
455 456 457
endif
PLATFORM_LIBS += $(PLATFORM_LIBGCC)
export PLATFORM_LIBS
W
wdenk 已提交
458

459 460 461 462 463
# 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 \
464
	-DCPUDIR=$(CPUDIR) \
465 466 467
	$(shell $(LD) --version | \
	  sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p')

468
#########################################################################
W
wdenk 已提交
469 470
#########################################################################

471 472 473
ifneq ($(CONFIG_BOARD_SIZE_LIMIT),)
BOARD_SIZE_CHECK = \
	@actual=`wc -c $@ | awk '{print $$1}'`; \
474
	limit=`printf "%d" $(CONFIG_BOARD_SIZE_LIMIT)`; \
475
	if test $$actual -gt $$limit; then \
476 477 478 479
		echo "$@ exceeds file size limit:" >&2 ; \
		echo "  limit:  $$limit bytes" >&2 ; \
		echo "  actual: $$actual bytes" >&2 ; \
		echo "  excess: $$((actual - limit)) bytes" >&2; \
480 481 482 483 484 485
		exit 1; \
	fi
else
BOARD_SIZE_CHECK =
endif

486 487 488 489 490 491
# Statically apply RELA-style relocations (currently arm64 only)
ifneq ($(CONFIG_STATIC_RELA),)
# $(1) is u-boot ELF, $(2) is u-boot bin, $(3) is text base
DO_STATIC_RELA = \
	start=$$($(NM) $(1) | grep __rel_dyn_start | cut -f 1 -d ' '); \
	end=$$($(NM) $(1) | grep __rel_dyn_end | cut -f 1 -d ' '); \
492
	tools/relocate-rela $(2) $(3) $$start $$end
493 494 495 496
else
DO_STATIC_RELA =
endif

497
# Always append ALL so that arch config.mk's can add custom ones
498 499 500 501 502 503 504 505 506
ALL-y += u-boot.srec u-boot.bin System.map

ALL-$(CONFIG_NAND_U_BOOT) += u-boot-nand.bin
ALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin
ALL-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl
ALL-$(CONFIG_SPL) += spl/u-boot-spl.bin
ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img
ALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin
ALL-$(CONFIG_OF_SEPARATE) += u-boot.dtb u-boot-dtb.bin
507
ifneq ($(CONFIG_SPL_TARGET),)
508
ALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%)
509
endif
510
ALL-$(CONFIG_REMAKE_ELF) += u-boot.elf
511

512
# enable combined SPL/u-boot/dtb rules for tegra
513
ifneq ($(CONFIG_TEGRA),)
514
ifeq ($(CONFIG_SPL),y)
515
ifeq ($(CONFIG_OF_SEPARATE),y)
516
ALL-y += u-boot-dtb-tegra.bin
517
else
518
ALL-y += u-boot-nodtb-tegra.bin
519 520
endif
endif
521
endif
522

523
all:		$(ALL-y) $(SUBDIR_EXAMPLES-y)
W
wdenk 已提交
524

525 526 527
u-boot.dtb:	checkdtc u-boot
		$(MAKE) $(build)=dts binary
		mv dts/dt.dtb $@
528

529
u-boot-dtb.bin:	u-boot.bin u-boot.dtb
530 531
		cat $^ >$@

532
u-boot.hex:	u-boot
W
wdenk 已提交
533 534
		$(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@

535
u-boot.srec:	u-boot
536
		$(OBJCOPY) ${OBJCFLAGS} -O srec $< $@
W
wdenk 已提交
537

538
u-boot.bin:	u-boot
W
wdenk 已提交
539
		$(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
540
		$(call DO_STATIC_RELA,$<,$@,$(CONFIG_SYS_TEXT_BASE))
541
		$(BOARD_SIZE_CHECK)
W
wdenk 已提交
542

543
u-boot.ldr:	u-boot
544
		$(CREATE_LDR_ENV)
545
		$(LDR) -T $(CONFIG_BFIN_CPU) -c $@ $< $(LDR_FLAGS)
546
		$(BOARD_SIZE_CHECK)
547

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

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

554 555 556 557 558 559 560 561
#
# U-Boot entry point, needed for booting of full-blown U-Boot
# from the SPL U-Boot version.
#
ifndef CONFIG_SYS_UBOOT_START
CONFIG_SYS_UBOOT_START := 0
endif

562 563
u-boot.img:	u-boot.bin
		tools/mkimage -A $(ARCH) -T firmware -C none \
564 565
		-O u-boot -a $(CONFIG_SYS_TEXT_BASE) \
		-e $(CONFIG_SYS_UBOOT_START) \
566
		-n $(shell sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE) | \
567 568 569
			sed -e 's/"[	 ]*$$/ for $(BOARD) board"/') \
		-d $< $@

570 571
u-boot.imx: u-boot.bin depend
		$(MAKE) $(build)=arch/arm/imx-common $(objtree)/u-boot.imx
572

573 574
u-boot.kwb:       u-boot.bin
		tools/mkimage -n $(CONFIG_SYS_KWD_CONFIG) -T kwbimage \
575
		-a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) -d $< $@
576

577 578
u-boot.pbl:	u-boot.bin
		tools/mkimage -n $(CONFIG_SYS_FSL_PBL_RCW) \
579
		-R $(CONFIG_SYS_FSL_PBL_PBI) -T pblimage \
580 581
		-d $< $@

582 583
u-boot.sha1:	u-boot.bin
		tools/ubsha1 u-boot.bin
584

585
u-boot.dis:	u-boot
W
wdenk 已提交
586 587
		$(OBJDUMP) -d $< > $@

588 589 590 591
# $@ is output, $(1) and $(2) are inputs, $(3) is padded intermediate,
# $(4) is pad-to
SPL_PAD_APPEND = \
		$(OBJCOPY) ${OBJCFLAGS} --pad-to=$(4) -I binary -O binary \
592 593 594
		$(1) $(3); \
		cat $(3) $(2) > $@; \
		rm $(3)
595

596
ifdef CONFIG_TPL
597
SPL_PAYLOAD := tpl/u-boot-with-tpl.bin
598
else
599
SPL_PAYLOAD := u-boot.bin
600
endif
601

602
u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD)
603 604
		$(call SPL_PAD_APPEND,$<,$(SPL_PAYLOAD),spl/u-boot-spl-pad.bin,$(CONFIG_SPL_PAD_TO))

605 606
tpl/u-boot-with-tpl.bin: tpl/u-boot-tpl.bin u-boot.bin
		$(call SPL_PAD_APPEND,$<,u-boot.bin,tpl/u-boot-tpl-pad.bin,$(CONFIG_TPL_PAD_TO))
607

608 609
u-boot-with-spl.imx: spl/u-boot-spl.bin u-boot.bin
		$(MAKE) $(build)=arch/arm/imx-common \
610 611
			$(OBJTREE)/u-boot-with-spl.imx

612 613
u-boot-with-nand-spl.imx: spl/u-boot-spl.bin u-boot.bin
		$(MAKE) $(build)=arch/arm/imx-common \
614 615
			$(OBJTREE)/u-boot-with-nand-spl.imx

616 617 618
u-boot.ubl:       u-boot-with-spl.bin
		tools/mkimage -n $(UBL_CONFIG) -T ublimage \
		-e $(CONFIG_SYS_TEXT_BASE) -d $< u-boot.ubl
619

620 621
u-boot.ais:       spl/u-boot-spl.bin u-boot.img
		tools/mkimage -s -n $(if $(CONFIG_AIS_CONFIG_FILE),$(srctree)/$(CONFIG_AIS_CONFIG_FILE:"%"=%),"/dev/null") \
622
			-T aisimage \
623
			-e $(CONFIG_SPL_TEXT_BASE) \
624 625
			-d spl/u-boot-spl.bin \
			spl/u-boot-spl.ais
626 627
		$(OBJCOPY) ${OBJCFLAGS} -I binary \
			--pad-to=$(CONFIG_SPL_MAX_SIZE) -O binary \
628 629
			spl/u-boot-spl.ais spl/u-boot-spl-pad.ais
		cat spl/u-boot-spl-pad.ais u-boot.img > u-boot.ais
630

631

632 633
u-boot.sb:       u-boot.bin spl/u-boot-spl.bin
		$(MAKE) $(build)=$(CPUDIR)/$(SOC)/ $(OBJTREE)/u-boot.sb
634

635 636 637 638 639 640
# On x600 (SPEAr600) U-Boot is appended to U-Boot SPL.
# Both images are created using mkimage (crc etc), so that the ROM
# bootloader can check its integrity. Padding needs to be done to the
# SPL image (with mkimage header) and not the binary. Otherwise the resulting image
# which is loaded/copied by the ROM bootloader to SRAM doesn't fit.
# The resulting image containing both U-Boot images is called u-boot.spr
641 642
u-boot.spr:	u-boot.img spl/u-boot-spl.bin
		tools/mkimage -A $(ARCH) -T firmware -C none \
643
		-a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n XLOADER \
644
		-d spl/u-boot-spl.bin $@
645 646
		$(OBJCOPY) -I binary -O binary \
			--pad-to=$(CONFIG_SPL_PAD_TO) --gap-fill=0xff $@
647
		cat u-boot.img >> $@
648

649
ifneq ($(CONFIG_TEGRA),)
650 651 652 653
u-boot-nodtb-tegra.bin: spl/u-boot-spl.bin u-boot.bin
		$(OBJCOPY) ${OBJCFLAGS} --pad-to=$(CONFIG_SYS_TEXT_BASE) -O binary spl/u-boot-spl spl/u-boot-spl-pad.bin
		cat spl/u-boot-spl-pad.bin u-boot.bin > $@
		rm spl/u-boot-spl-pad.bin
654 655

ifeq ($(CONFIG_OF_SEPARATE),y)
656 657
u-boot-dtb-tegra.bin: u-boot-nodtb-tegra.bin u-boot.dtb
		cat u-boot-nodtb-tegra.bin u-boot.dtb > $@
658
endif
659 660
endif

661 662
u-boot-img.bin: spl/u-boot-spl.bin u-boot.img
		cat spl/u-boot-spl.bin u-boot.img > $@
663

664 665 666 667 668
# PPC4xx needs the SPL at the end of the image, since the reset vector
# is located at 0xfffffffc. So we can't use the "u-boot-img.bin" target
# and need to introduce a new build target with the full blown U-Boot
# at the start padded up to the start of the SPL image. And then concat
# the SPL image to the end.
669
u-boot-img-spl-at-end.bin: spl/u-boot-spl.bin u-boot.img
670
		$(OBJCOPY) -I binary -O binary --pad-to=$(CONFIG_UBOOT_PAD_TO) \
671 672
			 --gap-fill=0xff u-boot.img $@
		cat spl/u-boot-spl.bin >> $@
673

674 675 676 677 678
# Create a new ELF from a raw binary file.  This is useful for arm64
# where static relocation needs to be performed on the raw binary,
# but certain simulators only accept an ELF file (but don't do the
# relocation).
# FIXME refactor dts/Makefile to share target/arch detection
679
u-boot.elf: u-boot.bin
680
	@$(OBJCOPY)  -B aarch64 -I binary -O elf64-littleaarch64 \
681 682
		$< u-boot-elf.o
	@$(LD) u-boot-elf.o -o $@ \
683 684 685
		--defsym=_start=$(CONFIG_SYS_TEXT_BASE) \
		-Ttext=$(CONFIG_SYS_TEXT_BASE)

686 687
ifeq ($(CONFIG_SANDBOX),y)
GEN_UBOOT = \
688 689
		$(CC) $(SYMS) -T u-boot.lds \
			-Wl,--start-group $(LIBS) -Wl,--end-group \
690 691
			$(PLATFORM_LIBS) -Wl,-Map -Wl,u-boot.map -o u-boot
else
692
GEN_UBOOT = \
693 694 695
		$(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) \
			$(OBJS) \
			--start-group $(LIBS) --end-group $(PLATFORM_LIBS) \
W
wdenk 已提交
696
			-Map u-boot.map -o u-boot
697 698
endif

699
u-boot:	depend $(SUBDIR_TOOLS) $(OBJS) $(LIBS) u-boot.lds
700 701
		$(GEN_UBOOT)
ifeq ($(CONFIG_KALLSYMS),y)
702
		smap=`$(call SYSTEM_MAP,u-boot) | \
703 704
			awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \
		$(CC) $(CFLAGS) -DSYSTEM_MAP="\"$${smap}\"" \
705 706
			-c $(srctree)/common/system_map.c -o common/system_map.o
		$(GEN_UBOOT) common/system_map.o
707
endif
W
wdenk 已提交
708

709 710
$(OBJS):
	@:
711

712
$(LIBS):	depend $(SUBDIR_TOOLS)
713
		$(MAKE) $(build)=$(patsubst %/,%,$(dir $@))
W
wdenk 已提交
714

715
$(SUBDIRS):	depend
716
		$(MAKE) $(build)=$@ all
717

718
$(SUBDIR_EXAMPLES-y): u-boot
719

720
u-boot.lds: $(LDSCRIPT) depend
721
		$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
722

723
nand_spl:	$(TIMESTAMP_FILE) $(VERSION_FILE) depend
724
		$(MAKE) $(build)=nand_spl/board/$(BOARDDIR) all
725

726 727
u-boot-nand.bin:	nand_spl u-boot.bin
		cat nand_spl/u-boot-spl-16k.bin u-boot.bin > u-boot-nand.bin
728

729 730
spl/u-boot-spl.bin:	$(SUBDIR_TOOLS) depend
		$(MAKE) obj=spl -f $(srctree)/spl/Makefile all
731

732 733
tpl/u-boot-tpl.bin:	$(SUBDIR_TOOLS) depend
		$(MAKE) obj=tpl -f $(srctree)/spl/Makefile all CONFIG_TPL_BUILD=y
734

D
Daniel Hobi 已提交
735 736
# Explicitly make _depend in subdirs containing multiple targets to prevent
# parallel sub-makes creating .depend files simultaneously.
737
depend dep:	$(TIMESTAMP_FILE) $(VERSION_FILE) \
738 739 740 741 742
		include/spl-autoconf.mk \
		include/tpl-autoconf.mk \
		include/autoconf.mk \
		include/generated/generic-asm-offsets.h \
		include/generated/asm-offsets.h
W
wdenk 已提交
743

L
Li Yang 已提交
744
TAG_SUBDIRS = $(SUBDIRS)
745
TAG_SUBDIRS += $(dir $(LIBS))
746 747
TAG_SUBDIRS += include

748 749 750
FIND := find
FINDFLAGS := -L

751
checkstack:
752 753 754
		$(CROSS_COMPILE)objdump -d u-boot \
			`$(FIND) . -name u-boot-spl -print` | \
			perl $(src)/scripts/checkstack.pl $(ARCH)
755

756
tags ctags:
757
		ctags -w -o ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
L
Li Yang 已提交
758
						-name '*.[chS]' -print`
W
wdenk 已提交
759 760

etags:
761
		etags -a -o $(obj)etags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
L
Li Yang 已提交
762
						-name '*.[chS]' -print`
L
Li Yang 已提交
763
cscope:
764 765
		$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \
						cscope.files
L
Li Yang 已提交
766
		cscope -b -q -k
W
wdenk 已提交
767

768 769
SYSTEM_MAP = \
		$(NM) $1 | \
W
wdenk 已提交
770
		grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
771
		LC_ALL=C sort
772
System.map:	u-boot
M
Masahiro Yamada 已提交
773
		@$(call SYSTEM_MAP,$<) > $@
W
wdenk 已提交
774

T
Tom Rini 已提交
775 776 777 778 779 780 781
checkthumb:
	@if test $(call cc-version) -lt 0404; then \
		echo -n '*** Your GCC does not produce working '; \
		echo 'binaries in THUMB mode.'; \
		echo '*** Your board is configured for THUMB mode.'; \
		false; \
	fi
782 783 784 785 786 787 788 789 790 791

# GCC 3.x is reported to have problems generating the type of relocation
# that U-Boot wants.
# See http://lists.denx.de/pipermail/u-boot/2012-September/135156.html
checkgcc4:
	@if test $(call cc-version) -lt 0400; then \
		echo -n '*** Your GCC is too old, please upgrade to GCC 4.x or newer'; \
		false; \
	fi

S
Stephen Warren 已提交
792 793 794 795 796 797
checkdtc:
	@if test $(call dtc-version) -lt 0104; then \
		echo '*** Your dtc is too old, please upgrade to dtc 1.4 or newer'; \
		false; \
	fi

798 799 800 801 802 803
#
# 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.
804
include/autoconf.mk.dep: include/config.h include/common.h
805
	@$(XECHO) Generating $@ ; \
806
	: Generate the dependancies ; \
807
	$(CC) -x c -DDO_DEPS_ONLY -M $(CFLAGS) $(CPPFLAGS) \
808
		-MQ include/autoconf.mk $(srctree)/include/common.h > $@ || \
809
		rm $@
810

811
include/autoconf.mk: include/config.h
812
	@$(XECHO) Generating $@ ; \
813
	: Extract the config macros ; \
814 815
	$(CPP) $(CFLAGS) -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && \
		sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp > $@; \
816
	rm $@.tmp
817

818
# Auto-generate the spl-autoconf.mk file (which is included by all makefiles for SPL)
819
include/tpl-autoconf.mk: include/config.h
820 821 822
	@$(XECHO) Generating $@ ; \
	: Extract the config macros ; \
	$(CPP) $(CFLAGS) -DCONFIG_TPL_BUILD  -DCONFIG_SPL_BUILD\
823 824
			-DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && \
		sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp > $@; \
825
	rm $@.tmp
826

827
include/spl-autoconf.mk: include/config.h
828 829
	@$(XECHO) Generating $@ ; \
	: Extract the config macros ; \
830 831
	$(CPP) $(CFLAGS) -DCONFIG_SPL_BUILD -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && \
		sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp > $@; \
832
	rm $@.tmp
833

834
include/generated/generic-asm-offsets.h: lib/asm-offsets.s
835
	@$(XECHO) Generating $@
836
	$(srctree)/tools/scripts/make-asm-offsets lib/asm-offsets.s $@
837

838 839
lib/asm-offsets.s: include/config.h $(srctree)/lib/asm-offsets.c
	@mkdir -p lib
840 841
	$(CC) -DDO_DEPS_ONLY \
		$(CFLAGS) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \
842
		-o $@ $(srctree)/lib/asm-offsets.c -c -S
843

844
include/generated/asm-offsets.h: $(CPUDIR)/$(SOC)/asm-offsets.s
845
	@$(XECHO) Generating $@
846
	$(srctree)/tools/scripts/make-asm-offsets $(CPUDIR)/$(SOC)/asm-offsets.s $@
847

848 849 850
$(CPUDIR)/$(SOC)/asm-offsets.s:	include/config.h
	@mkdir -p $(CPUDIR)/$(SOC)
	if [ -f $(srctree)/$(CPUDIR)/$(SOC)/asm-offsets.c ];then \
851 852
		$(CC) -DDO_DEPS_ONLY \
		$(CFLAGS) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \
853
			-o $@ $(srctree)/$(CPUDIR)/$(SOC)/asm-offsets.c -c -S; \
854 855 856 857
	else \
		touch $@; \
	fi

W
wdenk 已提交
858
#########################################################################
859
else	# !config.mk
860 861
all u-boot.hex u-boot.srec u-boot.bin \
u-boot.img u-boot.dis u-boot \
862
$(filter-out tools,$(SUBDIRS)) \
863
depend dep tags ctags etags cscope System.map:
W
wdenk 已提交
864 865
	@echo "System not configured - see README" >&2
	@ exit 1
866

867
tools: $(VERSION_FILE) $(TIMESTAMP_FILE)
868
	$(MAKE) $(build)=$@ all
869
endif	# config.mk
W
wdenk 已提交
870

871 872
# ARM relocations should all be R_ARM_RELATIVE (32-bit) or
# R_AARCH64_RELATIVE (64-bit).
873
checkarmreloc: u-boot
874 875 876 877 878 879 880
	@RELOC="`$(CROSS_COMPILE)readelf -r -W $< | cut -d ' ' -f 4 | \
		grep R_A | sort -u`"; \
	if test "$$RELOC" != "R_ARM_RELATIVE" -a \
		 "$$RELOC" != "R_AARCH64_RELATIVE"; then \
		echo "$< contains unexpected relocations: $$RELOC"; \
		false; \
	fi
881

882
$(VERSION_FILE):
883
		@mkdir -p $(dir $(VERSION_FILE))
884
		@( localvers='$(shell $(TOPDIR)/scripts/setlocalversion $(TOPDIR))' ; \
885 886 887 888 889 890 891 892 893 894 895
		   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 $@

896 897
$(TIMESTAMP_FILE):
		@mkdir -p $(dir $(TIMESTAMP_FILE))
898 899 900
		@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 $@
901

M
Mike Frysinger 已提交
902
easylogo env gdb:
903
	$(MAKE) $(build)=tools/$@ MTD_VERSION=${MTD_VERSION}
904

M
Mike Frysinger 已提交
905 906
gdbtools: gdb

907
xmldocs pdfdocs psdocs htmldocs mandocs: tools/kernel-doc/docproc
908
	$(MAKE) U_BOOT_VERSION=$(U_BOOT_VERSION) $(build)=doc/DocBook $@
909

910
tools-all: easylogo env gdb $(VERSION_FILE) $(TIMESTAMP_FILE)
911
	$(MAKE) $(build)=tools HOST_TOOLS_ALL=y
M
Mike Frysinger 已提交
912

913 914
.PHONY : CHANGELOG
CHANGELOG:
915 916
	git log --no-merges U-Boot-1_1_5.. | \
	unexpand -a | sed -e 's/\s\s*$$//' > $@
917

918
include/license.h: tools/bin2header COPYING
919
	cat COPYING | gzip -9 -c | ./tools/bin2header license_gzip > include/license.h
W
wdenk 已提交
920 921 922
#########################################################################

unconfig:
923 924 925 926 927
	@rm -f include/config.h include/config.mk \
		board/*/config.tmp board/*/*/config.tmp \
		include/autoconf.mk include/autoconf.mk.dep \
		include/spl-autoconf.mk \
		include/tpl-autoconf.mk
W
wdenk 已提交
928

929 930 931
%_config::	unconfig
	@$(MKCONFIG) -A $(@:_config=)

W
wdenk 已提交
932
#########################################################################
W
wdenk 已提交
933 934

clean:
935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966
	@rm -f examples/standalone/atmel_df_pow2			  \
	       examples/standalone/hello_world				  \
	       examples/standalone/interrupt				  \
	       examples/standalone/mem_to_mem_idma2intr			  \
	       examples/standalone/sched				  \
	       $(addprefix examples/standalone/, smc91111_eeprom smc911x_eeprom) \
	       examples/standalone/test_burst				  \
	       examples/standalone/timer
	@rm -f $(addprefix examples/api/, demo demo.bin)
	@rm -f tools/bmp_logo	   tools/easylogo/easylogo		  \
	       tools/env/fw_printenv					  \
	       tools/envcrc						  \
	       $(addprefix tools/gdb/, gdbcont gdbsend)			  \
	       tools/gen_eth_addr    tools/img2srec			  \
	       tools/dumpimage						  \
	       $(addprefix tools/, mkenvimage mkimage)			  \
	       tools/mpc86x_clk						  \
	       $(addprefix tools/, mk$(BOARD)spl mkexynosspl)		  \
	       tools/mxsboot						  \
	       tools/ncb		   tools/ubsha1			  \
	       tools/kernel-doc/docproc					  \
	       tools/proftool
	@rm -f $(addprefix board/cray/L1/, bootscript.c bootscript.image) \
	       board/matrix_vision/*/bootscript.img			  \
	       spl/board/samsung/$(BOARD)/tools/mk$(BOARD)spl		  \
	       u-boot.lds						  \
	       $(addprefix arch/blackfin/cpu/, init.lds init.elf)
	@rm -f include/bmp_logo.h
	@rm -f include/bmp_logo_data.h
	@rm -f lib/asm-offsets.s
	@rm -f include/generated/asm-offsets.h
	@rm -f $(CPUDIR)/$(SOC)/asm-offsets.s
P
Peter Tyser 已提交
967
	@rm -f $(TIMESTAMP_FILE) $(VERSION_FILE)
968
	@$(MAKE) -f $(srctree)/doc/DocBook/Makefile cleandocs
969
	@find $(OBJTREE) -type f \
970
		\( -name 'core' -o -name '*.bak' -o -name '*~' -o -name '*.su' \
971 972
		-o -name '*.o'	-o -name '*.a' -o -name '*.exe' \
		-o -name '*.cfgtmp' \) -print \
W
wdenk 已提交
973 974
		| xargs rm -f

A
Andy Fleming 已提交
975 976 977 978 979 980 981 982
# Removes everything not needed for testing u-boot
tidy:	clean
	@find $(OBJTREE) -type f \( -name '*.depend*' \) -print | xargs rm -f

clobber:	tidy
	@find $(OBJTREE) -type f \( -name '*.srec' \
		-o -name '*.bin' -o -name u-boot.img \) \
		-print0 | xargs -0 rm -f
983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009
	@rm -f $(OBJS) *.bak ctags etags TAGS \
		cscope.* *.*~
	@rm -f u-boot u-boot.map u-boot.hex $(ALL-y)
	@rm -f u-boot.kwb
	@rm -f u-boot.pbl
	@rm -f u-boot.imx
	@rm -f u-boot-with-spl.imx
	@rm -f u-boot-with-nand-spl.imx
	@rm -f u-boot.ubl
	@rm -f u-boot.ais
	@rm -f u-boot.dtb
	@rm -f u-boot.sb
	@rm -f u-boot.spr
	@rm -f $(addprefix nand_spl/, u-boot.lds u-boot.lst System.map)
	@rm -f $(addprefix nand_spl/, u-boot-nand_spl.lds u-boot-spl u-boot-spl.map)
	@rm -f $(addprefix spl/, u-boot-spl u-boot-spl.bin u-boot-spl.map)
	@rm -f spl/u-boot-spl.lds
	@rm -f $(addprefix tpl/, u-boot-tpl u-boot-tpl.bin u-boot-tpl.map)
	@rm -f tpl/u-boot-spl.lds
	@rm -f MLO MLO.byteswap
	@rm -f SPL
	@rm -f tools/xway-swap-bytes
	@rm -fr include/asm/proc include/asm/arch include/asm
	@rm -fr include/generated
	@[ ! -d nand_spl ] || find nand_spl -name "*" -type l -print | xargs rm -f
	@rm -f dts/*.tmp
	@rm -f $(addprefix spl/, u-boot-spl.ais, u-boot-spl-pad.ais)
1010 1011 1012

mrproper \
distclean:	clobber unconfig
1013
ifneq ($(OBJTREE),$(SRCTREE))
1014
	rm -rf *
1015
endif
W
wdenk 已提交
1016 1017 1018

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

#########################################################################
1022 1023 1024 1025 1026 1027 1028 1029 1030

endif	# skip-makefile

PHONY += FORCE
FORCE:

# Declare the contents of the .PHONY variable as phony.  We keep that
# information in a variable so we can use it in if_changed and friends.
.PHONY: $(PHONY)