Commit 76b21026ceb5a6a83fc53b0ecdf425f240318022

Authored by Tom Rini
1 parent 1dbd7280dc

Prepare v2014.07-rc3

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

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

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