Commit e76b933e02e1b38e48754c435e9dba1c0deeb3c6

Authored by Tom Rini
1 parent b21f87a3e0

Prepare v2014.10-rc1

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

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