Commit c98ac3487e413c71e5d36322ef3324b21c6f60f9

Authored by Tom Rini
1 parent bbfbdb5722

Prepare v2017.09

Signed-off-by: Tom Rini <trini@konsulko.com>

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