Commit a176ff0705351bf6d993a8f15e081bfa2ba2e1af

Authored by Tom Rini
1 parent dcb89b5aa0

Prepare v2014.07-rc4

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

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

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