Commit 3e41c54ad8099951d57c3c5a0f5ebc6e8becf70c

Authored by Tom Rini
1 parent f4617ef86d

Prepare v2014.07-rc1

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

Showing 1 changed file with 2 additions and 2 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 = 04 9 PATCHLEVEL = 07
10 SUBLEVEL = 10 SUBLEVEL =
11 EXTRAVERSION = 11 EXTRAVERSION = -rc1
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 RANLIB = $(CROSS_COMPILE)RANLIB 357 RANLIB = $(CROSS_COMPILE)RANLIB
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 379 export MAKE AWK
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 ($(CONFIG_NAND_U_BOOT),y) 518 ifeq ($(CONFIG_NAND_U_BOOT),y)
519 LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot-nand.lds 519 LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot-nand.lds
520 ifeq ($(wildcard $(LDSCRIPT)),) 520 ifeq ($(wildcard $(LDSCRIPT)),)
521 LDSCRIPT := $(srctree)/$(CPUDIR)/u-boot-nand.lds 521 LDSCRIPT := $(srctree)/$(CPUDIR)/u-boot-nand.lds
522 endif 522 endif
523 endif 523 endif
524 ifeq ($(wildcard $(LDSCRIPT)),) 524 ifeq ($(wildcard $(LDSCRIPT)),)
525 LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot.lds 525 LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot.lds
526 endif 526 endif
527 ifeq ($(wildcard $(LDSCRIPT)),) 527 ifeq ($(wildcard $(LDSCRIPT)),)
528 LDSCRIPT := $(srctree)/$(CPUDIR)/u-boot.lds 528 LDSCRIPT := $(srctree)/$(CPUDIR)/u-boot.lds
529 endif 529 endif
530 ifeq ($(wildcard $(LDSCRIPT)),) 530 ifeq ($(wildcard $(LDSCRIPT)),)
531 LDSCRIPT := $(srctree)/arch/$(ARCH)/cpu/u-boot.lds 531 LDSCRIPT := $(srctree)/arch/$(ARCH)/cpu/u-boot.lds
532 endif 532 endif
533 endif 533 endif
534 534
535 else 535 else
536 536
537 537
538 endif # $(dot-config) 538 endif # $(dot-config)
539 539
540 KBUILD_CFLAGS += -Os #-fomit-frame-pointer 540 KBUILD_CFLAGS += -Os #-fomit-frame-pointer
541 541
542 ifdef BUILD_TAG 542 ifdef BUILD_TAG
543 KBUILD_CFLAGS += -DBUILD_TAG='"$(BUILD_TAG)"' 543 KBUILD_CFLAGS += -DBUILD_TAG='"$(BUILD_TAG)"'
544 endif 544 endif
545 545
546 KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector) 546 KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
547 547
548 ifeq ($(COMPILER),clang) 548 ifeq ($(COMPILER),clang)
549 KBUILD_CPPFLAGS += $(call cc-option,-Qunused-arguments,) 549 KBUILD_CPPFLAGS += $(call cc-option,-Qunused-arguments,)
550 KBUILD_CPPFLAGS += $(call cc-option,-Wno-unknown-warning-option,) 550 KBUILD_CPPFLAGS += $(call cc-option,-Wno-unknown-warning-option,)
551 KBUILD_CFLAGS += $(call cc-disable-warning, unused-variable) 551 KBUILD_CFLAGS += $(call cc-disable-warning, unused-variable)
552 KBUILD_CFLAGS += $(call cc-disable-warning, format-invalid-specifier) 552 KBUILD_CFLAGS += $(call cc-disable-warning, format-invalid-specifier)
553 KBUILD_CFLAGS += $(call cc-disable-warning, gnu) 553 KBUILD_CFLAGS += $(call cc-disable-warning, gnu)
554 # Quiet clang warning: comparison of unsigned expression < 0 is always false 554 # Quiet clang warning: comparison of unsigned expression < 0 is always false
555 KBUILD_CFLAGS += $(call cc-disable-warning, tautological-compare) 555 KBUILD_CFLAGS += $(call cc-disable-warning, tautological-compare)
556 # CLANG uses a _MergedGlobals as optimization, but this breaks modpost, as the 556 # CLANG uses a _MergedGlobals as optimization, but this breaks modpost, as the
557 # source of a reference will be _MergedGlobals and not on of the whitelisted names. 557 # source of a reference will be _MergedGlobals and not on of the whitelisted names.
558 # See modpost pattern 2 558 # See modpost pattern 2
559 KBUILD_CFLAGS += $(call cc-option, -mno-global-merge,) 559 KBUILD_CFLAGS += $(call cc-option, -mno-global-merge,)
560 endif 560 endif
561 561
562 KBUILD_CFLAGS += -g 562 KBUILD_CFLAGS += -g
563 # $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g<format> 563 # $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g<format>
564 # option to the assembler. 564 # option to the assembler.
565 KBUILD_AFLAGS += -g 565 KBUILD_AFLAGS += -g
566 566
567 # Report stack usage if supported 567 # Report stack usage if supported
568 ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-stack-usage.sh $(CC)),y) 568 ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-stack-usage.sh $(CC)),y)
569 KBUILD_CFLAGS += -fstack-usage 569 KBUILD_CFLAGS += -fstack-usage
570 endif 570 endif
571 571
572 KBUILD_CFLAGS += $(call cc-option,-Wno-format-nonliteral) 572 KBUILD_CFLAGS += $(call cc-option,-Wno-format-nonliteral)
573 573
574 # turn jbsr into jsr for m68k 574 # turn jbsr into jsr for m68k
575 ifeq ($(ARCH),m68k) 575 ifeq ($(ARCH),m68k)
576 ifeq ($(findstring 3.4,$(shell $(CC) --version)),3.4) 576 ifeq ($(findstring 3.4,$(shell $(CC) --version)),3.4)
577 KBUILD_AFLAGS += -Wa,-gstabs,-S 577 KBUILD_AFLAGS += -Wa,-gstabs,-S
578 endif 578 endif
579 endif 579 endif
580 580
581 ifneq ($(CONFIG_SYS_TEXT_BASE),) 581 ifneq ($(CONFIG_SYS_TEXT_BASE),)
582 KBUILD_CPPFLAGS += -DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE) 582 KBUILD_CPPFLAGS += -DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE)
583 endif 583 endif
584 584
585 export CONFIG_SYS_TEXT_BASE 585 export CONFIG_SYS_TEXT_BASE
586 586
587 # Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments 587 # Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments
588 KBUILD_CPPFLAGS += $(KCPPFLAGS) 588 KBUILD_CPPFLAGS += $(KCPPFLAGS)
589 KBUILD_AFLAGS += $(KAFLAGS) 589 KBUILD_AFLAGS += $(KAFLAGS)
590 KBUILD_CFLAGS += $(KCFLAGS) 590 KBUILD_CFLAGS += $(KCFLAGS)
591 591
592 # Use UBOOTINCLUDE when you must reference the include/ directory. 592 # Use UBOOTINCLUDE when you must reference the include/ directory.
593 # Needed to be compatible with the O= option 593 # Needed to be compatible with the O= option
594 UBOOTINCLUDE := \ 594 UBOOTINCLUDE := \
595 -Iinclude \ 595 -Iinclude \
596 $(if $(KBUILD_SRC), -I$(srctree)/include) \ 596 $(if $(KBUILD_SRC), -I$(srctree)/include) \
597 -I$(srctree)/arch/$(ARCH)/include 597 -I$(srctree)/arch/$(ARCH)/include
598 598
599 NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) 599 NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
600 CHECKFLAGS += $(NOSTDINC_FLAGS) 600 CHECKFLAGS += $(NOSTDINC_FLAGS)
601 601
602 # FIX ME 602 # FIX ME
603 cpp_flags := $(KBUILD_CPPFLAGS) $(PLATFORM_CPPFLAGS) $(UBOOTINCLUDE) \ 603 cpp_flags := $(KBUILD_CPPFLAGS) $(PLATFORM_CPPFLAGS) $(UBOOTINCLUDE) \
604 $(NOSTDINC_FLAGS) 604 $(NOSTDINC_FLAGS)
605 c_flags := $(KBUILD_CFLAGS) $(cpp_flags) 605 c_flags := $(KBUILD_CFLAGS) $(cpp_flags)
606 606
607 ######################################################################### 607 #########################################################################
608 # U-Boot objects....order is important (i.e. start must be first) 608 # U-Boot objects....order is important (i.e. start must be first)
609 609
610 head-y := $(CPUDIR)/start.o 610 head-y := $(CPUDIR)/start.o
611 head-$(CONFIG_4xx) += arch/powerpc/cpu/ppc4xx/resetvec.o 611 head-$(CONFIG_4xx) += arch/powerpc/cpu/ppc4xx/resetvec.o
612 head-$(CONFIG_MPC85xx) += arch/powerpc/cpu/mpc85xx/resetvec.o 612 head-$(CONFIG_MPC85xx) += arch/powerpc/cpu/mpc85xx/resetvec.o
613 613
614 HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n) 614 HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n)
615 615
616 libs-y += lib/ 616 libs-y += lib/
617 libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/ 617 libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/
618 libs-y += $(CPUDIR)/ 618 libs-y += $(CPUDIR)/
619 ifdef SOC 619 ifdef SOC
620 libs-y += $(CPUDIR)/$(SOC)/ 620 libs-y += $(CPUDIR)/$(SOC)/
621 endif 621 endif
622 libs-$(CONFIG_OF_EMBED) += dts/ 622 libs-$(CONFIG_OF_EMBED) += dts/
623 libs-y += arch/$(ARCH)/lib/ 623 libs-y += arch/$(ARCH)/lib/
624 libs-y += fs/ 624 libs-y += fs/
625 libs-y += net/ 625 libs-y += net/
626 libs-y += disk/ 626 libs-y += disk/
627 libs-y += drivers/ 627 libs-y += drivers/
628 libs-$(CONFIG_DM) += drivers/core/ 628 libs-$(CONFIG_DM) += drivers/core/
629 libs-y += drivers/dma/ 629 libs-y += drivers/dma/
630 libs-y += drivers/gpio/ 630 libs-y += drivers/gpio/
631 libs-y += drivers/i2c/ 631 libs-y += drivers/i2c/
632 libs-y += drivers/input/ 632 libs-y += drivers/input/
633 libs-y += drivers/mmc/ 633 libs-y += drivers/mmc/
634 libs-y += drivers/mtd/ 634 libs-y += drivers/mtd/
635 libs-$(CONFIG_CMD_NAND) += drivers/mtd/nand/ 635 libs-$(CONFIG_CMD_NAND) += drivers/mtd/nand/
636 libs-y += drivers/mtd/onenand/ 636 libs-y += drivers/mtd/onenand/
637 libs-$(CONFIG_CMD_UBI) += drivers/mtd/ubi/ 637 libs-$(CONFIG_CMD_UBI) += drivers/mtd/ubi/
638 libs-y += drivers/mtd/spi/ 638 libs-y += drivers/mtd/spi/
639 libs-y += drivers/net/ 639 libs-y += drivers/net/
640 libs-y += drivers/net/phy/ 640 libs-y += drivers/net/phy/
641 libs-y += drivers/pci/ 641 libs-y += drivers/pci/
642 libs-y += drivers/power/ \ 642 libs-y += drivers/power/ \
643 drivers/power/fuel_gauge/ \ 643 drivers/power/fuel_gauge/ \
644 drivers/power/mfd/ \ 644 drivers/power/mfd/ \
645 drivers/power/pmic/ \ 645 drivers/power/pmic/ \
646 drivers/power/battery/ 646 drivers/power/battery/
647 libs-y += drivers/spi/ 647 libs-y += drivers/spi/
648 libs-$(CONFIG_FMAN_ENET) += drivers/net/fm/ 648 libs-$(CONFIG_FMAN_ENET) += drivers/net/fm/
649 libs-$(CONFIG_SYS_FSL_DDR) += drivers/ddr/fsl/ 649 libs-$(CONFIG_SYS_FSL_DDR) += drivers/ddr/fsl/
650 libs-y += drivers/serial/ 650 libs-y += drivers/serial/
651 libs-y += drivers/usb/eth/ 651 libs-y += drivers/usb/eth/
652 libs-y += drivers/usb/gadget/ 652 libs-y += drivers/usb/gadget/
653 libs-y += drivers/usb/host/ 653 libs-y += drivers/usb/host/
654 libs-y += drivers/usb/musb/ 654 libs-y += drivers/usb/musb/
655 libs-y += drivers/usb/musb-new/ 655 libs-y += drivers/usb/musb-new/
656 libs-y += drivers/usb/phy/ 656 libs-y += drivers/usb/phy/
657 libs-y += drivers/usb/ulpi/ 657 libs-y += drivers/usb/ulpi/
658 libs-y += common/ 658 libs-y += common/
659 libs-y += lib/libfdt/ 659 libs-y += lib/libfdt/
660 libs-$(CONFIG_API) += api/ 660 libs-$(CONFIG_API) += api/
661 libs-$(CONFIG_HAS_POST) += post/ 661 libs-$(CONFIG_HAS_POST) += post/
662 libs-y += test/ 662 libs-y += test/
663 libs-y += test/dm/ 663 libs-y += test/dm/
664 libs-$(CONFIG_DM_DEMO) += drivers/demo/ 664 libs-$(CONFIG_DM_DEMO) += drivers/demo/
665 665
666 ifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35 mxs vf610)) 666 ifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35 mxs vf610))
667 libs-y += arch/$(ARCH)/imx-common/ 667 libs-y += arch/$(ARCH)/imx-common/
668 endif 668 endif
669 669
670 libs-$(CONFIG_ARM) += arch/arm/cpu/ 670 libs-$(CONFIG_ARM) += arch/arm/cpu/
671 libs-$(CONFIG_PPC) += arch/powerpc/cpu/ 671 libs-$(CONFIG_PPC) += arch/powerpc/cpu/
672 672
673 libs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/) 673 libs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/)
674 674
675 libs-y := $(sort $(libs-y)) 675 libs-y := $(sort $(libs-y))
676 676
677 u-boot-dirs := $(patsubst %/,%,$(filter %/, $(libs-y))) tools examples 677 u-boot-dirs := $(patsubst %/,%,$(filter %/, $(libs-y))) tools examples
678 678
679 u-boot-alldirs := $(sort $(u-boot-dirs) $(patsubst %/,%,$(filter %/, $(libs-)))) 679 u-boot-alldirs := $(sort $(u-boot-dirs) $(patsubst %/,%,$(filter %/, $(libs-))))
680 680
681 libs-y := $(patsubst %/, %/built-in.o, $(libs-y)) 681 libs-y := $(patsubst %/, %/built-in.o, $(libs-y))
682 682
683 u-boot-init := $(head-y) 683 u-boot-init := $(head-y)
684 u-boot-main := $(libs-y) 684 u-boot-main := $(libs-y)
685 685
686 686
687 # Add GCC lib 687 # Add GCC lib
688 ifdef CONFIG_USE_PRIVATE_LIBGCC 688 ifdef CONFIG_USE_PRIVATE_LIBGCC
689 ifeq ($(CONFIG_USE_PRIVATE_LIBGCC),y) 689 ifeq ($(CONFIG_USE_PRIVATE_LIBGCC),y)
690 PLATFORM_LIBGCC = arch/$(ARCH)/lib/lib.a 690 PLATFORM_LIBGCC = arch/$(ARCH)/lib/lib.a
691 else 691 else
692 PLATFORM_LIBGCC = -L $(CONFIG_USE_PRIVATE_LIBGCC) -lgcc 692 PLATFORM_LIBGCC = -L $(CONFIG_USE_PRIVATE_LIBGCC) -lgcc
693 endif 693 endif
694 else 694 else
695 PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(c_flags) -print-libgcc-file-name`) -lgcc 695 PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(c_flags) -print-libgcc-file-name`) -lgcc
696 endif 696 endif
697 PLATFORM_LIBS += $(PLATFORM_LIBGCC) 697 PLATFORM_LIBS += $(PLATFORM_LIBGCC)
698 export PLATFORM_LIBS 698 export PLATFORM_LIBS
699 699
700 # Special flags for CPP when processing the linker script. 700 # Special flags for CPP when processing the linker script.
701 # Pass the version down so we can handle backwards compatibility 701 # Pass the version down so we can handle backwards compatibility
702 # on the fly. 702 # on the fly.
703 LDPPFLAGS += \ 703 LDPPFLAGS += \
704 -include $(srctree)/include/u-boot/u-boot.lds.h \ 704 -include $(srctree)/include/u-boot/u-boot.lds.h \
705 -DCPUDIR=$(CPUDIR) \ 705 -DCPUDIR=$(CPUDIR) \
706 $(shell $(LD) --version | \ 706 $(shell $(LD) --version | \
707 sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p') 707 sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p')
708 708
709 ######################################################################### 709 #########################################################################
710 ######################################################################### 710 #########################################################################
711 711
712 ifneq ($(CONFIG_BOARD_SIZE_LIMIT),) 712 ifneq ($(CONFIG_BOARD_SIZE_LIMIT),)
713 BOARD_SIZE_CHECK = \ 713 BOARD_SIZE_CHECK = \
714 @actual=`wc -c $@ | awk '{print $$1}'`; \ 714 @actual=`wc -c $@ | awk '{print $$1}'`; \
715 limit=`printf "%d" $(CONFIG_BOARD_SIZE_LIMIT)`; \ 715 limit=`printf "%d" $(CONFIG_BOARD_SIZE_LIMIT)`; \
716 if test $$actual -gt $$limit; then \ 716 if test $$actual -gt $$limit; then \
717 echo "$@ exceeds file size limit:" >&2 ; \ 717 echo "$@ exceeds file size limit:" >&2 ; \
718 echo " limit: $$limit bytes" >&2 ; \ 718 echo " limit: $$limit bytes" >&2 ; \
719 echo " actual: $$actual bytes" >&2 ; \ 719 echo " actual: $$actual bytes" >&2 ; \
720 echo " excess: $$((actual - limit)) bytes" >&2; \ 720 echo " excess: $$((actual - limit)) bytes" >&2; \
721 exit 1; \ 721 exit 1; \
722 fi 722 fi
723 else 723 else
724 BOARD_SIZE_CHECK = 724 BOARD_SIZE_CHECK =
725 endif 725 endif
726 726
727 # Statically apply RELA-style relocations (currently arm64 only) 727 # Statically apply RELA-style relocations (currently arm64 only)
728 ifneq ($(CONFIG_STATIC_RELA),) 728 ifneq ($(CONFIG_STATIC_RELA),)
729 # $(1) is u-boot ELF, $(2) is u-boot bin, $(3) is text base 729 # $(1) is u-boot ELF, $(2) is u-boot bin, $(3) is text base
730 DO_STATIC_RELA = \ 730 DO_STATIC_RELA = \
731 start=$$($(NM) $(1) | grep __rel_dyn_start | cut -f 1 -d ' '); \ 731 start=$$($(NM) $(1) | grep __rel_dyn_start | cut -f 1 -d ' '); \
732 end=$$($(NM) $(1) | grep __rel_dyn_end | cut -f 1 -d ' '); \ 732 end=$$($(NM) $(1) | grep __rel_dyn_end | cut -f 1 -d ' '); \
733 tools/relocate-rela $(2) $(3) $$start $$end 733 tools/relocate-rela $(2) $(3) $$start $$end
734 else 734 else
735 DO_STATIC_RELA = 735 DO_STATIC_RELA =
736 endif 736 endif
737 737
738 # Always append ALL so that arch config.mk's can add custom ones 738 # Always append ALL so that arch config.mk's can add custom ones
739 ALL-y += u-boot.srec u-boot.bin System.map 739 ALL-y += u-boot.srec u-boot.bin System.map
740 740
741 ALL-$(CONFIG_NAND_U_BOOT) += u-boot-nand.bin 741 ALL-$(CONFIG_NAND_U_BOOT) += u-boot-nand.bin
742 ALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin 742 ALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin
743 ifeq ($(CONFIG_SPL_FSL_PBL),y) 743 ifeq ($(CONFIG_SPL_FSL_PBL),y)
744 ALL-$(CONFIG_RAMBOOT_PBL) += u-boot-with-spl-pbl.bin 744 ALL-$(CONFIG_RAMBOOT_PBL) += u-boot-with-spl-pbl.bin
745 else 745 else
746 ALL-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl 746 ALL-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl
747 endif 747 endif
748 ALL-$(CONFIG_SPL) += spl/u-boot-spl.bin 748 ALL-$(CONFIG_SPL) += spl/u-boot-spl.bin
749 ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img 749 ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img
750 ALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin 750 ALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin
751 ALL-$(CONFIG_OF_SEPARATE) += u-boot.dtb u-boot-dtb.bin 751 ALL-$(CONFIG_OF_SEPARATE) += u-boot.dtb u-boot-dtb.bin
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 u-boot.sha1: u-boot.bin 854 u-boot.sha1: u-boot.bin
855 tools/ubsha1 u-boot.bin 855 tools/ubsha1 u-boot.bin
856 856
857 u-boot.dis: u-boot 857 u-boot.dis: u-boot
858 $(OBJDUMP) -d $< > $@ 858 $(OBJDUMP) -d $< > $@
859 859
860 ifdef CONFIG_TPL 860 ifdef CONFIG_TPL
861 SPL_PAYLOAD := tpl/u-boot-with-tpl.bin 861 SPL_PAYLOAD := tpl/u-boot-with-tpl.bin
862 else 862 else
863 SPL_PAYLOAD := u-boot.bin 863 SPL_PAYLOAD := u-boot.bin
864 endif 864 endif
865 865
866 OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \ 866 OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \
867 --pad-to=$(CONFIG_SPL_PAD_TO) 867 --pad-to=$(CONFIG_SPL_PAD_TO)
868 u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE 868 u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE
869 $(call if_changed,pad_cat) 869 $(call if_changed,pad_cat)
870 870
871 OBJCOPYFLAGS_u-boot-with-tpl.bin = -I binary -O binary \ 871 OBJCOPYFLAGS_u-boot-with-tpl.bin = -I binary -O binary \
872 --pad-to=$(CONFIG_TPL_PAD_TO) 872 --pad-to=$(CONFIG_TPL_PAD_TO)
873 tpl/u-boot-with-tpl.bin: tpl/u-boot-tpl.bin u-boot.bin FORCE 873 tpl/u-boot-with-tpl.bin: tpl/u-boot-tpl.bin u-boot.bin FORCE
874 $(call if_changed,pad_cat) 874 $(call if_changed,pad_cat)
875 875
876 SPL: spl/u-boot-spl.bin FORCE 876 SPL: spl/u-boot-spl.bin FORCE
877 $(Q)$(MAKE) $(build)=arch/arm/imx-common $@ 877 $(Q)$(MAKE) $(build)=arch/arm/imx-common $@
878 878
879 u-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL u-boot.bin FORCE 879 u-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL u-boot.bin FORCE
880 $(Q)$(MAKE) $(build)=arch/arm/imx-common $@ 880 $(Q)$(MAKE) $(build)=arch/arm/imx-common $@
881 881
882 MKIMAGEFLAGS_u-boot.ubl = -n $(UBL_CONFIG) -T ublimage -e $(CONFIG_SYS_TEXT_BASE) 882 MKIMAGEFLAGS_u-boot.ubl = -n $(UBL_CONFIG) -T ublimage -e $(CONFIG_SYS_TEXT_BASE)
883 883
884 u-boot.ubl: u-boot-with-spl.bin FORCE 884 u-boot.ubl: u-boot-with-spl.bin FORCE
885 $(call if_changed,mkimage) 885 $(call if_changed,mkimage)
886 886
887 MKIMAGEFLAGS_u-boot-spl.ais = -s -n $(if $(CONFIG_AIS_CONFIG_FILE), \ 887 MKIMAGEFLAGS_u-boot-spl.ais = -s -n $(if $(CONFIG_AIS_CONFIG_FILE), \
888 $(srctree)/$(CONFIG_AIS_CONFIG_FILE:"%"=%),"/dev/null") \ 888 $(srctree)/$(CONFIG_AIS_CONFIG_FILE:"%"=%),"/dev/null") \
889 -T aisimage -e $(CONFIG_SPL_TEXT_BASE) 889 -T aisimage -e $(CONFIG_SPL_TEXT_BASE)
890 spl/u-boot-spl.ais: spl/u-boot-spl.bin FORCE 890 spl/u-boot-spl.ais: spl/u-boot-spl.bin FORCE
891 $(call if_changed,mkimage) 891 $(call if_changed,mkimage)
892 892
893 OBJCOPYFLAGS_u-boot.ais = -I binary -O binary --pad-to=$(CONFIG_SPL_MAX_SIZE) 893 OBJCOPYFLAGS_u-boot.ais = -I binary -O binary --pad-to=$(CONFIG_SPL_MAX_SIZE)
894 u-boot.ais: spl/u-boot-spl.ais u-boot.img FORCE 894 u-boot.ais: spl/u-boot-spl.ais u-boot.img FORCE
895 $(call if_changed,pad_cat) 895 $(call if_changed,pad_cat)
896 896
897 u-boot-signed.sb: u-boot.bin spl/u-boot-spl.bin 897 u-boot-signed.sb: u-boot.bin spl/u-boot-spl.bin
898 $(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs u-boot-signed.sb 898 $(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs u-boot-signed.sb
899 u-boot.sb: u-boot.bin spl/u-boot-spl.bin 899 u-boot.sb: u-boot.bin spl/u-boot-spl.bin
900 $(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs u-boot.sb 900 $(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs u-boot.sb
901 901
902 # On x600 (SPEAr600) U-Boot is appended to U-Boot SPL. 902 # On x600 (SPEAr600) U-Boot is appended to U-Boot SPL.
903 # Both images are created using mkimage (crc etc), so that the ROM 903 # Both images are created using mkimage (crc etc), so that the ROM
904 # bootloader can check its integrity. Padding needs to be done to the 904 # bootloader can check its integrity. Padding needs to be done to the
905 # SPL image (with mkimage header) and not the binary. Otherwise the resulting image 905 # SPL image (with mkimage header) and not the binary. Otherwise the resulting image
906 # which is loaded/copied by the ROM bootloader to SRAM doesn't fit. 906 # which is loaded/copied by the ROM bootloader to SRAM doesn't fit.
907 # The resulting image containing both U-Boot images is called u-boot.spr 907 # The resulting image containing both U-Boot images is called u-boot.spr
908 MKIMAGEFLAGS_u-boot-spl.img = -A $(ARCH) -T firmware -C none \ 908 MKIMAGEFLAGS_u-boot-spl.img = -A $(ARCH) -T firmware -C none \
909 -a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n XLOADER 909 -a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n XLOADER
910 spl/u-boot-spl.img: spl/u-boot-spl.bin FORCE 910 spl/u-boot-spl.img: spl/u-boot-spl.bin FORCE
911 $(call if_changed,mkimage) 911 $(call if_changed,mkimage)
912 912
913 OBJCOPYFLAGS_u-boot.spr = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \ 913 OBJCOPYFLAGS_u-boot.spr = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \
914 --gap-fill=0xff 914 --gap-fill=0xff
915 u-boot.spr: spl/u-boot-spl.img u-boot.img FORCE 915 u-boot.spr: spl/u-boot-spl.img u-boot.img FORCE
916 $(call if_changed,pad_cat) 916 $(call if_changed,pad_cat)
917 917
918 MKIMAGEFLAGS_u-boot-spl.gph = -A $(ARCH) -T gpimage -C none \ 918 MKIMAGEFLAGS_u-boot-spl.gph = -A $(ARCH) -T gpimage -C none \
919 -a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n SPL 919 -a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n SPL
920 spl/u-boot-spl.gph: spl/u-boot-spl.bin FORCE 920 spl/u-boot-spl.gph: spl/u-boot-spl.bin FORCE
921 $(call if_changed,mkimage) 921 $(call if_changed,mkimage)
922 922
923 OBJCOPYFLAGS_u-boot-spi.gph = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \ 923 OBJCOPYFLAGS_u-boot-spi.gph = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \
924 --gap-fill=0 924 --gap-fill=0
925 u-boot-spi.gph: spl/u-boot-spl.gph u-boot.img FORCE 925 u-boot-spi.gph: spl/u-boot-spl.gph u-boot.img FORCE
926 $(call if_changed,pad_cat) 926 $(call if_changed,pad_cat)
927 927
928 ifneq ($(CONFIG_TEGRA),) 928 ifneq ($(CONFIG_TEGRA),)
929 OBJCOPYFLAGS_u-boot-nodtb-tegra.bin = -O binary --pad-to=$(CONFIG_SYS_TEXT_BASE) 929 OBJCOPYFLAGS_u-boot-nodtb-tegra.bin = -O binary --pad-to=$(CONFIG_SYS_TEXT_BASE)
930 u-boot-nodtb-tegra.bin: spl/u-boot-spl u-boot.bin FORCE 930 u-boot-nodtb-tegra.bin: spl/u-boot-spl u-boot.bin FORCE
931 $(call if_changed,pad_cat) 931 $(call if_changed,pad_cat)
932 932
933 ifeq ($(CONFIG_OF_SEPARATE),y) 933 ifeq ($(CONFIG_OF_SEPARATE),y)
934 u-boot-dtb-tegra.bin: u-boot-nodtb-tegra.bin dts/dt.dtb FORCE 934 u-boot-dtb-tegra.bin: u-boot-nodtb-tegra.bin dts/dt.dtb FORCE
935 $(call if_changed,cat) 935 $(call if_changed,cat)
936 endif 936 endif
937 endif 937 endif
938 938
939 u-boot-img.bin: spl/u-boot-spl.bin u-boot.img FORCE 939 u-boot-img.bin: spl/u-boot-spl.bin u-boot.img FORCE
940 $(call if_changed,cat) 940 $(call if_changed,cat)
941 941
942 #Add a target to create boot binary having SPL binary in PBI format 942 #Add a target to create boot binary having SPL binary in PBI format
943 #concatenated with u-boot binary. It is need by PowerPC SoC having 943 #concatenated with u-boot binary. It is need by PowerPC SoC having
944 #internal SRAM <= 512KB. 944 #internal SRAM <= 512KB.
945 MKIMAGEFLAGS_u-boot-spl.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \ 945 MKIMAGEFLAGS_u-boot-spl.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \
946 -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage 946 -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage
947 947
948 spl/u-boot-spl.pbl: spl/u-boot-spl.bin FORCE 948 spl/u-boot-spl.pbl: spl/u-boot-spl.bin FORCE
949 $(call if_changed,mkimage) 949 $(call if_changed,mkimage)
950 950
951 OBJCOPYFLAGS_u-boot-with-spl-pbl.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \ 951 OBJCOPYFLAGS_u-boot-with-spl-pbl.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \
952 --gap-fill=0xff 952 --gap-fill=0xff
953 953
954 u-boot-with-spl-pbl.bin: spl/u-boot-spl.pbl u-boot.bin FORCE 954 u-boot-with-spl-pbl.bin: spl/u-boot-spl.pbl u-boot.bin FORCE
955 $(call if_changed,pad_cat) 955 $(call if_changed,pad_cat)
956 956
957 # PPC4xx needs the SPL at the end of the image, since the reset vector 957 # PPC4xx needs the SPL at the end of the image, since the reset vector
958 # is located at 0xfffffffc. So we can't use the "u-boot-img.bin" target 958 # is located at 0xfffffffc. So we can't use the "u-boot-img.bin" target
959 # and need to introduce a new build target with the full blown U-Boot 959 # and need to introduce a new build target with the full blown U-Boot
960 # at the start padded up to the start of the SPL image. And then concat 960 # at the start padded up to the start of the SPL image. And then concat
961 # the SPL image to the end. 961 # the SPL image to the end.
962 962
963 OBJCOPYFLAGS_u-boot-img-spl-at-end.bin := -I binary -O binary \ 963 OBJCOPYFLAGS_u-boot-img-spl-at-end.bin := -I binary -O binary \
964 --pad-to=$(CONFIG_UBOOT_PAD_TO) --gap-fill=0xff 964 --pad-to=$(CONFIG_UBOOT_PAD_TO) --gap-fill=0xff
965 u-boot-img-spl-at-end.bin: u-boot.img spl/u-boot-spl.bin FORCE 965 u-boot-img-spl-at-end.bin: u-boot.img spl/u-boot-spl.bin FORCE
966 $(call if_changed,pad_cat) 966 $(call if_changed,pad_cat)
967 967
968 # Create a new ELF from a raw binary file. This is useful for arm64 968 # Create a new ELF from a raw binary file. This is useful for arm64
969 # where static relocation needs to be performed on the raw binary, 969 # where static relocation needs to be performed on the raw binary,
970 # but certain simulators only accept an ELF file (but don't do the 970 # but certain simulators only accept an ELF file (but don't do the
971 # relocation). 971 # relocation).
972 # FIXME refactor dts/Makefile to share target/arch detection 972 # FIXME refactor dts/Makefile to share target/arch detection
973 u-boot.elf: u-boot.bin 973 u-boot.elf: u-boot.bin
974 @$(OBJCOPY) -B aarch64 -I binary -O elf64-littleaarch64 \ 974 @$(OBJCOPY) -B aarch64 -I binary -O elf64-littleaarch64 \
975 $< u-boot-elf.o 975 $< u-boot-elf.o
976 @$(LD) u-boot-elf.o -o $@ \ 976 @$(LD) u-boot-elf.o -o $@ \
977 --defsym=_start=$(CONFIG_SYS_TEXT_BASE) \ 977 --defsym=_start=$(CONFIG_SYS_TEXT_BASE) \
978 -Ttext=$(CONFIG_SYS_TEXT_BASE) 978 -Ttext=$(CONFIG_SYS_TEXT_BASE)
979 979
980 # Rule to link u-boot 980 # Rule to link u-boot
981 # May be overridden by arch/$(ARCH)/config.mk 981 # May be overridden by arch/$(ARCH)/config.mk
982 quiet_cmd_u-boot__ ?= LD $@ 982 quiet_cmd_u-boot__ ?= LD $@
983 cmd_u-boot__ ?= $(LD) $(LDFLAGS) $(LDFLAGS_u-boot) -o $@ \ 983 cmd_u-boot__ ?= $(LD) $(LDFLAGS) $(LDFLAGS_u-boot) -o $@ \
984 -T u-boot.lds $(u-boot-init) \ 984 -T u-boot.lds $(u-boot-init) \
985 --start-group $(u-boot-main) --end-group \ 985 --start-group $(u-boot-main) --end-group \
986 $(PLATFORM_LIBS) -Map u-boot.map 986 $(PLATFORM_LIBS) -Map u-boot.map
987 987
988 u-boot: $(u-boot-init) $(u-boot-main) u-boot.lds 988 u-boot: $(u-boot-init) $(u-boot-main) u-boot.lds
989 $(call if_changed,u-boot__) 989 $(call if_changed,u-boot__)
990 ifeq ($(CONFIG_KALLSYMS),y) 990 ifeq ($(CONFIG_KALLSYMS),y)
991 smap=`$(call SYSTEM_MAP,u-boot) | \ 991 smap=`$(call SYSTEM_MAP,u-boot) | \
992 awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \ 992 awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \
993 $(CC) $(c_flags) -DSYSTEM_MAP="\"$${smap}\"" \ 993 $(CC) $(c_flags) -DSYSTEM_MAP="\"$${smap}\"" \
994 -c $(srctree)/common/system_map.c -o common/system_map.o 994 -c $(srctree)/common/system_map.c -o common/system_map.o
995 $(call cmd,u-boot__) common/system_map.o 995 $(call cmd,u-boot__) common/system_map.o
996 endif 996 endif
997 997
998 # The actual objects are generated when descending, 998 # The actual objects are generated when descending,
999 # make sure no implicit rule kicks in 999 # make sure no implicit rule kicks in
1000 $(sort $(u-boot-init) $(u-boot-main)): $(u-boot-dirs) ; 1000 $(sort $(u-boot-init) $(u-boot-main)): $(u-boot-dirs) ;
1001 1001
1002 # Handle descending into subdirectories listed in $(vmlinux-dirs) 1002 # Handle descending into subdirectories listed in $(vmlinux-dirs)
1003 # Preset locale variables to speed up the build process. Limit locale 1003 # Preset locale variables to speed up the build process. Limit locale
1004 # tweaks to this spot to avoid wrong language settings when running 1004 # tweaks to this spot to avoid wrong language settings when running
1005 # make menuconfig etc. 1005 # make menuconfig etc.
1006 # Error messages still appears in the original language 1006 # Error messages still appears in the original language
1007 1007
1008 PHONY += $(u-boot-dirs) 1008 PHONY += $(u-boot-dirs)
1009 $(u-boot-dirs): prepare scripts 1009 $(u-boot-dirs): prepare scripts
1010 $(Q)$(MAKE) $(build)=$@ 1010 $(Q)$(MAKE) $(build)=$@
1011 1011
1012 tools: prepare 1012 tools: prepare
1013 # The "tools" are needed early 1013 # The "tools" are needed early
1014 $(filter-out tools, $(u-boot-dirs)): tools 1014 $(filter-out tools, $(u-boot-dirs)): tools
1015 # The "examples" conditionally depend on U-Boot (say, when USE_PRIVATE_LIBGCC 1015 # The "examples" conditionally depend on U-Boot (say, when USE_PRIVATE_LIBGCC
1016 # is "yes"), so compile examples after U-Boot is compiled. 1016 # is "yes"), so compile examples after U-Boot is compiled.
1017 examples: $(filter-out examples, $(u-boot-dirs)) 1017 examples: $(filter-out examples, $(u-boot-dirs))
1018 1018
1019 define filechk_uboot.release 1019 define filechk_uboot.release
1020 echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))" 1020 echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
1021 endef 1021 endef
1022 1022
1023 # Store (new) UBOOTRELEASE string in include/config/uboot.release 1023 # Store (new) UBOOTRELEASE string in include/config/uboot.release
1024 include/config/uboot.release: Makefile FORCE 1024 include/config/uboot.release: Makefile FORCE
1025 $(call filechk,uboot.release) 1025 $(call filechk,uboot.release)
1026 1026
1027 1027
1028 # Things we need to do before we recursively start building the kernel 1028 # Things we need to do before we recursively start building the kernel
1029 # or the modules are listed in "prepare". 1029 # or the modules are listed in "prepare".
1030 # A multi level approach is used. prepareN is processed before prepareN-1. 1030 # A multi level approach is used. prepareN is processed before prepareN-1.
1031 # archprepare is used in arch Makefiles and when processed asm symlink, 1031 # archprepare is used in arch Makefiles and when processed asm symlink,
1032 # version.h and scripts_basic is processed / created. 1032 # version.h and scripts_basic is processed / created.
1033 1033
1034 # Listed in dependency order 1034 # Listed in dependency order
1035 PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3 1035 PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3
1036 1036
1037 # prepare3 is used to check if we are building in a separate output directory, 1037 # prepare3 is used to check if we are building in a separate output directory,
1038 # and if so do: 1038 # and if so do:
1039 # 1) Check that make has not been executed in the kernel src $(srctree) 1039 # 1) Check that make has not been executed in the kernel src $(srctree)
1040 prepare3: include/config/uboot.release 1040 prepare3: include/config/uboot.release
1041 ifneq ($(KBUILD_SRC),) 1041 ifneq ($(KBUILD_SRC),)
1042 @$(kecho) ' Using $(srctree) as source for u-boot' 1042 @$(kecho) ' Using $(srctree) as source for u-boot'
1043 $(Q)if [ -f $(srctree)/include/config.mk ]; then \ 1043 $(Q)if [ -f $(srctree)/include/config.mk ]; then \
1044 echo >&2 " $(srctree) is not clean, please run 'make mrproper'"; \ 1044 echo >&2 " $(srctree) is not clean, please run 'make mrproper'"; \
1045 echo >&2 " in the '$(srctree)' directory.";\ 1045 echo >&2 " in the '$(srctree)' directory.";\
1046 /bin/false; \ 1046 /bin/false; \
1047 fi; 1047 fi;
1048 endif 1048 endif
1049 1049
1050 # prepare2 creates a makefile if using a separate output directory 1050 # prepare2 creates a makefile if using a separate output directory
1051 prepare2: prepare3 outputmakefile 1051 prepare2: prepare3 outputmakefile
1052 1052
1053 prepare1: prepare2 $(version_h) $(timestamp_h) 1053 prepare1: prepare2 $(version_h) $(timestamp_h)
1054 ifeq ($(__HAVE_ARCH_GENERIC_BOARD),) 1054 ifeq ($(__HAVE_ARCH_GENERIC_BOARD),)
1055 ifeq ($(CONFIG_SYS_GENERIC_BOARD),y) 1055 ifeq ($(CONFIG_SYS_GENERIC_BOARD),y)
1056 @echo >&2 " Your architecture does not support generic board." 1056 @echo >&2 " Your architecture does not support generic board."
1057 @echo >&2 " Please undefine CONFIG_SYS_GENERIC_BOARD in your board config file." 1057 @echo >&2 " Please undefine CONFIG_SYS_GENERIC_BOARD in your board config file."
1058 @/bin/false 1058 @/bin/false
1059 endif 1059 endif
1060 endif 1060 endif
1061 ifeq ($(wildcard $(LDSCRIPT)),) 1061 ifeq ($(wildcard $(LDSCRIPT)),)
1062 @echo >&2 " Could not find linker script." 1062 @echo >&2 " Could not find linker script."
1063 @/bin/false 1063 @/bin/false
1064 endif 1064 endif
1065 1065
1066 archprepare: prepare1 scripts_basic 1066 archprepare: prepare1 scripts_basic
1067 1067
1068 prepare0: archprepare FORCE 1068 prepare0: archprepare FORCE
1069 $(Q)$(MAKE) $(build)=. 1069 $(Q)$(MAKE) $(build)=.
1070 1070
1071 # All the preparing.. 1071 # All the preparing..
1072 prepare: prepare0 1072 prepare: prepare0
1073 1073
1074 # Generate some files 1074 # Generate some files
1075 # --------------------------------------------------------------------------- 1075 # ---------------------------------------------------------------------------
1076 1076
1077 define filechk_version.h 1077 define filechk_version.h
1078 (echo \#define PLAIN_VERSION \"$(UBOOTRELEASE)\"; \ 1078 (echo \#define PLAIN_VERSION \"$(UBOOTRELEASE)\"; \
1079 echo \#define U_BOOT_VERSION \"U-Boot \" PLAIN_VERSION; \ 1079 echo \#define U_BOOT_VERSION \"U-Boot \" PLAIN_VERSION; \
1080 echo \#define CC_VERSION_STRING \"$$($(CC) --version | head -n 1)\"; \ 1080 echo \#define CC_VERSION_STRING \"$$($(CC) --version | head -n 1)\"; \
1081 echo \#define LD_VERSION_STRING \"$$($(LD) --version | head -n 1)\"; ) 1081 echo \#define LD_VERSION_STRING \"$$($(LD) --version | head -n 1)\"; )
1082 endef 1082 endef
1083 1083
1084 define filechk_timestamp.h 1084 define filechk_timestamp.h
1085 (LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; \ 1085 (LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; \
1086 LC_ALL=C date +'#define U_BOOT_TIME "%T"') 1086 LC_ALL=C date +'#define U_BOOT_TIME "%T"')
1087 endef 1087 endef
1088 1088
1089 $(version_h): include/config/uboot.release FORCE 1089 $(version_h): include/config/uboot.release FORCE
1090 $(call filechk,version.h) 1090 $(call filechk,version.h)
1091 1091
1092 $(timestamp_h): $(srctree)/Makefile FORCE 1092 $(timestamp_h): $(srctree)/Makefile FORCE
1093 $(call filechk,timestamp.h) 1093 $(call filechk,timestamp.h)
1094 1094
1095 # 1095 #
1096 # Auto-generate the autoconf.mk file (which is included by all makefiles) 1096 # Auto-generate the autoconf.mk file (which is included by all makefiles)
1097 # 1097 #
1098 # This target actually generates 2 files; autoconf.mk and autoconf.mk.dep. 1098 # This target actually generates 2 files; autoconf.mk and autoconf.mk.dep.
1099 # the dep file is only include in this top level makefile to determine when 1099 # the dep file is only include in this top level makefile to determine when
1100 # to regenerate the autoconf.mk file. 1100 # to regenerate the autoconf.mk file.
1101 1101
1102 quiet_cmd_autoconf_dep = GEN $@ 1102 quiet_cmd_autoconf_dep = GEN $@
1103 cmd_autoconf_dep = $(CC) -x c -DDO_DEPS_ONLY -M $(c_flags) \ 1103 cmd_autoconf_dep = $(CC) -x c -DDO_DEPS_ONLY -M $(c_flags) \
1104 -MQ include/autoconf.mk $(srctree)/include/common.h > $@ || rm $@ 1104 -MQ include/autoconf.mk $(srctree)/include/common.h > $@ || rm $@
1105 1105
1106 include/autoconf.mk.dep: include/config.h include/common.h 1106 include/autoconf.mk.dep: include/config.h include/common.h
1107 $(call cmd,autoconf_dep) 1107 $(call cmd,autoconf_dep)
1108 1108
1109 quiet_cmd_autoconf = GEN $@ 1109 quiet_cmd_autoconf = GEN $@
1110 cmd_autoconf = \ 1110 cmd_autoconf = \
1111 $(CPP) $(c_flags) -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && \ 1111 $(CPP) $(c_flags) -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && \
1112 sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp > $@; \ 1112 sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp > $@; \
1113 rm $@.tmp 1113 rm $@.tmp
1114 1114
1115 include/autoconf.mk: include/config.h 1115 include/autoconf.mk: include/config.h
1116 $(call cmd,autoconf) 1116 $(call cmd,autoconf)
1117 1117
1118 # --------------------------------------------------------------------------- 1118 # ---------------------------------------------------------------------------
1119 1119
1120 PHONY += depend dep 1120 PHONY += depend dep
1121 depend dep: 1121 depend dep:
1122 @echo '*** Warning: make $@ is unnecessary now.' 1122 @echo '*** Warning: make $@ is unnecessary now.'
1123 1123
1124 # --------------------------------------------------------------------------- 1124 # ---------------------------------------------------------------------------
1125 quiet_cmd_cpp_lds = LDS $@ 1125 quiet_cmd_cpp_lds = LDS $@
1126 cmd_cpp_lds = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) -ansi \ 1126 cmd_cpp_lds = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) -ansi \
1127 -D__ASSEMBLY__ -x assembler-with-cpp -P -o $@ $< 1127 -D__ASSEMBLY__ -x assembler-with-cpp -P -o $@ $<
1128 1128
1129 u-boot.lds: $(LDSCRIPT) prepare FORCE 1129 u-boot.lds: $(LDSCRIPT) prepare FORCE
1130 $(call if_changed_dep,cpp_lds) 1130 $(call if_changed_dep,cpp_lds)
1131 1131
1132 PHONY += nand_spl 1132 PHONY += nand_spl
1133 nand_spl: prepare 1133 nand_spl: prepare
1134 $(Q)$(MAKE) $(build)=nand_spl/board/$(BOARDDIR) all 1134 $(Q)$(MAKE) $(build)=nand_spl/board/$(BOARDDIR) all
1135 @echo >&2 1135 @echo >&2
1136 @echo >&2 "==================== WARNING =====================" 1136 @echo >&2 "==================== WARNING ====================="
1137 @echo >&2 "nand_spl will not be included in v2014.07 release." 1137 @echo >&2 "nand_spl will not be included in v2014.07 release."
1138 @echo >&2 "Please switch over to SPL." 1138 @echo >&2 "Please switch over to SPL."
1139 @echo >&2 "Otherwise, this board will be removed." 1139 @echo >&2 "Otherwise, this board will be removed."
1140 @echo >&2 "==================================================" 1140 @echo >&2 "=================================================="
1141 @echo >&2 1141 @echo >&2
1142 1142
1143 nand_spl/u-boot-spl-16k.bin: nand_spl 1143 nand_spl/u-boot-spl-16k.bin: nand_spl
1144 @: 1144 @:
1145 1145
1146 u-boot-nand.bin: nand_spl/u-boot-spl-16k.bin u-boot.bin FORCE 1146 u-boot-nand.bin: nand_spl/u-boot-spl-16k.bin u-boot.bin FORCE
1147 $(call if_changed,cat) 1147 $(call if_changed,cat)
1148 1148
1149 spl/u-boot-spl.bin: spl/u-boot-spl 1149 spl/u-boot-spl.bin: spl/u-boot-spl
1150 @: 1150 @:
1151 spl/u-boot-spl: tools prepare 1151 spl/u-boot-spl: tools prepare
1152 $(Q)$(MAKE) obj=spl -f $(srctree)/spl/Makefile all 1152 $(Q)$(MAKE) obj=spl -f $(srctree)/spl/Makefile all
1153 1153
1154 tpl/u-boot-tpl.bin: tools prepare 1154 tpl/u-boot-tpl.bin: tools prepare
1155 $(Q)$(MAKE) obj=tpl -f $(srctree)/spl/Makefile all CONFIG_TPL_BUILD=y 1155 $(Q)$(MAKE) obj=tpl -f $(srctree)/spl/Makefile all CONFIG_TPL_BUILD=y
1156 1156
1157 TAG_SUBDIRS := $(u-boot-dirs) include 1157 TAG_SUBDIRS := $(u-boot-dirs) include
1158 1158
1159 FIND := find 1159 FIND := find
1160 FINDFLAGS := -L 1160 FINDFLAGS := -L
1161 1161
1162 tags ctags: 1162 tags ctags:
1163 ctags -w -o ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \ 1163 ctags -w -o ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
1164 -name '*.[chS]' -print` 1164 -name '*.[chS]' -print`
1165 1165
1166 etags: 1166 etags:
1167 etags -a -o $(obj)etags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \ 1167 etags -a -o $(obj)etags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
1168 -name '*.[chS]' -print` 1168 -name '*.[chS]' -print`
1169 cscope: 1169 cscope:
1170 $(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \ 1170 $(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \
1171 cscope.files 1171 cscope.files
1172 cscope -b -q -k 1172 cscope -b -q -k
1173 1173
1174 SYSTEM_MAP = \ 1174 SYSTEM_MAP = \
1175 $(NM) $1 | \ 1175 $(NM) $1 | \
1176 grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \ 1176 grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
1177 LC_ALL=C sort 1177 LC_ALL=C sort
1178 System.map: u-boot 1178 System.map: u-boot
1179 @$(call SYSTEM_MAP,$<) > $@ 1179 @$(call SYSTEM_MAP,$<) > $@
1180 1180
1181 checkdtc: 1181 checkdtc:
1182 @if test $(call dtc-version) -lt 0104; then \ 1182 @if test $(call dtc-version) -lt 0104; then \
1183 echo '*** Your dtc is too old, please upgrade to dtc 1.4 or newer'; \ 1183 echo '*** Your dtc is too old, please upgrade to dtc 1.4 or newer'; \
1184 false; \ 1184 false; \
1185 fi 1185 fi
1186 1186
1187 ######################################################################### 1187 #########################################################################
1188 1188
1189 # ARM relocations should all be R_ARM_RELATIVE (32-bit) or 1189 # ARM relocations should all be R_ARM_RELATIVE (32-bit) or
1190 # R_AARCH64_RELATIVE (64-bit). 1190 # R_AARCH64_RELATIVE (64-bit).
1191 checkarmreloc: u-boot 1191 checkarmreloc: u-boot
1192 @RELOC="`$(CROSS_COMPILE)readelf -r -W $< | cut -d ' ' -f 4 | \ 1192 @RELOC="`$(CROSS_COMPILE)readelf -r -W $< | cut -d ' ' -f 4 | \
1193 grep R_A | sort -u`"; \ 1193 grep R_A | sort -u`"; \
1194 if test "$$RELOC" != "R_ARM_RELATIVE" -a \ 1194 if test "$$RELOC" != "R_ARM_RELATIVE" -a \
1195 "$$RELOC" != "R_AARCH64_RELATIVE"; then \ 1195 "$$RELOC" != "R_AARCH64_RELATIVE"; then \
1196 echo "$< contains unexpected relocations: $$RELOC"; \ 1196 echo "$< contains unexpected relocations: $$RELOC"; \
1197 false; \ 1197 false; \
1198 fi 1198 fi
1199 1199
1200 env: scripts_basic 1200 env: scripts_basic
1201 $(Q)$(MAKE) $(build)=tools/$@ 1201 $(Q)$(MAKE) $(build)=tools/$@
1202 1202
1203 tools-only: scripts_basic $(version_h) $(timestamp_h) 1203 tools-only: scripts_basic $(version_h) $(timestamp_h)
1204 $(Q)$(MAKE) $(build)=tools 1204 $(Q)$(MAKE) $(build)=tools
1205 1205
1206 tools-all: export HOST_TOOLS_ALL=y 1206 tools-all: export HOST_TOOLS_ALL=y
1207 tools-all: env tools ; 1207 tools-all: env tools ;
1208 1208
1209 cross_tools: export CROSS_BUILD_TOOLS=y 1209 cross_tools: export CROSS_BUILD_TOOLS=y
1210 cross_tools: tools ; 1210 cross_tools: tools ;
1211 1211
1212 .PHONY : CHANGELOG 1212 .PHONY : CHANGELOG
1213 CHANGELOG: 1213 CHANGELOG:
1214 git log --no-merges U-Boot-1_1_5.. | \ 1214 git log --no-merges U-Boot-1_1_5.. | \
1215 unexpand -a | sed -e 's/\s\s*$$//' > $@ 1215 unexpand -a | sed -e 's/\s\s*$$//' > $@
1216 1216
1217 include/license.h: tools/bin2header COPYING 1217 include/license.h: tools/bin2header COPYING
1218 cat COPYING | gzip -9 -c | ./tools/bin2header license_gzip > include/license.h 1218 cat COPYING | gzip -9 -c | ./tools/bin2header license_gzip > include/license.h
1219 ######################################################################### 1219 #########################################################################
1220 1220
1221 ### 1221 ###
1222 # Cleaning is done on three levels. 1222 # Cleaning is done on three levels.
1223 # make clean Delete most generated files 1223 # make clean Delete most generated files
1224 # Leave enough to build external modules 1224 # Leave enough to build external modules
1225 # make mrproper Delete the current configuration, and all generated files 1225 # make mrproper Delete the current configuration, and all generated files
1226 # make distclean Remove editor backup files, patch leftover files and the like 1226 # make distclean Remove editor backup files, patch leftover files and the like
1227 1227
1228 # Directories & files removed with 'make clean' 1228 # Directories & files removed with 'make clean'
1229 CLEAN_DIRS += $(MODVERDIR) 1229 CLEAN_DIRS += $(MODVERDIR)
1230 CLEAN_FILES += u-boot.lds include/bmp_logo.h include/bmp_logo_data.h \ 1230 CLEAN_FILES += u-boot.lds include/bmp_logo.h include/bmp_logo_data.h \
1231 include/autoconf.mk* include/spl-autoconf.mk \ 1231 include/autoconf.mk* include/spl-autoconf.mk \
1232 include/tpl-autoconf.mk 1232 include/tpl-autoconf.mk
1233 1233
1234 # Directories & files removed with 'make clobber' 1234 # Directories & files removed with 'make clobber'
1235 CLOBBER_DIRS += $(patsubst %,spl/%, $(filter-out Makefile, \ 1235 CLOBBER_DIRS += $(patsubst %,spl/%, $(filter-out Makefile, \
1236 $(shell ls -1 spl 2>/dev/null))) \ 1236 $(shell ls -1 spl 2>/dev/null))) \
1237 tpl 1237 tpl
1238 CLOBBER_FILES += u-boot* MLO* SPL System.map nand_spl/u-boot* 1238 CLOBBER_FILES += u-boot* MLO* SPL System.map nand_spl/u-boot*
1239 1239
1240 # Directories & files removed with 'make mrproper' 1240 # Directories & files removed with 'make mrproper'
1241 MRPROPER_DIRS += include/config include/generated \ 1241 MRPROPER_DIRS += include/config include/generated \
1242 .tmp_objdiff 1242 .tmp_objdiff
1243 MRPROPER_FILES += .config .config.old \ 1243 MRPROPER_FILES += .config .config.old \
1244 tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \ 1244 tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \
1245 include/config.h include/config.mk 1245 include/config.h include/config.mk
1246 1246
1247 # clean - Delete most, but leave enough to build external modules 1247 # clean - Delete most, but leave enough to build external modules
1248 # 1248 #
1249 clean: rm-dirs := $(CLEAN_DIRS) 1249 clean: rm-dirs := $(CLEAN_DIRS)
1250 clean: rm-files := $(CLEAN_FILES) 1250 clean: rm-files := $(CLEAN_FILES)
1251 1251
1252 clean-dirs := $(foreach f,$(u-boot-alldirs),$(if $(wildcard $(srctree)/$f/Makefile),$f)) 1252 clean-dirs := $(foreach f,$(u-boot-alldirs),$(if $(wildcard $(srctree)/$f/Makefile),$f))
1253 1253
1254 clean-dirs := $(addprefix _clean_, $(clean-dirs) doc/DocBook) 1254 clean-dirs := $(addprefix _clean_, $(clean-dirs) doc/DocBook)
1255 1255
1256 PHONY += $(clean-dirs) clean archclean 1256 PHONY += $(clean-dirs) clean archclean
1257 $(clean-dirs): 1257 $(clean-dirs):
1258 $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@) 1258 $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@)
1259 1259
1260 # TODO: Do not use *.cfgtmp 1260 # TODO: Do not use *.cfgtmp
1261 clean: $(clean-dirs) 1261 clean: $(clean-dirs)
1262 $(call cmd,rmdirs) 1262 $(call cmd,rmdirs)
1263 $(call cmd,rmfiles) 1263 $(call cmd,rmfiles)
1264 @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \ 1264 @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \
1265 \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \ 1265 \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
1266 -o -name '*.ko.*' -o -name '*.su' -o -name '*.cfgtmp' \ 1266 -o -name '*.ko.*' -o -name '*.su' -o -name '*.cfgtmp' \
1267 -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \ 1267 -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
1268 -o -name '*.symtypes' -o -name 'modules.order' \ 1268 -o -name '*.symtypes' -o -name 'modules.order' \
1269 -o -name modules.builtin -o -name '.tmp_*.o.*' \ 1269 -o -name modules.builtin -o -name '.tmp_*.o.*' \
1270 -o -name '*.gcno' \) -type f -print | xargs rm -f 1270 -o -name '*.gcno' \) -type f -print | xargs rm -f
1271 @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \ 1271 @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \
1272 -path './nand_spl/*' -type l -print | xargs rm -f 1272 -path './nand_spl/*' -type l -print | xargs rm -f
1273 1273
1274 # clobber 1274 # clobber
1275 # 1275 #
1276 clobber: rm-dirs := $(CLOBBER_DIRS) 1276 clobber: rm-dirs := $(CLOBBER_DIRS)
1277 clobber: rm-files := $(CLOBBER_FILES) 1277 clobber: rm-files := $(CLOBBER_FILES)
1278 1278
1279 PHONY += clobber 1279 PHONY += clobber
1280 1280
1281 clobber: clean 1281 clobber: clean
1282 $(call cmd,rmdirs) 1282 $(call cmd,rmdirs)
1283 $(call cmd,rmfiles) 1283 $(call cmd,rmfiles)
1284 1284
1285 # mrproper - Delete all generated files, including .config 1285 # mrproper - Delete all generated files, including .config
1286 # 1286 #
1287 mrproper: rm-dirs := $(wildcard $(MRPROPER_DIRS)) 1287 mrproper: rm-dirs := $(wildcard $(MRPROPER_DIRS))
1288 mrproper: rm-files := $(wildcard $(MRPROPER_FILES)) 1288 mrproper: rm-files := $(wildcard $(MRPROPER_FILES))
1289 mrproper-dirs := $(addprefix _mrproper_,scripts) 1289 mrproper-dirs := $(addprefix _mrproper_,scripts)
1290 1290
1291 PHONY += $(mrproper-dirs) mrproper archmrproper 1291 PHONY += $(mrproper-dirs) mrproper archmrproper
1292 $(mrproper-dirs): 1292 $(mrproper-dirs):
1293 $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@) 1293 $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@)
1294 1294
1295 mrproper: clobber $(mrproper-dirs) 1295 mrproper: clobber $(mrproper-dirs)
1296 $(call cmd,rmdirs) 1296 $(call cmd,rmdirs)
1297 $(call cmd,rmfiles) 1297 $(call cmd,rmfiles)
1298 @rm -f arch/*/include/asm/arch arch/*/include/asm/proc 1298 @rm -f arch/*/include/asm/arch arch/*/include/asm/proc
1299 1299
1300 # distclean 1300 # distclean
1301 # 1301 #
1302 PHONY += distclean 1302 PHONY += distclean
1303 1303
1304 distclean: mrproper 1304 distclean: mrproper
1305 @find $(srctree) $(RCS_FIND_IGNORE) \ 1305 @find $(srctree) $(RCS_FIND_IGNORE) \
1306 \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ 1306 \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
1307 -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ 1307 -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
1308 -o -name '.*.rej' -o -name '*%' -o -name 'core' \ 1308 -o -name '.*.rej' -o -name '*%' -o -name 'core' \
1309 -o -name '*.pyc' \) \ 1309 -o -name '*.pyc' \) \
1310 -type f -print | xargs rm -f 1310 -type f -print | xargs rm -f
1311 1311
1312 backup: 1312 backup:
1313 F=`basename $(srctree)` ; cd .. ; \ 1313 F=`basename $(srctree)` ; cd .. ; \
1314 gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F 1314 gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F
1315 1315
1316 help: 1316 help:
1317 @echo 'Cleaning targets:' 1317 @echo 'Cleaning targets:'
1318 @echo ' clean - Remove most generated files but keep the config and' 1318 @echo ' clean - Remove most generated files but keep the config and'
1319 @echo ' necessities for testing u-boot' 1319 @echo ' necessities for testing u-boot'
1320 @echo ' clobber - Remove most generated files but keep the config' 1320 @echo ' clobber - Remove most generated files but keep the config'
1321 @echo ' mrproper - Remove all generated files + config + various backup files' 1321 @echo ' mrproper - Remove all generated files + config + various backup files'
1322 @echo ' distclean - mrproper + remove editor backup and patch files' 1322 @echo ' distclean - mrproper + remove editor backup and patch files'
1323 @echo '' 1323 @echo ''
1324 # uncomment after adding Kconfig feature 1324 # uncomment after adding Kconfig feature
1325 # @echo 'Configuration targets:' 1325 # @echo 'Configuration targets:'
1326 # @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help 1326 # @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help
1327 # @echo '' 1327 # @echo ''
1328 @echo 'Other generic targets:' 1328 @echo 'Other generic targets:'
1329 @echo ' all - Build all necessary images depending on configuration' 1329 @echo ' all - Build all necessary images depending on configuration'
1330 @echo ' u-boot - Build the bare u-boot' 1330 @echo ' u-boot - Build the bare u-boot'
1331 @echo ' dir/ - Build all files in dir and below' 1331 @echo ' dir/ - Build all files in dir and below'
1332 @echo ' dir/file.[oisS] - Build specified target only' 1332 @echo ' dir/file.[oisS] - Build specified target only'
1333 @echo ' dir/file.lst - Build specified mixed source/assembly target only' 1333 @echo ' dir/file.lst - Build specified mixed source/assembly target only'
1334 @echo ' (requires a recent binutils and recent build (System.map))' 1334 @echo ' (requires a recent binutils and recent build (System.map))'
1335 @echo ' tags/TAGS - Generate tags file for editors' 1335 @echo ' tags/TAGS - Generate tags file for editors'
1336 @echo ' cscope - Generate cscope index' 1336 @echo ' cscope - Generate cscope index'
1337 @echo ' ubootrelease - Output the release version string' 1337 @echo ' ubootrelease - Output the release version string'
1338 @echo ' ubootversion - Output the version stored in Makefile' 1338 @echo ' ubootversion - Output the version stored in Makefile'
1339 @echo '' 1339 @echo ''
1340 @echo 'Static analysers' 1340 @echo 'Static analysers'
1341 @echo ' checkstack - Generate a list of stack hogs' 1341 @echo ' checkstack - Generate a list of stack hogs'
1342 @echo '' 1342 @echo ''
1343 @echo 'Documentation targets:' 1343 @echo 'Documentation targets:'
1344 @$(MAKE) -f $(srctree)/doc/DocBook/Makefile dochelp 1344 @$(MAKE) -f $(srctree)/doc/DocBook/Makefile dochelp
1345 @echo '' 1345 @echo ''
1346 @echo ' make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build' 1346 @echo ' make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build'
1347 @echo ' make V=2 [targets] 2 => give reason for rebuild of target' 1347 @echo ' make V=2 [targets] 2 => give reason for rebuild of target'
1348 @echo ' make O=dir [targets] Locate all output files in "dir", including .config' 1348 @echo ' make O=dir [targets] Locate all output files in "dir", including .config'
1349 @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)' 1349 @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)'
1350 @echo ' make C=2 [targets] Force check of all c source with $$CHECK' 1350 @echo ' make C=2 [targets] Force check of all c source with $$CHECK'
1351 @echo ' make RECORDMCOUNT_WARN=1 [targets] Warn about ignored mcount sections' 1351 @echo ' make RECORDMCOUNT_WARN=1 [targets] Warn about ignored mcount sections'
1352 @echo ' make W=n [targets] Enable extra gcc checks, n=1,2,3 where' 1352 @echo ' make W=n [targets] Enable extra gcc checks, n=1,2,3 where'
1353 @echo ' 1: warnings which may be relevant and do not occur too often' 1353 @echo ' 1: warnings which may be relevant and do not occur too often'
1354 @echo ' 2: warnings which occur quite often but may still be relevant' 1354 @echo ' 2: warnings which occur quite often but may still be relevant'
1355 @echo ' 3: more obscure warnings, can most likely be ignored' 1355 @echo ' 3: more obscure warnings, can most likely be ignored'
1356 @echo ' Multiple levels can be combined with W=12 or W=123' 1356 @echo ' Multiple levels can be combined with W=12 or W=123'
1357 @echo '' 1357 @echo ''
1358 @echo 'Execute "make" or "make all" to build all targets marked with [*] ' 1358 @echo 'Execute "make" or "make all" to build all targets marked with [*] '
1359 @echo 'For further info see the ./README file' 1359 @echo 'For further info see the ./README file'
1360 1360
1361 1361
1362 # Documentation targets 1362 # Documentation targets
1363 # --------------------------------------------------------------------------- 1363 # ---------------------------------------------------------------------------
1364 %docs: scripts_basic FORCE 1364 %docs: scripts_basic FORCE
1365 $(Q)$(MAKE) $(build)=scripts build_docproc 1365 $(Q)$(MAKE) $(build)=scripts build_docproc
1366 $(Q)$(MAKE) $(build)=doc/DocBook $@ 1366 $(Q)$(MAKE) $(build)=doc/DocBook $@
1367 1367
1368 # Dummies... 1368 # Dummies...
1369 PHONY += prepare scripts 1369 PHONY += prepare scripts
1370 prepare: ; 1370 prepare: ;
1371 scripts: ; 1371 scripts: ;
1372 1372
1373 endif #ifeq ($(config-targets),1) 1373 endif #ifeq ($(config-targets),1)
1374 endif #ifeq ($(mixed-targets),1) 1374 endif #ifeq ($(mixed-targets),1)
1375 1375
1376 PHONY += checkstack ubootrelease ubootversion 1376 PHONY += checkstack ubootrelease ubootversion
1377 1377
1378 checkstack: 1378 checkstack:
1379 $(OBJDUMP) -d u-boot $$(find . -name u-boot-spl) | \ 1379 $(OBJDUMP) -d u-boot $$(find . -name u-boot-spl) | \
1380 $(PERL) $(src)/scripts/checkstack.pl $(ARCH) 1380 $(PERL) $(src)/scripts/checkstack.pl $(ARCH)
1381 1381
1382 ubootrelease: 1382 ubootrelease:
1383 @echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))" 1383 @echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
1384 1384
1385 ubootversion: 1385 ubootversion:
1386 @echo $(UBOOTVERSION) 1386 @echo $(UBOOTVERSION)
1387 1387
1388 # Single targets 1388 # Single targets
1389 # --------------------------------------------------------------------------- 1389 # ---------------------------------------------------------------------------
1390 # Single targets are compatible with: 1390 # Single targets are compatible with:
1391 # - build with mixed source and output 1391 # - build with mixed source and output
1392 # - build with separate output dir 'make O=...' 1392 # - build with separate output dir 'make O=...'
1393 # - external modules 1393 # - external modules
1394 # 1394 #
1395 # target-dir => where to store outputfile 1395 # target-dir => where to store outputfile
1396 # build-dir => directory in kernel source tree to use 1396 # build-dir => directory in kernel source tree to use
1397 1397
1398 ifeq ($(KBUILD_EXTMOD),) 1398 ifeq ($(KBUILD_EXTMOD),)
1399 build-dir = $(patsubst %/,%,$(dir $@)) 1399 build-dir = $(patsubst %/,%,$(dir $@))
1400 target-dir = $(dir $@) 1400 target-dir = $(dir $@)
1401 else 1401 else
1402 zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@))) 1402 zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@)))
1403 build-dir = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash)) 1403 build-dir = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash))
1404 target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@)) 1404 target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@))
1405 endif 1405 endif
1406 1406
1407 %.s: %.c prepare scripts FORCE 1407 %.s: %.c prepare scripts FORCE
1408 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1408 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1409 %.i: %.c prepare scripts FORCE 1409 %.i: %.c prepare scripts FORCE
1410 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1410 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1411 %.o: %.c prepare scripts FORCE 1411 %.o: %.c prepare scripts FORCE
1412 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1412 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1413 %.lst: %.c prepare scripts FORCE 1413 %.lst: %.c prepare scripts FORCE
1414 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1414 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1415 %.s: %.S prepare scripts FORCE 1415 %.s: %.S prepare scripts FORCE
1416 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1416 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1417 %.o: %.S prepare scripts FORCE 1417 %.o: %.S prepare scripts FORCE
1418 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1418 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1419 %.symtypes: %.c prepare scripts FORCE 1419 %.symtypes: %.c prepare scripts FORCE
1420 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1420 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1421 1421
1422 # Modules 1422 # Modules
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 %/: prepare scripts FORCE 1427 %/: 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) 1430 $(build)=$(build-dir)
1431 %.ko: prepare scripts FORCE 1431 %.ko: prepare scripts FORCE
1432 $(cmd_crmodverdir) 1432 $(cmd_crmodverdir)
1433 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 1433 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
1434 $(build)=$(build-dir) $(@:.ko=.o) 1434 $(build)=$(build-dir) $(@:.ko=.o)
1435 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost 1435 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
1436 1436
1437 # FIXME Should go into a make.lib or something 1437 # FIXME Should go into a make.lib or something
1438 # =========================================================================== 1438 # ===========================================================================
1439 1439
1440 quiet_cmd_rmdirs = $(if $(wildcard $(rm-dirs)),CLEAN $(wildcard $(rm-dirs))) 1440 quiet_cmd_rmdirs = $(if $(wildcard $(rm-dirs)),CLEAN $(wildcard $(rm-dirs)))
1441 cmd_rmdirs = rm -rf $(rm-dirs) 1441 cmd_rmdirs = rm -rf $(rm-dirs)
1442 1442
1443 quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files))) 1443 quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files)))
1444 cmd_rmfiles = rm -f $(rm-files) 1444 cmd_rmfiles = rm -f $(rm-files)
1445 1445
1446 # read all saved command lines 1446 # read all saved command lines
1447 1447
1448 targets := $(wildcard $(sort $(targets))) 1448 targets := $(wildcard $(sort $(targets)))
1449 cmd_files := $(wildcard .*.cmd $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd)) 1449 cmd_files := $(wildcard .*.cmd $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd))
1450 1450
1451 ifneq ($(cmd_files),) 1451 ifneq ($(cmd_files),)
1452 $(cmd_files): ; # Do not try to update included dependency files 1452 $(cmd_files): ; # Do not try to update included dependency files
1453 include $(cmd_files) 1453 include $(cmd_files)
1454 endif 1454 endif
1455 1455
1456 # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj=dir 1456 # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj=dir
1457 # Usage: 1457 # Usage:
1458 # $(Q)$(MAKE) $(clean)=dir 1458 # $(Q)$(MAKE) $(clean)=dir
1459 clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj 1459 clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj
1460 1460
1461 endif # skip-makefile 1461 endif # skip-makefile
1462 1462
1463 PHONY += FORCE 1463 PHONY += FORCE
1464 FORCE: 1464 FORCE:
1465 1465
1466 # Declare the contents of the .PHONY variable as phony. We keep that 1466 # Declare the contents of the .PHONY variable as phony. We keep that
1467 # information in a variable so we can use it in if_changed and friends. 1467 # information in a variable so we can use it in if_changed and friends.
1468 .PHONY: $(PHONY) 1468 .PHONY: $(PHONY)
1469 1469