Commit 8a5c9ca4d0b8aa13a1bb321494d24f656a9a7d72

Authored by Tom Rini
1 parent 10697704ca

Prepare v2015.04-rc5

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

Showing 1 changed file with 1 additions and 1 deletions Inline Diff

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