Commit 2a82ec77d27ef5f860a107c4b764643a655dceeb

Authored by Tom Rini
1 parent fce0a90a68

Prepare v2015.01-rc2

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

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

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