Commit 92fa7f53f1f3f03296f8ffb14bdf1baefab83368

Authored by Tom Rini
1 parent 8cda413b9b

Prepare v2015.01

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

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

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