Commit c43fd23cf619856b0763a64a6a3bcf3663058c49

Authored by Tom Rini
1 parent 74bf7961a0

Prepare v2014.10

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