xref: /openbmc/u-boot/Makefile (revision 3f76e984170435e794c84595cbd3883893149fb9)
1 7ebf7443Swdenk#
2 eca3aeb3SWolfgang Denk# (C) Copyright 2000-2013
3 7ebf7443Swdenk# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
4 7ebf7443Swdenk#
5 eca3aeb3SWolfgang Denk# SPDX-License-Identifier:	GPL-2.0+
6 7ebf7443Swdenk#
7 7ebf7443Swdenk
8 d19ad726STom RiniVERSION = 2014
9 d19ad726STom RiniPATCHLEVEL = 01
10 211e4754SWolfgang DenkSUBLEVEL =
11 b44bd2c7STom RiniEXTRAVERSION =
12 5f30f3beSMasahiro YamadaNAME =
13 ae6d1056SWolfgang Denk
14 6825a95bSMasahiro Yamada# *DOCUMENTATION*
15 6825a95bSMasahiro Yamada# To see a list of typical targets execute "make help"
16 6825a95bSMasahiro Yamada# More info can be located in ./README
17 6825a95bSMasahiro Yamada# Comments in this file are targeted only to the developer, do not
18 6825a95bSMasahiro Yamada# expect to learn how to build the kernel reading this file.
19 6825a95bSMasahiro Yamada
20 6825a95bSMasahiro Yamada# Do not:
21 6825a95bSMasahiro Yamada# o  use make's built-in rules and variables
22 6825a95bSMasahiro Yamada#    (this increases performance and avoids hard-to-debug behaviour);
23 6825a95bSMasahiro Yamada# o  print "Entering directory ...";
24 6825a95bSMasahiro YamadaMAKEFLAGS += -rR --no-print-directory
25 6825a95bSMasahiro Yamada
26 6825a95bSMasahiro Yamada# Avoid funny character set dependencies
27 6825a95bSMasahiro Yamadaunexport LC_ALL
28 6825a95bSMasahiro YamadaLC_COLLATE=C
29 6825a95bSMasahiro YamadaLC_NUMERIC=C
30 6825a95bSMasahiro Yamadaexport LC_COLLATE LC_NUMERIC
31 6825a95bSMasahiro Yamada
32 6825a95bSMasahiro Yamada# We are using a recursive build, so we need to do a little thinking
33 6825a95bSMasahiro Yamada# to get the ordering right.
34 6825a95bSMasahiro Yamada#
35 6825a95bSMasahiro Yamada# Most importantly: sub-Makefiles should only ever modify files in
36 6825a95bSMasahiro Yamada# their own directory. If in some directory we have a dependency on
37 6825a95bSMasahiro Yamada# a file in another dir (which doesn't happen often, but it's often
38 6825a95bSMasahiro Yamada# unavoidable when linking the built-in.o targets which finally
39 6825a95bSMasahiro Yamada# turn into vmlinux), we will call a sub make in that other dir, and
40 6825a95bSMasahiro Yamada# after that we are sure that everything which is in that other dir
41 6825a95bSMasahiro Yamada# is now up to date.
42 6825a95bSMasahiro Yamada#
43 6825a95bSMasahiro Yamada# The only cases where we need to modify files which have global
44 6825a95bSMasahiro Yamada# effects are thus separated out and done before the recursive
45 6825a95bSMasahiro Yamada# descending is started. They are now explicitly listed as the
46 6825a95bSMasahiro Yamada# prepare rule.
47 6825a95bSMasahiro Yamada
48 6825a95bSMasahiro Yamada# To put more focus on warnings, be less verbose as default
49 6825a95bSMasahiro Yamada# Use 'make V=1' to see the full commands
50 6825a95bSMasahiro Yamada
51 6825a95bSMasahiro Yamadaifeq ("$(origin V)", "command line")
52 6825a95bSMasahiro Yamada  KBUILD_VERBOSE = $(V)
53 6825a95bSMasahiro Yamadaendif
54 6825a95bSMasahiro Yamadaifndef KBUILD_VERBOSE
55 6825a95bSMasahiro Yamada  KBUILD_VERBOSE = 0
56 6825a95bSMasahiro Yamadaendif
57 6825a95bSMasahiro Yamada
58 6825a95bSMasahiro Yamada# Call a source code checker (by default, "sparse") as part of the
59 6825a95bSMasahiro Yamada# C compilation.
60 6825a95bSMasahiro Yamada#
61 6825a95bSMasahiro Yamada# Use 'make C=1' to enable checking of only re-compiled files.
62 6825a95bSMasahiro Yamada# Use 'make C=2' to enable checking of *all* source files, regardless
63 6825a95bSMasahiro Yamada# of whether they are re-compiled or not.
64 6825a95bSMasahiro Yamada#
65 6825a95bSMasahiro Yamada# See the file "Documentation/sparse.txt" for more details, including
66 6825a95bSMasahiro Yamada# where to get the "sparse" utility.
67 6825a95bSMasahiro Yamada
68 6825a95bSMasahiro Yamadaifeq ("$(origin C)", "command line")
69 6825a95bSMasahiro Yamada  KBUILD_CHECKSRC = $(C)
70 6825a95bSMasahiro Yamadaendif
71 6825a95bSMasahiro Yamadaifndef KBUILD_CHECKSRC
72 6825a95bSMasahiro Yamada  KBUILD_CHECKSRC = 0
73 6825a95bSMasahiro Yamadaendif
74 6825a95bSMasahiro Yamada
75 6825a95bSMasahiro Yamada# Use make M=dir to specify directory of external module to build
76 6825a95bSMasahiro Yamada# Old syntax make ... SUBDIRS=$PWD is still supported
77 6825a95bSMasahiro Yamada# Setting the environment variable KBUILD_EXTMOD take precedence
78 6825a95bSMasahiro Yamadaifdef SUBDIRS
79 6825a95bSMasahiro Yamada  KBUILD_EXTMOD ?= $(SUBDIRS)
80 6825a95bSMasahiro Yamadaendif
81 6825a95bSMasahiro Yamada
82 6825a95bSMasahiro Yamadaifeq ("$(origin M)", "command line")
83 6825a95bSMasahiro Yamada  KBUILD_EXTMOD := $(M)
84 6825a95bSMasahiro Yamadaendif
85 6825a95bSMasahiro Yamada
86 9e414032SMasahiro Yamada# kbuild supports saving output files in a separate directory.
87 9e414032SMasahiro Yamada# To locate output files in a separate directory two syntaxes are supported.
88 9e414032SMasahiro Yamada# In both cases the working directory must be the root of the kernel src.
89 9e414032SMasahiro Yamada# 1) O=
90 9e414032SMasahiro Yamada# Use "make O=dir/to/store/output/files/"
91 f9328639SMarian Balakowicz#
92 9e414032SMasahiro Yamada# 2) Set KBUILD_OUTPUT
93 9e414032SMasahiro Yamada# Set the environment variable KBUILD_OUTPUT to point to the directory
94 9e414032SMasahiro Yamada# where the output files shall be placed.
95 9e414032SMasahiro Yamada# export KBUILD_OUTPUT=dir/to/store/output/files/
96 9e414032SMasahiro Yamada# make
97 f9328639SMarian Balakowicz#
98 9e414032SMasahiro Yamada# The O= assignment takes precedence over the KBUILD_OUTPUT environment
99 9e414032SMasahiro Yamada# variable.
100 7ebf7443Swdenk
101 9e414032SMasahiro Yamada
102 9e414032SMasahiro Yamada# KBUILD_SRC is set on invocation of make in OBJ directory
103 9e414032SMasahiro Yamada# KBUILD_SRC is not intended to be used by the regular user (for now)
104 9e414032SMasahiro Yamadaifeq ($(KBUILD_SRC),)
105 9e414032SMasahiro Yamada
106 9e414032SMasahiro Yamada# OK, Make called in directory where kernel src resides
107 9e414032SMasahiro Yamada# Do we want to locate output files in a separate directory?
108 f9328639SMarian Balakowiczifeq ("$(origin O)", "command line")
109 9e414032SMasahiro Yamada  KBUILD_OUTPUT := $(O)
110 f9328639SMarian Balakowiczendif
111 7ebf7443Swdenk
112 9e414032SMasahiro Yamadaifeq ("$(origin W)", "command line")
113 9e414032SMasahiro Yamada  export KBUILD_ENABLE_EXTRA_GCC_CHECKS := $(W)
114 9e414032SMasahiro Yamadaendif
115 9e414032SMasahiro Yamada
116 9e414032SMasahiro Yamada# That's our default target when none is given on the command line
117 9e414032SMasahiro YamadaPHONY := _all
118 9e414032SMasahiro Yamada_all:
119 9e414032SMasahiro Yamada
120 9e414032SMasahiro Yamada# Cancel implicit rules on top Makefile
121 9e414032SMasahiro Yamada$(CURDIR)/Makefile Makefile: ;
122 9e414032SMasahiro Yamada
123 9e414032SMasahiro Yamadaifneq ($(KBUILD_OUTPUT),)
124 9e414032SMasahiro Yamada# Invoke a second make in the output directory, passing relevant variables
125 9e414032SMasahiro Yamada# check that the output directory actually exists
126 9e414032SMasahiro Yamadasaved-output := $(KBUILD_OUTPUT)
127 9e414032SMasahiro YamadaKBUILD_OUTPUT := $(shell cd $(KBUILD_OUTPUT) && /bin/pwd)
128 9e414032SMasahiro Yamada$(if $(KBUILD_OUTPUT),, \
129 9e414032SMasahiro Yamada     $(error output directory "$(saved-output)" does not exist))
130 9e414032SMasahiro Yamada
131 9e414032SMasahiro YamadaPHONY += $(MAKECMDGOALS) sub-make
132 9e414032SMasahiro Yamada
133 9e414032SMasahiro Yamada$(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make
134 9e414032SMasahiro Yamada	@:
135 9e414032SMasahiro Yamada
136 9e414032SMasahiro Yamadasub-make: FORCE
137 9e414032SMasahiro Yamada	$(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT) \
138 9e414032SMasahiro Yamada	KBUILD_SRC=$(CURDIR) \
139 9e414032SMasahiro Yamada	KBUILD_EXTMOD="$(KBUILD_EXTMOD)" -f $(CURDIR)/Makefile \
140 9e414032SMasahiro Yamada	$(filter-out _all sub-make,$(MAKECMDGOALS))
141 9e414032SMasahiro Yamada
142 9e414032SMasahiro Yamada# Leave processing to above invocation of make
143 9e414032SMasahiro Yamadaskip-makefile := 1
144 9e414032SMasahiro Yamadaendif # ifneq ($(KBUILD_OUTPUT),)
145 9e414032SMasahiro Yamadaendif # ifeq ($(KBUILD_SRC),)
146 9e414032SMasahiro Yamada
147 9e414032SMasahiro Yamada# We process the rest of the Makefile if this is the final invocation of make
148 9e414032SMasahiro Yamadaifeq ($(skip-makefile),)
149 9e414032SMasahiro Yamada
150 6825a95bSMasahiro Yamada# If building an external module we do not care about the all: rule
151 6825a95bSMasahiro Yamada# but instead _all depend on modules
152 9e414032SMasahiro YamadaPHONY += all
153 6825a95bSMasahiro Yamadaifeq ($(KBUILD_EXTMOD),)
154 9e414032SMasahiro Yamada_all: all
155 6825a95bSMasahiro Yamadaelse
156 6825a95bSMasahiro Yamada_all: modules
157 6825a95bSMasahiro Yamadaendif
158 9e414032SMasahiro Yamada
159 9e414032SMasahiro Yamadasrctree		:= $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR))
160 9e414032SMasahiro Yamadaobjtree		:= $(CURDIR)
161 9e414032SMasahiro Yamadasrc		:= $(srctree)
162 9e414032SMasahiro Yamadaobj		:= $(objtree)
163 9e414032SMasahiro Yamada
164 9e414032SMasahiro YamadaVPATH		:= $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD))
165 9e414032SMasahiro Yamada
166 9e414032SMasahiro Yamadaexport srctree objtree VPATH
167 9e414032SMasahiro Yamada
168 9e414032SMasahiro YamadaOBJTREE		:= $(objtree)
169 c8f9c302SDaniel SchwierzeckSPLTREE		:= $(OBJTREE)/spl
170 3aa29de0SYing ZhangTPLTREE		:= $(OBJTREE)/tpl
171 9e414032SMasahiro YamadaSRCTREE		:= $(srctree)
172 f9328639SMarian BalakowiczTOPDIR		:= $(SRCTREE)
173 9e414032SMasahiro Yamadaexport	TOPDIR SRCTREE OBJTREE SPLTREE TPLTREE
174 f9328639SMarian Balakowicz
175 f9328639SMarian BalakowiczMKCONFIG	:= $(SRCTREE)/mkconfig
176 f9328639SMarian Balakowiczexport MKCONFIG
177 f9328639SMarian Balakowicz
178 5013c09fSWolfgang Denk# Make sure CDPATH settings don't interfere
179 5013c09fSWolfgang Denkunexport CDPATH
180 5013c09fSWolfgang Denk
181 f9328639SMarian Balakowicz#########################################################################
182 f9328639SMarian Balakowicz
183 5f30f3beSMasahiro YamadaTIMESTAMP_FILE = include/generated/timestamp_autogenerated.h
184 5f30f3beSMasahiro YamadaVERSION_FILE = include/generated/version_autogenerated.h
185 5f30f3beSMasahiro Yamada
186 5f30f3beSMasahiro YamadaHOSTARCH := $(shell uname -m | \
187 5f30f3beSMasahiro Yamada	sed -e s/i.86/x86/ \
188 5f30f3beSMasahiro Yamada	    -e s/sun4u/sparc64/ \
189 5f30f3beSMasahiro Yamada	    -e s/arm.*/arm/ \
190 5f30f3beSMasahiro Yamada	    -e s/sa110/arm/ \
191 5f30f3beSMasahiro Yamada	    -e s/ppc64/powerpc/ \
192 5f30f3beSMasahiro Yamada	    -e s/ppc/powerpc/ \
193 5f30f3beSMasahiro Yamada	    -e s/macppc/powerpc/\
194 5f30f3beSMasahiro Yamada	    -e s/sh.*/sh/)
195 5f30f3beSMasahiro Yamada
196 5f30f3beSMasahiro YamadaHOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
197 5f30f3beSMasahiro Yamada	    sed -e 's/\(cygwin\).*/cygwin/')
198 5f30f3beSMasahiro Yamada
199 5f30f3beSMasahiro Yamadaexport	HOSTARCH HOSTOS
200 5f30f3beSMasahiro Yamada
201 5f30f3beSMasahiro Yamada# Deal with colliding definitions from tcsh etc.
202 5f30f3beSMasahiro YamadaVENDOR=
203 5f30f3beSMasahiro Yamada
204 5f30f3beSMasahiro Yamada#########################################################################
205 5f30f3beSMasahiro Yamada
206 1ea6bcd8SMike Frysinger# set default to nothing for native builds
207 a5284efdSWolfgang Denkifeq ($(HOSTARCH),$(ARCH))
208 1ea6bcd8SMike FrysingerCROSS_COMPILE ?=
209 7ebf7443Swdenkendif
210 7ebf7443Swdenk
211 f6322eb7SMasahiro Yamada# SHELL used by kbuild
212 f6322eb7SMasahiro YamadaCONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
213 f6322eb7SMasahiro Yamada	  else if [ -x /bin/bash ]; then echo /bin/bash; \
214 f6322eb7SMasahiro Yamada	  else echo sh; fi ; fi)
215 f6322eb7SMasahiro Yamada
216 f6322eb7SMasahiro YamadaHOSTCC       = gcc
217 f6322eb7SMasahiro YamadaHOSTCFLAGS   = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
218 f6322eb7SMasahiro Yamada
219 f6322eb7SMasahiro Yamadaifeq ($(HOSTOS),cygwin)
220 f6322eb7SMasahiro YamadaHOSTCFLAGS	+= -ansi
221 f6322eb7SMasahiro Yamadaendif
222 f6322eb7SMasahiro Yamada
223 f6322eb7SMasahiro Yamada# Mac OS X / Darwin's C preprocessor is Apple specific.  It
224 f6322eb7SMasahiro Yamada# generates numerous errors and warnings.  We want to bypass it
225 f6322eb7SMasahiro Yamada# and use GNU C's cpp.	To do this we pass the -traditional-cpp
226 f6322eb7SMasahiro Yamada# option to the compiler.  Note that the -traditional-cpp flag
227 f6322eb7SMasahiro Yamada# DOES NOT have the same semantics as GNU C's flag, all it does
228 f6322eb7SMasahiro Yamada# is invoke the GNU preprocessor in stock ANSI/ISO C fashion.
229 f6322eb7SMasahiro Yamada#
230 f6322eb7SMasahiro Yamada# Apple's linker is similar, thanks to the new 2 stage linking
231 f6322eb7SMasahiro Yamada# multiple symbol definitions are treated as errors, hence the
232 f6322eb7SMasahiro Yamada# -multiply_defined suppress option to turn off this error.
233 f6322eb7SMasahiro Yamada#
234 f6322eb7SMasahiro Yamadaifeq ($(HOSTOS),darwin)
235 f6322eb7SMasahiro Yamada# get major and minor product version (e.g. '10' and '6' for Snow Leopard)
236 f6322eb7SMasahiro YamadaDARWIN_MAJOR_VERSION	= $(shell sw_vers -productVersion | cut -f 1 -d '.')
237 f6322eb7SMasahiro YamadaDARWIN_MINOR_VERSION	= $(shell sw_vers -productVersion | cut -f 2 -d '.')
238 f6322eb7SMasahiro Yamada
239 f6322eb7SMasahiro Yamadaos_x_before	= $(shell if [ $(DARWIN_MAJOR_VERSION) -le $(1) -a \
240 f6322eb7SMasahiro Yamada	$(DARWIN_MINOR_VERSION) -le $(2) ] ; then echo "$(3)"; else echo "$(4)"; fi ;)
241 f6322eb7SMasahiro Yamada
242 f6322eb7SMasahiro Yamada# Snow Leopards build environment has no longer restrictions as described above
243 f6322eb7SMasahiro YamadaHOSTCC       = $(call os_x_before, 10, 5, "cc", "gcc")
244 f6322eb7SMasahiro YamadaHOSTCFLAGS  += $(call os_x_before, 10, 4, "-traditional-cpp")
245 f6322eb7SMasahiro YamadaHOSTLDFLAGS += $(call os_x_before, 10, 5, "-multiply_defined suppress")
246 f6322eb7SMasahiro Yamadaendif
247 f6322eb7SMasahiro Yamada
248 6825a95bSMasahiro Yamada# Decide whether to build built-in, modular, or both.
249 6825a95bSMasahiro Yamada# Normally, just do built-in.
250 6825a95bSMasahiro Yamada
251 6825a95bSMasahiro YamadaKBUILD_MODULES :=
252 6825a95bSMasahiro YamadaKBUILD_BUILTIN := 1
253 6825a95bSMasahiro Yamada
254 6825a95bSMasahiro Yamada#	If we have only "make modules", don't compile built-in objects.
255 6825a95bSMasahiro Yamada#	When we're building modules with modversions, we need to consider
256 6825a95bSMasahiro Yamada#	the built-in objects during the descend as well, in order to
257 6825a95bSMasahiro Yamada#	make sure the checksums are up to date before we record them.
258 6825a95bSMasahiro Yamada
259 6825a95bSMasahiro Yamadaifeq ($(MAKECMDGOALS),modules)
260 6825a95bSMasahiro Yamada  KBUILD_BUILTIN := $(if $(CONFIG_MODVERSIONS),1)
261 6825a95bSMasahiro Yamadaendif
262 6825a95bSMasahiro Yamada
263 6825a95bSMasahiro Yamada#	If we have "make <whatever> modules", compile modules
264 6825a95bSMasahiro Yamada#	in addition to whatever we do anyway.
265 6825a95bSMasahiro Yamada#	Just "make" or "make all" shall build modules as well
266 6825a95bSMasahiro Yamada
267 6825a95bSMasahiro Yamada# U-Boot does not need modules
268 6825a95bSMasahiro Yamada#ifneq ($(filter all _all modules,$(MAKECMDGOALS)),)
269 6825a95bSMasahiro Yamada#  KBUILD_MODULES := 1
270 6825a95bSMasahiro Yamada#endif
271 6825a95bSMasahiro Yamada
272 6825a95bSMasahiro Yamada#ifeq ($(MAKECMDGOALS),)
273 6825a95bSMasahiro Yamada#  KBUILD_MODULES := 1
274 6825a95bSMasahiro Yamada#endif
275 6825a95bSMasahiro Yamada
276 6825a95bSMasahiro Yamadaexport KBUILD_MODULES KBUILD_BUILTIN
277 6825a95bSMasahiro Yamadaexport KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD
278 6825a95bSMasahiro Yamada
279 6825a95bSMasahiro Yamada# Beautify output
280 6825a95bSMasahiro Yamada# ---------------------------------------------------------------------------
281 6825a95bSMasahiro Yamada#
282 6825a95bSMasahiro Yamada# Normally, we echo the whole command before executing it. By making
283 6825a95bSMasahiro Yamada# that echo $($(quiet)$(cmd)), we now have the possibility to set
284 6825a95bSMasahiro Yamada# $(quiet) to choose other forms of output instead, e.g.
285 6825a95bSMasahiro Yamada#
286 6825a95bSMasahiro Yamada#         quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@
287 6825a95bSMasahiro Yamada#         cmd_cc_o_c       = $(CC) $(c_flags) -c -o $@ $<
288 6825a95bSMasahiro Yamada#
289 6825a95bSMasahiro Yamada# If $(quiet) is empty, the whole command will be printed.
290 6825a95bSMasahiro Yamada# If it is set to "quiet_", only the short version will be printed.
291 6825a95bSMasahiro Yamada# If it is set to "silent_", nothing will be printed at all, since
292 6825a95bSMasahiro Yamada# the variable $(silent_cmd_cc_o_c) doesn't exist.
293 6825a95bSMasahiro Yamada#
294 6825a95bSMasahiro Yamada# A simple variant is to prefix commands with $(Q) - that's useful
295 6825a95bSMasahiro Yamada# for commands that shall be hidden in non-verbose mode.
296 6825a95bSMasahiro Yamada#
297 6825a95bSMasahiro Yamada#	$(Q)ln $@ :<
298 6825a95bSMasahiro Yamada#
299 6825a95bSMasahiro Yamada# If KBUILD_VERBOSE equals 0 then the above command will be hidden.
300 6825a95bSMasahiro Yamada# If KBUILD_VERBOSE equals 1 then the above command is displayed.
301 6825a95bSMasahiro Yamada
302 6825a95bSMasahiro Yamadaifeq ($(KBUILD_VERBOSE),1)
303 6825a95bSMasahiro Yamada  quiet =
304 6825a95bSMasahiro Yamada  Q =
305 6825a95bSMasahiro Yamadaelse
306 6825a95bSMasahiro Yamada  quiet=quiet_
307 6825a95bSMasahiro Yamada  Q = @
308 6825a95bSMasahiro Yamadaendif
309 6825a95bSMasahiro Yamada
310 6825a95bSMasahiro Yamada# If the user is running make -s (silent mode), suppress echoing of
311 6825a95bSMasahiro Yamada# commands
312 6825a95bSMasahiro Yamada
313 6825a95bSMasahiro Yamadaifneq ($(filter s% -s%,$(MAKEFLAGS)),)
314 6825a95bSMasahiro Yamada  quiet=silent_
315 6825a95bSMasahiro Yamadaendif
316 6825a95bSMasahiro Yamada
317 6825a95bSMasahiro Yamadaexport quiet Q KBUILD_VERBOSE
318 6825a95bSMasahiro Yamada
319 6825a95bSMasahiro Yamada
320 9e414032SMasahiro Yamada# Look for make include files relative to root of kernel src
321 9e414032SMasahiro YamadaMAKEFLAGS += --include-dir=$(srctree)
322 9e414032SMasahiro Yamada
323 bf4b3de1SMasahiro Yamada# We need some generic definitions (do not try to remake the file).
324 bf4b3de1SMasahiro Yamada$(srctree)/scripts/Kbuild.include: ;
325 bf4b3de1SMasahiro Yamadainclude $(srctree)/scripts/Kbuild.include
326 bf4b3de1SMasahiro Yamada
327 f6322eb7SMasahiro Yamada# Make variables (CC, etc...)
328 f6322eb7SMasahiro Yamada
329 f6322eb7SMasahiro YamadaAS		= $(CROSS_COMPILE)as
330 f6322eb7SMasahiro Yamada# Always use GNU ld
331 f6322eb7SMasahiro Yamadaifneq ($(shell $(CROSS_COMPILE)ld.bfd -v 2> /dev/null),)
332 f6322eb7SMasahiro YamadaLD		= $(CROSS_COMPILE)ld.bfd
333 f6322eb7SMasahiro Yamadaelse
334 f6322eb7SMasahiro YamadaLD		= $(CROSS_COMPILE)ld
335 f6322eb7SMasahiro Yamadaendif
336 f6322eb7SMasahiro YamadaCC		= $(CROSS_COMPILE)gcc
337 f6322eb7SMasahiro YamadaCPP		= $(CC) -E
338 f6322eb7SMasahiro YamadaAR		= $(CROSS_COMPILE)ar
339 f6322eb7SMasahiro YamadaNM		= $(CROSS_COMPILE)nm
340 f6322eb7SMasahiro YamadaLDR		= $(CROSS_COMPILE)ldr
341 f6322eb7SMasahiro YamadaSTRIP		= $(CROSS_COMPILE)strip
342 f6322eb7SMasahiro YamadaOBJCOPY		= $(CROSS_COMPILE)objcopy
343 f6322eb7SMasahiro YamadaOBJDUMP		= $(CROSS_COMPILE)objdump
344 f6322eb7SMasahiro YamadaAWK		= awk
345 f6322eb7SMasahiro YamadaRANLIB		= $(CROSS_COMPILE)RANLIB
346 f6322eb7SMasahiro YamadaDTC		= dtc
347 f6322eb7SMasahiro YamadaCHECK		= sparse
348 f6322eb7SMasahiro Yamada
349 f6322eb7SMasahiro YamadaCHECKFLAGS     := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
350 f6322eb7SMasahiro Yamada		  -Wbitwise -Wno-return-void -D__CHECK_ENDIAN__ $(CF)
351 f6322eb7SMasahiro Yamada
352 2b3c9d3dSMasahiro YamadaKBUILD_CPPFLAGS := -D__KERNEL__
353 2b3c9d3dSMasahiro Yamada
354 2b3c9d3dSMasahiro YamadaKBUILD_CFLAGS   := -Wall -Wstrict-prototypes \
355 2b3c9d3dSMasahiro Yamada		   -Wno-format-security \
356 2b3c9d3dSMasahiro Yamada		   -fno-builtin -ffreestanding
357 2b3c9d3dSMasahiro YamadaKBUILD_AFLAGS   := -D__ASSEMBLY__
358 2b3c9d3dSMasahiro Yamada
359 5f30f3beSMasahiro YamadaU_BOOT_VERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)
360 5f30f3beSMasahiro Yamada
361 5f30f3beSMasahiro Yamadaexport VERSION PATCHLEVEL SUBLEVEL U_BOOT_VERSION
362 433b2f1eSMasahiro Yamadaexport ARCH CPU BOARD VENDOR SOC
363 f6322eb7SMasahiro Yamadaexport CONFIG_SHELL HOSTCC HOSTCFLAGS HOSTLDFLAGS CROSS_COMPILE AS LD CC
364 f6322eb7SMasahiro Yamadaexport CPP AR NM LDR STRIP OBJCOPY OBJDUMP
365 f6322eb7SMasahiro Yamadaexport MAKE AWK
366 f6322eb7SMasahiro Yamadaexport DTC CHECK CHECKFLAGS
367 f6322eb7SMasahiro Yamada
368 fea1ca8eSMasahiro Yamadaexport KBUILD_CPPFLAGS NOSTDINC_FLAGS UBOOTINCLUDE
369 2b3c9d3dSMasahiro Yamadaexport KBUILD_CFLAGS KBUILD_AFLAGS
370 2b3c9d3dSMasahiro Yamada
371 6825a95bSMasahiro Yamada# When compiling out-of-tree modules, put MODVERDIR in the module
372 6825a95bSMasahiro Yamada# tree rather than in the kernel tree. The kernel tree might
373 6825a95bSMasahiro Yamada# even be read-only.
374 6825a95bSMasahiro Yamadaexport MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_versions
375 6825a95bSMasahiro Yamada
376 6825a95bSMasahiro Yamada# Files to ignore in find ... statements
377 6825a95bSMasahiro Yamada
378 6825a95bSMasahiro YamadaRCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS \
379 6825a95bSMasahiro Yamada		   -o -name .pc -o -name .hg -o -name .git \) -prune -o
380 6825a95bSMasahiro Yamadaexport RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \
381 6825a95bSMasahiro Yamada			 --exclude CVS --exclude .pc --exclude .hg --exclude .git
382 6825a95bSMasahiro Yamada
383 6825a95bSMasahiro Yamada# ===========================================================================
384 6825a95bSMasahiro Yamada# Rules shared between *config targets and build targets
385 6825a95bSMasahiro Yamada
386 6825a95bSMasahiro Yamada# Basic helpers built in scripts/
387 6825a95bSMasahiro YamadaPHONY += scripts_basic
388 6825a95bSMasahiro Yamadascripts_basic:
389 6825a95bSMasahiro Yamada	$(Q)$(MAKE) $(build)=scripts/basic
390 6825a95bSMasahiro Yamada	$(Q)rm -f .tmp_quiet_recordmcount
391 6825a95bSMasahiro Yamada
392 6825a95bSMasahiro Yamada# To avoid any implicit rule to kick in, define an empty command.
393 6825a95bSMasahiro Yamadascripts/basic/%: scripts_basic ;
394 6825a95bSMasahiro Yamada
395 433b2f1eSMasahiro Yamada# To make sure we do not include .config for any of the *config targets
396 433b2f1eSMasahiro Yamada# catch them early, and hand them over to scripts/kconfig/Makefile
397 433b2f1eSMasahiro Yamada# It is allowed to specify more targets when calling make, including
398 433b2f1eSMasahiro Yamada# mixing *config targets and build targets.
399 433b2f1eSMasahiro Yamada# For example 'make oldconfig all'.
400 433b2f1eSMasahiro Yamada# Detect when mixed targets is specified, and make a second invocation
401 433b2f1eSMasahiro Yamada# of make so .config is not included in this case either (for *config).
402 6825a95bSMasahiro Yamada
403 433b2f1eSMasahiro Yamadano-dot-config-targets := clean clobber mrproper distclean \
404 433b2f1eSMasahiro Yamada			 cscope TAGS %tags help %docs check% coccicheck \
405 433b2f1eSMasahiro Yamada			 backup
406 2b3c9d3dSMasahiro Yamada
407 433b2f1eSMasahiro Yamadaconfig-targets := 0
408 433b2f1eSMasahiro Yamadamixed-targets  := 0
409 433b2f1eSMasahiro Yamadadot-config     := 1
410 2b3c9d3dSMasahiro Yamada
411 433b2f1eSMasahiro Yamadaifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
412 433b2f1eSMasahiro Yamada	ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
413 433b2f1eSMasahiro Yamada		dot-config := 0
414 2b3c9d3dSMasahiro Yamada	endif
415 2b3c9d3dSMasahiro Yamadaendif
416 2b3c9d3dSMasahiro Yamada
417 433b2f1eSMasahiro Yamadaifeq ($(KBUILD_EXTMOD),)
418 433b2f1eSMasahiro Yamada        ifneq ($(filter config %config,$(MAKECMDGOALS)),)
419 433b2f1eSMasahiro Yamada                config-targets := 1
420 433b2f1eSMasahiro Yamada                ifneq ($(filter-out config %config,$(MAKECMDGOALS)),)
421 433b2f1eSMasahiro Yamada                        mixed-targets := 1
422 433b2f1eSMasahiro Yamada                endif
423 433b2f1eSMasahiro Yamada        endif
424 433b2f1eSMasahiro Yamadaendif
425 433b2f1eSMasahiro Yamada
426 433b2f1eSMasahiro Yamadaifeq ($(mixed-targets),1)
427 433b2f1eSMasahiro Yamada# ===========================================================================
428 433b2f1eSMasahiro Yamada# We're called with mixed targets (*config and build targets).
429 433b2f1eSMasahiro Yamada# Handle them one by one.
430 433b2f1eSMasahiro Yamada
431 433b2f1eSMasahiro Yamada%:: FORCE
432 433b2f1eSMasahiro Yamada	$(Q)$(MAKE) -C $(srctree) KBUILD_SRC= $@
433 433b2f1eSMasahiro Yamada
434 433b2f1eSMasahiro Yamadaelse
435 433b2f1eSMasahiro Yamadaifeq ($(config-targets),1)
436 433b2f1eSMasahiro Yamada# ===========================================================================
437 433b2f1eSMasahiro Yamada# *config targets only - make sure prerequisites are updated, and descend
438 433b2f1eSMasahiro Yamada# in scripts/kconfig to make the *config target
439 433b2f1eSMasahiro Yamada
440 433b2f1eSMasahiro Yamada# Read arch specific Makefile to set KBUILD_DEFCONFIG as needed.
441 433b2f1eSMasahiro Yamada# KBUILD_DEFCONFIG may point out an alternative default configuration
442 433b2f1eSMasahiro Yamada# used for 'make defconfig'
443 433b2f1eSMasahiro Yamada
444 433b2f1eSMasahiro Yamada%_config::
445 433b2f1eSMasahiro Yamada	@$(MKCONFIG) -A $(@:_config=)
446 433b2f1eSMasahiro Yamada
447 433b2f1eSMasahiro Yamadaelse
448 433b2f1eSMasahiro Yamada# ===========================================================================
449 433b2f1eSMasahiro Yamada# Build targets only - this includes vmlinux, arch specific targets, clean
450 433b2f1eSMasahiro Yamada# targets and others. In general all targets except *config targets.
451 433b2f1eSMasahiro Yamada
452 433b2f1eSMasahiro Yamada# load ARCH, BOARD, and CPU configuration
453 433b2f1eSMasahiro Yamada-include include/config.mk
454 433b2f1eSMasahiro Yamada
455 433b2f1eSMasahiro Yamadaifeq ($(dot-config),1)
456 433b2f1eSMasahiro Yamada# Read in config
457 433b2f1eSMasahiro Yamada-include include/autoconf.mk
458 433b2f1eSMasahiro Yamada-include include/autoconf.mk.dep
459 433b2f1eSMasahiro Yamada
460 92b197f0SWolfgang Denk# load other configuration
461 433b2f1eSMasahiro Yamadainclude $(srctree)/config.mk
462 92b197f0SWolfgang Denk
463 433b2f1eSMasahiro Yamadaifeq ($(wildcard include/config.mk),)
464 433b2f1eSMasahiro Yamada$(error "System not configured - see README")
465 ced0715dSMasahiro Yamadaendif
466 ced0715dSMasahiro Yamada
467 ced0715dSMasahiro Yamadaifeq ($(__HAVE_ARCH_GENERIC_BOARD),)
468 ced0715dSMasahiro Yamadaifneq ($(CONFIG_SYS_GENERIC_BOARD),)
469 433b2f1eSMasahiro Yamada$(error Your architecture does not support generic board. \
470 ced0715dSMasahiro YamadaPlease undefined CONFIG_SYS_GENERIC_BOARD in your board config file)
471 ced0715dSMasahiro Yamadaendif
472 fada9e20SSimon Glassendif
473 6825a95bSMasahiro Yamada
474 d51dfff7SIlya Yanok# If board code explicitly specified LDSCRIPT or CONFIG_SYS_LDSCRIPT, use
475 d51dfff7SIlya Yanok# that (or fail if absent).  Otherwise, search for a linker script in a
476 d51dfff7SIlya Yanok# standard location.
477 d51dfff7SIlya Yanok
478 ee60197eSSimon GlassLDSCRIPT_MAKEFILE_DIR = $(dir $(LDSCRIPT))
479 ee60197eSSimon Glass
480 d51dfff7SIlya Yanokifndef LDSCRIPT
481 d51dfff7SIlya Yanok	#LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds.debug
482 d51dfff7SIlya Yanok	ifdef CONFIG_SYS_LDSCRIPT
483 d51dfff7SIlya Yanok		# need to strip off double quotes
484 a8c07541SMasahiro Yamada		LDSCRIPT := $(CONFIG_SYS_LDSCRIPT:"%"=%)
485 d51dfff7SIlya Yanok	endif
486 d51dfff7SIlya Yanokendif
487 d51dfff7SIlya Yanok
488 ee60197eSSimon Glass# If there is no specified link script, we look in a number of places for it
489 d51dfff7SIlya Yanokifndef LDSCRIPT
490 d51dfff7SIlya Yanok	ifeq ($(CONFIG_NAND_U_BOOT),y)
491 d51dfff7SIlya Yanok		LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds
492 d51dfff7SIlya Yanok		ifeq ($(wildcard $(LDSCRIPT)),)
493 d51dfff7SIlya Yanok			LDSCRIPT := $(TOPDIR)/$(CPUDIR)/u-boot-nand.lds
494 d51dfff7SIlya Yanok		endif
495 d51dfff7SIlya Yanok	endif
496 d51dfff7SIlya Yanok	ifeq ($(wildcard $(LDSCRIPT)),)
497 d51dfff7SIlya Yanok		LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds
498 d51dfff7SIlya Yanok	endif
499 d51dfff7SIlya Yanok	ifeq ($(wildcard $(LDSCRIPT)),)
500 d51dfff7SIlya Yanok		LDSCRIPT := $(TOPDIR)/$(CPUDIR)/u-boot.lds
501 d51dfff7SIlya Yanok	endif
502 d51dfff7SIlya Yanok	ifeq ($(wildcard $(LDSCRIPT)),)
503 ee60197eSSimon Glass		LDSCRIPT := $(TOPDIR)/arch/$(ARCH)/cpu/u-boot.lds
504 ee60197eSSimon Glass		# We don't expect a Makefile here
505 ee60197eSSimon Glass		LDSCRIPT_MAKEFILE_DIR =
506 ee60197eSSimon Glass	endif
507 ee60197eSSimon Glass	ifeq ($(wildcard $(LDSCRIPT)),)
508 d51dfff7SIlya Yanok$(error could not find linker script)
509 d51dfff7SIlya Yanok	endif
510 d51dfff7SIlya Yanokendif
511 d51dfff7SIlya Yanok
512 433b2f1eSMasahiro Yamadaelse
513 433b2f1eSMasahiro Yamada
514 433b2f1eSMasahiro Yamada
515 433b2f1eSMasahiro Yamadaendif # $(dot-config)
516 433b2f1eSMasahiro Yamada
517 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += -Os #-fomit-frame-pointer
518 433b2f1eSMasahiro Yamada
519 433b2f1eSMasahiro Yamadaifdef BUILD_TAG
520 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += -DBUILD_TAG='"$(BUILD_TAG)"'
521 433b2f1eSMasahiro Yamadaendif
522 433b2f1eSMasahiro Yamada
523 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
524 433b2f1eSMasahiro Yamada
525 433b2f1eSMasahiro YamadaKBUILD_CFLAGS	+= -g
526 433b2f1eSMasahiro Yamada# $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g<format>
527 433b2f1eSMasahiro Yamada# option to the assembler.
528 433b2f1eSMasahiro YamadaKBUILD_AFLAGS	+= -g
529 433b2f1eSMasahiro Yamada
530 433b2f1eSMasahiro Yamada# Report stack usage if supported
531 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += $(call cc-option,-fstack-usage)
532 433b2f1eSMasahiro Yamada
533 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += $(call cc-option,-Wno-format-nonliteral)
534 433b2f1eSMasahiro Yamada
535 433b2f1eSMasahiro Yamada# turn jbsr into jsr for m68k
536 433b2f1eSMasahiro Yamadaifeq ($(ARCH),m68k)
537 433b2f1eSMasahiro Yamadaifeq ($(findstring 3.4,$(shell $(CC) --version)),3.4)
538 433b2f1eSMasahiro YamadaKBUILD_AFLAGS += -Wa,-gstabs,-S
539 433b2f1eSMasahiro Yamadaendif
540 433b2f1eSMasahiro Yamadaendif
541 433b2f1eSMasahiro Yamada
542 433b2f1eSMasahiro Yamadaifneq ($(CONFIG_SYS_TEXT_BASE),)
543 433b2f1eSMasahiro YamadaKBUILD_CPPFLAGS += -DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE)
544 433b2f1eSMasahiro Yamadaendif
545 433b2f1eSMasahiro Yamada
546 433b2f1eSMasahiro Yamadaexport CONFIG_SYS_TEXT_BASE
547 433b2f1eSMasahiro Yamada
548 433b2f1eSMasahiro Yamada# Use UBOOTINCLUDE when you must reference the include/ directory.
549 433b2f1eSMasahiro Yamada# Needed to be compatible with the O= option
550 433b2f1eSMasahiro YamadaUBOOTINCLUDE    :=
551 433b2f1eSMasahiro Yamadaifneq ($(OBJTREE),$(SRCTREE))
552 433b2f1eSMasahiro YamadaUBOOTINCLUDE	+= -I$(OBJTREE)/include
553 433b2f1eSMasahiro Yamadaendif
554 433b2f1eSMasahiro YamadaUBOOTINCLUDE	+= -I$(srctree)/include \
555 433b2f1eSMasahiro Yamada		-I$(srctree)/arch/$(ARCH)/include
556 433b2f1eSMasahiro Yamada
557 433b2f1eSMasahiro YamadaNOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
558 433b2f1eSMasahiro YamadaCHECKFLAGS     += $(NOSTDINC_FLAGS)
559 433b2f1eSMasahiro Yamada
560 433b2f1eSMasahiro Yamada# FIX ME
561 433b2f1eSMasahiro Yamadacpp_flags := $(KBUILD_CPPFLAGS) $(CPPFLAGS) $(UBOOTINCLUDE) $(NOSTDINC_FLAGS)
562 433b2f1eSMasahiro Yamadac_flags := $(KBUILD_CFLAGS) $(cpp_flags)
563 433b2f1eSMasahiro Yamada
564 656de6b8SMasahiro Yamada.PHONY : $(VERSION_FILE) $(TIMESTAMP_FILE)
565 433b2f1eSMasahiro Yamada
566 7ebf7443Swdenk#########################################################################
567 7ebf7443Swdenk# U-Boot objects....order is important (i.e. start must be first)
568 7ebf7443Swdenk
569 e8a8b824SMasahiro Yamadahead-y := $(CPUDIR)/start.o
570 e8a8b824SMasahiro Yamadahead-$(CONFIG_4xx) += arch/powerpc/cpu/ppc4xx/resetvec.o
571 e8a8b824SMasahiro Yamadahead-$(CONFIG_MPC85xx) += arch/powerpc/cpu/mpc85xx/resetvec.o
572 7ebf7443Swdenk
573 9e414032SMasahiro YamadaHAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n)
574 8b5a0264SDaniel Schwierzeck
575 656de6b8SMasahiro Yamadalibs-y += lib/
576 656de6b8SMasahiro Yamadalibs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/
577 656de6b8SMasahiro Yamadalibs-y += $(CPUDIR)/
578 1d9f4105Swdenkifdef SOC
579 656de6b8SMasahiro Yamadalibs-y += $(CPUDIR)/$(SOC)/
580 1d9f4105Swdenkendif
581 656de6b8SMasahiro Yamadalibs-$(CONFIG_IXP4XX_NPE) += drivers/net/npe/
582 656de6b8SMasahiro Yamadalibs-$(CONFIG_OF_EMBED) += dts/
583 656de6b8SMasahiro Yamadalibs-y += arch/$(ARCH)/lib/
584 656de6b8SMasahiro Yamadalibs-y += fs/
585 656de6b8SMasahiro Yamadalibs-y += net/
586 656de6b8SMasahiro Yamadalibs-y += disk/
587 656de6b8SMasahiro Yamadalibs-y += drivers/
588 656de6b8SMasahiro Yamadalibs-y += drivers/dma/
589 656de6b8SMasahiro Yamadalibs-y += drivers/gpio/
590 656de6b8SMasahiro Yamadalibs-y += drivers/i2c/
591 656de6b8SMasahiro Yamadalibs-y += drivers/input/
592 656de6b8SMasahiro Yamadalibs-y += drivers/mmc/
593 656de6b8SMasahiro Yamadalibs-y += drivers/mtd/
594 656de6b8SMasahiro Yamadalibs-$(CONFIG_CMD_NAND) += drivers/mtd/nand/
595 656de6b8SMasahiro Yamadalibs-y += drivers/mtd/onenand/
596 656de6b8SMasahiro Yamadalibs-$(CONFIG_CMD_UBI) += drivers/mtd/ubi/
597 656de6b8SMasahiro Yamadalibs-y += drivers/mtd/spi/
598 656de6b8SMasahiro Yamadalibs-y += drivers/net/
599 656de6b8SMasahiro Yamadalibs-y += drivers/net/phy/
600 656de6b8SMasahiro Yamadalibs-y += drivers/pci/
601 656de6b8SMasahiro Yamadalibs-y += drivers/power/ \
602 e2906a59SMasahiro Yamada	drivers/power/fuel_gauge/ \
603 e2906a59SMasahiro Yamada	drivers/power/mfd/ \
604 e2906a59SMasahiro Yamada	drivers/power/pmic/ \
605 e2906a59SMasahiro Yamada	drivers/power/battery/
606 656de6b8SMasahiro Yamadalibs-y += drivers/spi/
607 656de6b8SMasahiro Yamadalibs-$(CONFIG_FMAN_ENET) += drivers/net/fm/
608 656de6b8SMasahiro Yamadalibs-$(CONFIG_SYS_FSL_DDR) += drivers/ddr/fsl/
609 656de6b8SMasahiro Yamadalibs-y += drivers/serial/
610 656de6b8SMasahiro Yamadalibs-y += drivers/usb/eth/
611 656de6b8SMasahiro Yamadalibs-y += drivers/usb/gadget/
612 656de6b8SMasahiro Yamadalibs-y += drivers/usb/host/
613 656de6b8SMasahiro Yamadalibs-y += drivers/usb/musb/
614 656de6b8SMasahiro Yamadalibs-y += drivers/usb/musb-new/
615 656de6b8SMasahiro Yamadalibs-y += drivers/usb/phy/
616 656de6b8SMasahiro Yamadalibs-y += drivers/usb/ulpi/
617 656de6b8SMasahiro Yamadalibs-y += common/
618 656de6b8SMasahiro Yamadalibs-y += lib/libfdt/
619 656de6b8SMasahiro Yamadalibs-$(CONFIG_API) += api/
620 656de6b8SMasahiro Yamadalibs-$(CONFIG_HAS_POST) += post/
621 656de6b8SMasahiro Yamadalibs-y += test/
622 f9328639SMarian Balakowicz
623 24e8bee5SAlison Wangifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35 mxs vf610))
624 656de6b8SMasahiro Yamadalibs-y += arch/$(ARCH)/imx-common/
625 18936ee2SJason Liuendif
626 18936ee2SJason Liu
627 656de6b8SMasahiro Yamadalibs-$(CONFIG_ARM) += arch/arm/cpu/
628 656de6b8SMasahiro Yamadalibs-$(CONFIG_PPC) += arch/powerpc/cpu/
629 852bd07cSMinkyu Kang
630 656de6b8SMasahiro Yamadalibs-y += board/$(BOARDDIR)/
631 08e39a84SMasahiro Yamada
632 656de6b8SMasahiro Yamadalibs-y := $(sort $(libs-y))
633 656de6b8SMasahiro Yamada
634 656de6b8SMasahiro Yamadau-boot-dirs	:= $(patsubst %/,%,$(filter %/, $(libs-y))) tools examples
635 656de6b8SMasahiro Yamada
636 656de6b8SMasahiro Yamadau-boot-alldirs	:= $(sort $(u-boot-dirs) $(patsubst %/,%,$(filter %/, $(libs-))))
637 656de6b8SMasahiro Yamada
638 656de6b8SMasahiro Yamadalibs-y		:= $(patsubst %/, %/built-in.o, $(libs-y))
639 656de6b8SMasahiro Yamada
640 656de6b8SMasahiro Yamadau-boot-init := $(head-y)
641 656de6b8SMasahiro Yamadau-boot-main := $(libs-y)
642 656de6b8SMasahiro Yamada
643 a8c7c708Swdenk
644 4f7cb08eSwdenk# Add GCC lib
645 52b1bf2cSWolfgang Denkifdef USE_PRIVATE_LIBGCC
646 52b1bf2cSWolfgang Denkifeq ("$(USE_PRIVATE_LIBGCC)", "yes")
647 6825a95bSMasahiro YamadaPLATFORM_LIBGCC = $(OBJTREE)/arch/$(ARCH)/lib/lib.a
648 52b1bf2cSWolfgang Denkelse
649 52b1bf2cSWolfgang DenkPLATFORM_LIBGCC = -L $(USE_PRIVATE_LIBGCC) -lgcc
650 52b1bf2cSWolfgang Denkendif
651 52b1bf2cSWolfgang Denkelse
652 6825a95bSMasahiro YamadaPLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(c_flags) -print-libgcc-file-name`) -lgcc
653 52b1bf2cSWolfgang Denkendif
654 52b1bf2cSWolfgang DenkPLATFORM_LIBS += $(PLATFORM_LIBGCC)
655 52b1bf2cSWolfgang Denkexport PLATFORM_LIBS
656 3d3befa7Swdenk
657 6ac9f479SMike Frysinger# Special flags for CPP when processing the linker script.
658 6ac9f479SMike Frysinger# Pass the version down so we can handle backwards compatibility
659 6ac9f479SMike Frysinger# on the fly.
660 6ac9f479SMike FrysingerLDPPFLAGS += \
661 6ac9f479SMike Frysinger	-include $(TOPDIR)/include/u-boot/u-boot.lds.h \
662 7e6403a6SSimon Glass	-DCPUDIR=$(CPUDIR) \
663 6ac9f479SMike Frysinger	$(shell $(LD) --version | \
664 6ac9f479SMike Frysinger	  sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p')
665 6ac9f479SMike Frysinger
666 7ebf7443Swdenk#########################################################################
667 bdccc4feSwdenk#########################################################################
668 7ebf7443Swdenk
669 f3a14d37SMike Frysingerifneq ($(CONFIG_BOARD_SIZE_LIMIT),)
670 f3a14d37SMike FrysingerBOARD_SIZE_CHECK = \
671 f3a14d37SMike Frysinger	@actual=`wc -c $@ | awk '{print $$1}'`; \
672 d060e6f4SJoe Hershberger	limit=`printf "%d" $(CONFIG_BOARD_SIZE_LIMIT)`; \
673 f3a14d37SMike Frysinger	if test $$actual -gt $$limit; then \
674 d060e6f4SJoe Hershberger		echo "$@ exceeds file size limit:" >&2 ; \
675 d060e6f4SJoe Hershberger		echo "  limit:  $$limit bytes" >&2 ; \
676 d060e6f4SJoe Hershberger		echo "  actual: $$actual bytes" >&2 ; \
677 d060e6f4SJoe Hershberger		echo "  excess: $$((actual - limit)) bytes" >&2; \
678 f3a14d37SMike Frysinger		exit 1; \
679 f3a14d37SMike Frysinger	fi
680 f3a14d37SMike Frysingerelse
681 f3a14d37SMike FrysingerBOARD_SIZE_CHECK =
682 f3a14d37SMike Frysingerendif
683 f3a14d37SMike Frysinger
684 8137af19SScott Wood# Statically apply RELA-style relocations (currently arm64 only)
685 8137af19SScott Woodifneq ($(CONFIG_STATIC_RELA),)
686 8137af19SScott Wood# $(1) is u-boot ELF, $(2) is u-boot bin, $(3) is text base
687 8137af19SScott WoodDO_STATIC_RELA = \
688 8137af19SScott Wood	start=$$($(NM) $(1) | grep __rel_dyn_start | cut -f 1 -d ' '); \
689 8137af19SScott Wood	end=$$($(NM) $(1) | grep __rel_dyn_end | cut -f 1 -d ' '); \
690 9e414032SMasahiro Yamada	tools/relocate-rela $(2) $(3) $$start $$end
691 8137af19SScott Woodelse
692 8137af19SScott WoodDO_STATIC_RELA =
693 8137af19SScott Woodendif
694 8137af19SScott Wood
695 3e88337bSMike Frysinger# Always append ALL so that arch config.mk's can add custom ones
696 9e414032SMasahiro YamadaALL-y += u-boot.srec u-boot.bin System.map
697 e935a374SHaiying Wang
698 9e414032SMasahiro YamadaALL-$(CONFIG_NAND_U_BOOT) += u-boot-nand.bin
699 9e414032SMasahiro YamadaALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin
700 9e414032SMasahiro YamadaALL-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl
701 9e414032SMasahiro YamadaALL-$(CONFIG_SPL) += spl/u-boot-spl.bin
702 9e414032SMasahiro YamadaALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img
703 9e414032SMasahiro YamadaALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin
704 9e414032SMasahiro YamadaALL-$(CONFIG_OF_SEPARATE) += u-boot.dtb u-boot-dtb.bin
705 b343bbb5SVadim Bendeburyifneq ($(CONFIG_SPL_TARGET),)
706 9e414032SMasahiro YamadaALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%)
707 b343bbb5SVadim Bendeburyendif
708 9e414032SMasahiro YamadaALL-$(CONFIG_REMAKE_ELF) += u-boot.elf
709 7ebf7443Swdenk
710 12b7b70cSAllen Martin# enable combined SPL/u-boot/dtb rules for tegra
711 6d6c0baeSTom Warrenifneq ($(CONFIG_TEGRA),)
712 7dcd3a21SVidya Sagarifeq ($(CONFIG_SPL),y)
713 12b7b70cSAllen Martinifeq ($(CONFIG_OF_SEPARATE),y)
714 9e414032SMasahiro YamadaALL-y += u-boot-dtb-tegra.bin
715 12b7b70cSAllen Martinelse
716 9e414032SMasahiro YamadaALL-y += u-boot-nodtb-tegra.bin
717 12b7b70cSAllen Martinendif
718 12b7b70cSAllen Martinendif
719 7dcd3a21SVidya Sagarendif
720 12b7b70cSAllen Martin
721 433b2f1eSMasahiro YamadaLDFLAGS_u-boot += -T u-boot.lds $(LDFLAGS_FINAL)
722 433b2f1eSMasahiro Yamadaifneq ($(CONFIG_SYS_TEXT_BASE),)
723 433b2f1eSMasahiro YamadaLDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE)
724 433b2f1eSMasahiro Yamadaendif
725 433b2f1eSMasahiro Yamada
726 656de6b8SMasahiro Yamadaall:		$(ALL-y)
727 7ebf7443Swdenk
728 9e414032SMasahiro Yamadau-boot.dtb:	checkdtc u-boot
729 9e414032SMasahiro Yamada		$(MAKE) $(build)=dts binary
730 9e414032SMasahiro Yamada		mv dts/dt.dtb $@
731 2c0f79e4SSimon Glass
732 9e414032SMasahiro Yamadau-boot-dtb.bin:	u-boot.bin u-boot.dtb
733 2c0f79e4SSimon Glass		cat $^ >$@
734 2c0f79e4SSimon Glass
735 9e414032SMasahiro Yamadau-boot.hex:	u-boot
736 6310eb9dSwdenk		$(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@
737 6310eb9dSwdenk
738 9e414032SMasahiro Yamadau-boot.srec:	u-boot
739 47ed5dd0SAlbert ARIBAUD		$(OBJCOPY) ${OBJCFLAGS} -O srec $< $@
740 7ebf7443Swdenk
741 9e414032SMasahiro Yamadau-boot.bin:	u-boot
742 7ebf7443Swdenk		$(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
743 8137af19SScott Wood		$(call DO_STATIC_RELA,$<,$@,$(CONFIG_SYS_TEXT_BASE))
744 f3a14d37SMike Frysinger		$(BOARD_SIZE_CHECK)
745 7ebf7443Swdenk
746 9e414032SMasahiro Yamadau-boot.ldr:	u-boot
747 76d82187SMike Frysinger		$(CREATE_LDR_ENV)
748 68e56324SMike Frysinger		$(LDR) -T $(CONFIG_BFIN_CPU) -c $@ $< $(LDR_FLAGS)
749 f3a14d37SMike Frysinger		$(BOARD_SIZE_CHECK)
750 94a91e24SMike Frysinger
751 9e414032SMasahiro Yamadau-boot.ldr.hex:	u-boot.ldr
752 94a91e24SMike Frysinger		$(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@ -I binary
753 94a91e24SMike Frysinger
754 9e414032SMasahiro Yamadau-boot.ldr.srec:	u-boot.ldr
755 94a91e24SMike Frysinger		$(OBJCOPY) ${OBJCFLAGS} -O srec $< $@ -I binary
756 94a91e24SMike Frysinger
757 b40bda6bSStefan Roese#
758 b40bda6bSStefan Roese# U-Boot entry point, needed for booting of full-blown U-Boot
759 b40bda6bSStefan Roese# from the SPL U-Boot version.
760 b40bda6bSStefan Roese#
761 b40bda6bSStefan Roeseifndef CONFIG_SYS_UBOOT_START
762 b40bda6bSStefan RoeseCONFIG_SYS_UBOOT_START := 0
763 b40bda6bSStefan Roeseendif
764 b40bda6bSStefan Roese
765 9e414032SMasahiro Yamadau-boot.img:	u-boot.bin
766 9e414032SMasahiro Yamada		tools/mkimage -A $(ARCH) -T firmware -C none \
767 b40bda6bSStefan Roese		-O u-boot -a $(CONFIG_SYS_TEXT_BASE) \
768 b40bda6bSStefan Roese		-e $(CONFIG_SYS_UBOOT_START) \
769 881a87ecSWolfgang Denk		-n $(shell sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE) | \
770 bdccc4feSwdenk			sed -e 's/"[	 ]*$$/ for $(BOARD) board"/') \
771 bdccc4feSwdenk		-d $< $@
772 bdccc4feSwdenk
773 656de6b8SMasahiro Yamadau-boot.imx: u-boot.bin
774 9e414032SMasahiro Yamada		$(MAKE) $(build)=arch/arm/imx-common $(objtree)/u-boot.imx
775 8edcde5eSStefano Babic
776 9e414032SMasahiro Yamadau-boot.kwb:       u-boot.bin
777 9e414032SMasahiro Yamada		tools/mkimage -n $(CONFIG_SYS_KWD_CONFIG) -T kwbimage \
778 2ea88b06SEric Cooper		-a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) -d $< $@
779 aa0c7a86SPrafulla Wadaskar
780 9e414032SMasahiro Yamadau-boot.pbl:	u-boot.bin
781 9e414032SMasahiro Yamada		tools/mkimage -n $(CONFIG_SYS_FSL_PBL_RCW) \
782 690e4258SPrabhakar Kushwaha		-R $(CONFIG_SYS_FSL_PBL_PBI) -T pblimage \
783 5d898a00SShaohui Xie		-d $< $@
784 5d898a00SShaohui Xie
785 9e414032SMasahiro Yamadau-boot.sha1:	u-boot.bin
786 9e414032SMasahiro Yamada		tools/ubsha1 u-boot.bin
787 566a494fSHeiko Schocher
788 9e414032SMasahiro Yamadau-boot.dis:	u-boot
789 7ebf7443Swdenk		$(OBJDUMP) -d $< > $@
790 7ebf7443Swdenk
791 3aa29de0SYing Zhang# $@ is output, $(1) and $(2) are inputs, $(3) is padded intermediate,
792 3aa29de0SYing Zhang# $(4) is pad-to
793 3aa29de0SYing ZhangSPL_PAD_APPEND = \
794 3aa29de0SYing Zhang		$(OBJCOPY) ${OBJCFLAGS} --pad-to=$(4) -I binary -O binary \
795 9e414032SMasahiro Yamada		$(1) $(3); \
796 9e414032SMasahiro Yamada		cat $(3) $(2) > $@; \
797 9e414032SMasahiro Yamada		rm $(3)
798 74752baaSScott Wood
799 3aa29de0SYing Zhangifdef CONFIG_TPL
800 9e414032SMasahiro YamadaSPL_PAYLOAD := tpl/u-boot-with-tpl.bin
801 3aa29de0SYing Zhangelse
802 9e414032SMasahiro YamadaSPL_PAYLOAD := u-boot.bin
803 3aa29de0SYing Zhangendif
804 74752baaSScott Wood
805 9e414032SMasahiro Yamadau-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD)
806 3aa29de0SYing Zhang		$(call SPL_PAD_APPEND,$<,$(SPL_PAYLOAD),spl/u-boot-spl-pad.bin,$(CONFIG_SPL_PAD_TO))
807 3aa29de0SYing Zhang
808 9e414032SMasahiro Yamadatpl/u-boot-with-tpl.bin: tpl/u-boot-tpl.bin u-boot.bin
809 9e414032SMasahiro Yamada		$(call SPL_PAD_APPEND,$<,u-boot.bin,tpl/u-boot-tpl-pad.bin,$(CONFIG_TPL_PAD_TO))
810 7816f2cfSHeiko Schocher
811 9e414032SMasahiro Yamadau-boot-with-spl.imx: spl/u-boot-spl.bin u-boot.bin
812 9e414032SMasahiro Yamada		$(MAKE) $(build)=arch/arm/imx-common \
813 ba597609SBenoît Thébaudeau			$(OBJTREE)/u-boot-with-spl.imx
814 ba597609SBenoît Thébaudeau
815 9e414032SMasahiro Yamadau-boot-with-nand-spl.imx: spl/u-boot-spl.bin u-boot.bin
816 9e414032SMasahiro Yamada		$(MAKE) $(build)=arch/arm/imx-common \
817 7d5a5c79SBenoît Thébaudeau			$(OBJTREE)/u-boot-with-nand-spl.imx
818 7d5a5c79SBenoît Thébaudeau
819 9e414032SMasahiro Yamadau-boot.ubl:       u-boot-with-spl.bin
820 9e414032SMasahiro Yamada		tools/mkimage -n $(UBL_CONFIG) -T ublimage \
821 9e414032SMasahiro Yamada		-e $(CONFIG_SYS_TEXT_BASE) -d $< u-boot.ubl
822 277f00f5SJosé Miguel Gonçalves
823 9e414032SMasahiro Yamadau-boot.ais:       spl/u-boot-spl.bin u-boot.img
824 9e414032SMasahiro Yamada		tools/mkimage -s -n $(if $(CONFIG_AIS_CONFIG_FILE),$(srctree)/$(CONFIG_AIS_CONFIG_FILE:"%"=%),"/dev/null") \
825 6d660e77SSughosh Ganu			-T aisimage \
826 d36d8859SChristian Riesch			-e $(CONFIG_SPL_TEXT_BASE) \
827 9e414032SMasahiro Yamada			-d spl/u-boot-spl.bin \
828 9e414032SMasahiro Yamada			spl/u-boot-spl.ais
829 d36d8859SChristian Riesch		$(OBJCOPY) ${OBJCFLAGS} -I binary \
830 d36d8859SChristian Riesch			--pad-to=$(CONFIG_SPL_MAX_SIZE) -O binary \
831 9e414032SMasahiro Yamada			spl/u-boot-spl.ais spl/u-boot-spl-pad.ais
832 9e414032SMasahiro Yamada		cat spl/u-boot-spl-pad.ais u-boot.img > u-boot.ais
833 d36d8859SChristian Riesch
834 a5453555SOtavio Salvador
835 9e414032SMasahiro Yamadau-boot.sb:       u-boot.bin spl/u-boot-spl.bin
836 9e414032SMasahiro Yamada		$(MAKE) $(build)=$(CPUDIR)/$(SOC)/ $(OBJTREE)/u-boot.sb
837 30b9b932SMarek Vasut
838 94aebe6cSStefan Roese# On x600 (SPEAr600) U-Boot is appended to U-Boot SPL.
839 94aebe6cSStefan Roese# Both images are created using mkimage (crc etc), so that the ROM
840 94aebe6cSStefan Roese# bootloader can check its integrity. Padding needs to be done to the
841 94aebe6cSStefan Roese# SPL image (with mkimage header) and not the binary. Otherwise the resulting image
842 94aebe6cSStefan Roese# which is loaded/copied by the ROM bootloader to SRAM doesn't fit.
843 94aebe6cSStefan Roese# The resulting image containing both U-Boot images is called u-boot.spr
844 9e414032SMasahiro Yamadau-boot.spr:	u-boot.img spl/u-boot-spl.bin
845 9e414032SMasahiro Yamada		tools/mkimage -A $(ARCH) -T firmware -C none \
846 94aebe6cSStefan Roese		-a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n XLOADER \
847 9e414032SMasahiro Yamada		-d spl/u-boot-spl.bin $@
848 57270260SMasahiro Yamada		$(OBJCOPY) -I binary -O binary \
849 57270260SMasahiro Yamada			--pad-to=$(CONFIG_SPL_PAD_TO) --gap-fill=0xff $@
850 9e414032SMasahiro Yamada		cat u-boot.img >> $@
851 94aebe6cSStefan Roese
852 6d6c0baeSTom Warrenifneq ($(CONFIG_TEGRA),)
853 9e414032SMasahiro Yamadau-boot-nodtb-tegra.bin: spl/u-boot-spl.bin u-boot.bin
854 9e414032SMasahiro Yamada		$(OBJCOPY) ${OBJCFLAGS} --pad-to=$(CONFIG_SYS_TEXT_BASE) -O binary spl/u-boot-spl spl/u-boot-spl-pad.bin
855 9e414032SMasahiro Yamada		cat spl/u-boot-spl-pad.bin u-boot.bin > $@
856 9e414032SMasahiro Yamada		rm spl/u-boot-spl-pad.bin
857 9972db5cSStephen Warren
858 9972db5cSStephen Warrenifeq ($(CONFIG_OF_SEPARATE),y)
859 9e414032SMasahiro Yamadau-boot-dtb-tegra.bin: u-boot-nodtb-tegra.bin u-boot.dtb
860 9e414032SMasahiro Yamada		cat u-boot-nodtb-tegra.bin u-boot.dtb > $@
861 9972db5cSStephen Warrenendif
862 984df4ecSAllen Martinendif
863 984df4ecSAllen Martin
864 9e414032SMasahiro Yamadau-boot-img.bin: spl/u-boot-spl.bin u-boot.img
865 9e414032SMasahiro Yamada		cat spl/u-boot-spl.bin u-boot.img > $@
866 fb3d2b8aSStefan Roese
867 ecddccd0SStefan Roese# PPC4xx needs the SPL at the end of the image, since the reset vector
868 ecddccd0SStefan Roese# is located at 0xfffffffc. So we can't use the "u-boot-img.bin" target
869 ecddccd0SStefan Roese# and need to introduce a new build target with the full blown U-Boot
870 ecddccd0SStefan Roese# at the start padded up to the start of the SPL image. And then concat
871 ecddccd0SStefan Roese# the SPL image to the end.
872 9e414032SMasahiro Yamadau-boot-img-spl-at-end.bin: spl/u-boot-spl.bin u-boot.img
873 57270260SMasahiro Yamada		$(OBJCOPY) -I binary -O binary --pad-to=$(CONFIG_UBOOT_PAD_TO) \
874 9e414032SMasahiro Yamada			 --gap-fill=0xff u-boot.img $@
875 9e414032SMasahiro Yamada		cat spl/u-boot-spl.bin >> $@
876 ecddccd0SStefan Roese
877 f4dc714aSScott Wood# Create a new ELF from a raw binary file.  This is useful for arm64
878 f4dc714aSScott Wood# where static relocation needs to be performed on the raw binary,
879 f4dc714aSScott Wood# but certain simulators only accept an ELF file (but don't do the
880 f4dc714aSScott Wood# relocation).
881 f4dc714aSScott Wood# FIXME refactor dts/Makefile to share target/arch detection
882 9e414032SMasahiro Yamadau-boot.elf: u-boot.bin
883 f4dc714aSScott Wood	@$(OBJCOPY)  -B aarch64 -I binary -O elf64-littleaarch64 \
884 9e414032SMasahiro Yamada		$< u-boot-elf.o
885 9e414032SMasahiro Yamada	@$(LD) u-boot-elf.o -o $@ \
886 f4dc714aSScott Wood		--defsym=_start=$(CONFIG_SYS_TEXT_BASE) \
887 f4dc714aSScott Wood		-Ttext=$(CONFIG_SYS_TEXT_BASE)
888 f4dc714aSScott Wood
889 86eb49b3SSimon Glassifeq ($(CONFIG_SANDBOX),y)
890 86eb49b3SSimon GlassGEN_UBOOT = \
891 9e414032SMasahiro Yamada		$(CC) $(SYMS) -T u-boot.lds \
892 656de6b8SMasahiro Yamada			-Wl,--start-group $(u-boot-main) -Wl,--end-group \
893 86eb49b3SSimon Glass			$(PLATFORM_LIBS) -Wl,-Map -Wl,u-boot.map -o u-boot
894 86eb49b3SSimon Glasselse
895 ecb1dc89SMike FrysingerGEN_UBOOT = \
896 9e414032SMasahiro Yamada		$(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) \
897 656de6b8SMasahiro Yamada			$(u-boot-init) \
898 656de6b8SMasahiro Yamada			--start-group $(u-boot-main) --end-group $(PLATFORM_LIBS) \
899 b2184c31Swdenk			-Map u-boot.map -o u-boot
900 86eb49b3SSimon Glassendif
901 86eb49b3SSimon Glass
902 656de6b8SMasahiro Yamadau-boot:	$(u-boot-init) $(u-boot-main) u-boot.lds
903 ecb1dc89SMike Frysinger		$(GEN_UBOOT)
904 ecb1dc89SMike Frysingerifeq ($(CONFIG_KALLSYMS),y)
905 9e414032SMasahiro Yamada		smap=`$(call SYSTEM_MAP,u-boot) | \
906 1aada9cdSWolfgang Denk			awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \
907 6825a95bSMasahiro Yamada		$(CC) $(c_flags) -DSYSTEM_MAP="\"$${smap}\"" \
908 9e414032SMasahiro Yamada			-c $(srctree)/common/system_map.c -o common/system_map.o
909 9e414032SMasahiro Yamada		$(GEN_UBOOT) common/system_map.o
910 ecb1dc89SMike Frysingerendif
911 7ebf7443Swdenk
912 656de6b8SMasahiro Yamada# The actual objects are generated when descending,
913 656de6b8SMasahiro Yamada# make sure no implicit rule kicks in
914 656de6b8SMasahiro Yamada$(sort $(u-boot-init) $(u-boot-main)): $(u-boot-dirs) ;
915 f9328639SMarian Balakowicz
916 656de6b8SMasahiro Yamada# Handle descending into subdirectories listed in $(vmlinux-dirs)
917 656de6b8SMasahiro Yamada# Preset locale variables to speed up the build process. Limit locale
918 656de6b8SMasahiro Yamada# tweaks to this spot to avoid wrong language settings when running
919 656de6b8SMasahiro Yamada# make menuconfig etc.
920 656de6b8SMasahiro Yamada# Error messages still appears in the original language
921 a8c7c708Swdenk
922 656de6b8SMasahiro YamadaPHONY += $(u-boot-dirs)
923 656de6b8SMasahiro Yamada$(u-boot-dirs): depend scripts_basic
924 6825a95bSMasahiro Yamada	$(Q)$(MAKE) $(build)=$@
925 940db16dSMasahiro Yamada
926 656de6b8SMasahiro Yamadatools: $(TIMESTAMP_FILE) $(VERSION_FILE)
927 656de6b8SMasahiro Yamada# The "tools" are needed early
928 656de6b8SMasahiro Yamada$(filter-out tools, $(u-boot-dirs)): tools
929 656de6b8SMasahiro Yamada# The "examples" conditionally depend on U-Boot (say, when USE_PRIVATE_LIBGCC
930 656de6b8SMasahiro Yamada# is "yes"), so compile examples after U-Boot is compiled.
931 656de6b8SMasahiro Yamadaexamples: $(filter-out examples, $(u-boot-dirs))
932 656de6b8SMasahiro Yamada
933 349e83f0SChe-liang Chiou
934 433b2f1eSMasahiro Yamada#
935 433b2f1eSMasahiro Yamada# Auto-generate the autoconf.mk file (which is included by all makefiles)
936 433b2f1eSMasahiro Yamada#
937 433b2f1eSMasahiro Yamada# This target actually generates 2 files; autoconf.mk and autoconf.mk.dep.
938 433b2f1eSMasahiro Yamada# the dep file is only include in this top level makefile to determine when
939 433b2f1eSMasahiro Yamada# to regenerate the autoconf.mk file.
940 433b2f1eSMasahiro Yamada
941 433b2f1eSMasahiro Yamadaquiet_cmd_autoconf_dep = GEN     $@
942 433b2f1eSMasahiro Yamada      cmd_autoconf_dep = $(CC) -x c -DDO_DEPS_ONLY -M $(c_flags) \
943 433b2f1eSMasahiro Yamada	-MQ include/autoconf.mk $(srctree)/include/common.h > $@ || rm $@
944 433b2f1eSMasahiro Yamada
945 433b2f1eSMasahiro Yamadainclude/autoconf.mk.dep: include/config.h include/common.h
946 433b2f1eSMasahiro Yamada	$(call cmd,autoconf_dep)
947 433b2f1eSMasahiro Yamada
948 433b2f1eSMasahiro Yamadaquiet_cmd_autoconf = GEN     $@
949 433b2f1eSMasahiro Yamada      cmd_autoconf = \
950 433b2f1eSMasahiro Yamada	$(CPP) $(c_flags) -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && \
951 433b2f1eSMasahiro Yamada	sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp > $@; \
952 433b2f1eSMasahiro Yamada	rm $@.tmp
953 433b2f1eSMasahiro Yamada
954 433b2f1eSMasahiro Yamadainclude/autoconf.mk: include/config.h
955 433b2f1eSMasahiro Yamada	$(call cmd,autoconf)
956 433b2f1eSMasahiro Yamada
957 9e414032SMasahiro Yamadau-boot.lds: $(LDSCRIPT) depend
958 6825a95bSMasahiro Yamada		$(CPP) $(cpp_flags) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
959 1aada9cdSWolfgang Denk
960 6825a95bSMasahiro Yamadanand_spl:	$(TIMESTAMP_FILE) $(VERSION_FILE) depend scripts_basic
961 9e414032SMasahiro Yamada		$(MAKE) $(build)=nand_spl/board/$(BOARDDIR) all
962 887e2ec9SStefan Roese
963 9e414032SMasahiro Yamadau-boot-nand.bin:	nand_spl u-boot.bin
964 9e414032SMasahiro Yamada		cat nand_spl/u-boot-spl-16k.bin u-boot.bin > u-boot-nand.bin
965 887e2ec9SStefan Roese
966 656de6b8SMasahiro Yamadaspl/u-boot-spl.bin: tools depend scripts_basic
967 9e414032SMasahiro Yamada		$(MAKE) obj=spl -f $(srctree)/spl/Makefile all
968 5df2ee27SDaniel Schwierzeck
969 656de6b8SMasahiro Yamadatpl/u-boot-tpl.bin: tools depend scripts_basic
970 9e414032SMasahiro Yamada		$(MAKE) obj=tpl -f $(srctree)/spl/Makefile all CONFIG_TPL_BUILD=y
971 3aa29de0SYing Zhang
972 2a998793SDaniel Hobi# Explicitly make _depend in subdirs containing multiple targets to prevent
973 2a998793SDaniel Hobi# parallel sub-makes creating .depend files simultaneously.
974 16a354f9SWolfgang Denkdepend dep:	$(TIMESTAMP_FILE) $(VERSION_FILE) \
975 9e414032SMasahiro Yamada		include/generated/generic-asm-offsets.h \
976 9e414032SMasahiro Yamada		include/generated/asm-offsets.h
977 7ebf7443Swdenk
978 656de6b8SMasahiro YamadaTAG_SUBDIRS := $(u-boot-dirs) include
979 a340c325SJean-Christophe PLAGNIOL-VILLARD
980 857d9ea6SHorst KronstorferFIND := find
981 857d9ea6SHorst KronstorferFINDFLAGS := -L
982 857d9ea6SHorst Kronstorfer
983 47f15711SMasahiro YamadaPHONY += checkstack
984 47f15711SMasahiro Yamada
985 1064d980STom Rinicheckstack:
986 47f15711SMasahiro Yamada	$(OBJDUMP) -d u-boot $$(find . -name u-boot-spl) | \
987 47f15711SMasahiro Yamada	$(PERL) $(src)/scripts/checkstack.pl $(ARCH)
988 1064d980STom Rini
989 f9328639SMarian Balakowicztags ctags:
990 9e414032SMasahiro Yamada		ctags -w -o ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
991 e5e4e705SLi Yang						-name '*.[chS]' -print`
992 7ebf7443Swdenk
993 7ebf7443Swdenketags:
994 857d9ea6SHorst Kronstorfer		etags -a -o $(obj)etags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
995 e5e4e705SLi Yang						-name '*.[chS]' -print`
996 ffda586fSLi Yangcscope:
997 857d9ea6SHorst Kronstorfer		$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \
998 857d9ea6SHorst Kronstorfer						cscope.files
999 ffda586fSLi Yang		cscope -b -q -k
1000 7ebf7443Swdenk
1001 ecb1dc89SMike FrysingerSYSTEM_MAP = \
1002 ecb1dc89SMike Frysinger		$(NM) $1 | \
1003 7ebf7443Swdenk		grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
1004 ecb1dc89SMike Frysinger		LC_ALL=C sort
1005 9e414032SMasahiro YamadaSystem.map:	u-boot
1006 bc8bb6ecSMasahiro Yamada		@$(call SYSTEM_MAP,$<) > $@
1007 7ebf7443Swdenk
1008 06a119a0STom Rinicheckthumb:
1009 06a119a0STom Rini	@if test $(call cc-version) -lt 0404; then \
1010 06a119a0STom Rini		echo -n '*** Your GCC does not produce working '; \
1011 06a119a0STom Rini		echo 'binaries in THUMB mode.'; \
1012 06a119a0STom Rini		echo '*** Your board is configured for THUMB mode.'; \
1013 06a119a0STom Rini		false; \
1014 06a119a0STom Rini	fi
1015 6ec63f41SScott Wood
1016 6ec63f41SScott Wood# GCC 3.x is reported to have problems generating the type of relocation
1017 6ec63f41SScott Wood# that U-Boot wants.
1018 6ec63f41SScott Wood# See http://lists.denx.de/pipermail/u-boot/2012-September/135156.html
1019 6ec63f41SScott Woodcheckgcc4:
1020 6ec63f41SScott Wood	@if test $(call cc-version) -lt 0400; then \
1021 6ec63f41SScott Wood		echo -n '*** Your GCC is too old, please upgrade to GCC 4.x or newer'; \
1022 6ec63f41SScott Wood		false; \
1023 6ec63f41SScott Wood	fi
1024 6ec63f41SScott Wood
1025 501ebdf2SStephen Warrencheckdtc:
1026 501ebdf2SStephen Warren	@if test $(call dtc-version) -lt 0104; then \
1027 501ebdf2SStephen Warren		echo '*** Your dtc is too old, please upgrade to dtc 1.4 or newer'; \
1028 501ebdf2SStephen Warren		false; \
1029 501ebdf2SStephen Warren	fi
1030 501ebdf2SStephen Warren
1031 47f15711SMasahiro Yamadaquiet_cmd_offsets = GEN     $@
1032 47f15711SMasahiro Yamada      cmd_offsets = $(srctree)/tools/scripts/make-asm-offsets $< $@
1033 47f15711SMasahiro Yamada
1034 47f15711SMasahiro Yamadainclude/generated/generic-asm-offsets.h: lib/asm-offsets.s
1035 47f15711SMasahiro Yamada	$(call cmd,offsets)
1036 47f15711SMasahiro Yamada
1037 47f15711SMasahiro Yamadaquiet_cmd_asm-offsets.s = CC      $@
1038 47f15711SMasahiro Yamada      cmd_asm-offsets.s = mkdir -p lib; \
1039 16a354f9SWolfgang Denk		$(CC) -DDO_DEPS_ONLY \
1040 6825a95bSMasahiro Yamada		$(c_flags) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \
1041 47f15711SMasahiro Yamada		-o $@ $< -c -S
1042 47f15711SMasahiro Yamada
1043 47f15711SMasahiro Yamadalib/asm-offsets.s: $(srctree)/lib/asm-offsets.c include/config.h
1044 47f15711SMasahiro Yamada	$(call cmd,asm-offsets.s)
1045 16a354f9SWolfgang Denk
1046 9e414032SMasahiro Yamadainclude/generated/asm-offsets.h: $(CPUDIR)/$(SOC)/asm-offsets.s
1047 47f15711SMasahiro Yamada	$(call cmd,offsets)
1048 a4814a69SStefano Babic
1049 47f15711SMasahiro Yamadaquiet_cmd_soc_asm-offsets.s = CC      $@
1050 47f15711SMasahiro Yamada      cmd_soc_asm-offsets.s = mkdir -p $(CPUDIR)/$(SOC); \
1051 9e414032SMasahiro Yamada	if [ -f $(srctree)/$(CPUDIR)/$(SOC)/asm-offsets.c ];then \
1052 a4814a69SStefano Babic		$(CC) -DDO_DEPS_ONLY \
1053 6825a95bSMasahiro Yamada		$(c_flags) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \
1054 9e414032SMasahiro Yamada			-o $@ $(srctree)/$(CPUDIR)/$(SOC)/asm-offsets.c -c -S; \
1055 a4814a69SStefano Babic	else \
1056 a4814a69SStefano Babic		touch $@; \
1057 a4814a69SStefano Babic	fi
1058 a4814a69SStefano Babic
1059 47f15711SMasahiro Yamada$(CPUDIR)/$(SOC)/asm-offsets.s:	include/config.h
1060 47f15711SMasahiro Yamada	$(call cmd,soc_asm-offsets.s)
1061 47f15711SMasahiro Yamada
1062 7ebf7443Swdenk#########################################################################
1063 7ebf7443Swdenk
1064 54799e45SScott Wood# ARM relocations should all be R_ARM_RELATIVE (32-bit) or
1065 54799e45SScott Wood# R_AARCH64_RELATIVE (64-bit).
1066 9e414032SMasahiro Yamadacheckarmreloc: u-boot
1067 54799e45SScott Wood	@RELOC="`$(CROSS_COMPILE)readelf -r -W $< | cut -d ' ' -f 4 | \
1068 54799e45SScott Wood		grep R_A | sort -u`"; \
1069 54799e45SScott Wood	if test "$$RELOC" != "R_ARM_RELATIVE" -a \
1070 54799e45SScott Wood		 "$$RELOC" != "R_AARCH64_RELATIVE"; then \
1071 54799e45SScott Wood		echo "$< contains unexpected relocations: $$RELOC"; \
1072 54799e45SScott Wood		false; \
1073 54799e45SScott Wood	fi
1074 c37980c3SAlbert ARIBAUD
1075 28abd48fSIlya Yanok$(VERSION_FILE):
1076 14ce91b1SMike Frysinger		@mkdir -p $(dir $(VERSION_FILE))
1077 dd88ab32SMasahiro Yamada		@( localvers='$(shell $(TOPDIR)/scripts/setlocalversion $(TOPDIR))' ; \
1078 28abd48fSIlya Yanok		   printf '#define PLAIN_VERSION "%s%s"\n' \
1079 28abd48fSIlya Yanok			"$(U_BOOT_VERSION)" "$${localvers}" ; \
1080 28abd48fSIlya Yanok		   printf '#define U_BOOT_VERSION "U-Boot %s%s"\n' \
1081 28abd48fSIlya Yanok			"$(U_BOOT_VERSION)" "$${localvers}" ; \
1082 28abd48fSIlya Yanok		) > $@.tmp
1083 28abd48fSIlya Yanok		@( printf '#define CC_VERSION_STRING "%s"\n' \
1084 28abd48fSIlya Yanok		 '$(shell $(CC) --version | head -n 1)' )>>  $@.tmp
1085 28abd48fSIlya Yanok		@( printf '#define LD_VERSION_STRING "%s"\n' \
1086 28abd48fSIlya Yanok		 '$(shell $(LD) -v | head -n 1)' )>>  $@.tmp
1087 28abd48fSIlya Yanok		@cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@
1088 28abd48fSIlya Yanok
1089 249b53a6SLoïc Minier$(TIMESTAMP_FILE):
1090 249b53a6SLoïc Minier		@mkdir -p $(dir $(TIMESTAMP_FILE))
1091 a76406fbSLoïc Minier		@LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"' > $@.tmp
1092 a76406fbSLoïc Minier		@LC_ALL=C date +'#define U_BOOT_TIME "%T"' >> $@.tmp
1093 a76406fbSLoïc Minier		@cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@
1094 249b53a6SLoïc Minier
1095 0358df42SMike Frysingereasylogo env gdb:
1096 *3f76e984SMasahiro Yamada	$(Q)$(MAKE) $(build)=tools/$@
1097 940db16dSMasahiro Yamada
1098 0358df42SMike Frysingergdbtools: gdb
1099 0358df42SMike Frysinger
1100 30ff8918SMarek Vasutxmldocs pdfdocs psdocs htmldocs mandocs: tools/kernel-doc/docproc
1101 6825a95bSMasahiro Yamada	$(Q)$(MAKE) U_BOOT_VERSION=$(U_BOOT_VERSION) $(build)=doc/DocBook $@
1102 30ff8918SMarek Vasut
1103 249b53a6SLoïc Miniertools-all: easylogo env gdb $(VERSION_FILE) $(TIMESTAMP_FILE)
1104 6825a95bSMasahiro Yamada	$(Q)$(MAKE) $(build)=tools HOST_TOOLS_ALL=y
1105 0358df42SMike Frysinger
1106 4e53a258SWolfgang Denk.PHONY : CHANGELOG
1107 4e53a258SWolfgang DenkCHANGELOG:
1108 b985b5d6SBen Warren	git log --no-merges U-Boot-1_1_5.. | \
1109 b985b5d6SBen Warren	unexpand -a | sed -e 's/\s\s*$$//' > $@
1110 4e53a258SWolfgang Denk
1111 0a823aa2SHarald Welteinclude/license.h: tools/bin2header COPYING
1112 0a823aa2SHarald Welte	cat COPYING | gzip -9 -c | ./tools/bin2header license_gzip > include/license.h
1113 7ebf7443Swdenk#########################################################################
1114 7ebf7443Swdenk
1115 a6862bc1SWolfgang Denk
1116 3e38691eSwdenk#########################################################################
1117 7ebf7443Swdenk
1118 7ebf7443Swdenkclean:
1119 9e414032SMasahiro Yamada	@rm -f examples/standalone/atmel_df_pow2			  \
1120 9e414032SMasahiro Yamada	       examples/standalone/hello_world				  \
1121 9e414032SMasahiro Yamada	       examples/standalone/interrupt				  \
1122 9e414032SMasahiro Yamada	       examples/standalone/mem_to_mem_idma2intr			  \
1123 9e414032SMasahiro Yamada	       examples/standalone/sched				  \
1124 9e414032SMasahiro Yamada	       $(addprefix examples/standalone/, smc91111_eeprom smc911x_eeprom) \
1125 9e414032SMasahiro Yamada	       examples/standalone/test_burst				  \
1126 9e414032SMasahiro Yamada	       examples/standalone/timer
1127 9e414032SMasahiro Yamada	@rm -f $(addprefix examples/api/, demo demo.bin)
1128 9e414032SMasahiro Yamada	@rm -f tools/bmp_logo	   tools/easylogo/easylogo		  \
1129 9e414032SMasahiro Yamada	       tools/env/fw_printenv					  \
1130 9e414032SMasahiro Yamada	       tools/envcrc						  \
1131 9e414032SMasahiro Yamada	       $(addprefix tools/gdb/, gdbcont gdbsend)			  \
1132 9e414032SMasahiro Yamada	       tools/gen_eth_addr    tools/img2srec			  \
1133 9e414032SMasahiro Yamada	       tools/dumpimage						  \
1134 9e414032SMasahiro Yamada	       $(addprefix tools/, mkenvimage mkimage)			  \
1135 9e414032SMasahiro Yamada	       tools/mpc86x_clk						  \
1136 9e414032SMasahiro Yamada	       $(addprefix tools/, mk$(BOARD)spl mkexynosspl)		  \
1137 9e414032SMasahiro Yamada	       tools/mxsboot						  \
1138 9e414032SMasahiro Yamada	       tools/ncb		   tools/ubsha1			  \
1139 9e414032SMasahiro Yamada	       tools/kernel-doc/docproc					  \
1140 9e414032SMasahiro Yamada	       tools/proftool
1141 9e414032SMasahiro Yamada	@rm -f $(addprefix board/cray/L1/, bootscript.c bootscript.image) \
1142 9e414032SMasahiro Yamada	       board/matrix_vision/*/bootscript.img			  \
1143 9e414032SMasahiro Yamada	       spl/board/samsung/$(BOARD)/tools/mk$(BOARD)spl		  \
1144 9e414032SMasahiro Yamada	       u-boot.lds						  \
1145 9e414032SMasahiro Yamada	       $(addprefix arch/blackfin/cpu/, init.lds init.elf)
1146 9e414032SMasahiro Yamada	@rm -f include/bmp_logo.h
1147 9e414032SMasahiro Yamada	@rm -f include/bmp_logo_data.h
1148 9e414032SMasahiro Yamada	@rm -f lib/asm-offsets.s
1149 9e414032SMasahiro Yamada	@rm -f include/generated/asm-offsets.h
1150 9e414032SMasahiro Yamada	@rm -f $(CPUDIR)/$(SOC)/asm-offsets.s
1151 d4abc757SPeter Tyser	@rm -f $(TIMESTAMP_FILE) $(VERSION_FILE)
1152 9e414032SMasahiro Yamada	@$(MAKE) -f $(srctree)/doc/DocBook/Makefile cleandocs
1153 ae6d1056SWolfgang Denk	@find $(OBJTREE) -type f \
1154 4a30f1e8STom Rini		\( -name 'core' -o -name '*.bak' -o -name '*~' -o -name '*.su' \
1155 6825a95bSMasahiro Yamada		-o -name '*.o'	-o -name '*.a' -o -name '*.exe' -o -name '*.cmd' \
1156 71a988aaSTroy Kisky		-o -name '*.cfgtmp' \) -print \
1157 7ebf7443Swdenk		| xargs rm -f
1158 7ebf7443Swdenk
1159 7390643fSMasahiro Yamadaclobber: clean
1160 734329f9SAndy Fleming	@find $(OBJTREE) -type f \( -name '*.srec' \
1161 734329f9SAndy Fleming		-o -name '*.bin' -o -name u-boot.img \) \
1162 734329f9SAndy Fleming		-print0 | xargs -0 rm -f
1163 656de6b8SMasahiro Yamada	@rm -f *.bak ctags etags TAGS \
1164 9e414032SMasahiro Yamada		cscope.* *.*~
1165 9e414032SMasahiro Yamada	@rm -f u-boot u-boot.map u-boot.hex $(ALL-y)
1166 9e414032SMasahiro Yamada	@rm -f u-boot.kwb
1167 9e414032SMasahiro Yamada	@rm -f u-boot.pbl
1168 9e414032SMasahiro Yamada	@rm -f u-boot.imx
1169 9e414032SMasahiro Yamada	@rm -f u-boot-with-spl.imx
1170 9e414032SMasahiro Yamada	@rm -f u-boot-with-nand-spl.imx
1171 9e414032SMasahiro Yamada	@rm -f u-boot.ubl
1172 9e414032SMasahiro Yamada	@rm -f u-boot.ais
1173 9e414032SMasahiro Yamada	@rm -f u-boot.dtb
1174 9e414032SMasahiro Yamada	@rm -f u-boot.sb
1175 9e414032SMasahiro Yamada	@rm -f u-boot.spr
1176 9e414032SMasahiro Yamada	@rm -f $(addprefix nand_spl/, u-boot.lds u-boot.lst System.map)
1177 9e414032SMasahiro Yamada	@rm -f $(addprefix nand_spl/, u-boot-nand_spl.lds u-boot-spl u-boot-spl.map)
1178 9e414032SMasahiro Yamada	@rm -f $(addprefix spl/, u-boot-spl u-boot-spl.bin u-boot-spl.map)
1179 9e414032SMasahiro Yamada	@rm -f spl/u-boot-spl.lds
1180 9e414032SMasahiro Yamada	@rm -f $(addprefix tpl/, u-boot-tpl u-boot-tpl.bin u-boot-tpl.map)
1181 9e414032SMasahiro Yamada	@rm -f tpl/u-boot-spl.lds
1182 9e414032SMasahiro Yamada	@rm -f MLO MLO.byteswap
1183 9e414032SMasahiro Yamada	@rm -f SPL
1184 9e414032SMasahiro Yamada	@rm -f tools/xway-swap-bytes
1185 9e414032SMasahiro Yamada	@rm -fr include/asm/proc include/asm/arch include/asm
1186 9e414032SMasahiro Yamada	@rm -fr include/generated
1187 9e414032SMasahiro Yamada	@[ ! -d nand_spl ] || find nand_spl -name "*" -type l -print | xargs rm -f
1188 9e414032SMasahiro Yamada	@rm -f dts/*.tmp
1189 9e414032SMasahiro Yamada	@rm -f $(addprefix spl/, u-boot-spl.ais, u-boot-spl-pad.ais)
1190 7ebf7443Swdenk
1191 433b2f1eSMasahiro Yamadamrproper: clobber
1192 433b2f1eSMasahiro Yamada	@rm -f include/config.h include/config.mk \
1193 433b2f1eSMasahiro Yamada		board/*/config.tmp board/*/*/config.tmp \
1194 433b2f1eSMasahiro Yamada		include/autoconf.mk include/autoconf.mk.dep \
1195 433b2f1eSMasahiro Yamada		include/spl-autoconf.mk \
1196 433b2f1eSMasahiro Yamada		include/tpl-autoconf.mk
1197 433b2f1eSMasahiro Yamada
1198 433b2f1eSMasahiro Yamadadistclean: mrproper
1199 afd077bdSMike Frysingerifneq ($(OBJTREE),$(SRCTREE))
1200 9e414032SMasahiro Yamada	rm -rf *
1201 f9328639SMarian Balakowiczendif
1202 7ebf7443Swdenk
1203 7ebf7443Swdenkbackup:
1204 7ebf7443Swdenk	F=`basename $(TOPDIR)` ; cd .. ; \
1205 d6b93714SIlya Yanok	gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F
1206 7ebf7443Swdenk
1207 7ebf7443Swdenk#########################################################################
1208 9e414032SMasahiro Yamada
1209 433b2f1eSMasahiro Yamadaendif #ifeq ($(config-targets),1)
1210 433b2f1eSMasahiro Yamadaendif #ifeq ($(mixed-targets),1)
1211 433b2f1eSMasahiro Yamada
1212 9e414032SMasahiro Yamadaendif	# skip-makefile
1213 9e414032SMasahiro Yamada
1214 9e414032SMasahiro YamadaPHONY += FORCE
1215 9e414032SMasahiro YamadaFORCE:
1216 9e414032SMasahiro Yamada
1217 9e414032SMasahiro Yamada# Declare the contents of the .PHONY variable as phony.  We keep that
1218 9e414032SMasahiro Yamada# information in a variable so we can use it in if_changed and friends.
1219 9e414032SMasahiro Yamada.PHONY: $(PHONY)
1220