Commit 2fa73e784da105419b7d9d07d8f9d4a79afe531a

Authored by Tom Rini
1 parent 933f67aa56

Makefile: Update minimum dtc version to 1.4.3

With support for overlays and calling the -@ flag to dtc we need to have
at least 1.4.3 available now.

Cc: Simon Glass <sjg@chromium.org>
Reported-by: Stephen Warren <swarren@wwwdotorg.org>
Signed-off-by: Tom Rini <trini@konsulko.com>

Showing 2 changed files with 6 additions and 5 deletions Inline Diff

1 # 1 #
2 # SPDX-License-Identifier: GPL-2.0+ 2 # SPDX-License-Identifier: GPL-2.0+
3 # 3 #
4 4
5 VERSION = 2017 5 VERSION = 2017
6 PATCHLEVEL = 09 6 PATCHLEVEL = 09
7 SUBLEVEL = 7 SUBLEVEL =
8 EXTRAVERSION = 8 EXTRAVERSION =
9 NAME = 9 NAME =
10 10
11 # *DOCUMENTATION* 11 # *DOCUMENTATION*
12 # To see a list of typical targets execute "make help" 12 # To see a list of typical targets execute "make help"
13 # More info can be located in ./README 13 # More info can be located in ./README
14 # Comments in this file are targeted only to the developer, do not 14 # Comments in this file are targeted only to the developer, do not
15 # expect to learn how to build the kernel reading this file. 15 # expect to learn how to build the kernel reading this file.
16 16
17 # o Do not use make's built-in rules and variables 17 # o Do not use make's built-in rules and variables
18 # (this increases performance and avoids hard-to-debug behaviour); 18 # (this increases performance and avoids hard-to-debug behaviour);
19 # o Look for make include files relative to root of kernel src 19 # o Look for make include files relative to root of kernel src
20 MAKEFLAGS += -rR --include-dir=$(CURDIR) 20 MAKEFLAGS += -rR --include-dir=$(CURDIR)
21 21
22 # Avoid funny character set dependencies 22 # Avoid funny character set dependencies
23 unexport LC_ALL 23 unexport LC_ALL
24 LC_COLLATE=C 24 LC_COLLATE=C
25 LC_NUMERIC=C 25 LC_NUMERIC=C
26 export LC_COLLATE LC_NUMERIC 26 export LC_COLLATE LC_NUMERIC
27 27
28 # Avoid interference with shell env settings 28 # Avoid interference with shell env settings
29 unexport GREP_OPTIONS 29 unexport GREP_OPTIONS
30 30
31 # We are using a recursive build, so we need to do a little thinking 31 # We are using a recursive build, so we need to do a little thinking
32 # to get the ordering right. 32 # to get the ordering right.
33 # 33 #
34 # Most importantly: sub-Makefiles should only ever modify files in 34 # Most importantly: sub-Makefiles should only ever modify files in
35 # their own directory. If in some directory we have a dependency on 35 # their own directory. If in some directory we have a dependency on
36 # a file in another dir (which doesn't happen often, but it's often 36 # a file in another dir (which doesn't happen often, but it's often
37 # unavoidable when linking the built-in.o targets which finally 37 # unavoidable when linking the built-in.o targets which finally
38 # turn into vmlinux), we will call a sub make in that other dir, and 38 # turn into vmlinux), we will call a sub make in that other dir, and
39 # after that we are sure that everything which is in that other dir 39 # after that we are sure that everything which is in that other dir
40 # is now up to date. 40 # is now up to date.
41 # 41 #
42 # The only cases where we need to modify files which have global 42 # The only cases where we need to modify files which have global
43 # effects are thus separated out and done before the recursive 43 # effects are thus separated out and done before the recursive
44 # descending is started. They are now explicitly listed as the 44 # descending is started. They are now explicitly listed as the
45 # prepare rule. 45 # prepare rule.
46 46
47 # Beautify output 47 # Beautify output
48 # --------------------------------------------------------------------------- 48 # ---------------------------------------------------------------------------
49 # 49 #
50 # Normally, we echo the whole command before executing it. By making 50 # Normally, we echo the whole command before executing it. By making
51 # that echo $($(quiet)$(cmd)), we now have the possibility to set 51 # that echo $($(quiet)$(cmd)), we now have the possibility to set
52 # $(quiet) to choose other forms of output instead, e.g. 52 # $(quiet) to choose other forms of output instead, e.g.
53 # 53 #
54 # quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@ 54 # quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@
55 # cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $< 55 # cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<
56 # 56 #
57 # If $(quiet) is empty, the whole command will be printed. 57 # If $(quiet) is empty, the whole command will be printed.
58 # If it is set to "quiet_", only the short version will be printed. 58 # If it is set to "quiet_", only the short version will be printed.
59 # If it is set to "silent_", nothing will be printed at all, since 59 # If it is set to "silent_", nothing will be printed at all, since
60 # the variable $(silent_cmd_cc_o_c) doesn't exist. 60 # the variable $(silent_cmd_cc_o_c) doesn't exist.
61 # 61 #
62 # A simple variant is to prefix commands with $(Q) - that's useful 62 # A simple variant is to prefix commands with $(Q) - that's useful
63 # for commands that shall be hidden in non-verbose mode. 63 # for commands that shall be hidden in non-verbose mode.
64 # 64 #
65 # $(Q)ln $@ :< 65 # $(Q)ln $@ :<
66 # 66 #
67 # If KBUILD_VERBOSE equals 0 then the above command will be hidden. 67 # If KBUILD_VERBOSE equals 0 then the above command will be hidden.
68 # If KBUILD_VERBOSE equals 1 then the above command is displayed. 68 # If KBUILD_VERBOSE equals 1 then the above command is displayed.
69 # 69 #
70 # To put more focus on warnings, be less verbose as default 70 # To put more focus on warnings, be less verbose as default
71 # Use 'make V=1' to see the full commands 71 # Use 'make V=1' to see the full commands
72 72
73 ifeq ("$(origin V)", "command line") 73 ifeq ("$(origin V)", "command line")
74 KBUILD_VERBOSE = $(V) 74 KBUILD_VERBOSE = $(V)
75 endif 75 endif
76 ifndef KBUILD_VERBOSE 76 ifndef KBUILD_VERBOSE
77 KBUILD_VERBOSE = 0 77 KBUILD_VERBOSE = 0
78 endif 78 endif
79 79
80 ifeq ($(KBUILD_VERBOSE),1) 80 ifeq ($(KBUILD_VERBOSE),1)
81 quiet = 81 quiet =
82 Q = 82 Q =
83 else 83 else
84 quiet=quiet_ 84 quiet=quiet_
85 Q = @ 85 Q = @
86 endif 86 endif
87 87
88 # If the user is running make -s (silent mode), suppress echoing of 88 # If the user is running make -s (silent mode), suppress echoing of
89 # commands 89 # commands
90 90
91 ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4 91 ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4
92 ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),) 92 ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),)
93 quiet=silent_ 93 quiet=silent_
94 endif 94 endif
95 else # make-3.8x 95 else # make-3.8x
96 ifneq ($(filter s% -s%,$(MAKEFLAGS)),) 96 ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
97 quiet=silent_ 97 quiet=silent_
98 endif 98 endif
99 endif 99 endif
100 100
101 export quiet Q KBUILD_VERBOSE 101 export quiet Q KBUILD_VERBOSE
102 102
103 # kbuild supports saving output files in a separate directory. 103 # kbuild supports saving output files in a separate directory.
104 # To locate output files in a separate directory two syntaxes are supported. 104 # To locate output files in a separate directory two syntaxes are supported.
105 # In both cases the working directory must be the root of the kernel src. 105 # In both cases the working directory must be the root of the kernel src.
106 # 1) O= 106 # 1) O=
107 # Use "make O=dir/to/store/output/files/" 107 # Use "make O=dir/to/store/output/files/"
108 # 108 #
109 # 2) Set KBUILD_OUTPUT 109 # 2) Set KBUILD_OUTPUT
110 # Set the environment variable KBUILD_OUTPUT to point to the directory 110 # Set the environment variable KBUILD_OUTPUT to point to the directory
111 # where the output files shall be placed. 111 # where the output files shall be placed.
112 # export KBUILD_OUTPUT=dir/to/store/output/files/ 112 # export KBUILD_OUTPUT=dir/to/store/output/files/
113 # make 113 # make
114 # 114 #
115 # The O= assignment takes precedence over the KBUILD_OUTPUT environment 115 # The O= assignment takes precedence over the KBUILD_OUTPUT environment
116 # variable. 116 # variable.
117 117
118 # KBUILD_SRC is set on invocation of make in OBJ directory 118 # KBUILD_SRC is set on invocation of make in OBJ directory
119 # KBUILD_SRC is not intended to be used by the regular user (for now) 119 # KBUILD_SRC is not intended to be used by the regular user (for now)
120 ifeq ($(KBUILD_SRC),) 120 ifeq ($(KBUILD_SRC),)
121 121
122 # OK, Make called in directory where kernel src resides 122 # OK, Make called in directory where kernel src resides
123 # Do we want to locate output files in a separate directory? 123 # Do we want to locate output files in a separate directory?
124 ifeq ("$(origin O)", "command line") 124 ifeq ("$(origin O)", "command line")
125 KBUILD_OUTPUT := $(O) 125 KBUILD_OUTPUT := $(O)
126 endif 126 endif
127 127
128 # That's our default target when none is given on the command line 128 # That's our default target when none is given on the command line
129 PHONY := _all 129 PHONY := _all
130 _all: 130 _all:
131 131
132 # Cancel implicit rules on top Makefile 132 # Cancel implicit rules on top Makefile
133 $(CURDIR)/Makefile Makefile: ; 133 $(CURDIR)/Makefile Makefile: ;
134 134
135 ifneq ($(KBUILD_OUTPUT),) 135 ifneq ($(KBUILD_OUTPUT),)
136 # Invoke a second make in the output directory, passing relevant variables 136 # Invoke a second make in the output directory, passing relevant variables
137 # check that the output directory actually exists 137 # check that the output directory actually exists
138 saved-output := $(KBUILD_OUTPUT) 138 saved-output := $(KBUILD_OUTPUT)
139 KBUILD_OUTPUT := $(shell mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) \ 139 KBUILD_OUTPUT := $(shell mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) \
140 && /bin/pwd) 140 && /bin/pwd)
141 $(if $(KBUILD_OUTPUT),, \ 141 $(if $(KBUILD_OUTPUT),, \
142 $(error failed to create output directory "$(saved-output)")) 142 $(error failed to create output directory "$(saved-output)"))
143 143
144 PHONY += $(MAKECMDGOALS) sub-make 144 PHONY += $(MAKECMDGOALS) sub-make
145 145
146 $(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make 146 $(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make
147 @: 147 @:
148 148
149 sub-make: FORCE 149 sub-make: FORCE
150 $(Q)$(MAKE) -C $(KBUILD_OUTPUT) KBUILD_SRC=$(CURDIR) \ 150 $(Q)$(MAKE) -C $(KBUILD_OUTPUT) KBUILD_SRC=$(CURDIR) \
151 -f $(CURDIR)/Makefile $(filter-out _all sub-make,$(MAKECMDGOALS)) 151 -f $(CURDIR)/Makefile $(filter-out _all sub-make,$(MAKECMDGOALS))
152 152
153 # Leave processing to above invocation of make 153 # Leave processing to above invocation of make
154 skip-makefile := 1 154 skip-makefile := 1
155 endif # ifneq ($(KBUILD_OUTPUT),) 155 endif # ifneq ($(KBUILD_OUTPUT),)
156 endif # ifeq ($(KBUILD_SRC),) 156 endif # ifeq ($(KBUILD_SRC),)
157 157
158 # We process the rest of the Makefile if this is the final invocation of make 158 # We process the rest of the Makefile if this is the final invocation of make
159 ifeq ($(skip-makefile),) 159 ifeq ($(skip-makefile),)
160 160
161 # Do not print "Entering directory ...", 161 # Do not print "Entering directory ...",
162 # but we want to display it when entering to the output directory 162 # but we want to display it when entering to the output directory
163 # so that IDEs/editors are able to understand relative filenames. 163 # so that IDEs/editors are able to understand relative filenames.
164 MAKEFLAGS += --no-print-directory 164 MAKEFLAGS += --no-print-directory
165 165
166 # Call a source code checker (by default, "sparse") as part of the 166 # Call a source code checker (by default, "sparse") as part of the
167 # C compilation. 167 # C compilation.
168 # 168 #
169 # Use 'make C=1' to enable checking of only re-compiled files. 169 # Use 'make C=1' to enable checking of only re-compiled files.
170 # Use 'make C=2' to enable checking of *all* source files, regardless 170 # Use 'make C=2' to enable checking of *all* source files, regardless
171 # of whether they are re-compiled or not. 171 # of whether they are re-compiled or not.
172 # 172 #
173 # See the file "Documentation/sparse.txt" for more details, including 173 # See the file "Documentation/sparse.txt" for more details, including
174 # where to get the "sparse" utility. 174 # where to get the "sparse" utility.
175 175
176 ifeq ("$(origin C)", "command line") 176 ifeq ("$(origin C)", "command line")
177 KBUILD_CHECKSRC = $(C) 177 KBUILD_CHECKSRC = $(C)
178 endif 178 endif
179 ifndef KBUILD_CHECKSRC 179 ifndef KBUILD_CHECKSRC
180 KBUILD_CHECKSRC = 0 180 KBUILD_CHECKSRC = 0
181 endif 181 endif
182 182
183 # Use make M=dir to specify directory of external module to build 183 # Use make M=dir to specify directory of external module to build
184 # Old syntax make ... SUBDIRS=$PWD is still supported 184 # Old syntax make ... SUBDIRS=$PWD is still supported
185 # Setting the environment variable KBUILD_EXTMOD take precedence 185 # Setting the environment variable KBUILD_EXTMOD take precedence
186 ifdef SUBDIRS 186 ifdef SUBDIRS
187 KBUILD_EXTMOD ?= $(SUBDIRS) 187 KBUILD_EXTMOD ?= $(SUBDIRS)
188 endif 188 endif
189 189
190 ifeq ("$(origin M)", "command line") 190 ifeq ("$(origin M)", "command line")
191 KBUILD_EXTMOD := $(M) 191 KBUILD_EXTMOD := $(M)
192 endif 192 endif
193 193
194 # If building an external module we do not care about the all: rule 194 # If building an external module we do not care about the all: rule
195 # but instead _all depend on modules 195 # but instead _all depend on modules
196 PHONY += all 196 PHONY += all
197 ifeq ($(KBUILD_EXTMOD),) 197 ifeq ($(KBUILD_EXTMOD),)
198 _all: all 198 _all: all
199 else 199 else
200 _all: modules 200 _all: modules
201 endif 201 endif
202 202
203 ifeq ($(KBUILD_SRC),) 203 ifeq ($(KBUILD_SRC),)
204 # building in the source tree 204 # building in the source tree
205 srctree := . 205 srctree := .
206 else 206 else
207 ifeq ($(KBUILD_SRC)/,$(dir $(CURDIR))) 207 ifeq ($(KBUILD_SRC)/,$(dir $(CURDIR)))
208 # building in a subdirectory of the source tree 208 # building in a subdirectory of the source tree
209 srctree := .. 209 srctree := ..
210 else 210 else
211 srctree := $(KBUILD_SRC) 211 srctree := $(KBUILD_SRC)
212 endif 212 endif
213 endif 213 endif
214 objtree := . 214 objtree := .
215 src := $(srctree) 215 src := $(srctree)
216 obj := $(objtree) 216 obj := $(objtree)
217 217
218 VPATH := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD)) 218 VPATH := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD))
219 219
220 export srctree objtree VPATH 220 export srctree objtree VPATH
221 221
222 # Make sure CDPATH settings don't interfere 222 # Make sure CDPATH settings don't interfere
223 unexport CDPATH 223 unexport CDPATH
224 224
225 ######################################################################### 225 #########################################################################
226 226
227 HOSTARCH := $(shell uname -m | \ 227 HOSTARCH := $(shell uname -m | \
228 sed -e s/i.86/x86/ \ 228 sed -e s/i.86/x86/ \
229 -e s/sun4u/sparc64/ \ 229 -e s/sun4u/sparc64/ \
230 -e s/arm.*/arm/ \ 230 -e s/arm.*/arm/ \
231 -e s/sa110/arm/ \ 231 -e s/sa110/arm/ \
232 -e s/ppc64/powerpc/ \ 232 -e s/ppc64/powerpc/ \
233 -e s/ppc/powerpc/ \ 233 -e s/ppc/powerpc/ \
234 -e s/macppc/powerpc/\ 234 -e s/macppc/powerpc/\
235 -e s/sh.*/sh/) 235 -e s/sh.*/sh/)
236 236
237 HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \ 237 HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
238 sed -e 's/\(cygwin\).*/cygwin/') 238 sed -e 's/\(cygwin\).*/cygwin/')
239 239
240 export HOSTARCH HOSTOS 240 export HOSTARCH HOSTOS
241 241
242 ######################################################################### 242 #########################################################################
243 243
244 # set default to nothing for native builds 244 # set default to nothing for native builds
245 ifeq ($(HOSTARCH),$(ARCH)) 245 ifeq ($(HOSTARCH),$(ARCH))
246 CROSS_COMPILE ?= 246 CROSS_COMPILE ?=
247 endif 247 endif
248 248
249 KCONFIG_CONFIG ?= .config 249 KCONFIG_CONFIG ?= .config
250 export KCONFIG_CONFIG 250 export KCONFIG_CONFIG
251 251
252 # SHELL used by kbuild 252 # SHELL used by kbuild
253 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ 253 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
254 else if [ -x /bin/bash ]; then echo /bin/bash; \ 254 else if [ -x /bin/bash ]; then echo /bin/bash; \
255 else echo sh; fi ; fi) 255 else echo sh; fi ; fi)
256 256
257 HOSTCC = cc 257 HOSTCC = cc
258 HOSTCXX = c++ 258 HOSTCXX = c++
259 HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer \ 259 HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer \
260 $(if $(CONFIG_TOOLS_DEBUG),-g) 260 $(if $(CONFIG_TOOLS_DEBUG),-g)
261 HOSTCXXFLAGS = -O2 261 HOSTCXXFLAGS = -O2
262 262
263 ifeq ($(HOSTOS),cygwin) 263 ifeq ($(HOSTOS),cygwin)
264 HOSTCFLAGS += -ansi 264 HOSTCFLAGS += -ansi
265 endif 265 endif
266 266
267 # Mac OS X / Darwin's C preprocessor is Apple specific. It 267 # Mac OS X / Darwin's C preprocessor is Apple specific. It
268 # generates numerous errors and warnings. We want to bypass it 268 # generates numerous errors and warnings. We want to bypass it
269 # and use GNU C's cpp. To do this we pass the -traditional-cpp 269 # and use GNU C's cpp. To do this we pass the -traditional-cpp
270 # option to the compiler. Note that the -traditional-cpp flag 270 # option to the compiler. Note that the -traditional-cpp flag
271 # DOES NOT have the same semantics as GNU C's flag, all it does 271 # DOES NOT have the same semantics as GNU C's flag, all it does
272 # is invoke the GNU preprocessor in stock ANSI/ISO C fashion. 272 # is invoke the GNU preprocessor in stock ANSI/ISO C fashion.
273 # 273 #
274 # Apple's linker is similar, thanks to the new 2 stage linking 274 # Apple's linker is similar, thanks to the new 2 stage linking
275 # multiple symbol definitions are treated as errors, hence the 275 # multiple symbol definitions are treated as errors, hence the
276 # -multiply_defined suppress option to turn off this error. 276 # -multiply_defined suppress option to turn off this error.
277 # 277 #
278 ifeq ($(HOSTOS),darwin) 278 ifeq ($(HOSTOS),darwin)
279 # get major and minor product version (e.g. '10' and '6' for Snow Leopard) 279 # get major and minor product version (e.g. '10' and '6' for Snow Leopard)
280 DARWIN_MAJOR_VERSION = $(shell sw_vers -productVersion | cut -f 1 -d '.') 280 DARWIN_MAJOR_VERSION = $(shell sw_vers -productVersion | cut -f 1 -d '.')
281 DARWIN_MINOR_VERSION = $(shell sw_vers -productVersion | cut -f 2 -d '.') 281 DARWIN_MINOR_VERSION = $(shell sw_vers -productVersion | cut -f 2 -d '.')
282 282
283 os_x_before = $(shell if [ $(DARWIN_MAJOR_VERSION) -le $(1) -a \ 283 os_x_before = $(shell if [ $(DARWIN_MAJOR_VERSION) -le $(1) -a \
284 $(DARWIN_MINOR_VERSION) -le $(2) ] ; then echo "$(3)"; else echo "$(4)"; fi ;) 284 $(DARWIN_MINOR_VERSION) -le $(2) ] ; then echo "$(3)"; else echo "$(4)"; fi ;)
285 285
286 # Snow Leopards build environment has no longer restrictions as described above 286 # Snow Leopards build environment has no longer restrictions as described above
287 HOSTCC = $(call os_x_before, 10, 5, "cc", "gcc") 287 HOSTCC = $(call os_x_before, 10, 5, "cc", "gcc")
288 HOSTCFLAGS += $(call os_x_before, 10, 4, "-traditional-cpp") 288 HOSTCFLAGS += $(call os_x_before, 10, 4, "-traditional-cpp")
289 HOSTLDFLAGS += $(call os_x_before, 10, 5, "-multiply_defined suppress") 289 HOSTLDFLAGS += $(call os_x_before, 10, 5, "-multiply_defined suppress")
290 290
291 # since Lion (10.7) ASLR is on by default, but we use linker generated lists 291 # since Lion (10.7) ASLR is on by default, but we use linker generated lists
292 # in some host tools which is a problem then ... so disable ASLR for these 292 # in some host tools which is a problem then ... so disable ASLR for these
293 # tools 293 # tools
294 HOSTLDFLAGS += $(call os_x_before, 10, 7, "", "-Xlinker -no_pie") 294 HOSTLDFLAGS += $(call os_x_before, 10, 7, "", "-Xlinker -no_pie")
295 endif 295 endif
296 296
297 # Decide whether to build built-in, modular, or both. 297 # Decide whether to build built-in, modular, or both.
298 # Normally, just do built-in. 298 # Normally, just do built-in.
299 299
300 KBUILD_MODULES := 300 KBUILD_MODULES :=
301 KBUILD_BUILTIN := 1 301 KBUILD_BUILTIN := 1
302 302
303 # If we have only "make modules", don't compile built-in objects. 303 # If we have only "make modules", don't compile built-in objects.
304 # When we're building modules with modversions, we need to consider 304 # When we're building modules with modversions, we need to consider
305 # the built-in objects during the descend as well, in order to 305 # the built-in objects during the descend as well, in order to
306 # make sure the checksums are up to date before we record them. 306 # make sure the checksums are up to date before we record them.
307 307
308 ifeq ($(MAKECMDGOALS),modules) 308 ifeq ($(MAKECMDGOALS),modules)
309 KBUILD_BUILTIN := $(if $(CONFIG_MODVERSIONS),1) 309 KBUILD_BUILTIN := $(if $(CONFIG_MODVERSIONS),1)
310 endif 310 endif
311 311
312 # If we have "make <whatever> modules", compile modules 312 # If we have "make <whatever> modules", compile modules
313 # in addition to whatever we do anyway. 313 # in addition to whatever we do anyway.
314 # Just "make" or "make all" shall build modules as well 314 # Just "make" or "make all" shall build modules as well
315 315
316 # U-Boot does not need modules 316 # U-Boot does not need modules
317 #ifneq ($(filter all _all modules,$(MAKECMDGOALS)),) 317 #ifneq ($(filter all _all modules,$(MAKECMDGOALS)),)
318 # KBUILD_MODULES := 1 318 # KBUILD_MODULES := 1
319 #endif 319 #endif
320 320
321 #ifeq ($(MAKECMDGOALS),) 321 #ifeq ($(MAKECMDGOALS),)
322 # KBUILD_MODULES := 1 322 # KBUILD_MODULES := 1
323 #endif 323 #endif
324 324
325 export KBUILD_MODULES KBUILD_BUILTIN 325 export KBUILD_MODULES KBUILD_BUILTIN
326 export KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD 326 export KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD
327 327
328 # We need some generic definitions (do not try to remake the file). 328 # We need some generic definitions (do not try to remake the file).
329 scripts/Kbuild.include: ; 329 scripts/Kbuild.include: ;
330 include scripts/Kbuild.include 330 include scripts/Kbuild.include
331 331
332 # Make variables (CC, etc...) 332 # Make variables (CC, etc...)
333 333
334 AS = $(CROSS_COMPILE)as 334 AS = $(CROSS_COMPILE)as
335 # Always use GNU ld 335 # Always use GNU ld
336 ifneq ($(shell $(CROSS_COMPILE)ld.bfd -v 2> /dev/null),) 336 ifneq ($(shell $(CROSS_COMPILE)ld.bfd -v 2> /dev/null),)
337 LD = $(CROSS_COMPILE)ld.bfd 337 LD = $(CROSS_COMPILE)ld.bfd
338 else 338 else
339 LD = $(CROSS_COMPILE)ld 339 LD = $(CROSS_COMPILE)ld
340 endif 340 endif
341 CC = $(CROSS_COMPILE)gcc 341 CC = $(CROSS_COMPILE)gcc
342 CPP = $(CC) -E 342 CPP = $(CC) -E
343 AR = $(CROSS_COMPILE)ar 343 AR = $(CROSS_COMPILE)ar
344 NM = $(CROSS_COMPILE)nm 344 NM = $(CROSS_COMPILE)nm
345 LDR = $(CROSS_COMPILE)ldr 345 LDR = $(CROSS_COMPILE)ldr
346 STRIP = $(CROSS_COMPILE)strip 346 STRIP = $(CROSS_COMPILE)strip
347 OBJCOPY = $(CROSS_COMPILE)objcopy 347 OBJCOPY = $(CROSS_COMPILE)objcopy
348 OBJDUMP = $(CROSS_COMPILE)objdump 348 OBJDUMP = $(CROSS_COMPILE)objdump
349 AWK = awk 349 AWK = awk
350 PERL = perl 350 PERL = perl
351 PYTHON ?= python 351 PYTHON ?= python
352 DTC ?= dtc 352 DTC ?= dtc
353 CHECK = sparse 353 CHECK = sparse
354 354
355 CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \ 355 CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
356 -Wbitwise -Wno-return-void -D__CHECK_ENDIAN__ $(CF) 356 -Wbitwise -Wno-return-void -D__CHECK_ENDIAN__ $(CF)
357 357
358 KBUILD_CPPFLAGS := -D__KERNEL__ -D__UBOOT__ 358 KBUILD_CPPFLAGS := -D__KERNEL__ -D__UBOOT__
359 359
360 KBUILD_CFLAGS := -Wall -Wstrict-prototypes \ 360 KBUILD_CFLAGS := -Wall -Wstrict-prototypes \
361 -Wno-format-security \ 361 -Wno-format-security \
362 -fno-builtin -ffreestanding 362 -fno-builtin -ffreestanding
363 KBUILD_CFLAGS += -fshort-wchar 363 KBUILD_CFLAGS += -fshort-wchar
364 KBUILD_AFLAGS := -D__ASSEMBLY__ 364 KBUILD_AFLAGS := -D__ASSEMBLY__
365 365
366 # Read UBOOTRELEASE from include/config/uboot.release (if it exists) 366 # Read UBOOTRELEASE from include/config/uboot.release (if it exists)
367 UBOOTRELEASE = $(shell cat include/config/uboot.release 2> /dev/null) 367 UBOOTRELEASE = $(shell cat include/config/uboot.release 2> /dev/null)
368 UBOOTVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION) 368 UBOOTVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)
369 369
370 export VERSION PATCHLEVEL SUBLEVEL UBOOTRELEASE UBOOTVERSION 370 export VERSION PATCHLEVEL SUBLEVEL UBOOTRELEASE UBOOTVERSION
371 export ARCH CPU BOARD VENDOR SOC CPUDIR BOARDDIR 371 export ARCH CPU BOARD VENDOR SOC CPUDIR BOARDDIR
372 export CONFIG_SHELL HOSTCC HOSTCFLAGS HOSTLDFLAGS CROSS_COMPILE AS LD CC 372 export CONFIG_SHELL HOSTCC HOSTCFLAGS HOSTLDFLAGS CROSS_COMPILE AS LD CC
373 export CPP AR NM LDR STRIP OBJCOPY OBJDUMP 373 export CPP AR NM LDR STRIP OBJCOPY OBJDUMP
374 export MAKE AWK PERL PYTHON 374 export MAKE AWK PERL PYTHON
375 export HOSTCXX HOSTCXXFLAGS CHECK CHECKFLAGS DTC DTC_FLAGS 375 export HOSTCXX HOSTCXXFLAGS CHECK CHECKFLAGS DTC DTC_FLAGS
376 376
377 export KBUILD_CPPFLAGS NOSTDINC_FLAGS UBOOTINCLUDE OBJCOPYFLAGS LDFLAGS 377 export KBUILD_CPPFLAGS NOSTDINC_FLAGS UBOOTINCLUDE OBJCOPYFLAGS LDFLAGS
378 export KBUILD_CFLAGS KBUILD_AFLAGS 378 export KBUILD_CFLAGS KBUILD_AFLAGS
379 379
380 # When compiling out-of-tree modules, put MODVERDIR in the module 380 # When compiling out-of-tree modules, put MODVERDIR in the module
381 # tree rather than in the kernel tree. The kernel tree might 381 # tree rather than in the kernel tree. The kernel tree might
382 # even be read-only. 382 # even be read-only.
383 export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_versions 383 export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_versions
384 384
385 # Files to ignore in find ... statements 385 # Files to ignore in find ... statements
386 386
387 export RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o \ 387 export RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o \
388 -name CVS -o -name .pc -o -name .hg -o -name .git \) \ 388 -name CVS -o -name .pc -o -name .hg -o -name .git \) \
389 -prune -o 389 -prune -o
390 export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \ 390 export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \
391 --exclude CVS --exclude .pc --exclude .hg --exclude .git 391 --exclude CVS --exclude .pc --exclude .hg --exclude .git
392 392
393 # =========================================================================== 393 # ===========================================================================
394 # Rules shared between *config targets and build targets 394 # Rules shared between *config targets and build targets
395 395
396 # Basic helpers built in scripts/ 396 # Basic helpers built in scripts/
397 PHONY += scripts_basic 397 PHONY += scripts_basic
398 scripts_basic: 398 scripts_basic:
399 $(Q)$(MAKE) $(build)=scripts/basic 399 $(Q)$(MAKE) $(build)=scripts/basic
400 $(Q)rm -f .tmp_quiet_recordmcount 400 $(Q)rm -f .tmp_quiet_recordmcount
401 401
402 # To avoid any implicit rule to kick in, define an empty command. 402 # To avoid any implicit rule to kick in, define an empty command.
403 scripts/basic/%: scripts_basic ; 403 scripts/basic/%: scripts_basic ;
404 404
405 PHONY += outputmakefile 405 PHONY += outputmakefile
406 # outputmakefile generates a Makefile in the output directory, if using a 406 # outputmakefile generates a Makefile in the output directory, if using a
407 # separate output directory. This allows convenient use of make in the 407 # separate output directory. This allows convenient use of make in the
408 # output directory. 408 # output directory.
409 outputmakefile: 409 outputmakefile:
410 ifneq ($(KBUILD_SRC),) 410 ifneq ($(KBUILD_SRC),)
411 $(Q)ln -fsn $(srctree) source 411 $(Q)ln -fsn $(srctree) source
412 $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile \ 412 $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile \
413 $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL) 413 $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL)
414 endif 414 endif
415 415
416 # To make sure we do not include .config for any of the *config targets 416 # To make sure we do not include .config for any of the *config targets
417 # catch them early, and hand them over to scripts/kconfig/Makefile 417 # catch them early, and hand them over to scripts/kconfig/Makefile
418 # It is allowed to specify more targets when calling make, including 418 # It is allowed to specify more targets when calling make, including
419 # mixing *config targets and build targets. 419 # mixing *config targets and build targets.
420 # For example 'make oldconfig all'. 420 # For example 'make oldconfig all'.
421 # Detect when mixed targets is specified, and make a second invocation 421 # Detect when mixed targets is specified, and make a second invocation
422 # of make so .config is not included in this case either (for *config). 422 # of make so .config is not included in this case either (for *config).
423 423
424 version_h := include/generated/version_autogenerated.h 424 version_h := include/generated/version_autogenerated.h
425 timestamp_h := include/generated/timestamp_autogenerated.h 425 timestamp_h := include/generated/timestamp_autogenerated.h
426 426
427 no-dot-config-targets := clean clobber mrproper distclean \ 427 no-dot-config-targets := clean clobber mrproper distclean \
428 help %docs check% coccicheck \ 428 help %docs check% coccicheck \
429 ubootversion backup tests 429 ubootversion backup tests
430 430
431 config-targets := 0 431 config-targets := 0
432 mixed-targets := 0 432 mixed-targets := 0
433 dot-config := 1 433 dot-config := 1
434 434
435 ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),) 435 ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
436 ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),) 436 ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
437 dot-config := 0 437 dot-config := 0
438 endif 438 endif
439 endif 439 endif
440 440
441 ifeq ($(KBUILD_EXTMOD),) 441 ifeq ($(KBUILD_EXTMOD),)
442 ifneq ($(filter config %config,$(MAKECMDGOALS)),) 442 ifneq ($(filter config %config,$(MAKECMDGOALS)),)
443 config-targets := 1 443 config-targets := 1
444 ifneq ($(words $(MAKECMDGOALS)),1) 444 ifneq ($(words $(MAKECMDGOALS)),1)
445 mixed-targets := 1 445 mixed-targets := 1
446 endif 446 endif
447 endif 447 endif
448 endif 448 endif
449 449
450 ifeq ($(mixed-targets),1) 450 ifeq ($(mixed-targets),1)
451 # =========================================================================== 451 # ===========================================================================
452 # We're called with mixed targets (*config and build targets). 452 # We're called with mixed targets (*config and build targets).
453 # Handle them one by one. 453 # Handle them one by one.
454 454
455 PHONY += $(MAKECMDGOALS) __build_one_by_one 455 PHONY += $(MAKECMDGOALS) __build_one_by_one
456 456
457 $(filter-out __build_one_by_one, $(MAKECMDGOALS)): __build_one_by_one 457 $(filter-out __build_one_by_one, $(MAKECMDGOALS)): __build_one_by_one
458 @: 458 @:
459 459
460 __build_one_by_one: 460 __build_one_by_one:
461 $(Q)set -e; \ 461 $(Q)set -e; \
462 for i in $(MAKECMDGOALS); do \ 462 for i in $(MAKECMDGOALS); do \
463 $(MAKE) -f $(srctree)/Makefile $$i; \ 463 $(MAKE) -f $(srctree)/Makefile $$i; \
464 done 464 done
465 465
466 else 466 else
467 ifeq ($(config-targets),1) 467 ifeq ($(config-targets),1)
468 # =========================================================================== 468 # ===========================================================================
469 # *config targets only - make sure prerequisites are updated, and descend 469 # *config targets only - make sure prerequisites are updated, and descend
470 # in scripts/kconfig to make the *config target 470 # in scripts/kconfig to make the *config target
471 471
472 KBUILD_DEFCONFIG := sandbox_defconfig 472 KBUILD_DEFCONFIG := sandbox_defconfig
473 export KBUILD_DEFCONFIG KBUILD_KCONFIG 473 export KBUILD_DEFCONFIG KBUILD_KCONFIG
474 474
475 config: scripts_basic outputmakefile FORCE 475 config: scripts_basic outputmakefile FORCE
476 $(Q)$(MAKE) $(build)=scripts/kconfig $@ 476 $(Q)$(MAKE) $(build)=scripts/kconfig $@
477 477
478 %config: scripts_basic outputmakefile FORCE 478 %config: scripts_basic outputmakefile FORCE
479 $(Q)$(MAKE) $(build)=scripts/kconfig $@ 479 $(Q)$(MAKE) $(build)=scripts/kconfig $@
480 480
481 else 481 else
482 # =========================================================================== 482 # ===========================================================================
483 # Build targets only - this includes vmlinux, arch specific targets, clean 483 # Build targets only - this includes vmlinux, arch specific targets, clean
484 # targets and others. In general all targets except *config targets. 484 # targets and others. In general all targets except *config targets.
485 485
486 # Additional helpers built in scripts/ 486 # Additional helpers built in scripts/
487 # Carefully list dependencies so we do not try to build scripts twice 487 # Carefully list dependencies so we do not try to build scripts twice
488 # in parallel 488 # in parallel
489 PHONY += scripts 489 PHONY += scripts
490 scripts: scripts_basic include/config/auto.conf 490 scripts: scripts_basic include/config/auto.conf
491 $(Q)$(MAKE) $(build)=$(@) 491 $(Q)$(MAKE) $(build)=$(@)
492 492
493 ifeq ($(dot-config),1) 493 ifeq ($(dot-config),1)
494 # Read in config 494 # Read in config
495 -include include/config/auto.conf 495 -include include/config/auto.conf
496 496
497 # Read in dependencies to all Kconfig* files, make sure to run 497 # Read in dependencies to all Kconfig* files, make sure to run
498 # oldconfig if changes are detected. 498 # oldconfig if changes are detected.
499 -include include/config/auto.conf.cmd 499 -include include/config/auto.conf.cmd
500 500
501 # To avoid any implicit rule to kick in, define an empty command 501 # To avoid any implicit rule to kick in, define an empty command
502 $(KCONFIG_CONFIG) include/config/auto.conf.cmd: ; 502 $(KCONFIG_CONFIG) include/config/auto.conf.cmd: ;
503 503
504 # If .config is newer than include/config/auto.conf, someone tinkered 504 # If .config is newer than include/config/auto.conf, someone tinkered
505 # with it and forgot to run make oldconfig. 505 # with it and forgot to run make oldconfig.
506 # if auto.conf.cmd is missing then we are probably in a cleaned tree so 506 # if auto.conf.cmd is missing then we are probably in a cleaned tree so
507 # we execute the config step to be sure to catch updated Kconfig files 507 # we execute the config step to be sure to catch updated Kconfig files
508 include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd 508 include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd
509 $(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig 509 $(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig
510 @# If the following part fails, include/config/auto.conf should be 510 @# If the following part fails, include/config/auto.conf should be
511 @# deleted so "make silentoldconfig" will be re-run on the next build. 511 @# deleted so "make silentoldconfig" will be re-run on the next build.
512 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.autoconf || \ 512 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.autoconf || \
513 { rm -f include/config/auto.conf; false; } 513 { rm -f include/config/auto.conf; false; }
514 @# include/config.h has been updated after "make silentoldconfig". 514 @# include/config.h has been updated after "make silentoldconfig".
515 @# We need to touch include/config/auto.conf so it gets newer 515 @# We need to touch include/config/auto.conf so it gets newer
516 @# than include/config.h. 516 @# than include/config.h.
517 @# Otherwise, 'make silentoldconfig' would be invoked twice. 517 @# Otherwise, 'make silentoldconfig' would be invoked twice.
518 $(Q)touch include/config/auto.conf 518 $(Q)touch include/config/auto.conf
519 519
520 u-boot.cfg spl/u-boot.cfg tpl/u-boot.cfg: include/config.h FORCE 520 u-boot.cfg spl/u-boot.cfg tpl/u-boot.cfg: include/config.h FORCE
521 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.autoconf $(@) 521 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.autoconf $(@)
522 522
523 -include include/autoconf.mk 523 -include include/autoconf.mk
524 -include include/autoconf.mk.dep 524 -include include/autoconf.mk.dep
525 525
526 # We want to include arch/$(ARCH)/config.mk only when include/config/auto.conf 526 # We want to include arch/$(ARCH)/config.mk only when include/config/auto.conf
527 # is up-to-date. When we switch to a different board configuration, old CONFIG 527 # is up-to-date. When we switch to a different board configuration, old CONFIG
528 # macros are still remaining in include/config/auto.conf. Without the following 528 # macros are still remaining in include/config/auto.conf. Without the following
529 # gimmick, wrong config.mk would be included leading nasty warnings/errors. 529 # gimmick, wrong config.mk would be included leading nasty warnings/errors.
530 ifneq ($(wildcard $(KCONFIG_CONFIG)),) 530 ifneq ($(wildcard $(KCONFIG_CONFIG)),)
531 ifneq ($(wildcard include/config/auto.conf),) 531 ifneq ($(wildcard include/config/auto.conf),)
532 autoconf_is_old := $(shell find . -path ./$(KCONFIG_CONFIG) -newer \ 532 autoconf_is_old := $(shell find . -path ./$(KCONFIG_CONFIG) -newer \
533 include/config/auto.conf) 533 include/config/auto.conf)
534 ifeq ($(autoconf_is_old),) 534 ifeq ($(autoconf_is_old),)
535 include config.mk 535 include config.mk
536 include arch/$(ARCH)/Makefile 536 include arch/$(ARCH)/Makefile
537 endif 537 endif
538 endif 538 endif
539 endif 539 endif
540 540
541 # These are set by the arch-specific config.mk. Make sure they are exported 541 # These are set by the arch-specific config.mk. Make sure they are exported
542 # so they can be used when building an EFI application. 542 # so they can be used when building an EFI application.
543 export EFI_LDS # Filename of EFI link script in arch/$(ARCH)/lib 543 export EFI_LDS # Filename of EFI link script in arch/$(ARCH)/lib
544 export EFI_CRT0 # Filename of EFI CRT0 in arch/$(ARCH)/lib 544 export EFI_CRT0 # Filename of EFI CRT0 in arch/$(ARCH)/lib
545 export EFI_RELOC # Filename of EFU relocation code in arch/$(ARCH)/lib 545 export EFI_RELOC # Filename of EFU relocation code in arch/$(ARCH)/lib
546 export CFLAGS_EFI # Compiler flags to add when building EFI app 546 export CFLAGS_EFI # Compiler flags to add when building EFI app
547 export CFLAGS_NON_EFI # Compiler flags to remove when building EFI app 547 export CFLAGS_NON_EFI # Compiler flags to remove when building EFI app
548 export EFI_TARGET # binutils target if EFI is natively supported 548 export EFI_TARGET # binutils target if EFI is natively supported
549 549
550 # If board code explicitly specified LDSCRIPT or CONFIG_SYS_LDSCRIPT, use 550 # If board code explicitly specified LDSCRIPT or CONFIG_SYS_LDSCRIPT, use
551 # that (or fail if absent). Otherwise, search for a linker script in a 551 # that (or fail if absent). Otherwise, search for a linker script in a
552 # standard location. 552 # standard location.
553 553
554 ifndef LDSCRIPT 554 ifndef LDSCRIPT
555 #LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot.lds.debug 555 #LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot.lds.debug
556 ifdef CONFIG_SYS_LDSCRIPT 556 ifdef CONFIG_SYS_LDSCRIPT
557 # need to strip off double quotes 557 # need to strip off double quotes
558 LDSCRIPT := $(srctree)/$(CONFIG_SYS_LDSCRIPT:"%"=%) 558 LDSCRIPT := $(srctree)/$(CONFIG_SYS_LDSCRIPT:"%"=%)
559 endif 559 endif
560 endif 560 endif
561 561
562 # If there is no specified link script, we look in a number of places for it 562 # If there is no specified link script, we look in a number of places for it
563 ifndef LDSCRIPT 563 ifndef LDSCRIPT
564 ifeq ($(wildcard $(LDSCRIPT)),) 564 ifeq ($(wildcard $(LDSCRIPT)),)
565 LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot.lds 565 LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot.lds
566 endif 566 endif
567 ifeq ($(wildcard $(LDSCRIPT)),) 567 ifeq ($(wildcard $(LDSCRIPT)),)
568 LDSCRIPT := $(srctree)/$(CPUDIR)/u-boot.lds 568 LDSCRIPT := $(srctree)/$(CPUDIR)/u-boot.lds
569 endif 569 endif
570 ifeq ($(wildcard $(LDSCRIPT)),) 570 ifeq ($(wildcard $(LDSCRIPT)),)
571 LDSCRIPT := $(srctree)/arch/$(ARCH)/cpu/u-boot.lds 571 LDSCRIPT := $(srctree)/arch/$(ARCH)/cpu/u-boot.lds
572 endif 572 endif
573 endif 573 endif
574 574
575 else 575 else
576 # Dummy target needed, because used as prerequisite 576 # Dummy target needed, because used as prerequisite
577 include/config/auto.conf: ; 577 include/config/auto.conf: ;
578 endif # $(dot-config) 578 endif # $(dot-config)
579 579
580 # 580 #
581 # Xtensa linker script cannot be preprocessed with -ansi because of 581 # Xtensa linker script cannot be preprocessed with -ansi because of
582 # preprocessor operations on strings that don't make C identifiers. 582 # preprocessor operations on strings that don't make C identifiers.
583 # 583 #
584 ifeq ($(CONFIG_XTENSA),) 584 ifeq ($(CONFIG_XTENSA),)
585 LDPPFLAGS += -ansi 585 LDPPFLAGS += -ansi
586 endif 586 endif
587 587
588 ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE 588 ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
589 KBUILD_CFLAGS += -Os 589 KBUILD_CFLAGS += -Os
590 else 590 else
591 KBUILD_CFLAGS += -O2 591 KBUILD_CFLAGS += -O2
592 endif 592 endif
593 593
594 KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector) 594 KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
595 KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks) 595 KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks)
596 596
597 KBUILD_CFLAGS += -g 597 KBUILD_CFLAGS += -g
598 # $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g<format> 598 # $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g<format>
599 # option to the assembler. 599 # option to the assembler.
600 KBUILD_AFLAGS += -g 600 KBUILD_AFLAGS += -g
601 601
602 # Report stack usage if supported 602 # Report stack usage if supported
603 ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-stack-usage.sh $(CC)),y) 603 ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-stack-usage.sh $(CC)),y)
604 KBUILD_CFLAGS += -fstack-usage 604 KBUILD_CFLAGS += -fstack-usage
605 endif 605 endif
606 606
607 KBUILD_CFLAGS += $(call cc-option,-Wno-format-nonliteral) 607 KBUILD_CFLAGS += $(call cc-option,-Wno-format-nonliteral)
608 608
609 # turn jbsr into jsr for m68k 609 # turn jbsr into jsr for m68k
610 ifeq ($(ARCH),m68k) 610 ifeq ($(ARCH),m68k)
611 ifeq ($(findstring 3.4,$(shell $(CC) --version)),3.4) 611 ifeq ($(findstring 3.4,$(shell $(CC) --version)),3.4)
612 KBUILD_AFLAGS += -Wa,-gstabs,-S 612 KBUILD_AFLAGS += -Wa,-gstabs,-S
613 endif 613 endif
614 endif 614 endif
615 615
616 # Prohibit date/time macros, which would make the build non-deterministic 616 # Prohibit date/time macros, which would make the build non-deterministic
617 KBUILD_CFLAGS += $(call cc-option,-Werror=date-time) 617 KBUILD_CFLAGS += $(call cc-option,-Werror=date-time)
618 618
619 include scripts/Makefile.extrawarn 619 include scripts/Makefile.extrawarn
620 620
621 # Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments 621 # Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments
622 KBUILD_CPPFLAGS += $(KCPPFLAGS) 622 KBUILD_CPPFLAGS += $(KCPPFLAGS)
623 KBUILD_AFLAGS += $(KAFLAGS) 623 KBUILD_AFLAGS += $(KAFLAGS)
624 KBUILD_CFLAGS += $(KCFLAGS) 624 KBUILD_CFLAGS += $(KCFLAGS)
625 625
626 # Use UBOOTINCLUDE when you must reference the include/ directory. 626 # Use UBOOTINCLUDE when you must reference the include/ directory.
627 # Needed to be compatible with the O= option 627 # Needed to be compatible with the O= option
628 UBOOTINCLUDE := \ 628 UBOOTINCLUDE := \
629 -Iinclude \ 629 -Iinclude \
630 $(if $(KBUILD_SRC), -I$(srctree)/include) \ 630 $(if $(KBUILD_SRC), -I$(srctree)/include) \
631 $(if $(CONFIG_$(SPL_)SYS_THUMB_BUILD), \ 631 $(if $(CONFIG_$(SPL_)SYS_THUMB_BUILD), \
632 $(if $(CONFIG_HAS_THUMB2),, \ 632 $(if $(CONFIG_HAS_THUMB2),, \
633 -I$(srctree)/arch/$(ARCH)/thumb1/include),) \ 633 -I$(srctree)/arch/$(ARCH)/thumb1/include),) \
634 -I$(srctree)/arch/$(ARCH)/include \ 634 -I$(srctree)/arch/$(ARCH)/include \
635 -include $(srctree)/include/linux/kconfig.h 635 -include $(srctree)/include/linux/kconfig.h
636 636
637 NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) 637 NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
638 CHECKFLAGS += $(NOSTDINC_FLAGS) 638 CHECKFLAGS += $(NOSTDINC_FLAGS)
639 639
640 # FIX ME 640 # FIX ME
641 cpp_flags := $(KBUILD_CPPFLAGS) $(PLATFORM_CPPFLAGS) $(UBOOTINCLUDE) \ 641 cpp_flags := $(KBUILD_CPPFLAGS) $(PLATFORM_CPPFLAGS) $(UBOOTINCLUDE) \
642 $(NOSTDINC_FLAGS) 642 $(NOSTDINC_FLAGS)
643 c_flags := $(KBUILD_CFLAGS) $(cpp_flags) 643 c_flags := $(KBUILD_CFLAGS) $(cpp_flags)
644 644
645 ######################################################################### 645 #########################################################################
646 # U-Boot objects....order is important (i.e. start must be first) 646 # U-Boot objects....order is important (i.e. start must be first)
647 647
648 HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n) 648 HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n)
649 649
650 libs-y += lib/ 650 libs-y += lib/
651 libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/ 651 libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/
652 libs-$(CONFIG_OF_EMBED) += dts/ 652 libs-$(CONFIG_OF_EMBED) += dts/
653 libs-y += fs/ 653 libs-y += fs/
654 libs-y += net/ 654 libs-y += net/
655 libs-y += disk/ 655 libs-y += disk/
656 libs-y += drivers/ 656 libs-y += drivers/
657 libs-y += drivers/dma/ 657 libs-y += drivers/dma/
658 libs-y += drivers/gpio/ 658 libs-y += drivers/gpio/
659 libs-y += drivers/i2c/ 659 libs-y += drivers/i2c/
660 libs-y += drivers/mtd/ 660 libs-y += drivers/mtd/
661 libs-$(CONFIG_CMD_NAND) += drivers/mtd/nand/ 661 libs-$(CONFIG_CMD_NAND) += drivers/mtd/nand/
662 libs-y += drivers/mtd/onenand/ 662 libs-y += drivers/mtd/onenand/
663 libs-$(CONFIG_CMD_UBI) += drivers/mtd/ubi/ 663 libs-$(CONFIG_CMD_UBI) += drivers/mtd/ubi/
664 libs-y += drivers/mtd/spi/ 664 libs-y += drivers/mtd/spi/
665 libs-y += drivers/net/ 665 libs-y += drivers/net/
666 libs-y += drivers/net/phy/ 666 libs-y += drivers/net/phy/
667 libs-y += drivers/pci/ 667 libs-y += drivers/pci/
668 libs-y += drivers/power/ \ 668 libs-y += drivers/power/ \
669 drivers/power/domain/ \ 669 drivers/power/domain/ \
670 drivers/power/fuel_gauge/ \ 670 drivers/power/fuel_gauge/ \
671 drivers/power/mfd/ \ 671 drivers/power/mfd/ \
672 drivers/power/pmic/ \ 672 drivers/power/pmic/ \
673 drivers/power/battery/ \ 673 drivers/power/battery/ \
674 drivers/power/regulator/ 674 drivers/power/regulator/
675 libs-y += drivers/spi/ 675 libs-y += drivers/spi/
676 libs-$(CONFIG_FMAN_ENET) += drivers/net/fm/ 676 libs-$(CONFIG_FMAN_ENET) += drivers/net/fm/
677 libs-$(CONFIG_SYS_FSL_DDR) += drivers/ddr/fsl/ 677 libs-$(CONFIG_SYS_FSL_DDR) += drivers/ddr/fsl/
678 libs-$(CONFIG_SYS_FSL_MMDC) += drivers/ddr/fsl/ 678 libs-$(CONFIG_SYS_FSL_MMDC) += drivers/ddr/fsl/
679 libs-$(CONFIG_ALTERA_SDRAM) += drivers/ddr/altera/ 679 libs-$(CONFIG_ALTERA_SDRAM) += drivers/ddr/altera/
680 libs-y += drivers/serial/ 680 libs-y += drivers/serial/
681 libs-y += drivers/usb/dwc3/ 681 libs-y += drivers/usb/dwc3/
682 libs-y += drivers/usb/common/ 682 libs-y += drivers/usb/common/
683 libs-y += drivers/usb/emul/ 683 libs-y += drivers/usb/emul/
684 libs-y += drivers/usb/eth/ 684 libs-y += drivers/usb/eth/
685 libs-y += drivers/usb/gadget/ 685 libs-y += drivers/usb/gadget/
686 libs-y += drivers/usb/gadget/udc/ 686 libs-y += drivers/usb/gadget/udc/
687 libs-y += drivers/usb/host/ 687 libs-y += drivers/usb/host/
688 libs-y += drivers/usb/musb/ 688 libs-y += drivers/usb/musb/
689 libs-y += drivers/usb/musb-new/ 689 libs-y += drivers/usb/musb-new/
690 libs-y += drivers/usb/phy/ 690 libs-y += drivers/usb/phy/
691 libs-y += drivers/usb/ulpi/ 691 libs-y += drivers/usb/ulpi/
692 libs-y += cmd/ 692 libs-y += cmd/
693 libs-y += common/ 693 libs-y += common/
694 libs-y += env/ 694 libs-y += env/
695 libs-$(CONFIG_API) += api/ 695 libs-$(CONFIG_API) += api/
696 libs-$(CONFIG_HAS_POST) += post/ 696 libs-$(CONFIG_HAS_POST) += post/
697 libs-y += test/ 697 libs-y += test/
698 libs-y += test/dm/ 698 libs-y += test/dm/
699 libs-$(CONFIG_UT_ENV) += test/env/ 699 libs-$(CONFIG_UT_ENV) += test/env/
700 libs-$(CONFIG_UT_OVERLAY) += test/overlay/ 700 libs-$(CONFIG_UT_OVERLAY) += test/overlay/
701 701
702 libs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/) 702 libs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/)
703 703
704 libs-y := $(sort $(libs-y)) 704 libs-y := $(sort $(libs-y))
705 705
706 u-boot-dirs := $(patsubst %/,%,$(filter %/, $(libs-y))) tools examples 706 u-boot-dirs := $(patsubst %/,%,$(filter %/, $(libs-y))) tools examples
707 707
708 u-boot-alldirs := $(sort $(u-boot-dirs) $(patsubst %/,%,$(filter %/, $(libs-)))) 708 u-boot-alldirs := $(sort $(u-boot-dirs) $(patsubst %/,%,$(filter %/, $(libs-))))
709 709
710 libs-y := $(patsubst %/, %/built-in.o, $(libs-y)) 710 libs-y := $(patsubst %/, %/built-in.o, $(libs-y))
711 711
712 u-boot-init := $(head-y) 712 u-boot-init := $(head-y)
713 u-boot-main := $(libs-y) 713 u-boot-main := $(libs-y)
714 714
715 715
716 # Add GCC lib 716 # Add GCC lib
717 ifeq ($(CONFIG_USE_PRIVATE_LIBGCC),y) 717 ifeq ($(CONFIG_USE_PRIVATE_LIBGCC),y)
718 PLATFORM_LIBGCC = arch/$(ARCH)/lib/lib.a 718 PLATFORM_LIBGCC = arch/$(ARCH)/lib/lib.a
719 else 719 else
720 PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(c_flags) -print-libgcc-file-name`) -lgcc 720 PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(c_flags) -print-libgcc-file-name`) -lgcc
721 endif 721 endif
722 PLATFORM_LIBS += $(PLATFORM_LIBGCC) 722 PLATFORM_LIBS += $(PLATFORM_LIBGCC)
723 export PLATFORM_LIBS 723 export PLATFORM_LIBS
724 export PLATFORM_LIBGCC 724 export PLATFORM_LIBGCC
725 725
726 # Special flags for CPP when processing the linker script. 726 # Special flags for CPP when processing the linker script.
727 # Pass the version down so we can handle backwards compatibility 727 # Pass the version down so we can handle backwards compatibility
728 # on the fly. 728 # on the fly.
729 LDPPFLAGS += \ 729 LDPPFLAGS += \
730 -include $(srctree)/include/u-boot/u-boot.lds.h \ 730 -include $(srctree)/include/u-boot/u-boot.lds.h \
731 -DCPUDIR=$(CPUDIR) \ 731 -DCPUDIR=$(CPUDIR) \
732 $(shell $(LD) --version | \ 732 $(shell $(LD) --version | \
733 sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p') 733 sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p')
734 734
735 ######################################################################### 735 #########################################################################
736 ######################################################################### 736 #########################################################################
737 737
738 ifneq ($(CONFIG_BOARD_SIZE_LIMIT),) 738 ifneq ($(CONFIG_BOARD_SIZE_LIMIT),)
739 BOARD_SIZE_CHECK = \ 739 BOARD_SIZE_CHECK = \
740 @actual=`wc -c $@ | awk '{print $$1}'`; \ 740 @actual=`wc -c $@ | awk '{print $$1}'`; \
741 limit=`printf "%d" $(CONFIG_BOARD_SIZE_LIMIT)`; \ 741 limit=`printf "%d" $(CONFIG_BOARD_SIZE_LIMIT)`; \
742 if test $$actual -gt $$limit; then \ 742 if test $$actual -gt $$limit; then \
743 echo "$@ exceeds file size limit:" >&2 ; \ 743 echo "$@ exceeds file size limit:" >&2 ; \
744 echo " limit: $$limit bytes" >&2 ; \ 744 echo " limit: $$limit bytes" >&2 ; \
745 echo " actual: $$actual bytes" >&2 ; \ 745 echo " actual: $$actual bytes" >&2 ; \
746 echo " excess: $$((actual - limit)) bytes" >&2; \ 746 echo " excess: $$((actual - limit)) bytes" >&2; \
747 exit 1; \ 747 exit 1; \
748 fi 748 fi
749 else 749 else
750 BOARD_SIZE_CHECK = 750 BOARD_SIZE_CHECK =
751 endif 751 endif
752 752
753 # Statically apply RELA-style relocations (currently arm64 only) 753 # Statically apply RELA-style relocations (currently arm64 only)
754 # This is useful for arm64 where static relocation needs to be performed on 754 # This is useful for arm64 where static relocation needs to be performed on
755 # the raw binary, but certain simulators only accept an ELF file (but don't 755 # the raw binary, but certain simulators only accept an ELF file (but don't
756 # do the relocation). 756 # do the relocation).
757 ifneq ($(CONFIG_STATIC_RELA),) 757 ifneq ($(CONFIG_STATIC_RELA),)
758 # $(1) is u-boot ELF, $(2) is u-boot bin, $(3) is text base 758 # $(1) is u-boot ELF, $(2) is u-boot bin, $(3) is text base
759 DO_STATIC_RELA = \ 759 DO_STATIC_RELA = \
760 start=$$($(NM) $(1) | grep __rel_dyn_start | cut -f 1 -d ' '); \ 760 start=$$($(NM) $(1) | grep __rel_dyn_start | cut -f 1 -d ' '); \
761 end=$$($(NM) $(1) | grep __rel_dyn_end | cut -f 1 -d ' '); \ 761 end=$$($(NM) $(1) | grep __rel_dyn_end | cut -f 1 -d ' '); \
762 tools/relocate-rela $(2) $(3) $$start $$end 762 tools/relocate-rela $(2) $(3) $$start $$end
763 else 763 else
764 DO_STATIC_RELA = 764 DO_STATIC_RELA =
765 endif 765 endif
766 766
767 # Always append ALL so that arch config.mk's can add custom ones 767 # Always append ALL so that arch config.mk's can add custom ones
768 ALL-y += u-boot.srec u-boot.bin u-boot.sym System.map binary_size_check 768 ALL-y += u-boot.srec u-boot.bin u-boot.sym System.map binary_size_check
769 769
770 ALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin 770 ALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin
771 ifeq ($(CONFIG_SPL_FSL_PBL),y) 771 ifeq ($(CONFIG_SPL_FSL_PBL),y)
772 ALL-$(CONFIG_RAMBOOT_PBL) += u-boot-with-spl-pbl.bin 772 ALL-$(CONFIG_RAMBOOT_PBL) += u-boot-with-spl-pbl.bin
773 else 773 else
774 ifneq ($(CONFIG_SECURE_BOOT), y) 774 ifneq ($(CONFIG_SECURE_BOOT), y)
775 # For Secure Boot The Image needs to be signed and Header must also 775 # For Secure Boot The Image needs to be signed and Header must also
776 # be included. So The image has to be built explicitly 776 # be included. So The image has to be built explicitly
777 ALL-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl 777 ALL-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl
778 endif 778 endif
779 endif 779 endif
780 ALL-$(CONFIG_SPL) += spl/u-boot-spl.bin 780 ALL-$(CONFIG_SPL) += spl/u-boot-spl.bin
781 ifeq ($(CONFIG_MX6)$(CONFIG_SECURE_BOOT), yy) 781 ifeq ($(CONFIG_MX6)$(CONFIG_SECURE_BOOT), yy)
782 ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot-ivt.img 782 ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot-ivt.img
783 else 783 else
784 ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img 784 ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img
785 endif 785 endif
786 ALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin 786 ALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin
787 ALL-$(CONFIG_OF_SEPARATE) += u-boot.dtb 787 ALL-$(CONFIG_OF_SEPARATE) += u-boot.dtb
788 ifeq ($(CONFIG_SPL_FRAMEWORK),y) 788 ifeq ($(CONFIG_SPL_FRAMEWORK),y)
789 ALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb.img 789 ALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb.img
790 endif 790 endif
791 ALL-$(CONFIG_OF_HOSTFILE) += u-boot.dtb 791 ALL-$(CONFIG_OF_HOSTFILE) += u-boot.dtb
792 ifneq ($(CONFIG_SPL_TARGET),) 792 ifneq ($(CONFIG_SPL_TARGET),)
793 ALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%) 793 ALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%)
794 endif 794 endif
795 ALL-$(CONFIG_REMAKE_ELF) += u-boot.elf 795 ALL-$(CONFIG_REMAKE_ELF) += u-boot.elf
796 ALL-$(CONFIG_EFI_APP) += u-boot-app.efi 796 ALL-$(CONFIG_EFI_APP) += u-boot-app.efi
797 ALL-$(CONFIG_EFI_STUB) += u-boot-payload.efi 797 ALL-$(CONFIG_EFI_STUB) += u-boot-payload.efi
798 798
799 ifneq ($(BUILD_ROM),) 799 ifneq ($(BUILD_ROM),)
800 ALL-$(CONFIG_X86_RESET_VECTOR) += u-boot.rom 800 ALL-$(CONFIG_X86_RESET_VECTOR) += u-boot.rom
801 endif 801 endif
802 802
803 # enable combined SPL/u-boot/dtb rules for tegra 803 # enable combined SPL/u-boot/dtb rules for tegra
804 ifeq ($(CONFIG_TEGRA)$(CONFIG_SPL),yy) 804 ifeq ($(CONFIG_TEGRA)$(CONFIG_SPL),yy)
805 ALL-y += u-boot-tegra.bin u-boot-nodtb-tegra.bin 805 ALL-y += u-boot-tegra.bin u-boot-nodtb-tegra.bin
806 ALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb-tegra.bin 806 ALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb-tegra.bin
807 endif 807 endif
808 808
809 # Add optional build target if defined in board/cpu/soc headers 809 # Add optional build target if defined in board/cpu/soc headers
810 ifneq ($(CONFIG_BUILD_TARGET),) 810 ifneq ($(CONFIG_BUILD_TARGET),)
811 ALL-y += $(CONFIG_BUILD_TARGET:"%"=%) 811 ALL-y += $(CONFIG_BUILD_TARGET:"%"=%)
812 endif 812 endif
813 813
814 LDFLAGS_u-boot += $(LDFLAGS_FINAL) 814 LDFLAGS_u-boot += $(LDFLAGS_FINAL)
815 815
816 # Avoid 'Not enough room for program headers' error on binutils 2.28 onwards. 816 # Avoid 'Not enough room for program headers' error on binutils 2.28 onwards.
817 LDFLAGS_u-boot += $(call ld-option, --no-dynamic-linker) 817 LDFLAGS_u-boot += $(call ld-option, --no-dynamic-linker)
818 818
819 ifneq ($(CONFIG_SYS_TEXT_BASE),) 819 ifneq ($(CONFIG_SYS_TEXT_BASE),)
820 LDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE) 820 LDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE)
821 endif 821 endif
822 822
823 # Normally we fill empty space with 0xff 823 # Normally we fill empty space with 0xff
824 quiet_cmd_objcopy = OBJCOPY $@ 824 quiet_cmd_objcopy = OBJCOPY $@
825 cmd_objcopy = $(OBJCOPY) --gap-fill=0xff $(OBJCOPYFLAGS) \ 825 cmd_objcopy = $(OBJCOPY) --gap-fill=0xff $(OBJCOPYFLAGS) \
826 $(OBJCOPYFLAGS_$(@F)) $< $@ 826 $(OBJCOPYFLAGS_$(@F)) $< $@
827 827
828 # Provide a version which does not do this, for use by EFI 828 # Provide a version which does not do this, for use by EFI
829 quiet_cmd_zobjcopy = OBJCOPY $@ 829 quiet_cmd_zobjcopy = OBJCOPY $@
830 cmd_zobjcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@ 830 cmd_zobjcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@
831 831
832 quiet_cmd_efipayload = OBJCOPY $@ 832 quiet_cmd_efipayload = OBJCOPY $@
833 cmd_efipayload = $(OBJCOPY) -I binary -O $(EFIPAYLOAD_BFDTARGET) -B $(EFIPAYLOAD_BFDARCH) $< $@ 833 cmd_efipayload = $(OBJCOPY) -I binary -O $(EFIPAYLOAD_BFDTARGET) -B $(EFIPAYLOAD_BFDARCH) $< $@
834 834
835 MKIMAGEOUTPUT ?= /dev/null 835 MKIMAGEOUTPUT ?= /dev/null
836 836
837 quiet_cmd_mkimage = MKIMAGE $@ 837 quiet_cmd_mkimage = MKIMAGE $@
838 cmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< $@ \ 838 cmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< $@ \
839 $(if $(KBUILD_VERBOSE:1=), >$(MKIMAGEOUTPUT)) 839 $(if $(KBUILD_VERBOSE:1=), >$(MKIMAGEOUTPUT))
840 840
841 quiet_cmd_mkfitimage = MKIMAGE $@ 841 quiet_cmd_mkfitimage = MKIMAGE $@
842 cmd_mkfitimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -f $(U_BOOT_ITS) -E $@ \ 842 cmd_mkfitimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -f $(U_BOOT_ITS) -E $@ \
843 $(if $(KBUILD_VERBOSE:1=), >$(MKIMAGEOUTPUT)) 843 $(if $(KBUILD_VERBOSE:1=), >$(MKIMAGEOUTPUT))
844 844
845 quiet_cmd_cat = CAT $@ 845 quiet_cmd_cat = CAT $@
846 cmd_cat = cat $(filter-out $(PHONY), $^) > $@ 846 cmd_cat = cat $(filter-out $(PHONY), $^) > $@
847 847
848 append = cat $(filter-out $< $(PHONY), $^) >> $@ 848 append = cat $(filter-out $< $(PHONY), $^) >> $@
849 849
850 quiet_cmd_pad_cat = CAT $@ 850 quiet_cmd_pad_cat = CAT $@
851 cmd_pad_cat = $(cmd_objcopy) && $(append) || rm -f $@ 851 cmd_pad_cat = $(cmd_objcopy) && $(append) || rm -f $@
852 852
853 cfg: u-boot.cfg 853 cfg: u-boot.cfg
854 854
855 quiet_cmd_cfgcheck = CFGCHK $2 855 quiet_cmd_cfgcheck = CFGCHK $2
856 cmd_cfgcheck = $(srctree)/scripts/check-config.sh $2 \ 856 cmd_cfgcheck = $(srctree)/scripts/check-config.sh $2 \
857 $(srctree)/scripts/config_whitelist.txt $(srctree) 857 $(srctree)/scripts/config_whitelist.txt $(srctree)
858 858
859 all: $(ALL-y) cfg 859 all: $(ALL-y) cfg
860 ifeq ($(CONFIG_DM_I2C_COMPAT)$(CONFIG_SANDBOX),y) 860 ifeq ($(CONFIG_DM_I2C_COMPAT)$(CONFIG_SANDBOX),y)
861 @echo "===================== WARNING ======================" 861 @echo "===================== WARNING ======================"
862 @echo "This board uses CONFIG_DM_I2C_COMPAT. Please remove" 862 @echo "This board uses CONFIG_DM_I2C_COMPAT. Please remove"
863 @echo "(possibly in a subsequent patch in your series)" 863 @echo "(possibly in a subsequent patch in your series)"
864 @echo "before sending patches to the mailing list." 864 @echo "before sending patches to the mailing list."
865 @echo "====================================================" 865 @echo "===================================================="
866 endif 866 endif
867 @# Check that this build does not use CONFIG options that we do not 867 @# Check that this build does not use CONFIG options that we do not
868 @# know about unless they are in Kconfig. All the existing CONFIG 868 @# know about unless they are in Kconfig. All the existing CONFIG
869 @# options are whitelisted, so new ones should not be added. 869 @# options are whitelisted, so new ones should not be added.
870 $(call cmd,cfgcheck,u-boot.cfg) 870 $(call cmd,cfgcheck,u-boot.cfg)
871 871
872 PHONY += dtbs 872 PHONY += dtbs
873 dtbs: dts/dt.dtb 873 dtbs: dts/dt.dtb
874 @: 874 @:
875 dts/dt.dtb: checkdtc u-boot 875 dts/dt.dtb: checkdtc u-boot
876 $(Q)$(MAKE) $(build)=dts dtbs 876 $(Q)$(MAKE) $(build)=dts dtbs
877 877
878 quiet_cmd_copy = COPY $@ 878 quiet_cmd_copy = COPY $@
879 cmd_copy = cp $< $@ 879 cmd_copy = cp $< $@
880 880
881 ifeq ($(CONFIG_FIT_EMBED),y) 881 ifeq ($(CONFIG_FIT_EMBED),y)
882 882
883 fit-dtb.blob: dts/dt.dtb FORCE 883 fit-dtb.blob: dts/dt.dtb FORCE
884 $(call if_changed,mkimage) 884 $(call if_changed,mkimage)
885 885
886 MKIMAGEFLAGS_fit-dtb.blob = -f auto -A $(ARCH) -T firmware -C none -O u-boot \ 886 MKIMAGEFLAGS_fit-dtb.blob = -f auto -A $(ARCH) -T firmware -C none -O u-boot \
887 -a 0 -e 0 -E \ 887 -a 0 -e 0 -E \
888 $(patsubst %,-b arch/$(ARCH)/dts/%.dtb,$(subst ",,$(CONFIG_OF_LIST))) -d /dev/null 888 $(patsubst %,-b arch/$(ARCH)/dts/%.dtb,$(subst ",,$(CONFIG_OF_LIST))) -d /dev/null
889 889
890 u-boot-fit-dtb.bin: u-boot-nodtb.bin fit-dtb.blob 890 u-boot-fit-dtb.bin: u-boot-nodtb.bin fit-dtb.blob
891 $(call if_changed,cat) 891 $(call if_changed,cat)
892 892
893 u-boot.bin: u-boot-fit-dtb.bin FORCE 893 u-boot.bin: u-boot-fit-dtb.bin FORCE
894 $(call if_changed,copy) 894 $(call if_changed,copy)
895 else ifeq ($(CONFIG_OF_SEPARATE),y) 895 else ifeq ($(CONFIG_OF_SEPARATE),y)
896 u-boot-dtb.bin: u-boot-nodtb.bin dts/dt.dtb FORCE 896 u-boot-dtb.bin: u-boot-nodtb.bin dts/dt.dtb FORCE
897 $(call if_changed,cat) 897 $(call if_changed,cat)
898 898
899 u-boot.bin: u-boot-dtb.bin FORCE 899 u-boot.bin: u-boot-dtb.bin FORCE
900 $(call if_changed,copy) 900 $(call if_changed,copy)
901 else 901 else
902 u-boot.bin: u-boot-nodtb.bin FORCE 902 u-boot.bin: u-boot-nodtb.bin FORCE
903 $(call if_changed,copy) 903 $(call if_changed,copy)
904 endif 904 endif
905 905
906 %.imx: %.bin 906 %.imx: %.bin
907 $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@ 907 $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@
908 908
909 %.vyb: %.imx 909 %.vyb: %.imx
910 $(Q)$(MAKE) $(build)=arch/arm/cpu/armv7/vf610 $@ 910 $(Q)$(MAKE) $(build)=arch/arm/cpu/armv7/vf610 $@
911 911
912 quiet_cmd_copy = COPY $@ 912 quiet_cmd_copy = COPY $@
913 cmd_copy = cp $< $@ 913 cmd_copy = cp $< $@
914 914
915 u-boot.dtb: dts/dt.dtb 915 u-boot.dtb: dts/dt.dtb
916 $(call cmd,copy) 916 $(call cmd,copy)
917 917
918 OBJCOPYFLAGS_u-boot.hex := -O ihex 918 OBJCOPYFLAGS_u-boot.hex := -O ihex
919 919
920 OBJCOPYFLAGS_u-boot.srec := -O srec 920 OBJCOPYFLAGS_u-boot.srec := -O srec
921 921
922 u-boot.hex u-boot.srec: u-boot FORCE 922 u-boot.hex u-boot.srec: u-boot FORCE
923 $(call if_changed,objcopy) 923 $(call if_changed,objcopy)
924 924
925 OBJCOPYFLAGS_u-boot-nodtb.bin := -O binary \ 925 OBJCOPYFLAGS_u-boot-nodtb.bin := -O binary \
926 $(if $(CONFIG_X86_16BIT_INIT),-R .start16 -R .resetvec) 926 $(if $(CONFIG_X86_16BIT_INIT),-R .start16 -R .resetvec)
927 927
928 binary_size_check: u-boot-nodtb.bin FORCE 928 binary_size_check: u-boot-nodtb.bin FORCE
929 @file_size=$(shell wc -c u-boot-nodtb.bin | awk '{print $$1}') ; \ 929 @file_size=$(shell wc -c u-boot-nodtb.bin | awk '{print $$1}') ; \
930 map_size=$(shell cat u-boot.map | \ 930 map_size=$(shell cat u-boot.map | \
931 awk '/_image_copy_start/ {start = $$1} /_image_binary_end/ {end = $$1} END {if (start != "" && end != "") print "ibase=16; " toupper(end) " - " toupper(start)}' \ 931 awk '/_image_copy_start/ {start = $$1} /_image_binary_end/ {end = $$1} END {if (start != "" && end != "") print "ibase=16; " toupper(end) " - " toupper(start)}' \
932 | sed 's/0X//g' \ 932 | sed 's/0X//g' \
933 | bc); \ 933 | bc); \
934 if [ "" != "$$map_size" ]; then \ 934 if [ "" != "$$map_size" ]; then \
935 if test $$map_size -ne $$file_size; then \ 935 if test $$map_size -ne $$file_size; then \
936 echo "u-boot.map shows a binary size of $$map_size" >&2 ; \ 936 echo "u-boot.map shows a binary size of $$map_size" >&2 ; \
937 echo " but u-boot-nodtb.bin shows $$file_size" >&2 ; \ 937 echo " but u-boot-nodtb.bin shows $$file_size" >&2 ; \
938 exit 1; \ 938 exit 1; \
939 fi \ 939 fi \
940 fi 940 fi
941 941
942 u-boot-nodtb.bin: u-boot FORCE 942 u-boot-nodtb.bin: u-boot FORCE
943 $(call if_changed,objcopy) 943 $(call if_changed,objcopy)
944 $(call DO_STATIC_RELA,$<,$@,$(CONFIG_SYS_TEXT_BASE)) 944 $(call DO_STATIC_RELA,$<,$@,$(CONFIG_SYS_TEXT_BASE))
945 $(BOARD_SIZE_CHECK) 945 $(BOARD_SIZE_CHECK)
946 946
947 u-boot.ldr: u-boot 947 u-boot.ldr: u-boot
948 $(CREATE_LDR_ENV) 948 $(CREATE_LDR_ENV)
949 $(LDR) -T $(CONFIG_CPU) -c $@ $< $(LDR_FLAGS) 949 $(LDR) -T $(CONFIG_CPU) -c $@ $< $(LDR_FLAGS)
950 $(BOARD_SIZE_CHECK) 950 $(BOARD_SIZE_CHECK)
951 951
952 # binman 952 # binman
953 # --------------------------------------------------------------------------- 953 # ---------------------------------------------------------------------------
954 quiet_cmd_binman = BINMAN $@ 954 quiet_cmd_binman = BINMAN $@
955 cmd_binman = $(srctree)/tools/binman/binman -d u-boot.dtb -O . \ 955 cmd_binman = $(srctree)/tools/binman/binman -d u-boot.dtb -O . \
956 -I . -I $(srctree)/board/$(BOARDDIR) $< 956 -I . -I $(srctree)/board/$(BOARDDIR) $<
957 957
958 OBJCOPYFLAGS_u-boot.ldr.hex := -I binary -O ihex 958 OBJCOPYFLAGS_u-boot.ldr.hex := -I binary -O ihex
959 959
960 OBJCOPYFLAGS_u-boot.ldr.srec := -I binary -O srec 960 OBJCOPYFLAGS_u-boot.ldr.srec := -I binary -O srec
961 961
962 u-boot.ldr.hex u-boot.ldr.srec: u-boot.ldr FORCE 962 u-boot.ldr.hex u-boot.ldr.srec: u-boot.ldr FORCE
963 $(call if_changed,objcopy) 963 $(call if_changed,objcopy)
964 964
965 # 965 #
966 # U-Boot entry point, needed for booting of full-blown U-Boot 966 # U-Boot entry point, needed for booting of full-blown U-Boot
967 # from the SPL U-Boot version. 967 # from the SPL U-Boot version.
968 # 968 #
969 ifndef CONFIG_SYS_UBOOT_START 969 ifndef CONFIG_SYS_UBOOT_START
970 CONFIG_SYS_UBOOT_START := 0 970 CONFIG_SYS_UBOOT_START := 0
971 endif 971 endif
972 972
973 # Create a file containing the configuration options the image was built with 973 # Create a file containing the configuration options the image was built with
974 quiet_cmd_cpp_cfg = CFG $@ 974 quiet_cmd_cpp_cfg = CFG $@
975 cmd_cpp_cfg = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) -ansi \ 975 cmd_cpp_cfg = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) -ansi \
976 -DDO_DEPS_ONLY -D__ASSEMBLY__ -x assembler-with-cpp -P -dM -E -o $@ $< 976 -DDO_DEPS_ONLY -D__ASSEMBLY__ -x assembler-with-cpp -P -dM -E -o $@ $<
977 977
978 # Boards with more complex image requirments can provide an .its source file 978 # Boards with more complex image requirments can provide an .its source file
979 # or a generator script 979 # or a generator script
980 ifneq ($(CONFIG_SPL_FIT_SOURCE),"") 980 ifneq ($(CONFIG_SPL_FIT_SOURCE),"")
981 U_BOOT_ITS = $(subst ",,$(CONFIG_SPL_FIT_SOURCE)) 981 U_BOOT_ITS = $(subst ",,$(CONFIG_SPL_FIT_SOURCE))
982 else 982 else
983 ifneq ($(CONFIG_SPL_FIT_GENERATOR),"") 983 ifneq ($(CONFIG_SPL_FIT_GENERATOR),"")
984 U_BOOT_ITS := u-boot.its 984 U_BOOT_ITS := u-boot.its
985 $(U_BOOT_ITS): FORCE 985 $(U_BOOT_ITS): FORCE
986 $(srctree)/$(CONFIG_SPL_FIT_GENERATOR) \ 986 $(srctree)/$(CONFIG_SPL_FIT_GENERATOR) \
987 $(patsubst %,arch/$(ARCH)/dts/%.dtb,$(subst ",,$(CONFIG_OF_LIST))) > $@ 987 $(patsubst %,arch/$(ARCH)/dts/%.dtb,$(subst ",,$(CONFIG_OF_LIST))) > $@
988 endif 988 endif
989 endif 989 endif
990 990
991 ifdef CONFIG_SPL_LOAD_FIT 991 ifdef CONFIG_SPL_LOAD_FIT
992 MKIMAGEFLAGS_u-boot.img = -f auto -A $(ARCH) -T firmware -C none -O u-boot \ 992 MKIMAGEFLAGS_u-boot.img = -f auto -A $(ARCH) -T firmware -C none -O u-boot \
993 -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \ 993 -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \
994 -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board" -E \ 994 -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board" -E \
995 $(patsubst %,-b arch/$(ARCH)/dts/%.dtb,$(subst ",,$(CONFIG_OF_LIST))) 995 $(patsubst %,-b arch/$(ARCH)/dts/%.dtb,$(subst ",,$(CONFIG_OF_LIST)))
996 else 996 else
997 MKIMAGEFLAGS_u-boot.img = -A $(ARCH) -T firmware -C none -O u-boot \ 997 MKIMAGEFLAGS_u-boot.img = -A $(ARCH) -T firmware -C none -O u-boot \
998 -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \ 998 -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \
999 -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board" 999 -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board"
1000 MKIMAGEFLAGS_u-boot-ivt.img = -A $(ARCH) -T firmware_ivt -C none -O u-boot \ 1000 MKIMAGEFLAGS_u-boot-ivt.img = -A $(ARCH) -T firmware_ivt -C none -O u-boot \
1001 -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \ 1001 -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \
1002 -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board" 1002 -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board"
1003 u-boot-ivt.img: MKIMAGEOUTPUT = u-boot-ivt.img.log 1003 u-boot-ivt.img: MKIMAGEOUTPUT = u-boot-ivt.img.log
1004 CLEAN_FILES += u-boot-ivt.img.log u-boot-dtb.imx.log SPL.log u-boot.imx.log 1004 CLEAN_FILES += u-boot-ivt.img.log u-boot-dtb.imx.log SPL.log u-boot.imx.log
1005 endif 1005 endif
1006 1006
1007 MKIMAGEFLAGS_u-boot-dtb.img = $(MKIMAGEFLAGS_u-boot.img) 1007 MKIMAGEFLAGS_u-boot-dtb.img = $(MKIMAGEFLAGS_u-boot.img)
1008 1008
1009 MKIMAGEFLAGS_u-boot.kwb = -n $(srctree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%) \ 1009 MKIMAGEFLAGS_u-boot.kwb = -n $(srctree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%) \
1010 -T kwbimage -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) 1010 -T kwbimage -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE)
1011 1011
1012 MKIMAGEFLAGS_u-boot-spl.kwb = -n $(srctree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%) \ 1012 MKIMAGEFLAGS_u-boot-spl.kwb = -n $(srctree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%) \
1013 -T kwbimage -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) \ 1013 -T kwbimage -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) \
1014 $(if $(KEYDIR),-k $(KEYDIR)) 1014 $(if $(KEYDIR),-k $(KEYDIR))
1015 1015
1016 MKIMAGEFLAGS_u-boot.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \ 1016 MKIMAGEFLAGS_u-boot.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \
1017 -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage 1017 -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage
1018 1018
1019 u-boot-dtb.img u-boot.img u-boot.kwb u-boot.pbl u-boot-ivt.img: \ 1019 u-boot-dtb.img u-boot.img u-boot.kwb u-boot.pbl u-boot-ivt.img: \
1020 $(if $(CONFIG_SPL_LOAD_FIT),u-boot-nodtb.bin dts/dt.dtb,u-boot.bin) FORCE 1020 $(if $(CONFIG_SPL_LOAD_FIT),u-boot-nodtb.bin dts/dt.dtb,u-boot.bin) FORCE
1021 $(call if_changed,mkimage) 1021 $(call if_changed,mkimage)
1022 1022
1023 u-boot.itb: u-boot-nodtb.bin dts/dt.dtb $(U_BOOT_ITS) FORCE 1023 u-boot.itb: u-boot-nodtb.bin dts/dt.dtb $(U_BOOT_ITS) FORCE
1024 $(call if_changed,mkfitimage) 1024 $(call if_changed,mkfitimage)
1025 1025
1026 u-boot-spl.kwb: u-boot.img spl/u-boot-spl.bin FORCE 1026 u-boot-spl.kwb: u-boot.img spl/u-boot-spl.bin FORCE
1027 $(call if_changed,mkimage) 1027 $(call if_changed,mkimage)
1028 1028
1029 u-boot.sha1: u-boot.bin 1029 u-boot.sha1: u-boot.bin
1030 tools/ubsha1 u-boot.bin 1030 tools/ubsha1 u-boot.bin
1031 1031
1032 u-boot.dis: u-boot 1032 u-boot.dis: u-boot
1033 $(OBJDUMP) -d $< > $@ 1033 $(OBJDUMP) -d $< > $@
1034 1034
1035 ifdef CONFIG_TPL 1035 ifdef CONFIG_TPL
1036 SPL_PAYLOAD := tpl/u-boot-with-tpl.bin 1036 SPL_PAYLOAD := tpl/u-boot-with-tpl.bin
1037 else 1037 else
1038 SPL_PAYLOAD := u-boot.bin 1038 SPL_PAYLOAD := u-boot.bin
1039 endif 1039 endif
1040 1040
1041 OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \ 1041 OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \
1042 --pad-to=$(CONFIG_SPL_PAD_TO) 1042 --pad-to=$(CONFIG_SPL_PAD_TO)
1043 u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE 1043 u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE
1044 $(call if_changed,pad_cat) 1044 $(call if_changed,pad_cat)
1045 1045
1046 MKIMAGEFLAGS_lpc32xx-spl.img = -T lpc32xximage -a $(CONFIG_SPL_TEXT_BASE) 1046 MKIMAGEFLAGS_lpc32xx-spl.img = -T lpc32xximage -a $(CONFIG_SPL_TEXT_BASE)
1047 1047
1048 lpc32xx-spl.img: spl/u-boot-spl.bin FORCE 1048 lpc32xx-spl.img: spl/u-boot-spl.bin FORCE
1049 $(call if_changed,mkimage) 1049 $(call if_changed,mkimage)
1050 1050
1051 OBJCOPYFLAGS_lpc32xx-boot-0.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) 1051 OBJCOPYFLAGS_lpc32xx-boot-0.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO)
1052 1052
1053 lpc32xx-boot-0.bin: lpc32xx-spl.img FORCE 1053 lpc32xx-boot-0.bin: lpc32xx-spl.img FORCE
1054 $(call if_changed,objcopy) 1054 $(call if_changed,objcopy)
1055 1055
1056 OBJCOPYFLAGS_lpc32xx-boot-1.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) 1056 OBJCOPYFLAGS_lpc32xx-boot-1.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO)
1057 1057
1058 lpc32xx-boot-1.bin: lpc32xx-spl.img FORCE 1058 lpc32xx-boot-1.bin: lpc32xx-spl.img FORCE
1059 $(call if_changed,objcopy) 1059 $(call if_changed,objcopy)
1060 1060
1061 lpc32xx-full.bin: lpc32xx-boot-0.bin lpc32xx-boot-1.bin u-boot.img FORCE 1061 lpc32xx-full.bin: lpc32xx-boot-0.bin lpc32xx-boot-1.bin u-boot.img FORCE
1062 $(call if_changed,cat) 1062 $(call if_changed,cat)
1063 1063
1064 CLEAN_FILES += lpc32xx-* 1064 CLEAN_FILES += lpc32xx-*
1065 1065
1066 OBJCOPYFLAGS_u-boot-with-tpl.bin = -I binary -O binary \ 1066 OBJCOPYFLAGS_u-boot-with-tpl.bin = -I binary -O binary \
1067 --pad-to=$(CONFIG_TPL_PAD_TO) 1067 --pad-to=$(CONFIG_TPL_PAD_TO)
1068 tpl/u-boot-with-tpl.bin: tpl/u-boot-tpl.bin u-boot.bin FORCE 1068 tpl/u-boot-with-tpl.bin: tpl/u-boot-tpl.bin u-boot.bin FORCE
1069 $(call if_changed,pad_cat) 1069 $(call if_changed,pad_cat)
1070 1070
1071 SPL: spl/u-boot-spl.bin FORCE 1071 SPL: spl/u-boot-spl.bin FORCE
1072 $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@ 1072 $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@
1073 1073
1074 u-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL u-boot.bin FORCE 1074 u-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL u-boot.bin FORCE
1075 $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@ 1075 $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@
1076 1076
1077 MKIMAGEFLAGS_u-boot.ubl = -n $(UBL_CONFIG) -T ublimage -e $(CONFIG_SYS_TEXT_BASE) 1077 MKIMAGEFLAGS_u-boot.ubl = -n $(UBL_CONFIG) -T ublimage -e $(CONFIG_SYS_TEXT_BASE)
1078 1078
1079 u-boot.ubl: u-boot-with-spl.bin FORCE 1079 u-boot.ubl: u-boot-with-spl.bin FORCE
1080 $(call if_changed,mkimage) 1080 $(call if_changed,mkimage)
1081 1081
1082 MKIMAGEFLAGS_u-boot-spl.ais = -s -n $(if $(CONFIG_AIS_CONFIG_FILE), \ 1082 MKIMAGEFLAGS_u-boot-spl.ais = -s -n $(if $(CONFIG_AIS_CONFIG_FILE), \
1083 $(srctree)/$(CONFIG_AIS_CONFIG_FILE:"%"=%),"/dev/null") \ 1083 $(srctree)/$(CONFIG_AIS_CONFIG_FILE:"%"=%),"/dev/null") \
1084 -T aisimage -e $(CONFIG_SPL_TEXT_BASE) 1084 -T aisimage -e $(CONFIG_SPL_TEXT_BASE)
1085 spl/u-boot-spl.ais: spl/u-boot-spl.bin FORCE 1085 spl/u-boot-spl.ais: spl/u-boot-spl.bin FORCE
1086 $(call if_changed,mkimage) 1086 $(call if_changed,mkimage)
1087 1087
1088 OBJCOPYFLAGS_u-boot.ais = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) 1088 OBJCOPYFLAGS_u-boot.ais = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO)
1089 u-boot.ais: spl/u-boot-spl.ais u-boot.img FORCE 1089 u-boot.ais: spl/u-boot-spl.ais u-boot.img FORCE
1090 $(call if_changed,pad_cat) 1090 $(call if_changed,pad_cat)
1091 1091
1092 u-boot-signed.sb: u-boot.bin spl/u-boot-spl.bin 1092 u-boot-signed.sb: u-boot.bin spl/u-boot-spl.bin
1093 $(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs u-boot-signed.sb 1093 $(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs u-boot-signed.sb
1094 u-boot.sb: u-boot.bin spl/u-boot-spl.bin 1094 u-boot.sb: u-boot.bin spl/u-boot-spl.bin
1095 $(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs u-boot.sb 1095 $(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs u-boot.sb
1096 1096
1097 # On x600 (SPEAr600) U-Boot is appended to U-Boot SPL. 1097 # On x600 (SPEAr600) U-Boot is appended to U-Boot SPL.
1098 # Both images are created using mkimage (crc etc), so that the ROM 1098 # Both images are created using mkimage (crc etc), so that the ROM
1099 # bootloader can check its integrity. Padding needs to be done to the 1099 # bootloader can check its integrity. Padding needs to be done to the
1100 # SPL image (with mkimage header) and not the binary. Otherwise the resulting image 1100 # SPL image (with mkimage header) and not the binary. Otherwise the resulting image
1101 # which is loaded/copied by the ROM bootloader to SRAM doesn't fit. 1101 # which is loaded/copied by the ROM bootloader to SRAM doesn't fit.
1102 # The resulting image containing both U-Boot images is called u-boot.spr 1102 # The resulting image containing both U-Boot images is called u-boot.spr
1103 MKIMAGEFLAGS_u-boot-spl.img = -A $(ARCH) -T firmware -C none \ 1103 MKIMAGEFLAGS_u-boot-spl.img = -A $(ARCH) -T firmware -C none \
1104 -a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n XLOADER 1104 -a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n XLOADER
1105 spl/u-boot-spl.img: spl/u-boot-spl.bin FORCE 1105 spl/u-boot-spl.img: spl/u-boot-spl.bin FORCE
1106 $(call if_changed,mkimage) 1106 $(call if_changed,mkimage)
1107 1107
1108 OBJCOPYFLAGS_u-boot.spr = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \ 1108 OBJCOPYFLAGS_u-boot.spr = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \
1109 --gap-fill=0xff 1109 --gap-fill=0xff
1110 u-boot.spr: spl/u-boot-spl.img u-boot.img FORCE 1110 u-boot.spr: spl/u-boot-spl.img u-boot.img FORCE
1111 $(call if_changed,pad_cat) 1111 $(call if_changed,pad_cat)
1112 1112
1113 ifneq ($(CONFIG_ARCH_SOCFPGA),) 1113 ifneq ($(CONFIG_ARCH_SOCFPGA),)
1114 quiet_cmd_socboot = SOCBOOT $@ 1114 quiet_cmd_socboot = SOCBOOT $@
1115 cmd_socboot = cat spl/u-boot-spl.sfp spl/u-boot-spl.sfp \ 1115 cmd_socboot = cat spl/u-boot-spl.sfp spl/u-boot-spl.sfp \
1116 spl/u-boot-spl.sfp spl/u-boot-spl.sfp \ 1116 spl/u-boot-spl.sfp spl/u-boot-spl.sfp \
1117 u-boot.img > $@ || rm -f $@ 1117 u-boot.img > $@ || rm -f $@
1118 u-boot-with-spl.sfp: spl/u-boot-spl.sfp u-boot.img FORCE 1118 u-boot-with-spl.sfp: spl/u-boot-spl.sfp u-boot.img FORCE
1119 $(call if_changed,socboot) 1119 $(call if_changed,socboot)
1120 endif 1120 endif
1121 1121
1122 # x86 uses a large ROM. We fill it with 0xff, put the 16-bit stuff (including 1122 # x86 uses a large ROM. We fill it with 0xff, put the 16-bit stuff (including
1123 # reset vector) at the top, Intel ME descriptor at the bottom, and U-Boot in 1123 # reset vector) at the top, Intel ME descriptor at the bottom, and U-Boot in
1124 # the middle. This is handled by binman based on an image description in the 1124 # the middle. This is handled by binman based on an image description in the
1125 # board's device tree. 1125 # board's device tree.
1126 ifneq ($(CONFIG_X86_RESET_VECTOR),) 1126 ifneq ($(CONFIG_X86_RESET_VECTOR),)
1127 rom: u-boot.rom FORCE 1127 rom: u-boot.rom FORCE
1128 1128
1129 refcode.bin: $(srctree)/board/$(BOARDDIR)/refcode.bin FORCE 1129 refcode.bin: $(srctree)/board/$(BOARDDIR)/refcode.bin FORCE
1130 $(call if_changed,copy) 1130 $(call if_changed,copy)
1131 1131
1132 quiet_cmd_ldr = LD $@ 1132 quiet_cmd_ldr = LD $@
1133 cmd_ldr = $(LD) $(LDFLAGS_$(@F)) \ 1133 cmd_ldr = $(LD) $(LDFLAGS_$(@F)) \
1134 $(filter-out FORCE,$^) -o $@ 1134 $(filter-out FORCE,$^) -o $@
1135 1135
1136 u-boot.rom: u-boot-x86-16bit.bin u-boot.bin \ 1136 u-boot.rom: u-boot-x86-16bit.bin u-boot.bin \
1137 $(if $(CONFIG_SPL_X86_16BIT_INIT),spl/u-boot-spl.bin) \ 1137 $(if $(CONFIG_SPL_X86_16BIT_INIT),spl/u-boot-spl.bin) \
1138 $(if $(CONFIG_HAVE_REFCODE),refcode.bin) checkbinman FORCE 1138 $(if $(CONFIG_HAVE_REFCODE),refcode.bin) checkbinman FORCE
1139 $(call if_changed,binman) 1139 $(call if_changed,binman)
1140 1140
1141 OBJCOPYFLAGS_u-boot-x86-16bit.bin := -O binary -j .start16 -j .resetvec 1141 OBJCOPYFLAGS_u-boot-x86-16bit.bin := -O binary -j .start16 -j .resetvec
1142 u-boot-x86-16bit.bin: u-boot FORCE 1142 u-boot-x86-16bit.bin: u-boot FORCE
1143 $(call if_changed,objcopy) 1143 $(call if_changed,objcopy)
1144 endif 1144 endif
1145 1145
1146 ifneq ($(CONFIG_ARCH_SUNXI),) 1146 ifneq ($(CONFIG_ARCH_SUNXI),)
1147 u-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.img u-boot.dtb \ 1147 u-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.img u-boot.dtb \
1148 checkbinman FORCE 1148 checkbinman FORCE
1149 $(call if_changed,binman) 1149 $(call if_changed,binman)
1150 endif 1150 endif
1151 1151
1152 ifneq ($(CONFIG_TEGRA),) 1152 ifneq ($(CONFIG_TEGRA),)
1153 OBJCOPYFLAGS_u-boot-nodtb-tegra.bin = -O binary --pad-to=$(CONFIG_SYS_TEXT_BASE) 1153 OBJCOPYFLAGS_u-boot-nodtb-tegra.bin = -O binary --pad-to=$(CONFIG_SYS_TEXT_BASE)
1154 u-boot-nodtb-tegra.bin: spl/u-boot-spl u-boot-nodtb.bin FORCE 1154 u-boot-nodtb-tegra.bin: spl/u-boot-spl u-boot-nodtb.bin FORCE
1155 $(call if_changed,pad_cat) 1155 $(call if_changed,pad_cat)
1156 1156
1157 OBJCOPYFLAGS_u-boot-tegra.bin = -O binary --pad-to=$(CONFIG_SYS_TEXT_BASE) 1157 OBJCOPYFLAGS_u-boot-tegra.bin = -O binary --pad-to=$(CONFIG_SYS_TEXT_BASE)
1158 u-boot-tegra.bin: spl/u-boot-spl u-boot.bin FORCE 1158 u-boot-tegra.bin: spl/u-boot-spl u-boot.bin FORCE
1159 $(call if_changed,pad_cat) 1159 $(call if_changed,pad_cat)
1160 1160
1161 u-boot-dtb-tegra.bin: u-boot-tegra.bin FORCE 1161 u-boot-dtb-tegra.bin: u-boot-tegra.bin FORCE
1162 $(call if_changed,copy) 1162 $(call if_changed,copy)
1163 endif 1163 endif
1164 1164
1165 OBJCOPYFLAGS_u-boot-app.efi := $(OBJCOPYFLAGS_EFI) 1165 OBJCOPYFLAGS_u-boot-app.efi := $(OBJCOPYFLAGS_EFI)
1166 u-boot-app.efi: u-boot FORCE 1166 u-boot-app.efi: u-boot FORCE
1167 $(call if_changed,zobjcopy) 1167 $(call if_changed,zobjcopy)
1168 1168
1169 u-boot.bin.o: u-boot.bin FORCE 1169 u-boot.bin.o: u-boot.bin FORCE
1170 $(call if_changed,efipayload) 1170 $(call if_changed,efipayload)
1171 1171
1172 u-boot-payload.lds: $(LDSCRIPT_EFI) FORCE 1172 u-boot-payload.lds: $(LDSCRIPT_EFI) FORCE
1173 $(call if_changed_dep,cpp_lds) 1173 $(call if_changed_dep,cpp_lds)
1174 1174
1175 # Rule to link the EFI payload which contains a stub and a U-Boot binary 1175 # Rule to link the EFI payload which contains a stub and a U-Boot binary
1176 quiet_cmd_u-boot_payload ?= LD $@ 1176 quiet_cmd_u-boot_payload ?= LD $@
1177 cmd_u-boot_payload ?= $(LD) $(LDFLAGS_EFI_PAYLOAD) -o $@ \ 1177 cmd_u-boot_payload ?= $(LD) $(LDFLAGS_EFI_PAYLOAD) -o $@ \
1178 -T u-boot-payload.lds arch/x86/cpu/call32.o \ 1178 -T u-boot-payload.lds arch/x86/cpu/call32.o \
1179 lib/efi/efi.o lib/efi/efi_stub.o u-boot.bin.o \ 1179 lib/efi/efi.o lib/efi/efi_stub.o u-boot.bin.o \
1180 $(addprefix arch/$(ARCH)/lib/,$(EFISTUB)) 1180 $(addprefix arch/$(ARCH)/lib/,$(EFISTUB))
1181 1181
1182 u-boot-payload: u-boot.bin.o u-boot-payload.lds FORCE 1182 u-boot-payload: u-boot.bin.o u-boot-payload.lds FORCE
1183 $(call if_changed,u-boot_payload) 1183 $(call if_changed,u-boot_payload)
1184 1184
1185 OBJCOPYFLAGS_u-boot-payload.efi := $(OBJCOPYFLAGS_EFI) 1185 OBJCOPYFLAGS_u-boot-payload.efi := $(OBJCOPYFLAGS_EFI)
1186 u-boot-payload.efi: u-boot-payload FORCE 1186 u-boot-payload.efi: u-boot-payload FORCE
1187 $(call if_changed,zobjcopy) 1187 $(call if_changed,zobjcopy)
1188 1188
1189 u-boot-img.bin: spl/u-boot-spl.bin u-boot.img FORCE 1189 u-boot-img.bin: spl/u-boot-spl.bin u-boot.img FORCE
1190 $(call if_changed,cat) 1190 $(call if_changed,cat)
1191 1191
1192 #Add a target to create boot binary having SPL binary in PBI format 1192 #Add a target to create boot binary having SPL binary in PBI format
1193 #concatenated with u-boot binary. It is need by PowerPC SoC having 1193 #concatenated with u-boot binary. It is need by PowerPC SoC having
1194 #internal SRAM <= 512KB. 1194 #internal SRAM <= 512KB.
1195 MKIMAGEFLAGS_u-boot-spl.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \ 1195 MKIMAGEFLAGS_u-boot-spl.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \
1196 -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage \ 1196 -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage \
1197 -A $(ARCH) -a $(CONFIG_SPL_TEXT_BASE) 1197 -A $(ARCH) -a $(CONFIG_SPL_TEXT_BASE)
1198 1198
1199 spl/u-boot-spl.pbl: spl/u-boot-spl.bin FORCE 1199 spl/u-boot-spl.pbl: spl/u-boot-spl.bin FORCE
1200 $(call if_changed,mkimage) 1200 $(call if_changed,mkimage)
1201 1201
1202 ifeq ($(ARCH),arm) 1202 ifeq ($(ARCH),arm)
1203 UBOOT_BINLOAD := u-boot.img 1203 UBOOT_BINLOAD := u-boot.img
1204 else 1204 else
1205 UBOOT_BINLOAD := u-boot.bin 1205 UBOOT_BINLOAD := u-boot.bin
1206 endif 1206 endif
1207 1207
1208 OBJCOPYFLAGS_u-boot-with-spl-pbl.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \ 1208 OBJCOPYFLAGS_u-boot-with-spl-pbl.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \
1209 --gap-fill=0xff 1209 --gap-fill=0xff
1210 1210
1211 u-boot-with-spl-pbl.bin: spl/u-boot-spl.pbl $(UBOOT_BINLOAD) FORCE 1211 u-boot-with-spl-pbl.bin: spl/u-boot-spl.pbl $(UBOOT_BINLOAD) FORCE
1212 $(call if_changed,pad_cat) 1212 $(call if_changed,pad_cat)
1213 1213
1214 # PPC4xx needs the SPL at the end of the image, since the reset vector 1214 # PPC4xx needs the SPL at the end of the image, since the reset vector
1215 # is located at 0xfffffffc. So we can't use the "u-boot-img.bin" target 1215 # is located at 0xfffffffc. So we can't use the "u-boot-img.bin" target
1216 # and need to introduce a new build target with the full blown U-Boot 1216 # and need to introduce a new build target with the full blown U-Boot
1217 # at the start padded up to the start of the SPL image. And then concat 1217 # at the start padded up to the start of the SPL image. And then concat
1218 # the SPL image to the end. 1218 # the SPL image to the end.
1219 1219
1220 OBJCOPYFLAGS_u-boot-img-spl-at-end.bin := -I binary -O binary \ 1220 OBJCOPYFLAGS_u-boot-img-spl-at-end.bin := -I binary -O binary \
1221 --pad-to=$(CONFIG_UBOOT_PAD_TO) --gap-fill=0xff 1221 --pad-to=$(CONFIG_UBOOT_PAD_TO) --gap-fill=0xff
1222 u-boot-img-spl-at-end.bin: u-boot.img spl/u-boot-spl.bin FORCE 1222 u-boot-img-spl-at-end.bin: u-boot.img spl/u-boot-spl.bin FORCE
1223 $(call if_changed,pad_cat) 1223 $(call if_changed,pad_cat)
1224 1224
1225 # Create a new ELF from a raw binary file. 1225 # Create a new ELF from a raw binary file.
1226 ifndef PLATFORM_ELFENTRY 1226 ifndef PLATFORM_ELFENTRY
1227 PLATFORM_ELFENTRY = "_start" 1227 PLATFORM_ELFENTRY = "_start"
1228 endif 1228 endif
1229 quiet_cmd_u-boot-elf ?= LD $@ 1229 quiet_cmd_u-boot-elf ?= LD $@
1230 cmd_u-boot-elf ?= $(LD) u-boot-elf.o -o $@ \ 1230 cmd_u-boot-elf ?= $(LD) u-boot-elf.o -o $@ \
1231 --defsym=$(PLATFORM_ELFENTRY)=$(CONFIG_SYS_TEXT_BASE) \ 1231 --defsym=$(PLATFORM_ELFENTRY)=$(CONFIG_SYS_TEXT_BASE) \
1232 -Ttext=$(CONFIG_SYS_TEXT_BASE) 1232 -Ttext=$(CONFIG_SYS_TEXT_BASE)
1233 u-boot.elf: u-boot.bin 1233 u-boot.elf: u-boot.bin
1234 $(Q)$(OBJCOPY) -I binary $(PLATFORM_ELFFLAGS) $< u-boot-elf.o 1234 $(Q)$(OBJCOPY) -I binary $(PLATFORM_ELFFLAGS) $< u-boot-elf.o
1235 $(call if_changed,u-boot-elf) 1235 $(call if_changed,u-boot-elf)
1236 1236
1237 ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(ARCH)/Makefile.postlink) 1237 ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(ARCH)/Makefile.postlink)
1238 1238
1239 # Rule to link u-boot 1239 # Rule to link u-boot
1240 # May be overridden by arch/$(ARCH)/config.mk 1240 # May be overridden by arch/$(ARCH)/config.mk
1241 quiet_cmd_u-boot__ ?= LD $@ 1241 quiet_cmd_u-boot__ ?= LD $@
1242 cmd_u-boot__ ?= $(LD) $(LDFLAGS) $(LDFLAGS_u-boot) -o $@ \ 1242 cmd_u-boot__ ?= $(LD) $(LDFLAGS) $(LDFLAGS_u-boot) -o $@ \
1243 -T u-boot.lds $(u-boot-init) \ 1243 -T u-boot.lds $(u-boot-init) \
1244 --start-group $(u-boot-main) --end-group \ 1244 --start-group $(u-boot-main) --end-group \
1245 $(PLATFORM_LIBS) -Map u-boot.map; \ 1245 $(PLATFORM_LIBS) -Map u-boot.map; \
1246 $(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true) 1246 $(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true)
1247 1247
1248 quiet_cmd_smap = GEN common/system_map.o 1248 quiet_cmd_smap = GEN common/system_map.o
1249 cmd_smap = \ 1249 cmd_smap = \
1250 smap=`$(call SYSTEM_MAP,u-boot) | \ 1250 smap=`$(call SYSTEM_MAP,u-boot) | \
1251 awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \ 1251 awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \
1252 $(CC) $(c_flags) -DSYSTEM_MAP="\"$${smap}\"" \ 1252 $(CC) $(c_flags) -DSYSTEM_MAP="\"$${smap}\"" \
1253 -c $(srctree)/common/system_map.c -o common/system_map.o 1253 -c $(srctree)/common/system_map.c -o common/system_map.o
1254 1254
1255 u-boot: $(u-boot-init) $(u-boot-main) u-boot.lds FORCE 1255 u-boot: $(u-boot-init) $(u-boot-main) u-boot.lds FORCE
1256 +$(call if_changed,u-boot__) 1256 +$(call if_changed,u-boot__)
1257 ifeq ($(CONFIG_KALLSYMS),y) 1257 ifeq ($(CONFIG_KALLSYMS),y)
1258 $(call cmd,smap) 1258 $(call cmd,smap)
1259 $(call cmd,u-boot__) common/system_map.o 1259 $(call cmd,u-boot__) common/system_map.o
1260 endif 1260 endif
1261 1261
1262 quiet_cmd_sym ?= SYM $@ 1262 quiet_cmd_sym ?= SYM $@
1263 cmd_sym ?= $(OBJDUMP) -t $< > $@ 1263 cmd_sym ?= $(OBJDUMP) -t $< > $@
1264 u-boot.sym: u-boot FORCE 1264 u-boot.sym: u-boot FORCE
1265 $(call if_changed,sym) 1265 $(call if_changed,sym)
1266 1266
1267 # The actual objects are generated when descending, 1267 # The actual objects are generated when descending,
1268 # make sure no implicit rule kicks in 1268 # make sure no implicit rule kicks in
1269 $(sort $(u-boot-init) $(u-boot-main)): $(u-boot-dirs) ; 1269 $(sort $(u-boot-init) $(u-boot-main)): $(u-boot-dirs) ;
1270 1270
1271 # Handle descending into subdirectories listed in $(vmlinux-dirs) 1271 # Handle descending into subdirectories listed in $(vmlinux-dirs)
1272 # Preset locale variables to speed up the build process. Limit locale 1272 # Preset locale variables to speed up the build process. Limit locale
1273 # tweaks to this spot to avoid wrong language settings when running 1273 # tweaks to this spot to avoid wrong language settings when running
1274 # make menuconfig etc. 1274 # make menuconfig etc.
1275 # Error messages still appears in the original language 1275 # Error messages still appears in the original language
1276 1276
1277 PHONY += $(u-boot-dirs) 1277 PHONY += $(u-boot-dirs)
1278 $(u-boot-dirs): prepare scripts 1278 $(u-boot-dirs): prepare scripts
1279 $(Q)$(MAKE) $(build)=$@ 1279 $(Q)$(MAKE) $(build)=$@
1280 1280
1281 tools: prepare 1281 tools: prepare
1282 # The "tools" are needed early 1282 # The "tools" are needed early
1283 $(filter-out tools, $(u-boot-dirs)): tools 1283 $(filter-out tools, $(u-boot-dirs)): tools
1284 # The "examples" conditionally depend on U-Boot (say, when USE_PRIVATE_LIBGCC 1284 # The "examples" conditionally depend on U-Boot (say, when USE_PRIVATE_LIBGCC
1285 # is "yes"), so compile examples after U-Boot is compiled. 1285 # is "yes"), so compile examples after U-Boot is compiled.
1286 examples: $(filter-out examples, $(u-boot-dirs)) 1286 examples: $(filter-out examples, $(u-boot-dirs))
1287 1287
1288 define filechk_uboot.release 1288 define filechk_uboot.release
1289 echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))" 1289 echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
1290 endef 1290 endef
1291 1291
1292 # Store (new) UBOOTRELEASE string in include/config/uboot.release 1292 # Store (new) UBOOTRELEASE string in include/config/uboot.release
1293 include/config/uboot.release: include/config/auto.conf FORCE 1293 include/config/uboot.release: include/config/auto.conf FORCE
1294 $(call filechk,uboot.release) 1294 $(call filechk,uboot.release)
1295 1295
1296 1296
1297 # Things we need to do before we recursively start building the kernel 1297 # Things we need to do before we recursively start building the kernel
1298 # or the modules are listed in "prepare". 1298 # or the modules are listed in "prepare".
1299 # A multi level approach is used. prepareN is processed before prepareN-1. 1299 # A multi level approach is used. prepareN is processed before prepareN-1.
1300 # archprepare is used in arch Makefiles and when processed asm symlink, 1300 # archprepare is used in arch Makefiles and when processed asm symlink,
1301 # version.h and scripts_basic is processed / created. 1301 # version.h and scripts_basic is processed / created.
1302 1302
1303 # Listed in dependency order 1303 # Listed in dependency order
1304 PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3 1304 PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3
1305 1305
1306 # prepare3 is used to check if we are building in a separate output directory, 1306 # prepare3 is used to check if we are building in a separate output directory,
1307 # and if so do: 1307 # and if so do:
1308 # 1) Check that make has not been executed in the kernel src $(srctree) 1308 # 1) Check that make has not been executed in the kernel src $(srctree)
1309 prepare3: include/config/uboot.release 1309 prepare3: include/config/uboot.release
1310 ifneq ($(KBUILD_SRC),) 1310 ifneq ($(KBUILD_SRC),)
1311 @$(kecho) ' Using $(srctree) as source for U-Boot' 1311 @$(kecho) ' Using $(srctree) as source for U-Boot'
1312 $(Q)if [ -f $(srctree)/.config -o -d $(srctree)/include/config ]; then \ 1312 $(Q)if [ -f $(srctree)/.config -o -d $(srctree)/include/config ]; then \
1313 echo >&2 " $(srctree) is not clean, please run 'make mrproper'"; \ 1313 echo >&2 " $(srctree) is not clean, please run 'make mrproper'"; \
1314 echo >&2 " in the '$(srctree)' directory.";\ 1314 echo >&2 " in the '$(srctree)' directory.";\
1315 /bin/false; \ 1315 /bin/false; \
1316 fi; 1316 fi;
1317 endif 1317 endif
1318 1318
1319 # prepare2 creates a makefile if using a separate output directory 1319 # prepare2 creates a makefile if using a separate output directory
1320 prepare2: prepare3 outputmakefile 1320 prepare2: prepare3 outputmakefile
1321 1321
1322 prepare1: prepare2 $(version_h) $(timestamp_h) \ 1322 prepare1: prepare2 $(version_h) $(timestamp_h) \
1323 include/config/auto.conf 1323 include/config/auto.conf
1324 ifeq ($(wildcard $(LDSCRIPT)),) 1324 ifeq ($(wildcard $(LDSCRIPT)),)
1325 @echo >&2 " Could not find linker script." 1325 @echo >&2 " Could not find linker script."
1326 @/bin/false 1326 @/bin/false
1327 endif 1327 endif
1328 1328
1329 archprepare: prepare1 scripts_basic 1329 archprepare: prepare1 scripts_basic
1330 1330
1331 prepare0: archprepare FORCE 1331 prepare0: archprepare FORCE
1332 $(Q)$(MAKE) $(build)=. 1332 $(Q)$(MAKE) $(build)=.
1333 1333
1334 # All the preparing.. 1334 # All the preparing..
1335 prepare: prepare0 1335 prepare: prepare0
1336 1336
1337 # Generate some files 1337 # Generate some files
1338 # --------------------------------------------------------------------------- 1338 # ---------------------------------------------------------------------------
1339 1339
1340 define filechk_version.h 1340 define filechk_version.h
1341 (echo \#define PLAIN_VERSION \"$(UBOOTRELEASE)\"; \ 1341 (echo \#define PLAIN_VERSION \"$(UBOOTRELEASE)\"; \
1342 echo \#define U_BOOT_VERSION \"U-Boot \" PLAIN_VERSION; \ 1342 echo \#define U_BOOT_VERSION \"U-Boot \" PLAIN_VERSION; \
1343 echo \#define CC_VERSION_STRING \"$$(LC_ALL=C $(CC) --version | head -n 1)\"; \ 1343 echo \#define CC_VERSION_STRING \"$$(LC_ALL=C $(CC) --version | head -n 1)\"; \
1344 echo \#define LD_VERSION_STRING \"$$(LC_ALL=C $(LD) --version | head -n 1)\"; ) 1344 echo \#define LD_VERSION_STRING \"$$(LC_ALL=C $(LD) --version | head -n 1)\"; )
1345 endef 1345 endef
1346 1346
1347 # The SOURCE_DATE_EPOCH mechanism requires a date that behaves like GNU date. 1347 # The SOURCE_DATE_EPOCH mechanism requires a date that behaves like GNU date.
1348 # The BSD date on the other hand behaves different and would produce errors 1348 # The BSD date on the other hand behaves different and would produce errors
1349 # with the misused '-d' switch. Respect that and search a working date with 1349 # with the misused '-d' switch. Respect that and search a working date with
1350 # well known pre- and suffixes for the GNU variant of date. 1350 # well known pre- and suffixes for the GNU variant of date.
1351 define filechk_timestamp.h 1351 define filechk_timestamp.h
1352 (if test -n "$${SOURCE_DATE_EPOCH}"; then \ 1352 (if test -n "$${SOURCE_DATE_EPOCH}"; then \
1353 SOURCE_DATE="@$${SOURCE_DATE_EPOCH}"; \ 1353 SOURCE_DATE="@$${SOURCE_DATE_EPOCH}"; \
1354 DATE=""; \ 1354 DATE=""; \
1355 for date in gdate date.gnu date; do \ 1355 for date in gdate date.gnu date; do \
1356 $${date} -u -d "$${SOURCE_DATE}" >/dev/null 2>&1 && DATE="$${date}"; \ 1356 $${date} -u -d "$${SOURCE_DATE}" >/dev/null 2>&1 && DATE="$${date}"; \
1357 done; \ 1357 done; \
1358 if test -n "$${DATE}"; then \ 1358 if test -n "$${DATE}"; then \
1359 LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_DATE "%b %d %C%y"'; \ 1359 LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_DATE "%b %d %C%y"'; \
1360 LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TIME "%T"'; \ 1360 LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TIME "%T"'; \
1361 LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TZ "%z"'; \ 1361 LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TZ "%z"'; \
1362 LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_DMI_DATE "%m/%d/%Y"'; \ 1362 LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_DMI_DATE "%m/%d/%Y"'; \
1363 LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_BUILD_DATE 0x%Y%m%d'; \ 1363 LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_BUILD_DATE 0x%Y%m%d'; \
1364 else \ 1364 else \
1365 return 42; \ 1365 return 42; \
1366 fi; \ 1366 fi; \
1367 else \ 1367 else \
1368 LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; \ 1368 LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; \
1369 LC_ALL=C date +'#define U_BOOT_TIME "%T"'; \ 1369 LC_ALL=C date +'#define U_BOOT_TIME "%T"'; \
1370 LC_ALL=C date +'#define U_BOOT_TZ "%z"'; \ 1370 LC_ALL=C date +'#define U_BOOT_TZ "%z"'; \
1371 LC_ALL=C date +'#define U_BOOT_DMI_DATE "%m/%d/%Y"'; \ 1371 LC_ALL=C date +'#define U_BOOT_DMI_DATE "%m/%d/%Y"'; \
1372 LC_ALL=C date +'#define U_BOOT_BUILD_DATE 0x%Y%m%d'; \ 1372 LC_ALL=C date +'#define U_BOOT_BUILD_DATE 0x%Y%m%d'; \
1373 fi) 1373 fi)
1374 endef 1374 endef
1375 1375
1376 $(version_h): include/config/uboot.release FORCE 1376 $(version_h): include/config/uboot.release FORCE
1377 $(call filechk,version.h) 1377 $(call filechk,version.h)
1378 1378
1379 $(timestamp_h): $(srctree)/Makefile FORCE 1379 $(timestamp_h): $(srctree)/Makefile FORCE
1380 $(call filechk,timestamp.h) 1380 $(call filechk,timestamp.h)
1381 1381
1382 checkbinman: tools 1382 checkbinman: tools
1383 @if ! ( echo 'import libfdt' | ( PYTHONPATH=tools $(PYTHON) )); then \ 1383 @if ! ( echo 'import libfdt' | ( PYTHONPATH=tools $(PYTHON) )); then \
1384 echo >&2; \ 1384 echo >&2; \
1385 echo >&2 '*** binman needs the Python libfdt library.'; \ 1385 echo >&2 '*** binman needs the Python libfdt library.'; \
1386 echo >&2 '*** Either install it on your system, or try:'; \ 1386 echo >&2 '*** Either install it on your system, or try:'; \
1387 echo >&2 '***'; \ 1387 echo >&2 '***'; \
1388 echo >&2 '*** sudo apt-get install swig libpython-dev'; \ 1388 echo >&2 '*** sudo apt-get install swig libpython-dev'; \
1389 echo >&2 '***'; \ 1389 echo >&2 '***'; \
1390 echo >&2 '*** to have U-Boot build its own version.'; \ 1390 echo >&2 '*** to have U-Boot build its own version.'; \
1391 false; \ 1391 false; \
1392 fi 1392 fi
1393 1393
1394 # --------------------------------------------------------------------------- 1394 # ---------------------------------------------------------------------------
1395 quiet_cmd_cpp_lds = LDS $@ 1395 quiet_cmd_cpp_lds = LDS $@
1396 cmd_cpp_lds = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) \ 1396 cmd_cpp_lds = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) \
1397 -D__ASSEMBLY__ -x assembler-with-cpp -P -o $@ $< 1397 -D__ASSEMBLY__ -x assembler-with-cpp -P -o $@ $<
1398 1398
1399 u-boot.lds: $(LDSCRIPT) prepare FORCE 1399 u-boot.lds: $(LDSCRIPT) prepare FORCE
1400 $(call if_changed_dep,cpp_lds) 1400 $(call if_changed_dep,cpp_lds)
1401 1401
1402 spl/u-boot-spl.bin: spl/u-boot-spl 1402 spl/u-boot-spl.bin: spl/u-boot-spl
1403 @: 1403 @:
1404 spl/u-boot-spl: tools prepare \ 1404 spl/u-boot-spl: tools prepare \
1405 $(if $(CONFIG_OF_SEPARATE)$(CONFIG_SPL_OF_PLATDATA),dts/dt.dtb) \ 1405 $(if $(CONFIG_OF_SEPARATE)$(CONFIG_SPL_OF_PLATDATA),dts/dt.dtb) \
1406 $(if $(CONFIG_OF_SEPARATE)$(CONFIG_TPL_OF_PLATDATA),dts/dt.dtb) 1406 $(if $(CONFIG_OF_SEPARATE)$(CONFIG_TPL_OF_PLATDATA),dts/dt.dtb)
1407 $(Q)$(MAKE) obj=spl -f $(srctree)/scripts/Makefile.spl all 1407 $(Q)$(MAKE) obj=spl -f $(srctree)/scripts/Makefile.spl all
1408 1408
1409 spl/sunxi-spl.bin: spl/u-boot-spl 1409 spl/sunxi-spl.bin: spl/u-boot-spl
1410 @: 1410 @:
1411 1411
1412 spl/sunxi-spl-with-ecc.bin: spl/sunxi-spl.bin 1412 spl/sunxi-spl-with-ecc.bin: spl/sunxi-spl.bin
1413 @: 1413 @:
1414 1414
1415 spl/u-boot-spl.sfp: spl/u-boot-spl 1415 spl/u-boot-spl.sfp: spl/u-boot-spl
1416 @: 1416 @:
1417 1417
1418 spl/boot.bin: spl/u-boot-spl 1418 spl/boot.bin: spl/u-boot-spl
1419 @: 1419 @:
1420 1420
1421 tpl/u-boot-tpl.bin: tools prepare \ 1421 tpl/u-boot-tpl.bin: tools prepare \
1422 $(if $(CONFIG_OF_SEPARATE)$(CONFIG_SPL_OF_PLATDATA),dts/dt.dtb) 1422 $(if $(CONFIG_OF_SEPARATE)$(CONFIG_SPL_OF_PLATDATA),dts/dt.dtb)
1423 $(Q)$(MAKE) obj=tpl -f $(srctree)/scripts/Makefile.spl all 1423 $(Q)$(MAKE) obj=tpl -f $(srctree)/scripts/Makefile.spl all
1424 1424
1425 TAG_SUBDIRS := $(patsubst %,$(srctree)/%,$(u-boot-dirs) include) 1425 TAG_SUBDIRS := $(patsubst %,$(srctree)/%,$(u-boot-dirs) include)
1426 1426
1427 FIND := find 1427 FIND := find
1428 FINDFLAGS := -L 1428 FINDFLAGS := -L
1429 1429
1430 tags ctags: 1430 tags ctags:
1431 ctags -w -o ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \ 1431 ctags -w -o ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
1432 -name '*.[chS]' -print` 1432 -name '*.[chS]' -print`
1433 ln -s ctags tags 1433 ln -s ctags tags
1434 1434
1435 etags: 1435 etags:
1436 etags -a -o etags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \ 1436 etags -a -o etags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
1437 -name '*.[chS]' -print` 1437 -name '*.[chS]' -print`
1438 cscope: 1438 cscope:
1439 $(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \ 1439 $(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \
1440 cscope.files 1440 cscope.files
1441 cscope -b -q -k 1441 cscope -b -q -k
1442 1442
1443 SYSTEM_MAP = \ 1443 SYSTEM_MAP = \
1444 $(NM) $1 | \ 1444 $(NM) $1 | \
1445 grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \ 1445 grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
1446 LC_ALL=C sort 1446 LC_ALL=C sort
1447 System.map: u-boot 1447 System.map: u-boot
1448 @$(call SYSTEM_MAP,$<) > $@ 1448 @$(call SYSTEM_MAP,$<) > $@
1449 1449
1450 checkdtc: 1450 checkdtc:
1451 @if test $(call dtc-version) -lt 0104; then \ 1451 @if test $(call dtc-version) -lt 010403; then \
1452 echo '*** Your dtc is too old, please upgrade to dtc 1.4 or newer'; \ 1452 echo '*** Your dtc is too old, please upgrade to dtc 1.4.3 or newer'; \
1453 false; \ 1453 false; \
1454 fi 1454 fi
1455 1455
1456 ######################################################################### 1456 #########################################################################
1457 1457
1458 # ARM relocations should all be R_ARM_RELATIVE (32-bit) or 1458 # ARM relocations should all be R_ARM_RELATIVE (32-bit) or
1459 # R_AARCH64_RELATIVE (64-bit). 1459 # R_AARCH64_RELATIVE (64-bit).
1460 checkarmreloc: u-boot 1460 checkarmreloc: u-boot
1461 @RELOC="`$(CROSS_COMPILE)readelf -r -W $< | cut -d ' ' -f 4 | \ 1461 @RELOC="`$(CROSS_COMPILE)readelf -r -W $< | cut -d ' ' -f 4 | \
1462 grep R_A | sort -u`"; \ 1462 grep R_A | sort -u`"; \
1463 if test "$$RELOC" != "R_ARM_RELATIVE" -a \ 1463 if test "$$RELOC" != "R_ARM_RELATIVE" -a \
1464 "$$RELOC" != "R_AARCH64_RELATIVE"; then \ 1464 "$$RELOC" != "R_AARCH64_RELATIVE"; then \
1465 echo "$< contains unexpected relocations: $$RELOC"; \ 1465 echo "$< contains unexpected relocations: $$RELOC"; \
1466 false; \ 1466 false; \
1467 fi 1467 fi
1468 1468
1469 envtools: scripts_basic 1469 envtools: scripts_basic
1470 $(Q)$(MAKE) $(build)=tools/env 1470 $(Q)$(MAKE) $(build)=tools/env
1471 1471
1472 tools-only: scripts_basic $(version_h) $(timestamp_h) 1472 tools-only: scripts_basic $(version_h) $(timestamp_h)
1473 $(Q)$(MAKE) $(build)=tools 1473 $(Q)$(MAKE) $(build)=tools
1474 1474
1475 tools-all: export HOST_TOOLS_ALL=y 1475 tools-all: export HOST_TOOLS_ALL=y
1476 tools-all: envtools tools ; 1476 tools-all: envtools tools ;
1477 1477
1478 cross_tools: export CROSS_BUILD_TOOLS=y 1478 cross_tools: export CROSS_BUILD_TOOLS=y
1479 cross_tools: tools ; 1479 cross_tools: tools ;
1480 1480
1481 .PHONY : CHANGELOG 1481 .PHONY : CHANGELOG
1482 CHANGELOG: 1482 CHANGELOG:
1483 git log --no-merges U-Boot-1_1_5.. | \ 1483 git log --no-merges U-Boot-1_1_5.. | \
1484 unexpand -a | sed -e 's/\s\s*$$//' > $@ 1484 unexpand -a | sed -e 's/\s\s*$$//' > $@
1485 1485
1486 ######################################################################### 1486 #########################################################################
1487 1487
1488 ### 1488 ###
1489 # Cleaning is done on three levels. 1489 # Cleaning is done on three levels.
1490 # make clean Delete most generated files 1490 # make clean Delete most generated files
1491 # Leave enough to build external modules 1491 # Leave enough to build external modules
1492 # make mrproper Delete the current configuration, and all generated files 1492 # make mrproper Delete the current configuration, and all generated files
1493 # make distclean Remove editor backup files, patch leftover files and the like 1493 # make distclean Remove editor backup files, patch leftover files and the like
1494 1494
1495 # Directories & files removed with 'make clean' 1495 # Directories & files removed with 'make clean'
1496 CLEAN_DIRS += $(MODVERDIR) \ 1496 CLEAN_DIRS += $(MODVERDIR) \
1497 $(foreach d, spl tpl, $(patsubst %,$d/%, \ 1497 $(foreach d, spl tpl, $(patsubst %,$d/%, \
1498 $(filter-out include, $(shell ls -1 $d 2>/dev/null)))) 1498 $(filter-out include, $(shell ls -1 $d 2>/dev/null))))
1499 1499
1500 CLEAN_FILES += include/bmp_logo.h include/bmp_logo_data.h \ 1500 CLEAN_FILES += include/bmp_logo.h include/bmp_logo_data.h \
1501 boot* u-boot* MLO* SPL System.map fit-dtb.blob 1501 boot* u-boot* MLO* SPL System.map fit-dtb.blob
1502 1502
1503 # Directories & files removed with 'make mrproper' 1503 # Directories & files removed with 'make mrproper'
1504 MRPROPER_DIRS += include/config include/generated spl tpl \ 1504 MRPROPER_DIRS += include/config include/generated spl tpl \
1505 .tmp_objdiff 1505 .tmp_objdiff
1506 MRPROPER_FILES += .config .config.old include/autoconf.mk* include/config.h \ 1506 MRPROPER_FILES += .config .config.old include/autoconf.mk* include/config.h \
1507 ctags etags tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS 1507 ctags etags tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS
1508 1508
1509 # clean - Delete most, but leave enough to build external modules 1509 # clean - Delete most, but leave enough to build external modules
1510 # 1510 #
1511 clean: rm-dirs := $(CLEAN_DIRS) 1511 clean: rm-dirs := $(CLEAN_DIRS)
1512 clean: rm-files := $(CLEAN_FILES) 1512 clean: rm-files := $(CLEAN_FILES)
1513 1513
1514 clean-dirs := $(foreach f,$(u-boot-alldirs),$(if $(wildcard $(srctree)/$f/Makefile),$f)) 1514 clean-dirs := $(foreach f,$(u-boot-alldirs),$(if $(wildcard $(srctree)/$f/Makefile),$f))
1515 1515
1516 clean-dirs := $(addprefix _clean_, $(clean-dirs) doc/DocBook) 1516 clean-dirs := $(addprefix _clean_, $(clean-dirs) doc/DocBook)
1517 1517
1518 PHONY += $(clean-dirs) clean archclean 1518 PHONY += $(clean-dirs) clean archclean
1519 $(clean-dirs): 1519 $(clean-dirs):
1520 $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@) 1520 $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@)
1521 1521
1522 # TODO: Do not use *.cfgtmp 1522 # TODO: Do not use *.cfgtmp
1523 clean: $(clean-dirs) 1523 clean: $(clean-dirs)
1524 $(call cmd,rmdirs) 1524 $(call cmd,rmdirs)
1525 $(call cmd,rmfiles) 1525 $(call cmd,rmfiles)
1526 @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \ 1526 @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \
1527 \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \ 1527 \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
1528 -o -name '*.ko.*' -o -name '*.su' -o -name '*.cfgtmp' \ 1528 -o -name '*.ko.*' -o -name '*.su' -o -name '*.cfgtmp' \
1529 -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \ 1529 -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
1530 -o -name '*.symtypes' -o -name 'modules.order' \ 1530 -o -name '*.symtypes' -o -name 'modules.order' \
1531 -o -name modules.builtin -o -name '.tmp_*.o.*' \ 1531 -o -name modules.builtin -o -name '.tmp_*.o.*' \
1532 -o -name 'dsdt.aml' -o -name 'dsdt.asl.tmp' -o -name 'dsdt.c' \ 1532 -o -name 'dsdt.aml' -o -name 'dsdt.asl.tmp' -o -name 'dsdt.c' \
1533 -o -name '*.gcno' \) -type f -print | xargs rm -f 1533 -o -name '*.gcno' \) -type f -print | xargs rm -f
1534 1534
1535 # mrproper - Delete all generated files, including .config 1535 # mrproper - Delete all generated files, including .config
1536 # 1536 #
1537 mrproper: rm-dirs := $(wildcard $(MRPROPER_DIRS)) 1537 mrproper: rm-dirs := $(wildcard $(MRPROPER_DIRS))
1538 mrproper: rm-files := $(wildcard $(MRPROPER_FILES)) 1538 mrproper: rm-files := $(wildcard $(MRPROPER_FILES))
1539 mrproper-dirs := $(addprefix _mrproper_,scripts) 1539 mrproper-dirs := $(addprefix _mrproper_,scripts)
1540 1540
1541 PHONY += $(mrproper-dirs) mrproper archmrproper 1541 PHONY += $(mrproper-dirs) mrproper archmrproper
1542 $(mrproper-dirs): 1542 $(mrproper-dirs):
1543 $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@) 1543 $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@)
1544 1544
1545 mrproper: clean $(mrproper-dirs) 1545 mrproper: clean $(mrproper-dirs)
1546 $(call cmd,rmdirs) 1546 $(call cmd,rmdirs)
1547 $(call cmd,rmfiles) 1547 $(call cmd,rmfiles)
1548 @rm -f arch/*/include/asm/arch 1548 @rm -f arch/*/include/asm/arch
1549 1549
1550 # distclean 1550 # distclean
1551 # 1551 #
1552 PHONY += distclean 1552 PHONY += distclean
1553 1553
1554 distclean: mrproper 1554 distclean: mrproper
1555 @find $(srctree) $(RCS_FIND_IGNORE) \ 1555 @find $(srctree) $(RCS_FIND_IGNORE) \
1556 \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ 1556 \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
1557 -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ 1557 -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
1558 -o -name '.*.rej' -o -name '*%' -o -name 'core' \ 1558 -o -name '.*.rej' -o -name '*%' -o -name 'core' \
1559 -o -name '*.pyc' \) \ 1559 -o -name '*.pyc' \) \
1560 -type f -print | xargs rm -f 1560 -type f -print | xargs rm -f
1561 @rm -f boards.cfg 1561 @rm -f boards.cfg
1562 1562
1563 backup: 1563 backup:
1564 F=`basename $(srctree)` ; cd .. ; \ 1564 F=`basename $(srctree)` ; cd .. ; \
1565 gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F 1565 gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F
1566 1566
1567 help: 1567 help:
1568 @echo 'Cleaning targets:' 1568 @echo 'Cleaning targets:'
1569 @echo ' clean - Remove most generated files but keep the config' 1569 @echo ' clean - Remove most generated files but keep the config'
1570 @echo ' mrproper - Remove all generated files + config + various backup files' 1570 @echo ' mrproper - Remove all generated files + config + various backup files'
1571 @echo ' distclean - mrproper + remove editor backup and patch files' 1571 @echo ' distclean - mrproper + remove editor backup and patch files'
1572 @echo '' 1572 @echo ''
1573 @echo 'Configuration targets:' 1573 @echo 'Configuration targets:'
1574 @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help 1574 @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help
1575 @echo '' 1575 @echo ''
1576 @echo 'Other generic targets:' 1576 @echo 'Other generic targets:'
1577 @echo ' all - Build all necessary images depending on configuration' 1577 @echo ' all - Build all necessary images depending on configuration'
1578 @echo ' tests - Build U-Boot for sandbox and run tests' 1578 @echo ' tests - Build U-Boot for sandbox and run tests'
1579 @echo '* u-boot - Build the bare u-boot' 1579 @echo '* u-boot - Build the bare u-boot'
1580 @echo ' dir/ - Build all files in dir and below' 1580 @echo ' dir/ - Build all files in dir and below'
1581 @echo ' dir/file.[oisS] - Build specified target only' 1581 @echo ' dir/file.[oisS] - Build specified target only'
1582 @echo ' dir/file.lst - Build specified mixed source/assembly target only' 1582 @echo ' dir/file.lst - Build specified mixed source/assembly target only'
1583 @echo ' (requires a recent binutils and recent build (System.map))' 1583 @echo ' (requires a recent binutils and recent build (System.map))'
1584 @echo ' tags/ctags - Generate ctags file for editors' 1584 @echo ' tags/ctags - Generate ctags file for editors'
1585 @echo ' etags - Generate etags file for editors' 1585 @echo ' etags - Generate etags file for editors'
1586 @echo ' cscope - Generate cscope index' 1586 @echo ' cscope - Generate cscope index'
1587 @echo ' ubootrelease - Output the release version string (use with make -s)' 1587 @echo ' ubootrelease - Output the release version string (use with make -s)'
1588 @echo ' ubootversion - Output the version stored in Makefile (use with make -s)' 1588 @echo ' ubootversion - Output the version stored in Makefile (use with make -s)'
1589 @echo " cfg - Don't build, just create the .cfg files" 1589 @echo " cfg - Don't build, just create the .cfg files"
1590 @echo " envtools - Build only the target-side environment tools" 1590 @echo " envtools - Build only the target-side environment tools"
1591 @echo '' 1591 @echo ''
1592 @echo 'Static analysers' 1592 @echo 'Static analysers'
1593 @echo ' checkstack - Generate a list of stack hogs' 1593 @echo ' checkstack - Generate a list of stack hogs'
1594 @echo '' 1594 @echo ''
1595 @echo 'Documentation targets:' 1595 @echo 'Documentation targets:'
1596 @$(MAKE) -f $(srctree)/doc/DocBook/Makefile dochelp 1596 @$(MAKE) -f $(srctree)/doc/DocBook/Makefile dochelp
1597 @echo '' 1597 @echo ''
1598 @echo ' make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build' 1598 @echo ' make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build'
1599 @echo ' make V=2 [targets] 2 => give reason for rebuild of target' 1599 @echo ' make V=2 [targets] 2 => give reason for rebuild of target'
1600 @echo ' make O=dir [targets] Locate all output files in "dir", including .config' 1600 @echo ' make O=dir [targets] Locate all output files in "dir", including .config'
1601 @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)' 1601 @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)'
1602 @echo ' make C=2 [targets] Force check of all c source with $$CHECK' 1602 @echo ' make C=2 [targets] Force check of all c source with $$CHECK'
1603 @echo ' make RECORDMCOUNT_WARN=1 [targets] Warn about ignored mcount sections' 1603 @echo ' make RECORDMCOUNT_WARN=1 [targets] Warn about ignored mcount sections'
1604 @echo ' make W=n [targets] Enable extra gcc checks, n=1,2,3 where' 1604 @echo ' make W=n [targets] Enable extra gcc checks, n=1,2,3 where'
1605 @echo ' 1: warnings which may be relevant and do not occur too often' 1605 @echo ' 1: warnings which may be relevant and do not occur too often'
1606 @echo ' 2: warnings which occur quite often but may still be relevant' 1606 @echo ' 2: warnings which occur quite often but may still be relevant'
1607 @echo ' 3: more obscure warnings, can most likely be ignored' 1607 @echo ' 3: more obscure warnings, can most likely be ignored'
1608 @echo ' Multiple levels can be combined with W=12 or W=123' 1608 @echo ' Multiple levels can be combined with W=12 or W=123'
1609 @echo '' 1609 @echo ''
1610 @echo 'Execute "make" or "make all" to build all targets marked with [*] ' 1610 @echo 'Execute "make" or "make all" to build all targets marked with [*] '
1611 @echo 'For further info see the ./README file' 1611 @echo 'For further info see the ./README file'
1612 1612
1613 tests: 1613 tests:
1614 $(srctree)/test/run 1614 $(srctree)/test/run
1615 1615
1616 # Documentation targets 1616 # Documentation targets
1617 # --------------------------------------------------------------------------- 1617 # ---------------------------------------------------------------------------
1618 %docs: scripts_basic FORCE 1618 %docs: scripts_basic FORCE
1619 $(Q)$(MAKE) $(build)=scripts build_docproc 1619 $(Q)$(MAKE) $(build)=scripts build_docproc
1620 $(Q)$(MAKE) $(build)=doc/DocBook $@ 1620 $(Q)$(MAKE) $(build)=doc/DocBook $@
1621 1621
1622 endif #ifeq ($(config-targets),1) 1622 endif #ifeq ($(config-targets),1)
1623 endif #ifeq ($(mixed-targets),1) 1623 endif #ifeq ($(mixed-targets),1)
1624 1624
1625 PHONY += checkstack ubootrelease ubootversion 1625 PHONY += checkstack ubootrelease ubootversion
1626 1626
1627 checkstack: 1627 checkstack:
1628 $(OBJDUMP) -d u-boot $$(find . -name u-boot-spl) | \ 1628 $(OBJDUMP) -d u-boot $$(find . -name u-boot-spl) | \
1629 $(PERL) $(src)/scripts/checkstack.pl $(ARCH) 1629 $(PERL) $(src)/scripts/checkstack.pl $(ARCH)
1630 1630
1631 ubootrelease: 1631 ubootrelease:
1632 @echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))" 1632 @echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
1633 1633
1634 ubootversion: 1634 ubootversion:
1635 @echo $(UBOOTVERSION) 1635 @echo $(UBOOTVERSION)
1636 1636
1637 # Single targets 1637 # Single targets
1638 # --------------------------------------------------------------------------- 1638 # ---------------------------------------------------------------------------
1639 # Single targets are compatible with: 1639 # Single targets are compatible with:
1640 # - build with mixed source and output 1640 # - build with mixed source and output
1641 # - build with separate output dir 'make O=...' 1641 # - build with separate output dir 'make O=...'
1642 # - external modules 1642 # - external modules
1643 # 1643 #
1644 # target-dir => where to store outputfile 1644 # target-dir => where to store outputfile
1645 # build-dir => directory in kernel source tree to use 1645 # build-dir => directory in kernel source tree to use
1646 1646
1647 ifeq ($(KBUILD_EXTMOD),) 1647 ifeq ($(KBUILD_EXTMOD),)
1648 build-dir = $(patsubst %/,%,$(dir $@)) 1648 build-dir = $(patsubst %/,%,$(dir $@))
1649 target-dir = $(dir $@) 1649 target-dir = $(dir $@)
1650 else 1650 else
1651 zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@))) 1651 zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@)))
1652 build-dir = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash)) 1652 build-dir = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash))
1653 target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@)) 1653 target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@))
1654 endif 1654 endif
1655 1655
1656 %.s: %.c prepare scripts FORCE 1656 %.s: %.c prepare scripts FORCE
1657 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1657 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1658 %.i: %.c prepare scripts FORCE 1658 %.i: %.c prepare scripts FORCE
1659 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1659 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1660 %.o: %.c prepare scripts FORCE 1660 %.o: %.c prepare scripts FORCE
1661 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1661 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1662 %.lst: %.c prepare scripts FORCE 1662 %.lst: %.c prepare scripts FORCE
1663 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1663 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1664 %.s: %.S prepare scripts FORCE 1664 %.s: %.S prepare scripts FORCE
1665 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1665 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1666 %.o: %.S prepare scripts FORCE 1666 %.o: %.S prepare scripts FORCE
1667 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1667 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1668 %.symtypes: %.c prepare scripts FORCE 1668 %.symtypes: %.c prepare scripts FORCE
1669 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1669 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1670 1670
1671 # Modules 1671 # Modules
1672 /: prepare scripts FORCE 1672 /: prepare scripts FORCE
1673 $(cmd_crmodverdir) 1673 $(cmd_crmodverdir)
1674 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 1674 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
1675 $(build)=$(build-dir) 1675 $(build)=$(build-dir)
1676 %/: prepare scripts FORCE 1676 %/: prepare scripts FORCE
1677 $(cmd_crmodverdir) 1677 $(cmd_crmodverdir)
1678 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 1678 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
1679 $(build)=$(build-dir) 1679 $(build)=$(build-dir)
1680 %.ko: prepare scripts FORCE 1680 %.ko: prepare scripts FORCE
1681 $(cmd_crmodverdir) 1681 $(cmd_crmodverdir)
1682 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 1682 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
1683 $(build)=$(build-dir) $(@:.ko=.o) 1683 $(build)=$(build-dir) $(@:.ko=.o)
1684 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost 1684 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
1685 1685
1686 # FIXME Should go into a make.lib or something 1686 # FIXME Should go into a make.lib or something
1687 # =========================================================================== 1687 # ===========================================================================
1688 1688
1689 quiet_cmd_rmdirs = $(if $(wildcard $(rm-dirs)),CLEAN $(wildcard $(rm-dirs))) 1689 quiet_cmd_rmdirs = $(if $(wildcard $(rm-dirs)),CLEAN $(wildcard $(rm-dirs)))
1690 cmd_rmdirs = rm -rf $(rm-dirs) 1690 cmd_rmdirs = rm -rf $(rm-dirs)
1691 1691
1692 quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files))) 1692 quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files)))
1693 cmd_rmfiles = rm -f $(rm-files) 1693 cmd_rmfiles = rm -f $(rm-files)
1694 1694
1695 # read all saved command lines 1695 # read all saved command lines
1696 1696
1697 targets := $(wildcard $(sort $(targets))) 1697 targets := $(wildcard $(sort $(targets)))
1698 cmd_files := $(wildcard .*.cmd $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd)) 1698 cmd_files := $(wildcard .*.cmd $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd))
1699 1699
1700 ifneq ($(cmd_files),) 1700 ifneq ($(cmd_files),)
1701 $(cmd_files): ; # Do not try to update included dependency files 1701 $(cmd_files): ; # Do not try to update included dependency files
1702 include $(cmd_files) 1702 include $(cmd_files)
1703 endif 1703 endif
1704 1704
1705 endif # skip-makefile 1705 endif # skip-makefile
1706 1706
1707 PHONY += FORCE 1707 PHONY += FORCE
1708 FORCE: 1708 FORCE:
1709 1709
1710 # Declare the contents of the .PHONY variable as phony. We keep that 1710 # Declare the contents of the .PHONY variable as phony. We keep that
1711 # information in a variable so we can use it in if_changed and friends. 1711 # information in a variable so we can use it in if_changed and friends.
1712 .PHONY: $(PHONY) 1712 .PHONY: $(PHONY)
1713 1713
scripts/dtc-version.sh
1 #!/bin/sh 1 #!/bin/sh
2 # 2 #
3 # dtc-version dtc-command 3 # dtc-version dtc-command
4 # 4 #
5 # Prints the dtc version of `dtc-command' in a canonical 4-digit form 5 # Prints the dtc version of `dtc-command' in a canonical 6-digit form
6 # such as `0222' for binutils 2.22 6 # such as `010404' for dtc 1.4.4
7 # 7 #
8 8
9 dtc="$*" 9 dtc="$*"
10 10
11 if [ ${#dtc} -eq 0 ]; then 11 if [ ${#dtc} -eq 0 ]; then
12 echo "Error: No dtc command specified." 12 echo "Error: No dtc command specified."
13 printf "Usage:\n\t$0 <dtc-command>\n" 13 printf "Usage:\n\t$0 <dtc-command>\n"
14 exit 1 14 exit 1
15 fi 15 fi
16 16
17 MAJOR=$($dtc -v | head -1 | awk '{print $NF}' | cut -d . -f 1) 17 MAJOR=$($dtc -v | head -1 | awk '{print $NF}' | cut -d . -f 1)
18 MINOR=$($dtc -v | head -1 | awk '{print $NF}' | cut -d . -f 2) 18 MINOR=$($dtc -v | head -1 | awk '{print $NF}' | cut -d . -f 2)
19 PATCH=$($dtc -v | head -1 | awk '{print $NF}' | cut -d . -f 3 | cut -d - -f 1)
19 20
20 printf "%02d%02d\\n" $MAJOR $MINOR 21 printf "%02d%02d%02d\\n" $MAJOR $MINOR $PATCH
21 22