xref: /openbmc/u-boot/Makefile (revision e9c16a8012399a41e8a0acf86828255f9a779e88)
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 3e41c54aSTom RiniPATCHLEVEL = 07
10 211e4754SWolfgang DenkSUBLEVEL =
11 a176ff07STom RiniEXTRAVERSION = -rc4
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 7ebf7443Swdenkendif
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 5a449d75SMasahiro YamadaKBUILD_OUTPUT := $(shell mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) \
128 5a449d75SMasahiro Yamada								&& /bin/pwd)
129 9e414032SMasahiro Yamada$(if $(KBUILD_OUTPUT),, \
130 598e2d33SMasahiro Yamada     $(error failed to create output directory "$(saved-output)"))
131 9e414032SMasahiro Yamada
132 9e414032SMasahiro YamadaPHONY += $(MAKECMDGOALS) sub-make
133 9e414032SMasahiro Yamada
134 9e414032SMasahiro Yamada$(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make
135 9e414032SMasahiro Yamada	@:
136 9e414032SMasahiro Yamada
137 9e414032SMasahiro Yamadasub-make: FORCE
138 9e414032SMasahiro Yamada	$(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT) \
139 9e414032SMasahiro Yamada	KBUILD_SRC=$(CURDIR) \
140 9e414032SMasahiro Yamada	KBUILD_EXTMOD="$(KBUILD_EXTMOD)" -f $(CURDIR)/Makefile \
141 9e414032SMasahiro Yamada	$(filter-out _all sub-make,$(MAKECMDGOALS))
142 9e414032SMasahiro Yamada
143 9e414032SMasahiro Yamada# Leave processing to above invocation of make
144 9e414032SMasahiro Yamadaskip-makefile := 1
145 9e414032SMasahiro Yamadaendif # ifneq ($(KBUILD_OUTPUT),)
146 9e414032SMasahiro Yamadaendif # ifeq ($(KBUILD_SRC),)
147 9e414032SMasahiro Yamada
148 9e414032SMasahiro Yamada# We process the rest of the Makefile if this is the final invocation of make
149 9e414032SMasahiro Yamadaifeq ($(skip-makefile),)
150 9e414032SMasahiro Yamada
151 6825a95bSMasahiro Yamada# If building an external module we do not care about the all: rule
152 6825a95bSMasahiro Yamada# but instead _all depend on modules
153 9e414032SMasahiro YamadaPHONY += all
154 6825a95bSMasahiro Yamadaifeq ($(KBUILD_EXTMOD),)
155 9e414032SMasahiro Yamada_all: all
156 6825a95bSMasahiro Yamadaelse
157 6825a95bSMasahiro Yamada_all: modules
158 6825a95bSMasahiro Yamadaendif
159 9e414032SMasahiro Yamada
160 9e414032SMasahiro Yamadasrctree		:= $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR))
161 9e414032SMasahiro Yamadaobjtree		:= $(CURDIR)
162 9e414032SMasahiro Yamadasrc		:= $(srctree)
163 9e414032SMasahiro Yamadaobj		:= $(objtree)
164 9e414032SMasahiro Yamada
165 9e414032SMasahiro YamadaVPATH		:= $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD))
166 9e414032SMasahiro Yamada
167 9e414032SMasahiro Yamadaexport srctree objtree VPATH
168 9e414032SMasahiro Yamada
169 01286329SMasahiro YamadaMKCONFIG	:= $(srctree)/mkconfig
170 f9328639SMarian Balakowiczexport MKCONFIG
171 f9328639SMarian Balakowicz
172 5013c09fSWolfgang Denk# Make sure CDPATH settings don't interfere
173 5013c09fSWolfgang Denkunexport CDPATH
174 5013c09fSWolfgang Denk
175 f9328639SMarian Balakowicz#########################################################################
176 f9328639SMarian Balakowicz
177 7ebf7443SwdenkHOSTARCH := $(shell uname -m | \
178 7ebf7443Swdenk	sed -e s/i.86/x86/ \
179 7ebf7443Swdenk	    -e s/sun4u/sparc64/ \
180 7ebf7443Swdenk	    -e s/arm.*/arm/ \
181 7ebf7443Swdenk	    -e s/sa110/arm/ \
182 7ebf7443Swdenk	    -e s/ppc64/powerpc/ \
183 7ebf7443Swdenk	    -e s/ppc/powerpc/ \
184 7ebf7443Swdenk	    -e s/macppc/powerpc/\
185 7ebf7443Swdenk	    -e s/sh.*/sh/)
186 7ebf7443Swdenk
187 7ebf7443SwdenkHOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
188 7ebf7443Swdenk	    sed -e 's/\(cygwin\).*/cygwin/')
189 7ebf7443Swdenk
190 7ebf7443Swdenkexport	HOSTARCH HOSTOS
191 7ebf7443Swdenk
192 7ebf7443Swdenk# Deal with colliding definitions from tcsh etc.
193 7ebf7443SwdenkVENDOR=
194 7ebf7443Swdenk
195 7ebf7443Swdenk#########################################################################
196 f9328639SMarian Balakowicz
197 1ea6bcd8SMike Frysinger# set default to nothing for native builds
198 a5284efdSWolfgang Denkifeq ($(HOSTARCH),$(ARCH))
199 1ea6bcd8SMike FrysingerCROSS_COMPILE ?=
200 7ebf7443Swdenkendif
201 7ebf7443Swdenk
202 f6322eb7SMasahiro Yamada# SHELL used by kbuild
203 f6322eb7SMasahiro YamadaCONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
204 f6322eb7SMasahiro Yamada	  else if [ -x /bin/bash ]; then echo /bin/bash; \
205 f6322eb7SMasahiro Yamada	  else echo sh; fi ; fi)
206 f6322eb7SMasahiro Yamada
207 f6322eb7SMasahiro YamadaHOSTCC       = gcc
208 598e2d33SMasahiro YamadaHOSTCXX      = g++
209 f6322eb7SMasahiro YamadaHOSTCFLAGS   = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
210 598e2d33SMasahiro YamadaHOSTCXXFLAGS = -O2
211 598e2d33SMasahiro Yamada
212 f6322eb7SMasahiro Yamadaifeq ($(HOSTOS),cygwin)
213 f6322eb7SMasahiro YamadaHOSTCFLAGS	+= -ansi
214 f6322eb7SMasahiro Yamadaendif
215 f6322eb7SMasahiro Yamada
216 f6322eb7SMasahiro Yamada# Mac OS X / Darwin's C preprocessor is Apple specific.  It
217 f6322eb7SMasahiro Yamada# generates numerous errors and warnings.  We want to bypass it
218 f6322eb7SMasahiro Yamada# and use GNU C's cpp.	To do this we pass the -traditional-cpp
219 f6322eb7SMasahiro Yamada# option to the compiler.  Note that the -traditional-cpp flag
220 f6322eb7SMasahiro Yamada# DOES NOT have the same semantics as GNU C's flag, all it does
221 f6322eb7SMasahiro Yamada# is invoke the GNU preprocessor in stock ANSI/ISO C fashion.
222 f6322eb7SMasahiro Yamada#
223 f6322eb7SMasahiro Yamada# Apple's linker is similar, thanks to the new 2 stage linking
224 f6322eb7SMasahiro Yamada# multiple symbol definitions are treated as errors, hence the
225 f6322eb7SMasahiro Yamada# -multiply_defined suppress option to turn off this error.
226 f6322eb7SMasahiro Yamada#
227 f6322eb7SMasahiro Yamadaifeq ($(HOSTOS),darwin)
228 f6322eb7SMasahiro Yamada# get major and minor product version (e.g. '10' and '6' for Snow Leopard)
229 f6322eb7SMasahiro YamadaDARWIN_MAJOR_VERSION	= $(shell sw_vers -productVersion | cut -f 1 -d '.')
230 f6322eb7SMasahiro YamadaDARWIN_MINOR_VERSION	= $(shell sw_vers -productVersion | cut -f 2 -d '.')
231 f6322eb7SMasahiro Yamada
232 f6322eb7SMasahiro Yamadaos_x_before	= $(shell if [ $(DARWIN_MAJOR_VERSION) -le $(1) -a \
233 f6322eb7SMasahiro Yamada	$(DARWIN_MINOR_VERSION) -le $(2) ] ; then echo "$(3)"; else echo "$(4)"; fi ;)
234 f6322eb7SMasahiro Yamada
235 f6322eb7SMasahiro Yamada# Snow Leopards build environment has no longer restrictions as described above
236 f6322eb7SMasahiro YamadaHOSTCC       = $(call os_x_before, 10, 5, "cc", "gcc")
237 f6322eb7SMasahiro YamadaHOSTCFLAGS  += $(call os_x_before, 10, 4, "-traditional-cpp")
238 f6322eb7SMasahiro YamadaHOSTLDFLAGS += $(call os_x_before, 10, 5, "-multiply_defined suppress")
239 f6322eb7SMasahiro Yamadaendif
240 f6322eb7SMasahiro Yamada
241 6825a95bSMasahiro Yamada# Decide whether to build built-in, modular, or both.
242 6825a95bSMasahiro Yamada# Normally, just do built-in.
243 6825a95bSMasahiro Yamada
244 6825a95bSMasahiro YamadaKBUILD_MODULES :=
245 6825a95bSMasahiro YamadaKBUILD_BUILTIN := 1
246 6825a95bSMasahiro Yamada
247 6825a95bSMasahiro Yamada# If we have only "make modules", don't compile built-in objects.
248 6825a95bSMasahiro Yamada# When we're building modules with modversions, we need to consider
249 6825a95bSMasahiro Yamada# the built-in objects during the descend as well, in order to
250 6825a95bSMasahiro Yamada# make sure the checksums are up to date before we record them.
251 6825a95bSMasahiro Yamada
252 6825a95bSMasahiro Yamadaifeq ($(MAKECMDGOALS),modules)
253 6825a95bSMasahiro Yamada  KBUILD_BUILTIN := $(if $(CONFIG_MODVERSIONS),1)
254 6825a95bSMasahiro Yamadaendif
255 6825a95bSMasahiro Yamada
256 6825a95bSMasahiro Yamada# If we have "make <whatever> modules", compile modules
257 6825a95bSMasahiro Yamada# in addition to whatever we do anyway.
258 6825a95bSMasahiro Yamada# Just "make" or "make all" shall build modules as well
259 6825a95bSMasahiro Yamada
260 6825a95bSMasahiro Yamada# U-Boot does not need modules
261 6825a95bSMasahiro Yamada#ifneq ($(filter all _all modules,$(MAKECMDGOALS)),)
262 6825a95bSMasahiro Yamada#  KBUILD_MODULES := 1
263 6825a95bSMasahiro Yamada#endif
264 6825a95bSMasahiro Yamada
265 6825a95bSMasahiro Yamada#ifeq ($(MAKECMDGOALS),)
266 6825a95bSMasahiro Yamada#  KBUILD_MODULES := 1
267 6825a95bSMasahiro Yamada#endif
268 6825a95bSMasahiro Yamada
269 6825a95bSMasahiro Yamadaexport KBUILD_MODULES KBUILD_BUILTIN
270 6825a95bSMasahiro Yamadaexport KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD
271 6825a95bSMasahiro Yamada
272 6825a95bSMasahiro Yamada# Beautify output
273 6825a95bSMasahiro Yamada# ---------------------------------------------------------------------------
274 6825a95bSMasahiro Yamada#
275 6825a95bSMasahiro Yamada# Normally, we echo the whole command before executing it. By making
276 6825a95bSMasahiro Yamada# that echo $($(quiet)$(cmd)), we now have the possibility to set
277 6825a95bSMasahiro Yamada# $(quiet) to choose other forms of output instead, e.g.
278 6825a95bSMasahiro Yamada#
279 6825a95bSMasahiro Yamada#         quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@
280 6825a95bSMasahiro Yamada#         cmd_cc_o_c       = $(CC) $(c_flags) -c -o $@ $<
281 6825a95bSMasahiro Yamada#
282 6825a95bSMasahiro Yamada# If $(quiet) is empty, the whole command will be printed.
283 6825a95bSMasahiro Yamada# If it is set to "quiet_", only the short version will be printed.
284 6825a95bSMasahiro Yamada# If it is set to "silent_", nothing will be printed at all, since
285 6825a95bSMasahiro Yamada# the variable $(silent_cmd_cc_o_c) doesn't exist.
286 6825a95bSMasahiro Yamada#
287 6825a95bSMasahiro Yamada# A simple variant is to prefix commands with $(Q) - that's useful
288 6825a95bSMasahiro Yamada# for commands that shall be hidden in non-verbose mode.
289 6825a95bSMasahiro Yamada#
290 6825a95bSMasahiro Yamada#	$(Q)ln $@ :<
291 6825a95bSMasahiro Yamada#
292 6825a95bSMasahiro Yamada# If KBUILD_VERBOSE equals 0 then the above command will be hidden.
293 6825a95bSMasahiro Yamada# If KBUILD_VERBOSE equals 1 then the above command is displayed.
294 6825a95bSMasahiro Yamada
295 6825a95bSMasahiro Yamadaifeq ($(KBUILD_VERBOSE),1)
296 6825a95bSMasahiro Yamada  quiet =
297 6825a95bSMasahiro Yamada  Q =
298 6825a95bSMasahiro Yamadaelse
299 6825a95bSMasahiro Yamada  quiet=quiet_
300 6825a95bSMasahiro Yamada  Q = @
301 6825a95bSMasahiro Yamadaendif
302 6825a95bSMasahiro Yamada
303 6825a95bSMasahiro Yamada# If the user is running make -s (silent mode), suppress echoing of
304 6825a95bSMasahiro Yamada# commands
305 6825a95bSMasahiro Yamada
306 598e2d33SMasahiro Yamadaifneq ($(filter 4.%,$(MAKE_VERSION)),)	# make-4
307 598e2d33SMasahiro Yamadaifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),)
308 598e2d33SMasahiro Yamada  quiet=silent_
309 598e2d33SMasahiro Yamadaendif
310 598e2d33SMasahiro Yamadaelse					# make-3.8x
311 6825a95bSMasahiro Yamadaifneq ($(filter s% -s%,$(MAKEFLAGS)),)
312 6825a95bSMasahiro Yamada  quiet=silent_
313 6825a95bSMasahiro Yamadaendif
314 598e2d33SMasahiro Yamadaendif
315 6825a95bSMasahiro Yamada
316 6825a95bSMasahiro Yamadaexport quiet Q KBUILD_VERBOSE
317 6825a95bSMasahiro Yamada
318 9e414032SMasahiro Yamada# Look for make include files relative to root of kernel src
319 9e414032SMasahiro YamadaMAKEFLAGS += --include-dir=$(srctree)
320 9e414032SMasahiro Yamada
321 bf4b3de1SMasahiro Yamada# We need some generic definitions (do not try to remake the file).
322 bf4b3de1SMasahiro Yamada$(srctree)/scripts/Kbuild.include: ;
323 bf4b3de1SMasahiro Yamadainclude $(srctree)/scripts/Kbuild.include
324 bf4b3de1SMasahiro Yamada
325 f6322eb7SMasahiro Yamada# Make variables (CC, etc...)
326 f6322eb7SMasahiro Yamada
327 f6322eb7SMasahiro YamadaAS		= $(CROSS_COMPILE)as
328 f6322eb7SMasahiro Yamada# Always use GNU ld
329 f6322eb7SMasahiro Yamadaifneq ($(shell $(CROSS_COMPILE)ld.bfd -v 2> /dev/null),)
330 f6322eb7SMasahiro YamadaLD		= $(CROSS_COMPILE)ld.bfd
331 f6322eb7SMasahiro Yamadaelse
332 f6322eb7SMasahiro YamadaLD		= $(CROSS_COMPILE)ld
333 f6322eb7SMasahiro Yamadaendif
334 f6322eb7SMasahiro YamadaCC		= $(CROSS_COMPILE)gcc
335 f6322eb7SMasahiro YamadaCPP		= $(CC) -E
336 f6322eb7SMasahiro YamadaAR		= $(CROSS_COMPILE)ar
337 f6322eb7SMasahiro YamadaNM		= $(CROSS_COMPILE)nm
338 f6322eb7SMasahiro YamadaLDR		= $(CROSS_COMPILE)ldr
339 f6322eb7SMasahiro YamadaSTRIP		= $(CROSS_COMPILE)strip
340 f6322eb7SMasahiro YamadaOBJCOPY		= $(CROSS_COMPILE)objcopy
341 f6322eb7SMasahiro YamadaOBJDUMP		= $(CROSS_COMPILE)objdump
342 f6322eb7SMasahiro YamadaAWK		= awk
343 f77d7096SMasahiro YamadaPERL		= perl
344 f6322eb7SMasahiro YamadaDTC		= dtc
345 f6322eb7SMasahiro YamadaCHECK		= sparse
346 f6322eb7SMasahiro Yamada
347 f6322eb7SMasahiro YamadaCHECKFLAGS     := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
348 f6322eb7SMasahiro Yamada		  -Wbitwise -Wno-return-void -D__CHECK_ENDIAN__ $(CF)
349 f6322eb7SMasahiro Yamada
350 2b3c9d3dSMasahiro YamadaKBUILD_CPPFLAGS := -D__KERNEL__
351 2b3c9d3dSMasahiro Yamada
352 2b3c9d3dSMasahiro YamadaKBUILD_CFLAGS   := -Wall -Wstrict-prototypes \
353 2b3c9d3dSMasahiro Yamada		   -Wno-format-security \
354 2b3c9d3dSMasahiro Yamada		   -fno-builtin -ffreestanding
355 2b3c9d3dSMasahiro YamadaKBUILD_AFLAGS   := -D__ASSEMBLY__
356 2b3c9d3dSMasahiro Yamada
357 7424145fSMasahiro Yamada# Read UBOOTRELEASE from include/config/uboot.release (if it exists)
358 7424145fSMasahiro YamadaUBOOTRELEASE = $(shell cat include/config/uboot.release 2> /dev/null)
359 7424145fSMasahiro YamadaUBOOTVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)
360 5f30f3beSMasahiro Yamada
361 7424145fSMasahiro Yamadaexport VERSION PATCHLEVEL SUBLEVEL UBOOTRELEASE UBOOTVERSION
362 026f9cf2SMasahiro Yamadaexport ARCH CPU BOARD VENDOR SOC CPUDIR BOARDDIR
363 f6322eb7SMasahiro Yamadaexport CONFIG_SHELL HOSTCC HOSTCFLAGS HOSTLDFLAGS CROSS_COMPILE AS LD CC
364 f6322eb7SMasahiro Yamadaexport CPP AR NM LDR STRIP OBJCOPY OBJDUMP
365 f77d7096SMasahiro Yamadaexport MAKE AWK PERL
366 15c939f9SMasahiro Yamadaexport HOSTCXX HOSTCXXFLAGS DTC CHECK CHECKFLAGS
367 f6322eb7SMasahiro Yamada
368 026f9cf2SMasahiro Yamadaexport KBUILD_CPPFLAGS NOSTDINC_FLAGS UBOOTINCLUDE OBJCOPYFLAGS LDFLAGS
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 598e2d33SMasahiro Yamadaexport RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o    \
379 598e2d33SMasahiro Yamada			  -name CVS -o -name .pc -o -name .hg -o -name .git \) \
380 598e2d33SMasahiro Yamada			  -prune -o
381 6825a95bSMasahiro Yamadaexport RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \
382 6825a95bSMasahiro Yamada			 --exclude CVS --exclude .pc --exclude .hg --exclude .git
383 6825a95bSMasahiro Yamada
384 6825a95bSMasahiro Yamada# ===========================================================================
385 6825a95bSMasahiro Yamada# Rules shared between *config targets and build targets
386 6825a95bSMasahiro Yamada
387 6825a95bSMasahiro Yamada# Basic helpers built in scripts/
388 6825a95bSMasahiro YamadaPHONY += scripts_basic
389 6825a95bSMasahiro Yamadascripts_basic:
390 6825a95bSMasahiro Yamada	$(Q)$(MAKE) $(build)=scripts/basic
391 6825a95bSMasahiro Yamada	$(Q)rm -f .tmp_quiet_recordmcount
392 6825a95bSMasahiro Yamada
393 6825a95bSMasahiro Yamada# To avoid any implicit rule to kick in, define an empty command.
394 6825a95bSMasahiro Yamadascripts/basic/%: scripts_basic ;
395 6825a95bSMasahiro Yamada
396 3341bfecSMasahiro YamadaPHONY += outputmakefile
397 3341bfecSMasahiro Yamada# outputmakefile generates a Makefile in the output directory, if using a
398 3341bfecSMasahiro Yamada# separate output directory. This allows convenient use of make in the
399 3341bfecSMasahiro Yamada# output directory.
400 3341bfecSMasahiro Yamadaoutputmakefile:
401 3341bfecSMasahiro Yamadaifneq ($(KBUILD_SRC),)
402 3341bfecSMasahiro Yamada	$(Q)ln -fsn $(srctree) source
403 3341bfecSMasahiro Yamada	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile \
404 3341bfecSMasahiro Yamada	    $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL)
405 3341bfecSMasahiro Yamadaendif
406 3341bfecSMasahiro Yamada
407 433b2f1eSMasahiro Yamada# To make sure we do not include .config for any of the *config targets
408 433b2f1eSMasahiro Yamada# catch them early, and hand them over to scripts/kconfig/Makefile
409 433b2f1eSMasahiro Yamada# It is allowed to specify more targets when calling make, including
410 433b2f1eSMasahiro Yamada# mixing *config targets and build targets.
411 433b2f1eSMasahiro Yamada# For example 'make oldconfig all'.
412 433b2f1eSMasahiro Yamada# Detect when mixed targets is specified, and make a second invocation
413 433b2f1eSMasahiro Yamada# of make so .config is not included in this case either (for *config).
414 6825a95bSMasahiro Yamada
415 7424145fSMasahiro Yamadaversion_h := include/generated/version_autogenerated.h
416 7424145fSMasahiro Yamadatimestamp_h := include/generated/timestamp_autogenerated.h
417 7424145fSMasahiro Yamada
418 433b2f1eSMasahiro Yamadano-dot-config-targets := clean clobber mrproper distclean \
419 27651187SMasahiro Yamada			 help %docs check% coccicheck \
420 4642e002SMasahiro Yamada			 ubootversion backup tools-only
421 2b3c9d3dSMasahiro Yamada
422 433b2f1eSMasahiro Yamadaconfig-targets := 0
423 433b2f1eSMasahiro Yamadamixed-targets  := 0
424 433b2f1eSMasahiro Yamadadot-config     := 1
425 2b3c9d3dSMasahiro Yamada
426 433b2f1eSMasahiro Yamadaifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
427 433b2f1eSMasahiro Yamada	ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
428 433b2f1eSMasahiro Yamada		dot-config := 0
429 2b3c9d3dSMasahiro Yamada	endif
430 2b3c9d3dSMasahiro Yamadaendif
431 2b3c9d3dSMasahiro Yamada
432 433b2f1eSMasahiro Yamadaifeq ($(KBUILD_EXTMOD),)
433 433b2f1eSMasahiro Yamada        ifneq ($(filter config %config,$(MAKECMDGOALS)),)
434 433b2f1eSMasahiro Yamada                config-targets := 1
435 433b2f1eSMasahiro Yamada                ifneq ($(filter-out config %config,$(MAKECMDGOALS)),)
436 433b2f1eSMasahiro Yamada                        mixed-targets := 1
437 433b2f1eSMasahiro Yamada                endif
438 433b2f1eSMasahiro Yamada        endif
439 433b2f1eSMasahiro Yamadaendif
440 433b2f1eSMasahiro Yamada
441 433b2f1eSMasahiro Yamadaifeq ($(mixed-targets),1)
442 433b2f1eSMasahiro Yamada# ===========================================================================
443 433b2f1eSMasahiro Yamada# We're called with mixed targets (*config and build targets).
444 433b2f1eSMasahiro Yamada# Handle them one by one.
445 433b2f1eSMasahiro Yamada
446 53bca5abSMasahiro YamadaPHONY += $(MAKECMDGOALS) build-one-by-one
447 53bca5abSMasahiro Yamada
448 53bca5abSMasahiro Yamada$(MAKECMDGOALS): build-one-by-one
449 53bca5abSMasahiro Yamada	@:
450 53bca5abSMasahiro Yamada
451 53bca5abSMasahiro Yamadabuild-one-by-one:
452 53bca5abSMasahiro Yamada	$(Q)set -e; \
453 53bca5abSMasahiro Yamada	for i in $(MAKECMDGOALS); do \
454 53bca5abSMasahiro Yamada		$(MAKE) -f $(srctree)/Makefile $$i; \
455 53bca5abSMasahiro Yamada	done
456 433b2f1eSMasahiro Yamada
457 433b2f1eSMasahiro Yamadaelse
458 433b2f1eSMasahiro Yamadaifeq ($(config-targets),1)
459 433b2f1eSMasahiro Yamada# ===========================================================================
460 433b2f1eSMasahiro Yamada# *config targets only - make sure prerequisites are updated, and descend
461 433b2f1eSMasahiro Yamada# in scripts/kconfig to make the *config target
462 433b2f1eSMasahiro Yamada
463 433b2f1eSMasahiro Yamada# Read arch specific Makefile to set KBUILD_DEFCONFIG as needed.
464 433b2f1eSMasahiro Yamada# KBUILD_DEFCONFIG may point out an alternative default configuration
465 433b2f1eSMasahiro Yamada# used for 'make defconfig'
466 433b2f1eSMasahiro Yamada
467 3341bfecSMasahiro Yamada%_config:: outputmakefile
468 433b2f1eSMasahiro Yamada	@$(MKCONFIG) -A $(@:_config=)
469 433b2f1eSMasahiro Yamada
470 433b2f1eSMasahiro Yamadaelse
471 433b2f1eSMasahiro Yamada# ===========================================================================
472 433b2f1eSMasahiro Yamada# Build targets only - this includes vmlinux, arch specific targets, clean
473 433b2f1eSMasahiro Yamada# targets and others. In general all targets except *config targets.
474 433b2f1eSMasahiro Yamada
475 433b2f1eSMasahiro Yamada# load ARCH, BOARD, and CPU configuration
476 433b2f1eSMasahiro Yamada-include include/config.mk
477 433b2f1eSMasahiro Yamada
478 433b2f1eSMasahiro Yamadaifeq ($(dot-config),1)
479 433b2f1eSMasahiro Yamada# Read in config
480 433b2f1eSMasahiro Yamada-include include/autoconf.mk
481 433b2f1eSMasahiro Yamada-include include/autoconf.mk.dep
482 433b2f1eSMasahiro Yamada
483 92b197f0SWolfgang Denk# load other configuration
484 433b2f1eSMasahiro Yamadainclude $(srctree)/config.mk
485 92b197f0SWolfgang Denk
486 433b2f1eSMasahiro Yamadaifeq ($(wildcard include/config.mk),)
487 433b2f1eSMasahiro Yamada$(error "System not configured - see README")
488 ced0715dSMasahiro Yamadaendif
489 fada9e20SSimon Glass
490 d51dfff7SIlya Yanok# If board code explicitly specified LDSCRIPT or CONFIG_SYS_LDSCRIPT, use
491 d51dfff7SIlya Yanok# that (or fail if absent).  Otherwise, search for a linker script in a
492 d51dfff7SIlya Yanok# standard location.
493 d51dfff7SIlya Yanok
494 d51dfff7SIlya Yanokifndef LDSCRIPT
495 4379ac61SMasahiro Yamada	#LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot.lds.debug
496 d51dfff7SIlya Yanok	ifdef CONFIG_SYS_LDSCRIPT
497 d51dfff7SIlya Yanok		# need to strip off double quotes
498 4a377552SMasahiro Yamada		LDSCRIPT := $(srctree)/$(CONFIG_SYS_LDSCRIPT:"%"=%)
499 d51dfff7SIlya Yanok	endif
500 d51dfff7SIlya Yanokendif
501 d51dfff7SIlya Yanok
502 ee60197eSSimon Glass# If there is no specified link script, we look in a number of places for it
503 d51dfff7SIlya Yanokifndef LDSCRIPT
504 d51dfff7SIlya Yanok	ifeq ($(wildcard $(LDSCRIPT)),)
505 4379ac61SMasahiro Yamada		LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot.lds
506 d51dfff7SIlya Yanok	endif
507 d51dfff7SIlya Yanok	ifeq ($(wildcard $(LDSCRIPT)),)
508 4379ac61SMasahiro Yamada		LDSCRIPT := $(srctree)/$(CPUDIR)/u-boot.lds
509 d51dfff7SIlya Yanok	endif
510 d51dfff7SIlya Yanok	ifeq ($(wildcard $(LDSCRIPT)),)
511 4379ac61SMasahiro Yamada		LDSCRIPT := $(srctree)/arch/$(ARCH)/cpu/u-boot.lds
512 ee60197eSSimon Glass	endif
513 d51dfff7SIlya Yanokendif
514 d51dfff7SIlya Yanok
515 433b2f1eSMasahiro Yamadaelse
516 433b2f1eSMasahiro Yamada
517 433b2f1eSMasahiro Yamada
518 433b2f1eSMasahiro Yamadaendif # $(dot-config)
519 433b2f1eSMasahiro Yamada
520 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += -Os #-fomit-frame-pointer
521 433b2f1eSMasahiro Yamada
522 433b2f1eSMasahiro Yamadaifdef BUILD_TAG
523 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += -DBUILD_TAG='"$(BUILD_TAG)"'
524 433b2f1eSMasahiro Yamadaendif
525 433b2f1eSMasahiro Yamada
526 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
527 433b2f1eSMasahiro Yamada
528 433b2f1eSMasahiro YamadaKBUILD_CFLAGS	+= -g
529 433b2f1eSMasahiro Yamada# $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g<format>
530 433b2f1eSMasahiro Yamada# option to the assembler.
531 433b2f1eSMasahiro YamadaKBUILD_AFLAGS	+= -g
532 433b2f1eSMasahiro Yamada
533 433b2f1eSMasahiro Yamada# Report stack usage if supported
534 5b1f1f4aSMasahiro Yamadaifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-stack-usage.sh $(CC)),y)
535 5b1f1f4aSMasahiro Yamada	KBUILD_CFLAGS += -fstack-usage
536 5b1f1f4aSMasahiro Yamadaendif
537 433b2f1eSMasahiro Yamada
538 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += $(call cc-option,-Wno-format-nonliteral)
539 433b2f1eSMasahiro Yamada
540 433b2f1eSMasahiro Yamada# turn jbsr into jsr for m68k
541 433b2f1eSMasahiro Yamadaifeq ($(ARCH),m68k)
542 433b2f1eSMasahiro Yamadaifeq ($(findstring 3.4,$(shell $(CC) --version)),3.4)
543 433b2f1eSMasahiro YamadaKBUILD_AFLAGS += -Wa,-gstabs,-S
544 433b2f1eSMasahiro Yamadaendif
545 433b2f1eSMasahiro Yamadaendif
546 433b2f1eSMasahiro Yamada
547 65bb6d8dSMasahiro Yamada# Prohibit date/time macros, which would make the build non-deterministic
548 65bb6d8dSMasahiro YamadaKBUILD_CFLAGS   += $(call cc-option,-Werror=date-time)
549 65bb6d8dSMasahiro Yamada
550 433b2f1eSMasahiro Yamadaifneq ($(CONFIG_SYS_TEXT_BASE),)
551 433b2f1eSMasahiro YamadaKBUILD_CPPFLAGS += -DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE)
552 433b2f1eSMasahiro Yamadaendif
553 433b2f1eSMasahiro Yamada
554 433b2f1eSMasahiro Yamadaexport CONFIG_SYS_TEXT_BASE
555 433b2f1eSMasahiro Yamada
556 0e6256d0SMasahiro Yamada# Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments
557 0e6256d0SMasahiro YamadaKBUILD_CPPFLAGS += $(KCPPFLAGS)
558 0e6256d0SMasahiro YamadaKBUILD_AFLAGS += $(KAFLAGS)
559 0e6256d0SMasahiro YamadaKBUILD_CFLAGS += $(KCFLAGS)
560 0e6256d0SMasahiro Yamada
561 433b2f1eSMasahiro Yamada# Use UBOOTINCLUDE when you must reference the include/ directory.
562 433b2f1eSMasahiro Yamada# Needed to be compatible with the O= option
563 f5c66bdbSMasahiro YamadaUBOOTINCLUDE    := \
564 f5c66bdbSMasahiro Yamada		-Iinclude \
565 f5c66bdbSMasahiro Yamada		$(if $(KBUILD_SRC), -I$(srctree)/include) \
566 433b2f1eSMasahiro Yamada		-I$(srctree)/arch/$(ARCH)/include
567 433b2f1eSMasahiro Yamada
568 433b2f1eSMasahiro YamadaNOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
569 433b2f1eSMasahiro YamadaCHECKFLAGS     += $(NOSTDINC_FLAGS)
570 433b2f1eSMasahiro Yamada
571 433b2f1eSMasahiro Yamada# FIX ME
572 026f9cf2SMasahiro Yamadacpp_flags := $(KBUILD_CPPFLAGS) $(PLATFORM_CPPFLAGS) $(UBOOTINCLUDE) \
573 026f9cf2SMasahiro Yamada							$(NOSTDINC_FLAGS)
574 433b2f1eSMasahiro Yamadac_flags := $(KBUILD_CFLAGS) $(cpp_flags)
575 433b2f1eSMasahiro Yamada
576 7ebf7443Swdenk#########################################################################
577 7ebf7443Swdenk# U-Boot objects....order is important (i.e. start must be first)
578 7ebf7443Swdenk
579 e8a8b824SMasahiro Yamadahead-y := $(CPUDIR)/start.o
580 e8a8b824SMasahiro Yamadahead-$(CONFIG_4xx) += arch/powerpc/cpu/ppc4xx/resetvec.o
581 e8a8b824SMasahiro Yamadahead-$(CONFIG_MPC85xx) += arch/powerpc/cpu/mpc85xx/resetvec.o
582 7ebf7443Swdenk
583 9e414032SMasahiro YamadaHAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n)
584 f9328639SMarian Balakowicz
585 656de6b8SMasahiro Yamadalibs-y += lib/
586 656de6b8SMasahiro Yamadalibs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/
587 656de6b8SMasahiro Yamadalibs-y += $(CPUDIR)/
588 1d9f4105Swdenkifdef SOC
589 656de6b8SMasahiro Yamadalibs-y += $(CPUDIR)/$(SOC)/
590 1d9f4105Swdenkendif
591 656de6b8SMasahiro Yamadalibs-$(CONFIG_OF_EMBED) += dts/
592 656de6b8SMasahiro Yamadalibs-y += arch/$(ARCH)/lib/
593 656de6b8SMasahiro Yamadalibs-y += fs/
594 656de6b8SMasahiro Yamadalibs-y += net/
595 656de6b8SMasahiro Yamadalibs-y += disk/
596 656de6b8SMasahiro Yamadalibs-y += drivers/
597 6494d708SSimon Glasslibs-$(CONFIG_DM) += drivers/core/
598 656de6b8SMasahiro Yamadalibs-y += drivers/dma/
599 656de6b8SMasahiro Yamadalibs-y += drivers/gpio/
600 656de6b8SMasahiro Yamadalibs-y += drivers/i2c/
601 656de6b8SMasahiro Yamadalibs-y += drivers/input/
602 656de6b8SMasahiro Yamadalibs-y += drivers/mmc/
603 656de6b8SMasahiro Yamadalibs-y += drivers/mtd/
604 656de6b8SMasahiro Yamadalibs-$(CONFIG_CMD_NAND) += drivers/mtd/nand/
605 656de6b8SMasahiro Yamadalibs-y += drivers/mtd/onenand/
606 656de6b8SMasahiro Yamadalibs-$(CONFIG_CMD_UBI) += drivers/mtd/ubi/
607 656de6b8SMasahiro Yamadalibs-y += drivers/mtd/spi/
608 656de6b8SMasahiro Yamadalibs-y += drivers/net/
609 656de6b8SMasahiro Yamadalibs-y += drivers/net/phy/
610 656de6b8SMasahiro Yamadalibs-y += drivers/pci/
611 656de6b8SMasahiro Yamadalibs-y += drivers/power/ \
612 e2906a59SMasahiro Yamada	drivers/power/fuel_gauge/ \
613 e2906a59SMasahiro Yamada	drivers/power/mfd/ \
614 e2906a59SMasahiro Yamada	drivers/power/pmic/ \
615 e2906a59SMasahiro Yamada	drivers/power/battery/
616 656de6b8SMasahiro Yamadalibs-y += drivers/spi/
617 656de6b8SMasahiro Yamadalibs-$(CONFIG_FMAN_ENET) += drivers/net/fm/
618 656de6b8SMasahiro Yamadalibs-$(CONFIG_SYS_FSL_DDR) += drivers/ddr/fsl/
619 656de6b8SMasahiro Yamadalibs-y += drivers/serial/
620 656de6b8SMasahiro Yamadalibs-y += drivers/usb/eth/
621 656de6b8SMasahiro Yamadalibs-y += drivers/usb/gadget/
622 656de6b8SMasahiro Yamadalibs-y += drivers/usb/host/
623 656de6b8SMasahiro Yamadalibs-y += drivers/usb/musb/
624 656de6b8SMasahiro Yamadalibs-y += drivers/usb/musb-new/
625 656de6b8SMasahiro Yamadalibs-y += drivers/usb/phy/
626 656de6b8SMasahiro Yamadalibs-y += drivers/usb/ulpi/
627 656de6b8SMasahiro Yamadalibs-y += common/
628 656de6b8SMasahiro Yamadalibs-y += lib/libfdt/
629 656de6b8SMasahiro Yamadalibs-$(CONFIG_API) += api/
630 656de6b8SMasahiro Yamadalibs-$(CONFIG_HAS_POST) += post/
631 656de6b8SMasahiro Yamadalibs-y += test/
632 2e7d35d2SSimon Glasslibs-y += test/dm/
633 39f7611fSSimon Glasslibs-$(CONFIG_DM_DEMO) += drivers/demo/
634 f9328639SMarian Balakowicz
635 24e8bee5SAlison Wangifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35 mxs vf610))
636 656de6b8SMasahiro Yamadalibs-y += arch/$(ARCH)/imx-common/
637 18936ee2SJason Liuendif
638 18936ee2SJason Liu
639 656de6b8SMasahiro Yamadalibs-$(CONFIG_ARM) += arch/arm/cpu/
640 656de6b8SMasahiro Yamadalibs-$(CONFIG_PPC) += arch/powerpc/cpu/
641 852bd07cSMinkyu Kang
642 33a02da0SMasahiro Yamadalibs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/)
643 08e39a84SMasahiro Yamada
644 656de6b8SMasahiro Yamadalibs-y := $(sort $(libs-y))
645 656de6b8SMasahiro Yamada
646 656de6b8SMasahiro Yamadau-boot-dirs	:= $(patsubst %/,%,$(filter %/, $(libs-y))) tools examples
647 656de6b8SMasahiro Yamada
648 656de6b8SMasahiro Yamadau-boot-alldirs	:= $(sort $(u-boot-dirs) $(patsubst %/,%,$(filter %/, $(libs-))))
649 656de6b8SMasahiro Yamada
650 656de6b8SMasahiro Yamadalibs-y		:= $(patsubst %/, %/built-in.o, $(libs-y))
651 656de6b8SMasahiro Yamada
652 656de6b8SMasahiro Yamadau-boot-init := $(head-y)
653 656de6b8SMasahiro Yamadau-boot-main := $(libs-y)
654 656de6b8SMasahiro Yamada
655 a8c7c708Swdenk
656 4f7cb08eSwdenk# Add GCC lib
657 cd2e46cbSMasahiro Yamadaifdef CONFIG_USE_PRIVATE_LIBGCC
658 cd2e46cbSMasahiro Yamadaifeq ($(CONFIG_USE_PRIVATE_LIBGCC),y)
659 a86cf89cSMasahiro YamadaPLATFORM_LIBGCC = arch/$(ARCH)/lib/lib.a
660 52b1bf2cSWolfgang Denkelse
661 cd2e46cbSMasahiro YamadaPLATFORM_LIBGCC = -L $(CONFIG_USE_PRIVATE_LIBGCC) -lgcc
662 52b1bf2cSWolfgang Denkendif
663 52b1bf2cSWolfgang Denkelse
664 6825a95bSMasahiro YamadaPLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(c_flags) -print-libgcc-file-name`) -lgcc
665 52b1bf2cSWolfgang Denkendif
666 52b1bf2cSWolfgang DenkPLATFORM_LIBS += $(PLATFORM_LIBGCC)
667 52b1bf2cSWolfgang Denkexport PLATFORM_LIBS
668 e75e73ddSAlexey Brodkinexport PLATFORM_LIBGCC
669 3d3befa7Swdenk
670 6ac9f479SMike Frysinger# Special flags for CPP when processing the linker script.
671 6ac9f479SMike Frysinger# Pass the version down so we can handle backwards compatibility
672 6ac9f479SMike Frysinger# on the fly.
673 6ac9f479SMike FrysingerLDPPFLAGS += \
674 4379ac61SMasahiro Yamada	-include $(srctree)/include/u-boot/u-boot.lds.h \
675 7e6403a6SSimon Glass	-DCPUDIR=$(CPUDIR) \
676 6ac9f479SMike Frysinger	$(shell $(LD) --version | \
677 6ac9f479SMike Frysinger	  sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p')
678 6ac9f479SMike Frysinger
679 7ebf7443Swdenk#########################################################################
680 bdccc4feSwdenk#########################################################################
681 7ebf7443Swdenk
682 f3a14d37SMike Frysingerifneq ($(CONFIG_BOARD_SIZE_LIMIT),)
683 f3a14d37SMike FrysingerBOARD_SIZE_CHECK = \
684 f3a14d37SMike Frysinger	@actual=`wc -c $@ | awk '{print $$1}'`; \
685 d060e6f4SJoe Hershberger	limit=`printf "%d" $(CONFIG_BOARD_SIZE_LIMIT)`; \
686 f3a14d37SMike Frysinger	if test $$actual -gt $$limit; then \
687 d060e6f4SJoe Hershberger		echo "$@ exceeds file size limit:" >&2 ; \
688 d060e6f4SJoe Hershberger		echo "  limit:  $$limit bytes" >&2 ; \
689 d060e6f4SJoe Hershberger		echo "  actual: $$actual bytes" >&2 ; \
690 d060e6f4SJoe Hershberger		echo "  excess: $$((actual - limit)) bytes" >&2; \
691 f3a14d37SMike Frysinger		exit 1; \
692 f3a14d37SMike Frysinger	fi
693 f3a14d37SMike Frysingerelse
694 f3a14d37SMike FrysingerBOARD_SIZE_CHECK =
695 f3a14d37SMike Frysingerendif
696 f3a14d37SMike Frysinger
697 8137af19SScott Wood# Statically apply RELA-style relocations (currently arm64 only)
698 8137af19SScott Woodifneq ($(CONFIG_STATIC_RELA),)
699 8137af19SScott Wood# $(1) is u-boot ELF, $(2) is u-boot bin, $(3) is text base
700 8137af19SScott WoodDO_STATIC_RELA = \
701 8137af19SScott Wood	start=$$($(NM) $(1) | grep __rel_dyn_start | cut -f 1 -d ' '); \
702 8137af19SScott Wood	end=$$($(NM) $(1) | grep __rel_dyn_end | cut -f 1 -d ' '); \
703 9e414032SMasahiro Yamada	tools/relocate-rela $(2) $(3) $$start $$end
704 8137af19SScott Woodelse
705 8137af19SScott WoodDO_STATIC_RELA =
706 8137af19SScott Woodendif
707 8137af19SScott Wood
708 3e88337bSMike Frysinger# Always append ALL so that arch config.mk's can add custom ones
709 89742924SSimon GlassALL-y += u-boot.srec u-boot.bin System.map binary_size_check
710 e935a374SHaiying Wang
711 9e414032SMasahiro YamadaALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin
712 89ad7be8SPrabhakar Kushwahaifeq ($(CONFIG_SPL_FSL_PBL),y)
713 89ad7be8SPrabhakar KushwahaALL-$(CONFIG_RAMBOOT_PBL) += u-boot-with-spl-pbl.bin
714 89ad7be8SPrabhakar Kushwahaelse
715 9e414032SMasahiro YamadaALL-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl
716 89ad7be8SPrabhakar Kushwahaendif
717 9e414032SMasahiro YamadaALL-$(CONFIG_SPL) += spl/u-boot-spl.bin
718 9e414032SMasahiro YamadaALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img
719 9e414032SMasahiro YamadaALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin
720 0d1e8aacSMasahiro YamadaALL-$(CONFIG_OF_SEPARATE) += u-boot.dtb u-boot-dtb.bin
721 2405d09cSMasahiro Yamadaifeq ($(CONFIG_SPL_FRAMEWORK),y)
722 2405d09cSMasahiro YamadaALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb.img
723 2405d09cSMasahiro Yamadaendif
724 714a5621SSimon GlassALL-$(CONFIG_OF_HOSTFILE) += u-boot.dtb
725 b343bbb5SVadim Bendeburyifneq ($(CONFIG_SPL_TARGET),)
726 9e414032SMasahiro YamadaALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%)
727 b343bbb5SVadim Bendeburyendif
728 9e414032SMasahiro YamadaALL-$(CONFIG_REMAKE_ELF) += u-boot.elf
729 7ebf7443Swdenk
730 12b7b70cSAllen Martin# enable combined SPL/u-boot/dtb rules for tegra
731 6d6c0baeSTom Warrenifneq ($(CONFIG_TEGRA),)
732 7dcd3a21SVidya Sagarifeq ($(CONFIG_SPL),y)
733 12b7b70cSAllen Martinifeq ($(CONFIG_OF_SEPARATE),y)
734 9e414032SMasahiro YamadaALL-y += u-boot-dtb-tegra.bin
735 12b7b70cSAllen Martinelse
736 9e414032SMasahiro YamadaALL-y += u-boot-nodtb-tegra.bin
737 12b7b70cSAllen Martinendif
738 12b7b70cSAllen Martinendif
739 7dcd3a21SVidya Sagarendif
740 12b7b70cSAllen Martin
741 ad0fed46SMasahiro YamadaLDFLAGS_u-boot += $(LDFLAGS_FINAL)
742 433b2f1eSMasahiro Yamadaifneq ($(CONFIG_SYS_TEXT_BASE),)
743 433b2f1eSMasahiro YamadaLDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE)
744 433b2f1eSMasahiro Yamadaendif
745 71f84ef0SMasahiro Yamada
746 f9c235fdSMasahiro Yamadaquiet_cmd_objcopy = OBJCOPY $@
747 f9c235fdSMasahiro Yamadacmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@
748 f9c235fdSMasahiro Yamada
749 b97241b3SMarek Vasutquiet_cmd_mkimage = MKIMAGE $@
750 9bf215b0SMasahiro Yamadacmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< $@ \
751 9bf215b0SMasahiro Yamada	$(if $(KBUILD_VERBOSE:1=), >/dev/null)
752 9bf215b0SMasahiro Yamada
753 ee0acfa2SMasahiro Yamadaquiet_cmd_cat = CAT     $@
754 ee0acfa2SMasahiro Yamadacmd_cat = cat $(filter-out $(PHONY), $^) > $@
755 ee0acfa2SMasahiro Yamada
756 982a1199SMasahiro Yamadaappend = cat $(filter-out $< $(PHONY), $^) >> $@
757 982a1199SMasahiro Yamada
758 982a1199SMasahiro Yamadaquiet_cmd_pad_cat = CAT     $@
759 982a1199SMasahiro Yamadacmd_pad_cat = $(cmd_objcopy) && $(append) || rm -f $@
760 982a1199SMasahiro Yamada
761 656de6b8SMasahiro Yamadaall:		$(ALL-y)
762 7ebf7443Swdenk
763 6ab6b2afSMasahiro YamadaPHONY += dtbs
764 6ab6b2afSMasahiro Yamadadtbs dts/dt.dtb: checkdtc u-boot
765 6ab6b2afSMasahiro Yamada	$(Q)$(MAKE) $(build)=dts dtbs
766 2c0f79e4SSimon Glass
767 ee0acfa2SMasahiro Yamadau-boot-dtb.bin: u-boot.bin dts/dt.dtb FORCE
768 ee0acfa2SMasahiro Yamada	$(call if_changed,cat)
769 2c0f79e4SSimon Glass
770 e64348f5SStefano Babic%.imx: %.bin
771 e64348f5SStefano Babic	$(Q)$(MAKE) $(build)=arch/arm/imx-common $@
772 e64348f5SStefano Babic
773 0d1e8aacSMasahiro Yamadaquiet_cmd_copy = COPY    $@
774 0d1e8aacSMasahiro Yamada      cmd_copy = cp $< $@
775 0d1e8aacSMasahiro Yamada
776 0d1e8aacSMasahiro Yamadau-boot.dtb: dts/dt.dtb
777 0d1e8aacSMasahiro Yamada	$(call cmd,copy)
778 0d1e8aacSMasahiro Yamada
779 f9c235fdSMasahiro YamadaOBJCOPYFLAGS_u-boot.hex := -O ihex
780 6310eb9dSwdenk
781 f9c235fdSMasahiro YamadaOBJCOPYFLAGS_u-boot.srec := -O srec
782 7ebf7443Swdenk
783 f9c235fdSMasahiro Yamadau-boot.hex u-boot.srec: u-boot FORCE
784 f9c235fdSMasahiro Yamada	$(call if_changed,objcopy)
785 f9c235fdSMasahiro Yamada
786 f9c235fdSMasahiro YamadaOBJCOPYFLAGS_u-boot.bin := -O binary
787 f9c235fdSMasahiro Yamada
788 89742924SSimon Glassbinary_size_check: u-boot.bin System.map FORCE
789 89742924SSimon Glass	@file_size=`stat -c %s u-boot.bin` ; \
790 89742924SSimon Glass	map_size=$(shell cat System.map | \
791 0b308f14SSimon Glass		awk '/_image_copy_start/ {start = $$1} /_image_binary_end/ {end = $$1} END {if (start != "" && end != "") print "ibase=16; " toupper(end) " - " toupper(start)}' \
792 0b308f14SSimon Glass		| bc); \
793 89742924SSimon Glass	if [ "" != "$$map_size" ]; then \
794 89742924SSimon Glass		if test $$map_size -ne $$file_size; then \
795 89742924SSimon Glass			echo "System.map shows a binary size of $$map_size" >&2 ; \
796 89742924SSimon Glass			echo "  but u-boot.bin shows $$file_size" >&2 ; \
797 89742924SSimon Glass			exit 1; \
798 89742924SSimon Glass		fi \
799 89742924SSimon Glass	fi
800 89742924SSimon Glass
801 f9c235fdSMasahiro Yamadau-boot.bin: u-boot FORCE
802 f9c235fdSMasahiro Yamada	$(call if_changed,objcopy)
803 8137af19SScott Wood	$(call DO_STATIC_RELA,$<,$@,$(CONFIG_SYS_TEXT_BASE))
804 f3a14d37SMike Frysinger	$(BOARD_SIZE_CHECK)
805 7ebf7443Swdenk
806 9e414032SMasahiro Yamadau-boot.ldr:	u-boot
807 76d82187SMike Frysinger		$(CREATE_LDR_ENV)
808 68e56324SMike Frysinger		$(LDR) -T $(CONFIG_BFIN_CPU) -c $@ $< $(LDR_FLAGS)
809 f3a14d37SMike Frysinger		$(BOARD_SIZE_CHECK)
810 94a91e24SMike Frysinger
811 f9c235fdSMasahiro YamadaOBJCOPYFLAGS_u-boot.ldr.hex := -I binary -O ihex
812 94a91e24SMike Frysinger
813 f9c235fdSMasahiro YamadaOBJCOPYFLAGS_u-boot.ldr.srec := -I binary -O srec
814 f9c235fdSMasahiro Yamada
815 f9c235fdSMasahiro Yamadau-boot.ldr.hex u-boot.ldr.srec: u-boot.ldr FORCE
816 f9c235fdSMasahiro Yamada	$(call if_changed,objcopy)
817 94a91e24SMike Frysinger
818 b40bda6bSStefan Roese#
819 b40bda6bSStefan Roese# U-Boot entry point, needed for booting of full-blown U-Boot
820 b40bda6bSStefan Roese# from the SPL U-Boot version.
821 b40bda6bSStefan Roese#
822 b40bda6bSStefan Roeseifndef CONFIG_SYS_UBOOT_START
823 b40bda6bSStefan RoeseCONFIG_SYS_UBOOT_START := 0
824 b40bda6bSStefan Roeseendif
825 b40bda6bSStefan Roese
826 9bf215b0SMasahiro YamadaMKIMAGEFLAGS_u-boot.img = -A $(ARCH) -T firmware -C none -O u-boot \
827 9bf215b0SMasahiro Yamada	-a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \
828 9bf215b0SMasahiro Yamada	-n "U-Boot $(UBOOTRELEASE) for $(BOARD) board"
829 9bf215b0SMasahiro Yamada
830 4ab3fc5eSMasahiro YamadaMKIMAGEFLAGS_u-boot.kwb = -n $(srctree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%) \
831 4ab3fc5eSMasahiro Yamada	-T kwbimage -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE)
832 9bf215b0SMasahiro Yamada
833 e4536f8eSMasahiro YamadaMKIMAGEFLAGS_u-boot.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \
834 e4536f8eSMasahiro Yamada		-R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage
835 9bf215b0SMasahiro Yamada
836 d18926afSSimon Glassu-boot.img u-boot.kwb u-boot.pbl: u-boot.bin FORCE
837 9bf215b0SMasahiro Yamada	$(call if_changed,mkimage)
838 bdccc4feSwdenk
839 2405d09cSMasahiro YamadaMKIMAGEFLAGS_u-boot-dtb.img = $(MKIMAGEFLAGS_u-boot.img)
840 2405d09cSMasahiro Yamada
841 2405d09cSMasahiro Yamadau-boot-dtb.img: u-boot-dtb.bin FORCE
842 2405d09cSMasahiro Yamada	$(call if_changed,mkimage)
843 2405d09cSMasahiro Yamada
844 9e414032SMasahiro Yamadau-boot.sha1:	u-boot.bin
845 9e414032SMasahiro Yamada		tools/ubsha1 u-boot.bin
846 566a494fSHeiko Schocher
847 9e414032SMasahiro Yamadau-boot.dis:	u-boot
848 7ebf7443Swdenk		$(OBJDUMP) -d $< > $@
849 7ebf7443Swdenk
850 3aa29de0SYing Zhangifdef CONFIG_TPL
851 9e414032SMasahiro YamadaSPL_PAYLOAD := tpl/u-boot-with-tpl.bin
852 3aa29de0SYing Zhangelse
853 9e414032SMasahiro YamadaSPL_PAYLOAD := u-boot.bin
854 3aa29de0SYing Zhangendif
855 74752baaSScott Wood
856 982a1199SMasahiro YamadaOBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \
857 982a1199SMasahiro Yamada				   --pad-to=$(CONFIG_SPL_PAD_TO)
858 982a1199SMasahiro Yamadau-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE
859 982a1199SMasahiro Yamada	$(call if_changed,pad_cat)
860 3aa29de0SYing Zhang
861 982a1199SMasahiro YamadaOBJCOPYFLAGS_u-boot-with-tpl.bin = -I binary -O binary \
862 982a1199SMasahiro Yamada				   --pad-to=$(CONFIG_TPL_PAD_TO)
863 982a1199SMasahiro Yamadatpl/u-boot-with-tpl.bin: tpl/u-boot-tpl.bin u-boot.bin FORCE
864 982a1199SMasahiro Yamada	$(call if_changed,pad_cat)
865 7816f2cfSHeiko Schocher
866 630d2345SMasahiro YamadaSPL: spl/u-boot-spl.bin FORCE
867 630d2345SMasahiro Yamada	$(Q)$(MAKE) $(build)=arch/arm/imx-common $@
868 630d2345SMasahiro Yamada
869 630d2345SMasahiro Yamadau-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL u-boot.bin FORCE
870 4e0c8abcSMasahiro Yamada	$(Q)$(MAKE) $(build)=arch/arm/imx-common $@
871 7d5a5c79SBenoît Thébaudeau
872 9bf215b0SMasahiro YamadaMKIMAGEFLAGS_u-boot.ubl = -n $(UBL_CONFIG) -T ublimage -e $(CONFIG_SYS_TEXT_BASE)
873 9bf215b0SMasahiro Yamada
874 9bf215b0SMasahiro Yamadau-boot.ubl: u-boot-with-spl.bin FORCE
875 9bf215b0SMasahiro Yamada	$(call if_changed,mkimage)
876 277f00f5SJosé Miguel Gonçalves
877 982a1199SMasahiro YamadaMKIMAGEFLAGS_u-boot-spl.ais = -s -n $(if $(CONFIG_AIS_CONFIG_FILE), \
878 982a1199SMasahiro Yamada	$(srctree)/$(CONFIG_AIS_CONFIG_FILE:"%"=%),"/dev/null") \
879 982a1199SMasahiro Yamada	-T aisimage -e $(CONFIG_SPL_TEXT_BASE)
880 982a1199SMasahiro Yamadaspl/u-boot-spl.ais: spl/u-boot-spl.bin FORCE
881 982a1199SMasahiro Yamada	$(call if_changed,mkimage)
882 d36d8859SChristian Riesch
883 532d5318SChristian RieschOBJCOPYFLAGS_u-boot.ais = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO)
884 982a1199SMasahiro Yamadau-boot.ais: spl/u-boot-spl.ais u-boot.img FORCE
885 982a1199SMasahiro Yamada	$(call if_changed,pad_cat)
886 a5453555SOtavio Salvador
887 1a9df13dSMarek Vasutu-boot-signed.sb: u-boot.bin spl/u-boot-spl.bin
888 1a9df13dSMarek Vasut	$(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs u-boot-signed.sb
889 9e414032SMasahiro Yamadau-boot.sb: u-boot.bin spl/u-boot-spl.bin
890 07e27ce0SMasahiro Yamada	$(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs u-boot.sb
891 30b9b932SMarek Vasut
892 94aebe6cSStefan Roese# On x600 (SPEAr600) U-Boot is appended to U-Boot SPL.
893 94aebe6cSStefan Roese# Both images are created using mkimage (crc etc), so that the ROM
894 94aebe6cSStefan Roese# bootloader can check its integrity. Padding needs to be done to the
895 94aebe6cSStefan Roese# SPL image (with mkimage header) and not the binary. Otherwise the resulting image
896 94aebe6cSStefan Roese# which is loaded/copied by the ROM bootloader to SRAM doesn't fit.
897 94aebe6cSStefan Roese# The resulting image containing both U-Boot images is called u-boot.spr
898 982a1199SMasahiro YamadaMKIMAGEFLAGS_u-boot-spl.img = -A $(ARCH) -T firmware -C none \
899 982a1199SMasahiro Yamada	-a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n XLOADER
900 982a1199SMasahiro Yamadaspl/u-boot-spl.img: spl/u-boot-spl.bin FORCE
901 982a1199SMasahiro Yamada	$(call if_changed,mkimage)
902 982a1199SMasahiro Yamada
903 982a1199SMasahiro YamadaOBJCOPYFLAGS_u-boot.spr = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \
904 982a1199SMasahiro Yamada			  --gap-fill=0xff
905 982a1199SMasahiro Yamadau-boot.spr: spl/u-boot-spl.img u-boot.img FORCE
906 982a1199SMasahiro Yamada	$(call if_changed,pad_cat)
907 94aebe6cSStefan Roese
908 ef509b90SVitaly AndrianovMKIMAGEFLAGS_u-boot-spl.gph = -A $(ARCH) -T gpimage -C none \
909 ef509b90SVitaly Andrianov	-a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n SPL
910 ef509b90SVitaly Andrianovspl/u-boot-spl.gph: spl/u-boot-spl.bin FORCE
911 ef509b90SVitaly Andrianov	$(call if_changed,mkimage)
912 ef509b90SVitaly Andrianov
913 ef509b90SVitaly AndrianovOBJCOPYFLAGS_u-boot-spi.gph = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \
914 ef509b90SVitaly Andrianov			  --gap-fill=0
915 ef509b90SVitaly Andrianovu-boot-spi.gph: spl/u-boot-spl.gph u-boot.img FORCE
916 ef509b90SVitaly Andrianov	$(call if_changed,pad_cat)
917 ef509b90SVitaly Andrianov
918 50827a59SIan Campbellifneq ($(CONFIG_SUNXI),)
919 50827a59SIan CampbellOBJCOPYFLAGS_u-boot-sunxi-with-spl.bin = -I binary -O binary \
920 50827a59SIan Campbell				   --pad-to=$(CONFIG_SPL_PAD_TO) --gap-fill=0xff
921 50827a59SIan Campbellu-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.img FORCE
922 50827a59SIan Campbell	$(call if_changed,pad_cat)
923 50827a59SIan Campbellendif
924 50827a59SIan Campbell
925 6d6c0baeSTom Warrenifneq ($(CONFIG_TEGRA),)
926 982a1199SMasahiro YamadaOBJCOPYFLAGS_u-boot-nodtb-tegra.bin = -O binary --pad-to=$(CONFIG_SYS_TEXT_BASE)
927 982a1199SMasahiro Yamadau-boot-nodtb-tegra.bin: spl/u-boot-spl u-boot.bin FORCE
928 982a1199SMasahiro Yamada	$(call if_changed,pad_cat)
929 9972db5cSStephen Warren
930 9972db5cSStephen Warrenifeq ($(CONFIG_OF_SEPARATE),y)
931 ee0acfa2SMasahiro Yamadau-boot-dtb-tegra.bin: u-boot-nodtb-tegra.bin dts/dt.dtb FORCE
932 ee0acfa2SMasahiro Yamada	$(call if_changed,cat)
933 9972db5cSStephen Warrenendif
934 984df4ecSAllen Martinendif
935 984df4ecSAllen Martin
936 ee0acfa2SMasahiro Yamadau-boot-img.bin: spl/u-boot-spl.bin u-boot.img FORCE
937 ee0acfa2SMasahiro Yamada	$(call if_changed,cat)
938 fb3d2b8aSStefan Roese
939 89ad7be8SPrabhakar Kushwaha#Add a target to create boot binary having SPL binary in PBI format
940 89ad7be8SPrabhakar Kushwaha#concatenated with u-boot binary. It is need by PowerPC SoC having
941 89ad7be8SPrabhakar Kushwaha#internal SRAM <= 512KB.
942 89ad7be8SPrabhakar KushwahaMKIMAGEFLAGS_u-boot-spl.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \
943 89ad7be8SPrabhakar Kushwaha		-R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage
944 89ad7be8SPrabhakar Kushwaha
945 89ad7be8SPrabhakar Kushwahaspl/u-boot-spl.pbl: spl/u-boot-spl.bin FORCE
946 89ad7be8SPrabhakar Kushwaha	$(call if_changed,mkimage)
947 89ad7be8SPrabhakar Kushwaha
948 89ad7be8SPrabhakar KushwahaOBJCOPYFLAGS_u-boot-with-spl-pbl.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \
949 89ad7be8SPrabhakar Kushwaha			  --gap-fill=0xff
950 89ad7be8SPrabhakar Kushwaha
951 89ad7be8SPrabhakar Kushwahau-boot-with-spl-pbl.bin: spl/u-boot-spl.pbl u-boot.bin FORCE
952 89ad7be8SPrabhakar Kushwaha	$(call if_changed,pad_cat)
953 89ad7be8SPrabhakar Kushwaha
954 ecddccd0SStefan Roese# PPC4xx needs the SPL at the end of the image, since the reset vector
955 ecddccd0SStefan Roese# is located at 0xfffffffc. So we can't use the "u-boot-img.bin" target
956 ecddccd0SStefan Roese# and need to introduce a new build target with the full blown U-Boot
957 ecddccd0SStefan Roese# at the start padded up to the start of the SPL image. And then concat
958 ecddccd0SStefan Roese# the SPL image to the end.
959 982a1199SMasahiro Yamada
960 982a1199SMasahiro YamadaOBJCOPYFLAGS_u-boot-img-spl-at-end.bin := -I binary -O binary \
961 982a1199SMasahiro Yamada	--pad-to=$(CONFIG_UBOOT_PAD_TO) --gap-fill=0xff
962 982a1199SMasahiro Yamadau-boot-img-spl-at-end.bin: u-boot.img spl/u-boot-spl.bin FORCE
963 982a1199SMasahiro Yamada	$(call if_changed,pad_cat)
964 ecddccd0SStefan Roese
965 f4dc714aSScott Wood# Create a new ELF from a raw binary file.  This is useful for arm64
966 f4dc714aSScott Wood# where static relocation needs to be performed on the raw binary,
967 f4dc714aSScott Wood# but certain simulators only accept an ELF file (but don't do the
968 f4dc714aSScott Wood# relocation).
969 f4dc714aSScott Wood# FIXME refactor dts/Makefile to share target/arch detection
970 9e414032SMasahiro Yamadau-boot.elf: u-boot.bin
971 f4dc714aSScott Wood	@$(OBJCOPY)  -B aarch64 -I binary -O elf64-littleaarch64 \
972 9e414032SMasahiro Yamada		$< u-boot-elf.o
973 9e414032SMasahiro Yamada	@$(LD) u-boot-elf.o -o $@ \
974 f4dc714aSScott Wood		--defsym=_start=$(CONFIG_SYS_TEXT_BASE) \
975 f4dc714aSScott Wood		-Ttext=$(CONFIG_SYS_TEXT_BASE)
976 f4dc714aSScott Wood
977 ad0fed46SMasahiro Yamada# Rule to link u-boot
978 ad0fed46SMasahiro Yamada# May be overridden by arch/$(ARCH)/config.mk
979 ad0fed46SMasahiro Yamadaquiet_cmd_u-boot__ ?= LD      $@
980 ad0fed46SMasahiro Yamada      cmd_u-boot__ ?= $(LD) $(LDFLAGS) $(LDFLAGS_u-boot) -o $@ \
981 ad0fed46SMasahiro Yamada      -T u-boot.lds $(u-boot-init)                             \
982 ad0fed46SMasahiro Yamada      --start-group $(u-boot-main) --end-group                 \
983 ad0fed46SMasahiro Yamada      $(PLATFORM_LIBS) -Map u-boot.map
984 86eb49b3SSimon Glass
985 656de6b8SMasahiro Yamadau-boot:	$(u-boot-init) $(u-boot-main) u-boot.lds
986 ad0fed46SMasahiro Yamada	$(call if_changed,u-boot__)
987 ecb1dc89SMike Frysingerifeq ($(CONFIG_KALLSYMS),y)
988 9e414032SMasahiro Yamada	smap=`$(call SYSTEM_MAP,u-boot) | \
989 1aada9cdSWolfgang Denk		awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \
990 6825a95bSMasahiro Yamada	$(CC) $(c_flags) -DSYSTEM_MAP="\"$${smap}\"" \
991 9e414032SMasahiro Yamada		-c $(srctree)/common/system_map.c -o common/system_map.o
992 ad0fed46SMasahiro Yamada	$(call cmd,u-boot__) common/system_map.o
993 ecb1dc89SMike Frysingerendif
994 7ebf7443Swdenk
995 656de6b8SMasahiro Yamada# The actual objects are generated when descending,
996 656de6b8SMasahiro Yamada# make sure no implicit rule kicks in
997 656de6b8SMasahiro Yamada$(sort $(u-boot-init) $(u-boot-main)): $(u-boot-dirs) ;
998 f9328639SMarian Balakowicz
999 656de6b8SMasahiro Yamada# Handle descending into subdirectories listed in $(vmlinux-dirs)
1000 656de6b8SMasahiro Yamada# Preset locale variables to speed up the build process. Limit locale
1001 656de6b8SMasahiro Yamada# tweaks to this spot to avoid wrong language settings when running
1002 656de6b8SMasahiro Yamada# make menuconfig etc.
1003 656de6b8SMasahiro Yamada# Error messages still appears in the original language
1004 a8c7c708Swdenk
1005 656de6b8SMasahiro YamadaPHONY += $(u-boot-dirs)
1006 6378008aSMasahiro Yamada$(u-boot-dirs): prepare scripts
1007 6825a95bSMasahiro Yamada	$(Q)$(MAKE) $(build)=$@
1008 940db16dSMasahiro Yamada
1009 7424145fSMasahiro Yamadatools: prepare
1010 656de6b8SMasahiro Yamada# The "tools" are needed early
1011 656de6b8SMasahiro Yamada$(filter-out tools, $(u-boot-dirs)): tools
1012 656de6b8SMasahiro Yamada# The "examples" conditionally depend on U-Boot (say, when USE_PRIVATE_LIBGCC
1013 656de6b8SMasahiro Yamada# is "yes"), so compile examples after U-Boot is compiled.
1014 656de6b8SMasahiro Yamadaexamples: $(filter-out examples, $(u-boot-dirs))
1015 656de6b8SMasahiro Yamada
1016 7424145fSMasahiro Yamadadefine filechk_uboot.release
1017 7424145fSMasahiro Yamada	echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
1018 7424145fSMasahiro Yamadaendef
1019 7424145fSMasahiro Yamada
1020 7424145fSMasahiro Yamada# Store (new) UBOOTRELEASE string in include/config/uboot.release
1021 7424145fSMasahiro Yamadainclude/config/uboot.release: Makefile FORCE
1022 7424145fSMasahiro Yamada	$(call filechk,uboot.release)
1023 7424145fSMasahiro Yamada
1024 7424145fSMasahiro Yamada
1025 3341bfecSMasahiro Yamada# Things we need to do before we recursively start building the kernel
1026 3341bfecSMasahiro Yamada# or the modules are listed in "prepare".
1027 3341bfecSMasahiro Yamada# A multi level approach is used. prepareN is processed before prepareN-1.
1028 3341bfecSMasahiro Yamada# archprepare is used in arch Makefiles and when processed asm symlink,
1029 3341bfecSMasahiro Yamada# version.h and scripts_basic is processed / created.
1030 3341bfecSMasahiro Yamada
1031 3341bfecSMasahiro Yamada# Listed in dependency order
1032 3341bfecSMasahiro YamadaPHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3
1033 3341bfecSMasahiro Yamada
1034 3341bfecSMasahiro Yamada# prepare3 is used to check if we are building in a separate output directory,
1035 3341bfecSMasahiro Yamada# and if so do:
1036 3341bfecSMasahiro Yamada# 1) Check that make has not been executed in the kernel src $(srctree)
1037 7424145fSMasahiro Yamadaprepare3: include/config/uboot.release
1038 3341bfecSMasahiro Yamadaifneq ($(KBUILD_SRC),)
1039 3341bfecSMasahiro Yamada	@$(kecho) '  Using $(srctree) as source for u-boot'
1040 3341bfecSMasahiro Yamada	$(Q)if [ -f $(srctree)/include/config.mk ]; then \
1041 3341bfecSMasahiro Yamada		echo >&2 "  $(srctree) is not clean, please run 'make mrproper'"; \
1042 3341bfecSMasahiro Yamada		echo >&2 "  in the '$(srctree)' directory.";\
1043 3341bfecSMasahiro Yamada		/bin/false; \
1044 3341bfecSMasahiro Yamada	fi;
1045 3341bfecSMasahiro Yamadaendif
1046 3341bfecSMasahiro Yamada
1047 3341bfecSMasahiro Yamada# prepare2 creates a makefile if using a separate output directory
1048 3341bfecSMasahiro Yamadaprepare2: prepare3 outputmakefile
1049 3341bfecSMasahiro Yamada
1050 7424145fSMasahiro Yamadaprepare1: prepare2 $(version_h) $(timestamp_h)
1051 331b45fbSMasahiro Yamadaifeq ($(__HAVE_ARCH_GENERIC_BOARD),)
1052 331b45fbSMasahiro Yamadaifeq ($(CONFIG_SYS_GENERIC_BOARD),y)
1053 331b45fbSMasahiro Yamada	@echo >&2 "  Your architecture does not support generic board."
1054 331b45fbSMasahiro Yamada	@echo >&2 "  Please undefine CONFIG_SYS_GENERIC_BOARD in your board config file."
1055 331b45fbSMasahiro Yamada	@/bin/false
1056 331b45fbSMasahiro Yamadaendif
1057 331b45fbSMasahiro Yamadaendif
1058 4a377552SMasahiro Yamadaifeq ($(wildcard $(LDSCRIPT)),)
1059 4a377552SMasahiro Yamada	@echo >&2 "  Could not find linker script."
1060 4a377552SMasahiro Yamada	@/bin/false
1061 4a377552SMasahiro Yamadaendif
1062 7ebf7443Swdenk
1063 3341bfecSMasahiro Yamadaarchprepare: prepare1 scripts_basic
1064 a8c7c708Swdenk
1065 6a44d806SMasahiro Yamadaprepare0: archprepare FORCE
1066 6a44d806SMasahiro Yamada	$(Q)$(MAKE) $(build)=.
1067 7ebf7443Swdenk
1068 3341bfecSMasahiro Yamada# All the preparing..
1069 3341bfecSMasahiro Yamadaprepare: prepare0
1070 349e83f0SChe-liang Chiou
1071 7424145fSMasahiro Yamada# Generate some files
1072 7424145fSMasahiro Yamada# ---------------------------------------------------------------------------
1073 7424145fSMasahiro Yamada
1074 7424145fSMasahiro Yamadadefine filechk_version.h
1075 7424145fSMasahiro Yamada	(echo \#define PLAIN_VERSION \"$(UBOOTRELEASE)\"; \
1076 7424145fSMasahiro Yamada	echo \#define U_BOOT_VERSION \"U-Boot \" PLAIN_VERSION; \
1077 7424145fSMasahiro Yamada	echo \#define CC_VERSION_STRING \"$$($(CC) --version | head -n 1)\"; \
1078 7424145fSMasahiro Yamada	echo \#define LD_VERSION_STRING \"$$($(LD) --version | head -n 1)\"; )
1079 7424145fSMasahiro Yamadaendef
1080 7424145fSMasahiro Yamada
1081 7424145fSMasahiro Yamadadefine filechk_timestamp.h
1082 7424145fSMasahiro Yamada	(LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; \
1083 7424145fSMasahiro Yamada	LC_ALL=C date +'#define U_BOOT_TIME "%T"')
1084 7424145fSMasahiro Yamadaendef
1085 7424145fSMasahiro Yamada
1086 2e6b2f6aSMasahiro Yamada$(version_h): include/config/uboot.release FORCE
1087 7424145fSMasahiro Yamada	$(call filechk,version.h)
1088 7424145fSMasahiro Yamada
1089 7424145fSMasahiro Yamada$(timestamp_h): $(srctree)/Makefile FORCE
1090 7424145fSMasahiro Yamada	$(call filechk,timestamp.h)
1091 7424145fSMasahiro Yamada
1092 433b2f1eSMasahiro Yamada#
1093 433b2f1eSMasahiro Yamada# Auto-generate the autoconf.mk file (which is included by all makefiles)
1094 433b2f1eSMasahiro Yamada#
1095 433b2f1eSMasahiro Yamada# This target actually generates 2 files; autoconf.mk and autoconf.mk.dep.
1096 433b2f1eSMasahiro Yamada# the dep file is only include in this top level makefile to determine when
1097 433b2f1eSMasahiro Yamada# to regenerate the autoconf.mk file.
1098 1aada9cdSWolfgang Denk
1099 433b2f1eSMasahiro Yamadaquiet_cmd_autoconf_dep = GEN     $@
1100 433b2f1eSMasahiro Yamada      cmd_autoconf_dep = $(CC) -x c -DDO_DEPS_ONLY -M $(c_flags) \
1101 433b2f1eSMasahiro Yamada	-MQ include/autoconf.mk $(srctree)/include/common.h > $@ || rm $@
1102 887e2ec9SStefan Roese
1103 433b2f1eSMasahiro Yamadainclude/autoconf.mk.dep: include/config.h include/common.h
1104 433b2f1eSMasahiro Yamada	$(call cmd,autoconf_dep)
1105 887e2ec9SStefan Roese
1106 433b2f1eSMasahiro Yamadaquiet_cmd_autoconf = GEN     $@
1107 433b2f1eSMasahiro Yamada      cmd_autoconf = \
1108 433b2f1eSMasahiro Yamada	$(CPP) $(c_flags) -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && \
1109 433b2f1eSMasahiro Yamada	sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp > $@; \
1110 433b2f1eSMasahiro Yamada	rm $@.tmp
1111 5df2ee27SDaniel Schwierzeck
1112 433b2f1eSMasahiro Yamadainclude/autoconf.mk: include/config.h
1113 433b2f1eSMasahiro Yamada	$(call cmd,autoconf)
1114 433b2f1eSMasahiro Yamada
1115 6378008aSMasahiro Yamada# ---------------------------------------------------------------------------
1116 6378008aSMasahiro Yamada
1117 6378008aSMasahiro YamadaPHONY += depend dep
1118 6378008aSMasahiro Yamadadepend dep:
1119 6378008aSMasahiro Yamada	@echo '*** Warning: make $@ is unnecessary now.'
1120 6378008aSMasahiro Yamada
1121 6378008aSMasahiro Yamada# ---------------------------------------------------------------------------
1122 04a34c96SMasahiro Yamadaquiet_cmd_cpp_lds = LDS     $@
1123 395e60cdSMasahiro Yamadacmd_cpp_lds = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) -ansi \
1124 395e60cdSMasahiro Yamada		-D__ASSEMBLY__ -x assembler-with-cpp -P -o $@ $<
1125 6378008aSMasahiro Yamada
1126 04a34c96SMasahiro Yamadau-boot.lds: $(LDSCRIPT) prepare FORCE
1127 395e60cdSMasahiro Yamada	$(call if_changed_dep,cpp_lds)
1128 f2302d44SStefan Roese
1129 982a1199SMasahiro Yamadaspl/u-boot-spl.bin: spl/u-boot-spl
1130 982a1199SMasahiro Yamada	@:
1131 982a1199SMasahiro Yamadaspl/u-boot-spl: tools prepare
1132 c7163083SMasahiro Yamada	$(Q)$(MAKE) obj=spl -f $(srctree)/scripts/Makefile.spl all
1133 0d3c62e4SChander Kashyap
1134 50827a59SIan Campbellspl/sunxi-spl.bin: spl/u-boot-spl
1135 50827a59SIan Campbell	@:
1136 50827a59SIan Campbell
1137 6378008aSMasahiro Yamadatpl/u-boot-tpl.bin: tools prepare
1138 c7163083SMasahiro Yamada	$(Q)$(MAKE) obj=tpl -f $(srctree)/scripts/Makefile.spl all CONFIG_TPL_BUILD=y
1139 3aa29de0SYing Zhang
1140 656de6b8SMasahiro YamadaTAG_SUBDIRS := $(u-boot-dirs) include
1141 a340c325SJean-Christophe PLAGNIOL-VILLARD
1142 857d9ea6SHorst KronstorferFIND := find
1143 857d9ea6SHorst KronstorferFINDFLAGS := -L
1144 857d9ea6SHorst Kronstorfer
1145 f9328639SMarian Balakowicztags ctags:
1146 9e414032SMasahiro Yamada		ctags -w -o ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
1147 e5e4e705SLi Yang						-name '*.[chS]' -print`
1148 7ebf7443Swdenk
1149 7ebf7443Swdenketags:
1150 857d9ea6SHorst Kronstorfer		etags -a -o $(obj)etags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
1151 e5e4e705SLi Yang						-name '*.[chS]' -print`
1152 ffda586fSLi Yangcscope:
1153 857d9ea6SHorst Kronstorfer		$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \
1154 857d9ea6SHorst Kronstorfer						cscope.files
1155 ffda586fSLi Yang		cscope -b -q -k
1156 7ebf7443Swdenk
1157 ecb1dc89SMike FrysingerSYSTEM_MAP = \
1158 ecb1dc89SMike Frysinger		$(NM) $1 | \
1159 7ebf7443Swdenk		grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
1160 ecb1dc89SMike Frysinger		LC_ALL=C sort
1161 9e414032SMasahiro YamadaSystem.map:	u-boot
1162 bc8bb6ecSMasahiro Yamada		@$(call SYSTEM_MAP,$<) > $@
1163 7ebf7443Swdenk
1164 501ebdf2SStephen Warrencheckdtc:
1165 501ebdf2SStephen Warren	@if test $(call dtc-version) -lt 0104; then \
1166 501ebdf2SStephen Warren		echo '*** Your dtc is too old, please upgrade to dtc 1.4 or newer'; \
1167 501ebdf2SStephen Warren		false; \
1168 501ebdf2SStephen Warren	fi
1169 501ebdf2SStephen Warren
1170 7ebf7443Swdenk#########################################################################
1171 7ebf7443Swdenk
1172 54799e45SScott Wood# ARM relocations should all be R_ARM_RELATIVE (32-bit) or
1173 54799e45SScott Wood# R_AARCH64_RELATIVE (64-bit).
1174 9e414032SMasahiro Yamadacheckarmreloc: u-boot
1175 54799e45SScott Wood	@RELOC="`$(CROSS_COMPILE)readelf -r -W $< | cut -d ' ' -f 4 | \
1176 54799e45SScott Wood		grep R_A | sort -u`"; \
1177 54799e45SScott Wood	if test "$$RELOC" != "R_ARM_RELATIVE" -a \
1178 54799e45SScott Wood		 "$$RELOC" != "R_AARCH64_RELATIVE"; then \
1179 54799e45SScott Wood		echo "$< contains unexpected relocations: $$RELOC"; \
1180 54799e45SScott Wood		false; \
1181 54799e45SScott Wood	fi
1182 c37980c3SAlbert ARIBAUD
1183 7424145fSMasahiro Yamadaenv: scripts_basic
1184 3f76e984SMasahiro Yamada	$(Q)$(MAKE) $(build)=tools/$@
1185 0358df42SMike Frysinger
1186 4642e002SMasahiro Yamadatools-only: scripts_basic $(version_h) $(timestamp_h)
1187 4642e002SMasahiro Yamada	$(Q)$(MAKE) $(build)=tools
1188 4642e002SMasahiro Yamada
1189 1ec8b4efSMasahiro Yamadatools-all: export HOST_TOOLS_ALL=y
1190 2887c473SMasahiro Yamadatools-all: env tools ;
1191 0358df42SMike Frysinger
1192 db5b339cSMasahiro Yamadacross_tools: export CROSS_BUILD_TOOLS=y
1193 db5b339cSMasahiro Yamadacross_tools: tools ;
1194 db5b339cSMasahiro Yamada
1195 4e53a258SWolfgang Denk.PHONY : CHANGELOG
1196 4e53a258SWolfgang DenkCHANGELOG:
1197 b985b5d6SBen Warren	git log --no-merges U-Boot-1_1_5.. | \
1198 b985b5d6SBen Warren	unexpand -a | sed -e 's/\s\s*$$//' > $@
1199 4e53a258SWolfgang Denk
1200 0a823aa2SHarald Welteinclude/license.h: tools/bin2header COPYING
1201 0a823aa2SHarald Welte	cat COPYING | gzip -9 -c | ./tools/bin2header license_gzip > include/license.h
1202 7ebf7443Swdenk#########################################################################
1203 7ebf7443Swdenk
1204 efcf8619SMasahiro Yamada###
1205 efcf8619SMasahiro Yamada# Cleaning is done on three levels.
1206 efcf8619SMasahiro Yamada# make clean     Delete most generated files
1207 efcf8619SMasahiro Yamada#                Leave enough to build external modules
1208 efcf8619SMasahiro Yamada# make mrproper  Delete the current configuration, and all generated files
1209 efcf8619SMasahiro Yamada# make distclean Remove editor backup files, patch leftover files and the like
1210 7ebf7443Swdenk
1211 efcf8619SMasahiro Yamada# Directories & files removed with 'make clean'
1212 efcf8619SMasahiro YamadaCLEAN_DIRS  += $(MODVERDIR)
1213 efcf8619SMasahiro YamadaCLEAN_FILES += u-boot.lds include/bmp_logo.h include/bmp_logo_data.h \
1214 efcf8619SMasahiro Yamada	       include/autoconf.mk* include/spl-autoconf.mk \
1215 433b2f1eSMasahiro Yamada	       include/tpl-autoconf.mk
1216 a6862bc1SWolfgang Denk
1217 efcf8619SMasahiro Yamada# Directories & files removed with 'make clobber'
1218 c7163083SMasahiro YamadaCLOBBER_DIRS  += spl tpl
1219 66948c25SMasahiro YamadaCLOBBER_FILES += u-boot* MLO* SPL System.map
1220 9f4a4206SMike Frysinger
1221 efcf8619SMasahiro Yamada# Directories & files removed with 'make mrproper'
1222 598e2d33SMasahiro YamadaMRPROPER_DIRS  += include/config include/generated          \
1223 598e2d33SMasahiro Yamada		  .tmp_objdiff
1224 efcf8619SMasahiro YamadaMRPROPER_FILES += .config .config.old \
1225 efcf8619SMasahiro Yamada		  tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \
1226 efcf8619SMasahiro Yamada		  include/config.h include/config.mk
1227 7ebf7443Swdenk
1228 efcf8619SMasahiro Yamada# clean - Delete most, but leave enough to build external modules
1229 efcf8619SMasahiro Yamada#
1230 efcf8619SMasahiro Yamadaclean: rm-dirs  := $(CLEAN_DIRS)
1231 efcf8619SMasahiro Yamadaclean: rm-files := $(CLEAN_FILES)
1232 7ebf7443Swdenk
1233 6bd04bb4SMasahiro Yamadaclean-dirs	:= $(foreach f,$(u-boot-alldirs),$(if $(wildcard $(srctree)/$f/Makefile),$f))
1234 734329f9SAndy Fleming
1235 efcf8619SMasahiro Yamadaclean-dirs      := $(addprefix _clean_, $(clean-dirs) doc/DocBook)
1236 7ebf7443Swdenk
1237 efcf8619SMasahiro YamadaPHONY += $(clean-dirs) clean archclean
1238 efcf8619SMasahiro Yamada$(clean-dirs):
1239 efcf8619SMasahiro Yamada	$(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@)
1240 efcf8619SMasahiro Yamada
1241 efcf8619SMasahiro Yamada# TODO: Do not use *.cfgtmp
1242 efcf8619SMasahiro Yamadaclean: $(clean-dirs)
1243 efcf8619SMasahiro Yamada	$(call cmd,rmdirs)
1244 efcf8619SMasahiro Yamada	$(call cmd,rmfiles)
1245 efcf8619SMasahiro Yamada	@find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \
1246 efcf8619SMasahiro Yamada		\( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
1247 efcf8619SMasahiro Yamada		-o -name '*.ko.*' -o -name '*.su' -o -name '*.cfgtmp' \
1248 efcf8619SMasahiro Yamada		-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
1249 efcf8619SMasahiro Yamada		-o -name '*.symtypes' -o -name 'modules.order' \
1250 efcf8619SMasahiro Yamada		-o -name modules.builtin -o -name '.tmp_*.o.*' \
1251 efcf8619SMasahiro Yamada		-o -name '*.gcno' \) -type f -print | xargs rm -f
1252 efcf8619SMasahiro Yamada
1253 efcf8619SMasahiro Yamada# clobber
1254 efcf8619SMasahiro Yamada#
1255 efcf8619SMasahiro Yamadaclobber: rm-dirs  := $(CLOBBER_DIRS)
1256 efcf8619SMasahiro Yamadaclobber: rm-files := $(CLOBBER_FILES)
1257 efcf8619SMasahiro Yamada
1258 efcf8619SMasahiro YamadaPHONY += clobber
1259 efcf8619SMasahiro Yamada
1260 efcf8619SMasahiro Yamadaclobber: clean
1261 efcf8619SMasahiro Yamada	$(call cmd,rmdirs)
1262 efcf8619SMasahiro Yamada	$(call cmd,rmfiles)
1263 efcf8619SMasahiro Yamada
1264 efcf8619SMasahiro Yamada# mrproper - Delete all generated files, including .config
1265 efcf8619SMasahiro Yamada#
1266 efcf8619SMasahiro Yamadamrproper: rm-dirs  := $(wildcard $(MRPROPER_DIRS))
1267 efcf8619SMasahiro Yamadamrproper: rm-files := $(wildcard $(MRPROPER_FILES))
1268 efcf8619SMasahiro Yamadamrproper-dirs      := $(addprefix _mrproper_,scripts)
1269 efcf8619SMasahiro Yamada
1270 efcf8619SMasahiro YamadaPHONY += $(mrproper-dirs) mrproper archmrproper
1271 efcf8619SMasahiro Yamada$(mrproper-dirs):
1272 efcf8619SMasahiro Yamada	$(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@)
1273 efcf8619SMasahiro Yamada
1274 efcf8619SMasahiro Yamadamrproper: clobber $(mrproper-dirs)
1275 efcf8619SMasahiro Yamada	$(call cmd,rmdirs)
1276 efcf8619SMasahiro Yamada	$(call cmd,rmfiles)
1277 *e9c16a80SMasahiro Yamada	@rm -f arch/*/include/asm/arch
1278 efcf8619SMasahiro Yamada
1279 efcf8619SMasahiro Yamada# distclean
1280 efcf8619SMasahiro Yamada#
1281 efcf8619SMasahiro YamadaPHONY += distclean
1282 efcf8619SMasahiro Yamada
1283 433b2f1eSMasahiro Yamadadistclean: mrproper
1284 efcf8619SMasahiro Yamada	@find $(srctree) $(RCS_FIND_IGNORE) \
1285 efcf8619SMasahiro Yamada		\( -name '*.orig' -o -name '*.rej' -o -name '*~' \
1286 efcf8619SMasahiro Yamada		-o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
1287 598e2d33SMasahiro Yamada		-o -name '.*.rej' -o -name '*%' -o -name 'core' \
1288 598e2d33SMasahiro Yamada		-o -name '*.pyc' \) \
1289 efcf8619SMasahiro Yamada		-type f -print | xargs rm -f
1290 7ebf7443Swdenk
1291 7ebf7443Swdenkbackup:
1292 4379ac61SMasahiro Yamada	F=`basename $(srctree)` ; cd .. ; \
1293 d6b93714SIlya Yanok	gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F
1294 7ebf7443Swdenk
1295 ed1ca528SMasahiro Yamadahelp:
1296 ed1ca528SMasahiro Yamada	@echo  'Cleaning targets:'
1297 ed1ca528SMasahiro Yamada	@echo  '  clean		  - Remove most generated files but keep the config and'
1298 ed1ca528SMasahiro Yamada	@echo  '                    necessities for testing u-boot'
1299 ed1ca528SMasahiro Yamada	@echo  '  clobber	  - Remove most generated files but keep the config'
1300 ed1ca528SMasahiro Yamada	@echo  '  mrproper	  - Remove all generated files + config + various backup files'
1301 ed1ca528SMasahiro Yamada	@echo  '  distclean	  - mrproper + remove editor backup and patch files'
1302 ed1ca528SMasahiro Yamada	@echo  ''
1303 ed1ca528SMasahiro Yamada# uncomment after adding Kconfig feature
1304 ed1ca528SMasahiro Yamada#	@echo  'Configuration targets:'
1305 ed1ca528SMasahiro Yamada#	@$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help
1306 ed1ca528SMasahiro Yamada#	@echo  ''
1307 ed1ca528SMasahiro Yamada	@echo  'Other generic targets:'
1308 ed1ca528SMasahiro Yamada	@echo  '  all		  - Build all necessary images depending on configuration'
1309 ed1ca528SMasahiro Yamada	@echo  '  u-boot	  - Build the bare u-boot'
1310 ed1ca528SMasahiro Yamada	@echo  '  dir/            - Build all files in dir and below'
1311 ed1ca528SMasahiro Yamada	@echo  '  dir/file.[oisS] - Build specified target only'
1312 ed1ca528SMasahiro Yamada	@echo  '  dir/file.lst    - Build specified mixed source/assembly target only'
1313 ed1ca528SMasahiro Yamada	@echo  '                    (requires a recent binutils and recent build (System.map))'
1314 ed1ca528SMasahiro Yamada	@echo  '  tags/TAGS	  - Generate tags file for editors'
1315 ed1ca528SMasahiro Yamada	@echo  '  cscope	  - Generate cscope index'
1316 ed1ca528SMasahiro Yamada	@echo  '  ubootrelease	  - Output the release version string'
1317 ed1ca528SMasahiro Yamada	@echo  '  ubootversion	  - Output the version stored in Makefile'
1318 ed1ca528SMasahiro Yamada	@echo  ''
1319 ed1ca528SMasahiro Yamada	@echo  'Static analysers'
1320 ed1ca528SMasahiro Yamada	@echo  '  checkstack      - Generate a list of stack hogs'
1321 ed1ca528SMasahiro Yamada	@echo  ''
1322 ed1ca528SMasahiro Yamada	@echo  'Documentation targets:'
1323 ed1ca528SMasahiro Yamada	@$(MAKE) -f $(srctree)/doc/DocBook/Makefile dochelp
1324 ed1ca528SMasahiro Yamada	@echo  ''
1325 ed1ca528SMasahiro Yamada	@echo  '  make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build'
1326 ed1ca528SMasahiro Yamada	@echo  '  make V=2   [targets] 2 => give reason for rebuild of target'
1327 ed1ca528SMasahiro Yamada	@echo  '  make O=dir [targets] Locate all output files in "dir", including .config'
1328 ed1ca528SMasahiro Yamada	@echo  '  make C=1   [targets] Check all c source with $$CHECK (sparse by default)'
1329 ed1ca528SMasahiro Yamada	@echo  '  make C=2   [targets] Force check of all c source with $$CHECK'
1330 ed1ca528SMasahiro Yamada	@echo  '  make RECORDMCOUNT_WARN=1 [targets] Warn about ignored mcount sections'
1331 ed1ca528SMasahiro Yamada	@echo  '  make W=n   [targets] Enable extra gcc checks, n=1,2,3 where'
1332 ed1ca528SMasahiro Yamada	@echo  '		1: warnings which may be relevant and do not occur too often'
1333 ed1ca528SMasahiro Yamada	@echo  '		2: warnings which occur quite often but may still be relevant'
1334 ed1ca528SMasahiro Yamada	@echo  '		3: more obscure warnings, can most likely be ignored'
1335 ed1ca528SMasahiro Yamada	@echo  '		Multiple levels can be combined with W=12 or W=123'
1336 ed1ca528SMasahiro Yamada	@echo  ''
1337 ed1ca528SMasahiro Yamada	@echo  'Execute "make" or "make all" to build all targets marked with [*] '
1338 ed1ca528SMasahiro Yamada	@echo  'For further info see the ./README file'
1339 ed1ca528SMasahiro Yamada
1340 8fac9c7bSMasahiro Yamada
1341 8fac9c7bSMasahiro Yamada# Documentation targets
1342 8fac9c7bSMasahiro Yamada# ---------------------------------------------------------------------------
1343 8fac9c7bSMasahiro Yamada%docs: scripts_basic FORCE
1344 8fac9c7bSMasahiro Yamada	$(Q)$(MAKE) $(build)=scripts build_docproc
1345 8fac9c7bSMasahiro Yamada	$(Q)$(MAKE) $(build)=doc/DocBook $@
1346 8fac9c7bSMasahiro Yamada
1347 3341bfecSMasahiro Yamada# Dummies...
1348 3341bfecSMasahiro YamadaPHONY += prepare scripts
1349 3341bfecSMasahiro Yamadaprepare: ;
1350 3341bfecSMasahiro Yamadascripts: ;
1351 9e414032SMasahiro Yamada
1352 433b2f1eSMasahiro Yamadaendif #ifeq ($(config-targets),1)
1353 433b2f1eSMasahiro Yamadaendif #ifeq ($(mixed-targets),1)
1354 433b2f1eSMasahiro Yamada
1355 ed1ca528SMasahiro YamadaPHONY += checkstack ubootrelease ubootversion
1356 ed1ca528SMasahiro Yamada
1357 ed1ca528SMasahiro Yamadacheckstack:
1358 ed1ca528SMasahiro Yamada	$(OBJDUMP) -d u-boot $$(find . -name u-boot-spl) | \
1359 ed1ca528SMasahiro Yamada	$(PERL) $(src)/scripts/checkstack.pl $(ARCH)
1360 ed1ca528SMasahiro Yamada
1361 ed1ca528SMasahiro Yamadaubootrelease:
1362 ed1ca528SMasahiro Yamada	@echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
1363 ed1ca528SMasahiro Yamada
1364 ed1ca528SMasahiro Yamadaubootversion:
1365 ed1ca528SMasahiro Yamada	@echo $(UBOOTVERSION)
1366 ed1ca528SMasahiro Yamada
1367 886d86e8SMasahiro Yamada# Single targets
1368 886d86e8SMasahiro Yamada# ---------------------------------------------------------------------------
1369 886d86e8SMasahiro Yamada# Single targets are compatible with:
1370 886d86e8SMasahiro Yamada# - build with mixed source and output
1371 886d86e8SMasahiro Yamada# - build with separate output dir 'make O=...'
1372 886d86e8SMasahiro Yamada# - external modules
1373 886d86e8SMasahiro Yamada#
1374 886d86e8SMasahiro Yamada#  target-dir => where to store outputfile
1375 886d86e8SMasahiro Yamada#  build-dir  => directory in kernel source tree to use
1376 886d86e8SMasahiro Yamada
1377 886d86e8SMasahiro Yamadaifeq ($(KBUILD_EXTMOD),)
1378 886d86e8SMasahiro Yamada        build-dir  = $(patsubst %/,%,$(dir $@))
1379 886d86e8SMasahiro Yamada        target-dir = $(dir $@)
1380 886d86e8SMasahiro Yamadaelse
1381 886d86e8SMasahiro Yamada        zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@)))
1382 886d86e8SMasahiro Yamada        build-dir  = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash))
1383 886d86e8SMasahiro Yamada        target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@))
1384 886d86e8SMasahiro Yamadaendif
1385 886d86e8SMasahiro Yamada
1386 886d86e8SMasahiro Yamada%.s: %.c prepare scripts FORCE
1387 886d86e8SMasahiro Yamada	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1388 886d86e8SMasahiro Yamada%.i: %.c prepare scripts FORCE
1389 886d86e8SMasahiro Yamada	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1390 886d86e8SMasahiro Yamada%.o: %.c prepare scripts FORCE
1391 886d86e8SMasahiro Yamada	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1392 886d86e8SMasahiro Yamada%.lst: %.c prepare scripts FORCE
1393 886d86e8SMasahiro Yamada	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1394 886d86e8SMasahiro Yamada%.s: %.S prepare scripts FORCE
1395 886d86e8SMasahiro Yamada	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1396 886d86e8SMasahiro Yamada%.o: %.S prepare scripts FORCE
1397 886d86e8SMasahiro Yamada	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1398 886d86e8SMasahiro Yamada%.symtypes: %.c prepare scripts FORCE
1399 886d86e8SMasahiro Yamada	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1400 886d86e8SMasahiro Yamada
1401 886d86e8SMasahiro Yamada# Modules
1402 886d86e8SMasahiro Yamada/: prepare scripts FORCE
1403 886d86e8SMasahiro Yamada	$(cmd_crmodverdir)
1404 886d86e8SMasahiro Yamada	$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
1405 886d86e8SMasahiro Yamada	$(build)=$(build-dir)
1406 886d86e8SMasahiro Yamada%/: prepare scripts FORCE
1407 886d86e8SMasahiro Yamada	$(cmd_crmodverdir)
1408 886d86e8SMasahiro Yamada	$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
1409 886d86e8SMasahiro Yamada	$(build)=$(build-dir)
1410 886d86e8SMasahiro Yamada%.ko: prepare scripts FORCE
1411 886d86e8SMasahiro Yamada	$(cmd_crmodverdir)
1412 886d86e8SMasahiro Yamada	$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1)   \
1413 886d86e8SMasahiro Yamada	$(build)=$(build-dir) $(@:.ko=.o)
1414 886d86e8SMasahiro Yamada	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
1415 886d86e8SMasahiro Yamada
1416 886d86e8SMasahiro Yamada# FIXME Should go into a make.lib or something
1417 886d86e8SMasahiro Yamada# ===========================================================================
1418 886d86e8SMasahiro Yamada
1419 efcf8619SMasahiro Yamadaquiet_cmd_rmdirs = $(if $(wildcard $(rm-dirs)),CLEAN   $(wildcard $(rm-dirs)))
1420 efcf8619SMasahiro Yamada      cmd_rmdirs = rm -rf $(rm-dirs)
1421 efcf8619SMasahiro Yamada
1422 efcf8619SMasahiro Yamadaquiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN   $(wildcard $(rm-files)))
1423 efcf8619SMasahiro Yamada      cmd_rmfiles = rm -f $(rm-files)
1424 efcf8619SMasahiro Yamada
1425 f9c235fdSMasahiro Yamada# read all saved command lines
1426 f9c235fdSMasahiro Yamada
1427 f9c235fdSMasahiro Yamadatargets := $(wildcard $(sort $(targets)))
1428 f9c235fdSMasahiro Yamadacmd_files := $(wildcard .*.cmd $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd))
1429 f9c235fdSMasahiro Yamada
1430 f9c235fdSMasahiro Yamadaifneq ($(cmd_files),)
1431 f9c235fdSMasahiro Yamada  $(cmd_files): ;	# Do not try to update included dependency files
1432 f9c235fdSMasahiro Yamada  include $(cmd_files)
1433 f9c235fdSMasahiro Yamadaendif
1434 f9c235fdSMasahiro Yamada
1435 efcf8619SMasahiro Yamada# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj=dir
1436 efcf8619SMasahiro Yamada# Usage:
1437 efcf8619SMasahiro Yamada# $(Q)$(MAKE) $(clean)=dir
1438 efcf8619SMasahiro Yamadaclean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj
1439 efcf8619SMasahiro Yamada
1440 9e414032SMasahiro Yamadaendif	# skip-makefile
1441 9e414032SMasahiro Yamada
1442 9e414032SMasahiro YamadaPHONY += FORCE
1443 9e414032SMasahiro YamadaFORCE:
1444 9e414032SMasahiro Yamada
1445 9e414032SMasahiro Yamada# Declare the contents of the .PHONY variable as phony.  We keep that
1446 9e414032SMasahiro Yamada# information in a variable so we can use it in if_changed and friends.
1447 9e414032SMasahiro Yamada.PHONY: $(PHONY)
1448