Commit d6c1ffc7d23f4fe4ae8c91101861055b8e1501b6

Authored by Tom Rini
1 parent 48f892dc73

Prepare v2014.10-rc2

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

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

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