Commit 0116f40bbc269c57566d69e0db8cb9da2e194d33

Authored by Tom Rini
1 parent 54c5d08a09

Prepare v2014.07-rc2

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

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

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