Commit 8176a874233eb5180701e2811b38c199369975b2

Authored by Tom Rini
1 parent 19e5118d1c

Prepare v2015.04-rc3

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

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

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