Commit 0a8e823ad0c5a602c93c2e8a54caf622ade6d3fb

Authored by Tom Rini
1 parent 2aa43f70cf

Prepare v2014.04-rc1

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

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

1 # 1 #
2 # (C) Copyright 2000-2013 2 # (C) Copyright 2000-2013
3 # Wolfgang Denk, DENX Software Engineering, wd@denx.de. 3 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
4 # 4 #
5 # SPDX-License-Identifier: GPL-2.0+ 5 # SPDX-License-Identifier: GPL-2.0+
6 # 6 #
7 7
8 VERSION = 2014 8 VERSION = 2014
9 PATCHLEVEL = 01 9 PATCHLEVEL = 04
10 SUBLEVEL = 10 SUBLEVEL =
11 EXTRAVERSION = 11 EXTRAVERSION = -rc1
12 NAME = 12 NAME =
13 13
14 # *DOCUMENTATION* 14 # *DOCUMENTATION*
15 # To see a list of typical targets execute "make help" 15 # To see a list of typical targets execute "make help"
16 # More info can be located in ./README 16 # More info can be located in ./README
17 # Comments in this file are targeted only to the developer, do not 17 # Comments in this file are targeted only to the developer, do not
18 # expect to learn how to build the kernel reading this file. 18 # expect to learn how to build the kernel reading this file.
19 19
20 # Do not: 20 # Do not:
21 # o use make's built-in rules and variables 21 # o use make's built-in rules and variables
22 # (this increases performance and avoids hard-to-debug behaviour); 22 # (this increases performance and avoids hard-to-debug behaviour);
23 # o print "Entering directory ..."; 23 # o print "Entering directory ...";
24 MAKEFLAGS += -rR --no-print-directory 24 MAKEFLAGS += -rR --no-print-directory
25 25
26 # Avoid funny character set dependencies 26 # Avoid funny character set dependencies
27 unexport LC_ALL 27 unexport LC_ALL
28 LC_COLLATE=C 28 LC_COLLATE=C
29 LC_NUMERIC=C 29 LC_NUMERIC=C
30 export LC_COLLATE LC_NUMERIC 30 export LC_COLLATE LC_NUMERIC
31 31
32 # We are using a recursive build, so we need to do a little thinking 32 # We are using a recursive build, so we need to do a little thinking
33 # to get the ordering right. 33 # to get the ordering right.
34 # 34 #
35 # Most importantly: sub-Makefiles should only ever modify files in 35 # Most importantly: sub-Makefiles should only ever modify files in
36 # their own directory. If in some directory we have a dependency on 36 # their own directory. If in some directory we have a dependency on
37 # a file in another dir (which doesn't happen often, but it's often 37 # a file in another dir (which doesn't happen often, but it's often
38 # unavoidable when linking the built-in.o targets which finally 38 # unavoidable when linking the built-in.o targets which finally
39 # turn into vmlinux), we will call a sub make in that other dir, and 39 # turn into vmlinux), we will call a sub make in that other dir, and
40 # after that we are sure that everything which is in that other dir 40 # after that we are sure that everything which is in that other dir
41 # is now up to date. 41 # is now up to date.
42 # 42 #
43 # The only cases where we need to modify files which have global 43 # The only cases where we need to modify files which have global
44 # effects are thus separated out and done before the recursive 44 # effects are thus separated out and done before the recursive
45 # descending is started. They are now explicitly listed as the 45 # descending is started. They are now explicitly listed as the
46 # prepare rule. 46 # prepare rule.
47 47
48 # To put more focus on warnings, be less verbose as default 48 # To put more focus on warnings, be less verbose as default
49 # Use 'make V=1' to see the full commands 49 # Use 'make V=1' to see the full commands
50 50
51 ifeq ("$(origin V)", "command line") 51 ifeq ("$(origin V)", "command line")
52 KBUILD_VERBOSE = $(V) 52 KBUILD_VERBOSE = $(V)
53 endif 53 endif
54 ifndef KBUILD_VERBOSE 54 ifndef KBUILD_VERBOSE
55 KBUILD_VERBOSE = 0 55 KBUILD_VERBOSE = 0
56 endif 56 endif
57 57
58 # Call a source code checker (by default, "sparse") as part of the 58 # Call a source code checker (by default, "sparse") as part of the
59 # C compilation. 59 # C compilation.
60 # 60 #
61 # Use 'make C=1' to enable checking of only re-compiled files. 61 # Use 'make C=1' to enable checking of only re-compiled files.
62 # Use 'make C=2' to enable checking of *all* source files, regardless 62 # Use 'make C=2' to enable checking of *all* source files, regardless
63 # of whether they are re-compiled or not. 63 # of whether they are re-compiled or not.
64 # 64 #
65 # See the file "Documentation/sparse.txt" for more details, including 65 # See the file "Documentation/sparse.txt" for more details, including
66 # where to get the "sparse" utility. 66 # where to get the "sparse" utility.
67 67
68 ifeq ("$(origin C)", "command line") 68 ifeq ("$(origin C)", "command line")
69 KBUILD_CHECKSRC = $(C) 69 KBUILD_CHECKSRC = $(C)
70 endif 70 endif
71 ifndef KBUILD_CHECKSRC 71 ifndef KBUILD_CHECKSRC
72 KBUILD_CHECKSRC = 0 72 KBUILD_CHECKSRC = 0
73 endif 73 endif
74 74
75 # Use make M=dir to specify directory of external module to build 75 # Use make M=dir to specify directory of external module to build
76 # Old syntax make ... SUBDIRS=$PWD is still supported 76 # Old syntax make ... SUBDIRS=$PWD is still supported
77 # Setting the environment variable KBUILD_EXTMOD take precedence 77 # Setting the environment variable KBUILD_EXTMOD take precedence
78 ifdef SUBDIRS 78 ifdef SUBDIRS
79 KBUILD_EXTMOD ?= $(SUBDIRS) 79 KBUILD_EXTMOD ?= $(SUBDIRS)
80 endif 80 endif
81 81
82 ifeq ("$(origin M)", "command line") 82 ifeq ("$(origin M)", "command line")
83 KBUILD_EXTMOD := $(M) 83 KBUILD_EXTMOD := $(M)
84 endif 84 endif
85 85
86 # kbuild supports saving output files in a separate directory. 86 # kbuild supports saving output files in a separate directory.
87 # To locate output files in a separate directory two syntaxes are supported. 87 # To locate output files in a separate directory two syntaxes are supported.
88 # In both cases the working directory must be the root of the kernel src. 88 # In both cases the working directory must be the root of the kernel src.
89 # 1) O= 89 # 1) O=
90 # Use "make O=dir/to/store/output/files/" 90 # Use "make O=dir/to/store/output/files/"
91 # 91 #
92 # 2) Set KBUILD_OUTPUT 92 # 2) Set KBUILD_OUTPUT
93 # Set the environment variable KBUILD_OUTPUT to point to the directory 93 # Set the environment variable KBUILD_OUTPUT to point to the directory
94 # where the output files shall be placed. 94 # where the output files shall be placed.
95 # export KBUILD_OUTPUT=dir/to/store/output/files/ 95 # export KBUILD_OUTPUT=dir/to/store/output/files/
96 # make 96 # make
97 # 97 #
98 # The O= assignment takes precedence over the KBUILD_OUTPUT environment 98 # The O= assignment takes precedence over the KBUILD_OUTPUT environment
99 # variable. 99 # variable.
100 100
101 101
102 # KBUILD_SRC is set on invocation of make in OBJ directory 102 # KBUILD_SRC is set on invocation of make in OBJ directory
103 # KBUILD_SRC is not intended to be used by the regular user (for now) 103 # KBUILD_SRC is not intended to be used by the regular user (for now)
104 ifeq ($(KBUILD_SRC),) 104 ifeq ($(KBUILD_SRC),)
105 105
106 # OK, Make called in directory where kernel src resides 106 # OK, Make called in directory where kernel src resides
107 # Do we want to locate output files in a separate directory? 107 # Do we want to locate output files in a separate directory?
108 ifeq ("$(origin O)", "command line") 108 ifeq ("$(origin O)", "command line")
109 KBUILD_OUTPUT := $(O) 109 KBUILD_OUTPUT := $(O)
110 endif 110 endif
111 111
112 ifeq ("$(origin W)", "command line") 112 ifeq ("$(origin W)", "command line")
113 export KBUILD_ENABLE_EXTRA_GCC_CHECKS := $(W) 113 export KBUILD_ENABLE_EXTRA_GCC_CHECKS := $(W)
114 endif 114 endif
115 115
116 # That's our default target when none is given on the command line 116 # That's our default target when none is given on the command line
117 PHONY := _all 117 PHONY := _all
118 _all: 118 _all:
119 119
120 # Cancel implicit rules on top Makefile 120 # Cancel implicit rules on top Makefile
121 $(CURDIR)/Makefile Makefile: ; 121 $(CURDIR)/Makefile Makefile: ;
122 122
123 ifneq ($(KBUILD_OUTPUT),) 123 ifneq ($(KBUILD_OUTPUT),)
124 # Invoke a second make in the output directory, passing relevant variables 124 # Invoke a second make in the output directory, passing relevant variables
125 # check that the output directory actually exists 125 # check that the output directory actually exists
126 saved-output := $(KBUILD_OUTPUT) 126 saved-output := $(KBUILD_OUTPUT)
127 KBUILD_OUTPUT := $(shell cd $(KBUILD_OUTPUT) && /bin/pwd) 127 KBUILD_OUTPUT := $(shell cd $(KBUILD_OUTPUT) && /bin/pwd)
128 $(if $(KBUILD_OUTPUT),, \ 128 $(if $(KBUILD_OUTPUT),, \
129 $(error output directory "$(saved-output)" does not exist)) 129 $(error output directory "$(saved-output)" does not exist))
130 130
131 PHONY += $(MAKECMDGOALS) sub-make 131 PHONY += $(MAKECMDGOALS) sub-make
132 132
133 $(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make 133 $(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make
134 @: 134 @:
135 135
136 sub-make: FORCE 136 sub-make: FORCE
137 $(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT) \ 137 $(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT) \
138 KBUILD_SRC=$(CURDIR) \ 138 KBUILD_SRC=$(CURDIR) \
139 KBUILD_EXTMOD="$(KBUILD_EXTMOD)" -f $(CURDIR)/Makefile \ 139 KBUILD_EXTMOD="$(KBUILD_EXTMOD)" -f $(CURDIR)/Makefile \
140 $(filter-out _all sub-make,$(MAKECMDGOALS)) 140 $(filter-out _all sub-make,$(MAKECMDGOALS))
141 141
142 # Leave processing to above invocation of make 142 # Leave processing to above invocation of make
143 skip-makefile := 1 143 skip-makefile := 1
144 endif # ifneq ($(KBUILD_OUTPUT),) 144 endif # ifneq ($(KBUILD_OUTPUT),)
145 endif # ifeq ($(KBUILD_SRC),) 145 endif # ifeq ($(KBUILD_SRC),)
146 146
147 # We process the rest of the Makefile if this is the final invocation of make 147 # We process the rest of the Makefile if this is the final invocation of make
148 ifeq ($(skip-makefile),) 148 ifeq ($(skip-makefile),)
149 149
150 # If building an external module we do not care about the all: rule 150 # If building an external module we do not care about the all: rule
151 # but instead _all depend on modules 151 # but instead _all depend on modules
152 PHONY += all 152 PHONY += all
153 ifeq ($(KBUILD_EXTMOD),) 153 ifeq ($(KBUILD_EXTMOD),)
154 _all: all 154 _all: all
155 else 155 else
156 _all: modules 156 _all: modules
157 endif 157 endif
158 158
159 srctree := $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR)) 159 srctree := $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR))
160 objtree := $(CURDIR) 160 objtree := $(CURDIR)
161 src := $(srctree) 161 src := $(srctree)
162 obj := $(objtree) 162 obj := $(objtree)
163 163
164 VPATH := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD)) 164 VPATH := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD))
165 165
166 export srctree objtree VPATH 166 export srctree objtree VPATH
167 167
168 OBJTREE := $(objtree) 168 OBJTREE := $(objtree)
169 SPLTREE := $(OBJTREE)/spl 169 SPLTREE := $(OBJTREE)/spl
170 TPLTREE := $(OBJTREE)/tpl 170 TPLTREE := $(OBJTREE)/tpl
171 SRCTREE := $(srctree) 171 SRCTREE := $(srctree)
172 TOPDIR := $(SRCTREE) 172 TOPDIR := $(SRCTREE)
173 export TOPDIR SRCTREE OBJTREE SPLTREE TPLTREE 173 export TOPDIR SRCTREE OBJTREE SPLTREE TPLTREE
174 174
175 MKCONFIG := $(SRCTREE)/mkconfig 175 MKCONFIG := $(SRCTREE)/mkconfig
176 export MKCONFIG 176 export MKCONFIG
177 177
178 # Make sure CDPATH settings don't interfere 178 # Make sure CDPATH settings don't interfere
179 unexport CDPATH 179 unexport CDPATH
180 180
181 ######################################################################### 181 #########################################################################
182 182
183 TIMESTAMP_FILE = include/generated/timestamp_autogenerated.h 183 TIMESTAMP_FILE = include/generated/timestamp_autogenerated.h
184 VERSION_FILE = include/generated/version_autogenerated.h 184 VERSION_FILE = include/generated/version_autogenerated.h
185 185
186 HOSTARCH := $(shell uname -m | \ 186 HOSTARCH := $(shell uname -m | \
187 sed -e s/i.86/x86/ \ 187 sed -e s/i.86/x86/ \
188 -e s/sun4u/sparc64/ \ 188 -e s/sun4u/sparc64/ \
189 -e s/arm.*/arm/ \ 189 -e s/arm.*/arm/ \
190 -e s/sa110/arm/ \ 190 -e s/sa110/arm/ \
191 -e s/ppc64/powerpc/ \ 191 -e s/ppc64/powerpc/ \
192 -e s/ppc/powerpc/ \ 192 -e s/ppc/powerpc/ \
193 -e s/macppc/powerpc/\ 193 -e s/macppc/powerpc/\
194 -e s/sh.*/sh/) 194 -e s/sh.*/sh/)
195 195
196 HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \ 196 HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
197 sed -e 's/\(cygwin\).*/cygwin/') 197 sed -e 's/\(cygwin\).*/cygwin/')
198 198
199 export HOSTARCH HOSTOS 199 export HOSTARCH HOSTOS
200 200
201 # Deal with colliding definitions from tcsh etc. 201 # Deal with colliding definitions from tcsh etc.
202 VENDOR= 202 VENDOR=
203 203
204 ######################################################################### 204 #########################################################################
205 205
206 # set default to nothing for native builds 206 # set default to nothing for native builds
207 ifeq ($(HOSTARCH),$(ARCH)) 207 ifeq ($(HOSTARCH),$(ARCH))
208 CROSS_COMPILE ?= 208 CROSS_COMPILE ?=
209 endif 209 endif
210 210
211 # SHELL used by kbuild 211 # SHELL used by kbuild
212 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ 212 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
213 else if [ -x /bin/bash ]; then echo /bin/bash; \ 213 else if [ -x /bin/bash ]; then echo /bin/bash; \
214 else echo sh; fi ; fi) 214 else echo sh; fi ; fi)
215 215
216 HOSTCC = gcc 216 HOSTCC = gcc
217 HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer 217 HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
218 218
219 ifeq ($(HOSTOS),cygwin) 219 ifeq ($(HOSTOS),cygwin)
220 HOSTCFLAGS += -ansi 220 HOSTCFLAGS += -ansi
221 endif 221 endif
222 222
223 # Mac OS X / Darwin's C preprocessor is Apple specific. It 223 # Mac OS X / Darwin's C preprocessor is Apple specific. It
224 # generates numerous errors and warnings. We want to bypass it 224 # generates numerous errors and warnings. We want to bypass it
225 # and use GNU C's cpp. To do this we pass the -traditional-cpp 225 # and use GNU C's cpp. To do this we pass the -traditional-cpp
226 # option to the compiler. Note that the -traditional-cpp flag 226 # option to the compiler. Note that the -traditional-cpp flag
227 # DOES NOT have the same semantics as GNU C's flag, all it does 227 # DOES NOT have the same semantics as GNU C's flag, all it does
228 # is invoke the GNU preprocessor in stock ANSI/ISO C fashion. 228 # is invoke the GNU preprocessor in stock ANSI/ISO C fashion.
229 # 229 #
230 # Apple's linker is similar, thanks to the new 2 stage linking 230 # Apple's linker is similar, thanks to the new 2 stage linking
231 # multiple symbol definitions are treated as errors, hence the 231 # multiple symbol definitions are treated as errors, hence the
232 # -multiply_defined suppress option to turn off this error. 232 # -multiply_defined suppress option to turn off this error.
233 # 233 #
234 ifeq ($(HOSTOS),darwin) 234 ifeq ($(HOSTOS),darwin)
235 # get major and minor product version (e.g. '10' and '6' for Snow Leopard) 235 # get major and minor product version (e.g. '10' and '6' for Snow Leopard)
236 DARWIN_MAJOR_VERSION = $(shell sw_vers -productVersion | cut -f 1 -d '.') 236 DARWIN_MAJOR_VERSION = $(shell sw_vers -productVersion | cut -f 1 -d '.')
237 DARWIN_MINOR_VERSION = $(shell sw_vers -productVersion | cut -f 2 -d '.') 237 DARWIN_MINOR_VERSION = $(shell sw_vers -productVersion | cut -f 2 -d '.')
238 238
239 os_x_before = $(shell if [ $(DARWIN_MAJOR_VERSION) -le $(1) -a \ 239 os_x_before = $(shell if [ $(DARWIN_MAJOR_VERSION) -le $(1) -a \
240 $(DARWIN_MINOR_VERSION) -le $(2) ] ; then echo "$(3)"; else echo "$(4)"; fi ;) 240 $(DARWIN_MINOR_VERSION) -le $(2) ] ; then echo "$(3)"; else echo "$(4)"; fi ;)
241 241
242 # Snow Leopards build environment has no longer restrictions as described above 242 # Snow Leopards build environment has no longer restrictions as described above
243 HOSTCC = $(call os_x_before, 10, 5, "cc", "gcc") 243 HOSTCC = $(call os_x_before, 10, 5, "cc", "gcc")
244 HOSTCFLAGS += $(call os_x_before, 10, 4, "-traditional-cpp") 244 HOSTCFLAGS += $(call os_x_before, 10, 4, "-traditional-cpp")
245 HOSTLDFLAGS += $(call os_x_before, 10, 5, "-multiply_defined suppress") 245 HOSTLDFLAGS += $(call os_x_before, 10, 5, "-multiply_defined suppress")
246 endif 246 endif
247 247
248 # Decide whether to build built-in, modular, or both. 248 # Decide whether to build built-in, modular, or both.
249 # Normally, just do built-in. 249 # Normally, just do built-in.
250 250
251 KBUILD_MODULES := 251 KBUILD_MODULES :=
252 KBUILD_BUILTIN := 1 252 KBUILD_BUILTIN := 1
253 253
254 # If we have only "make modules", don't compile built-in objects. 254 # If we have only "make modules", don't compile built-in objects.
255 # When we're building modules with modversions, we need to consider 255 # When we're building modules with modversions, we need to consider
256 # the built-in objects during the descend as well, in order to 256 # the built-in objects during the descend as well, in order to
257 # make sure the checksums are up to date before we record them. 257 # make sure the checksums are up to date before we record them.
258 258
259 ifeq ($(MAKECMDGOALS),modules) 259 ifeq ($(MAKECMDGOALS),modules)
260 KBUILD_BUILTIN := $(if $(CONFIG_MODVERSIONS),1) 260 KBUILD_BUILTIN := $(if $(CONFIG_MODVERSIONS),1)
261 endif 261 endif
262 262
263 # If we have "make <whatever> modules", compile modules 263 # If we have "make <whatever> modules", compile modules
264 # in addition to whatever we do anyway. 264 # in addition to whatever we do anyway.
265 # Just "make" or "make all" shall build modules as well 265 # Just "make" or "make all" shall build modules as well
266 266
267 # U-Boot does not need modules 267 # U-Boot does not need modules
268 #ifneq ($(filter all _all modules,$(MAKECMDGOALS)),) 268 #ifneq ($(filter all _all modules,$(MAKECMDGOALS)),)
269 # KBUILD_MODULES := 1 269 # KBUILD_MODULES := 1
270 #endif 270 #endif
271 271
272 #ifeq ($(MAKECMDGOALS),) 272 #ifeq ($(MAKECMDGOALS),)
273 # KBUILD_MODULES := 1 273 # KBUILD_MODULES := 1
274 #endif 274 #endif
275 275
276 export KBUILD_MODULES KBUILD_BUILTIN 276 export KBUILD_MODULES KBUILD_BUILTIN
277 export KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD 277 export KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD
278 278
279 # Beautify output 279 # Beautify output
280 # --------------------------------------------------------------------------- 280 # ---------------------------------------------------------------------------
281 # 281 #
282 # Normally, we echo the whole command before executing it. By making 282 # Normally, we echo the whole command before executing it. By making
283 # that echo $($(quiet)$(cmd)), we now have the possibility to set 283 # that echo $($(quiet)$(cmd)), we now have the possibility to set
284 # $(quiet) to choose other forms of output instead, e.g. 284 # $(quiet) to choose other forms of output instead, e.g.
285 # 285 #
286 # quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@ 286 # quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@
287 # cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $< 287 # cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<
288 # 288 #
289 # If $(quiet) is empty, the whole command will be printed. 289 # If $(quiet) is empty, the whole command will be printed.
290 # If it is set to "quiet_", only the short version will be printed. 290 # If it is set to "quiet_", only the short version will be printed.
291 # If it is set to "silent_", nothing will be printed at all, since 291 # If it is set to "silent_", nothing will be printed at all, since
292 # the variable $(silent_cmd_cc_o_c) doesn't exist. 292 # the variable $(silent_cmd_cc_o_c) doesn't exist.
293 # 293 #
294 # A simple variant is to prefix commands with $(Q) - that's useful 294 # A simple variant is to prefix commands with $(Q) - that's useful
295 # for commands that shall be hidden in non-verbose mode. 295 # for commands that shall be hidden in non-verbose mode.
296 # 296 #
297 # $(Q)ln $@ :< 297 # $(Q)ln $@ :<
298 # 298 #
299 # If KBUILD_VERBOSE equals 0 then the above command will be hidden. 299 # If KBUILD_VERBOSE equals 0 then the above command will be hidden.
300 # If KBUILD_VERBOSE equals 1 then the above command is displayed. 300 # If KBUILD_VERBOSE equals 1 then the above command is displayed.
301 301
302 ifeq ($(KBUILD_VERBOSE),1) 302 ifeq ($(KBUILD_VERBOSE),1)
303 quiet = 303 quiet =
304 Q = 304 Q =
305 else 305 else
306 quiet=quiet_ 306 quiet=quiet_
307 Q = @ 307 Q = @
308 endif 308 endif
309 309
310 # If the user is running make -s (silent mode), suppress echoing of 310 # If the user is running make -s (silent mode), suppress echoing of
311 # commands 311 # commands
312 312
313 ifneq ($(filter s% -s%,$(MAKEFLAGS)),) 313 ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
314 quiet=silent_ 314 quiet=silent_
315 endif 315 endif
316 316
317 export quiet Q KBUILD_VERBOSE 317 export quiet Q KBUILD_VERBOSE
318 318
319 319
320 # Look for make include files relative to root of kernel src 320 # Look for make include files relative to root of kernel src
321 MAKEFLAGS += --include-dir=$(srctree) 321 MAKEFLAGS += --include-dir=$(srctree)
322 322
323 # We need some generic definitions (do not try to remake the file). 323 # We need some generic definitions (do not try to remake the file).
324 $(srctree)/scripts/Kbuild.include: ; 324 $(srctree)/scripts/Kbuild.include: ;
325 include $(srctree)/scripts/Kbuild.include 325 include $(srctree)/scripts/Kbuild.include
326 326
327 # Make variables (CC, etc...) 327 # Make variables (CC, etc...)
328 328
329 AS = $(CROSS_COMPILE)as 329 AS = $(CROSS_COMPILE)as
330 # Always use GNU ld 330 # Always use GNU ld
331 ifneq ($(shell $(CROSS_COMPILE)ld.bfd -v 2> /dev/null),) 331 ifneq ($(shell $(CROSS_COMPILE)ld.bfd -v 2> /dev/null),)
332 LD = $(CROSS_COMPILE)ld.bfd 332 LD = $(CROSS_COMPILE)ld.bfd
333 else 333 else
334 LD = $(CROSS_COMPILE)ld 334 LD = $(CROSS_COMPILE)ld
335 endif 335 endif
336 CC = $(CROSS_COMPILE)gcc 336 CC = $(CROSS_COMPILE)gcc
337 CPP = $(CC) -E 337 CPP = $(CC) -E
338 AR = $(CROSS_COMPILE)ar 338 AR = $(CROSS_COMPILE)ar
339 NM = $(CROSS_COMPILE)nm 339 NM = $(CROSS_COMPILE)nm
340 LDR = $(CROSS_COMPILE)ldr 340 LDR = $(CROSS_COMPILE)ldr
341 STRIP = $(CROSS_COMPILE)strip 341 STRIP = $(CROSS_COMPILE)strip
342 OBJCOPY = $(CROSS_COMPILE)objcopy 342 OBJCOPY = $(CROSS_COMPILE)objcopy
343 OBJDUMP = $(CROSS_COMPILE)objdump 343 OBJDUMP = $(CROSS_COMPILE)objdump
344 AWK = awk 344 AWK = awk
345 RANLIB = $(CROSS_COMPILE)RANLIB 345 RANLIB = $(CROSS_COMPILE)RANLIB
346 DTC = dtc 346 DTC = dtc
347 CHECK = sparse 347 CHECK = sparse
348 348
349 CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \ 349 CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
350 -Wbitwise -Wno-return-void -D__CHECK_ENDIAN__ $(CF) 350 -Wbitwise -Wno-return-void -D__CHECK_ENDIAN__ $(CF)
351 351
352 KBUILD_CPPFLAGS := -D__KERNEL__ 352 KBUILD_CPPFLAGS := -D__KERNEL__
353 353
354 KBUILD_CFLAGS := -Wall -Wstrict-prototypes \ 354 KBUILD_CFLAGS := -Wall -Wstrict-prototypes \
355 -Wno-format-security \ 355 -Wno-format-security \
356 -fno-builtin -ffreestanding 356 -fno-builtin -ffreestanding
357 KBUILD_AFLAGS := -D__ASSEMBLY__ 357 KBUILD_AFLAGS := -D__ASSEMBLY__
358 358
359 U_BOOT_VERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION) 359 U_BOOT_VERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)
360 360
361 export VERSION PATCHLEVEL SUBLEVEL U_BOOT_VERSION 361 export VERSION PATCHLEVEL SUBLEVEL U_BOOT_VERSION
362 export ARCH CPU BOARD VENDOR SOC 362 export ARCH CPU BOARD VENDOR SOC
363 export CONFIG_SHELL HOSTCC HOSTCFLAGS HOSTLDFLAGS CROSS_COMPILE AS LD CC 363 export CONFIG_SHELL HOSTCC HOSTCFLAGS HOSTLDFLAGS CROSS_COMPILE AS LD CC
364 export CPP AR NM LDR STRIP OBJCOPY OBJDUMP 364 export CPP AR NM LDR STRIP OBJCOPY OBJDUMP
365 export MAKE AWK 365 export MAKE AWK
366 export DTC CHECK CHECKFLAGS 366 export DTC CHECK CHECKFLAGS
367 367
368 export KBUILD_CPPFLAGS NOSTDINC_FLAGS UBOOTINCLUDE 368 export KBUILD_CPPFLAGS NOSTDINC_FLAGS UBOOTINCLUDE
369 export KBUILD_CFLAGS KBUILD_AFLAGS 369 export KBUILD_CFLAGS KBUILD_AFLAGS
370 370
371 # When compiling out-of-tree modules, put MODVERDIR in the module 371 # When compiling out-of-tree modules, put MODVERDIR in the module
372 # tree rather than in the kernel tree. The kernel tree might 372 # tree rather than in the kernel tree. The kernel tree might
373 # even be read-only. 373 # even be read-only.
374 export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_versions 374 export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_versions
375 375
376 # Files to ignore in find ... statements 376 # Files to ignore in find ... statements
377 377
378 RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS \ 378 RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS \
379 -o -name .pc -o -name .hg -o -name .git \) -prune -o 379 -o -name .pc -o -name .hg -o -name .git \) -prune -o
380 export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \ 380 export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \
381 --exclude CVS --exclude .pc --exclude .hg --exclude .git 381 --exclude CVS --exclude .pc --exclude .hg --exclude .git
382 382
383 # =========================================================================== 383 # ===========================================================================
384 # Rules shared between *config targets and build targets 384 # Rules shared between *config targets and build targets
385 385
386 # Basic helpers built in scripts/ 386 # Basic helpers built in scripts/
387 PHONY += scripts_basic 387 PHONY += scripts_basic
388 scripts_basic: 388 scripts_basic:
389 $(Q)$(MAKE) $(build)=scripts/basic 389 $(Q)$(MAKE) $(build)=scripts/basic
390 $(Q)rm -f .tmp_quiet_recordmcount 390 $(Q)rm -f .tmp_quiet_recordmcount
391 391
392 # To avoid any implicit rule to kick in, define an empty command. 392 # To avoid any implicit rule to kick in, define an empty command.
393 scripts/basic/%: scripts_basic ; 393 scripts/basic/%: scripts_basic ;
394 394
395 PHONY += outputmakefile 395 PHONY += outputmakefile
396 # outputmakefile generates a Makefile in the output directory, if using a 396 # outputmakefile generates a Makefile in the output directory, if using a
397 # separate output directory. This allows convenient use of make in the 397 # separate output directory. This allows convenient use of make in the
398 # output directory. 398 # output directory.
399 outputmakefile: 399 outputmakefile:
400 ifneq ($(KBUILD_SRC),) 400 ifneq ($(KBUILD_SRC),)
401 $(Q)ln -fsn $(srctree) source 401 $(Q)ln -fsn $(srctree) source
402 $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile \ 402 $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile \
403 $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL) 403 $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL)
404 endif 404 endif
405 405
406 # To make sure we do not include .config for any of the *config targets 406 # To make sure we do not include .config for any of the *config targets
407 # catch them early, and hand them over to scripts/kconfig/Makefile 407 # catch them early, and hand them over to scripts/kconfig/Makefile
408 # It is allowed to specify more targets when calling make, including 408 # It is allowed to specify more targets when calling make, including
409 # mixing *config targets and build targets. 409 # mixing *config targets and build targets.
410 # For example 'make oldconfig all'. 410 # For example 'make oldconfig all'.
411 # Detect when mixed targets is specified, and make a second invocation 411 # Detect when mixed targets is specified, and make a second invocation
412 # of make so .config is not included in this case either (for *config). 412 # of make so .config is not included in this case either (for *config).
413 413
414 no-dot-config-targets := clean clobber mrproper distclean \ 414 no-dot-config-targets := clean clobber mrproper distclean \
415 cscope TAGS %tags help %docs check% coccicheck \ 415 cscope TAGS %tags help %docs check% coccicheck \
416 backup 416 backup
417 417
418 config-targets := 0 418 config-targets := 0
419 mixed-targets := 0 419 mixed-targets := 0
420 dot-config := 1 420 dot-config := 1
421 421
422 ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),) 422 ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
423 ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),) 423 ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
424 dot-config := 0 424 dot-config := 0
425 endif 425 endif
426 endif 426 endif
427 427
428 ifeq ($(KBUILD_EXTMOD),) 428 ifeq ($(KBUILD_EXTMOD),)
429 ifneq ($(filter config %config,$(MAKECMDGOALS)),) 429 ifneq ($(filter config %config,$(MAKECMDGOALS)),)
430 config-targets := 1 430 config-targets := 1
431 ifneq ($(filter-out config %config,$(MAKECMDGOALS)),) 431 ifneq ($(filter-out config %config,$(MAKECMDGOALS)),)
432 mixed-targets := 1 432 mixed-targets := 1
433 endif 433 endif
434 endif 434 endif
435 endif 435 endif
436 436
437 ifeq ($(mixed-targets),1) 437 ifeq ($(mixed-targets),1)
438 # =========================================================================== 438 # ===========================================================================
439 # We're called with mixed targets (*config and build targets). 439 # We're called with mixed targets (*config and build targets).
440 # Handle them one by one. 440 # Handle them one by one.
441 441
442 PHONY += $(MAKECMDGOALS) build-one-by-one 442 PHONY += $(MAKECMDGOALS) build-one-by-one
443 443
444 $(MAKECMDGOALS): build-one-by-one 444 $(MAKECMDGOALS): build-one-by-one
445 @: 445 @:
446 446
447 build-one-by-one: 447 build-one-by-one:
448 $(Q)set -e; \ 448 $(Q)set -e; \
449 for i in $(MAKECMDGOALS); do \ 449 for i in $(MAKECMDGOALS); do \
450 $(MAKE) -f $(srctree)/Makefile $$i; \ 450 $(MAKE) -f $(srctree)/Makefile $$i; \
451 done 451 done
452 452
453 else 453 else
454 ifeq ($(config-targets),1) 454 ifeq ($(config-targets),1)
455 # =========================================================================== 455 # ===========================================================================
456 # *config targets only - make sure prerequisites are updated, and descend 456 # *config targets only - make sure prerequisites are updated, and descend
457 # in scripts/kconfig to make the *config target 457 # in scripts/kconfig to make the *config target
458 458
459 # Read arch specific Makefile to set KBUILD_DEFCONFIG as needed. 459 # Read arch specific Makefile to set KBUILD_DEFCONFIG as needed.
460 # KBUILD_DEFCONFIG may point out an alternative default configuration 460 # KBUILD_DEFCONFIG may point out an alternative default configuration
461 # used for 'make defconfig' 461 # used for 'make defconfig'
462 462
463 %_config:: outputmakefile 463 %_config:: outputmakefile
464 @$(MKCONFIG) -A $(@:_config=) 464 @$(MKCONFIG) -A $(@:_config=)
465 465
466 else 466 else
467 # =========================================================================== 467 # ===========================================================================
468 # Build targets only - this includes vmlinux, arch specific targets, clean 468 # Build targets only - this includes vmlinux, arch specific targets, clean
469 # targets and others. In general all targets except *config targets. 469 # targets and others. In general all targets except *config targets.
470 470
471 # load ARCH, BOARD, and CPU configuration 471 # load ARCH, BOARD, and CPU configuration
472 -include include/config.mk 472 -include include/config.mk
473 473
474 ifeq ($(dot-config),1) 474 ifeq ($(dot-config),1)
475 # Read in config 475 # Read in config
476 -include include/autoconf.mk 476 -include include/autoconf.mk
477 -include include/autoconf.mk.dep 477 -include include/autoconf.mk.dep
478 478
479 # load other configuration 479 # load other configuration
480 include $(srctree)/config.mk 480 include $(srctree)/config.mk
481 481
482 ifeq ($(wildcard include/config.mk),) 482 ifeq ($(wildcard include/config.mk),)
483 $(error "System not configured - see README") 483 $(error "System not configured - see README")
484 endif 484 endif
485 485
486 ifeq ($(__HAVE_ARCH_GENERIC_BOARD),) 486 ifeq ($(__HAVE_ARCH_GENERIC_BOARD),)
487 ifneq ($(CONFIG_SYS_GENERIC_BOARD),) 487 ifneq ($(CONFIG_SYS_GENERIC_BOARD),)
488 $(error Your architecture does not support generic board. \ 488 $(error Your architecture does not support generic board. \
489 Please undefined CONFIG_SYS_GENERIC_BOARD in your board config file) 489 Please undefined CONFIG_SYS_GENERIC_BOARD in your board config file)
490 endif 490 endif
491 endif 491 endif
492 492
493 # If board code explicitly specified LDSCRIPT or CONFIG_SYS_LDSCRIPT, use 493 # If board code explicitly specified LDSCRIPT or CONFIG_SYS_LDSCRIPT, use
494 # that (or fail if absent). Otherwise, search for a linker script in a 494 # that (or fail if absent). Otherwise, search for a linker script in a
495 # standard location. 495 # standard location.
496 496
497 LDSCRIPT_MAKEFILE_DIR = $(dir $(LDSCRIPT)) 497 LDSCRIPT_MAKEFILE_DIR = $(dir $(LDSCRIPT))
498 498
499 ifndef LDSCRIPT 499 ifndef LDSCRIPT
500 #LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds.debug 500 #LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds.debug
501 ifdef CONFIG_SYS_LDSCRIPT 501 ifdef CONFIG_SYS_LDSCRIPT
502 # need to strip off double quotes 502 # need to strip off double quotes
503 LDSCRIPT := $(CONFIG_SYS_LDSCRIPT:"%"=%) 503 LDSCRIPT := $(CONFIG_SYS_LDSCRIPT:"%"=%)
504 endif 504 endif
505 endif 505 endif
506 506
507 # If there is no specified link script, we look in a number of places for it 507 # If there is no specified link script, we look in a number of places for it
508 ifndef LDSCRIPT 508 ifndef LDSCRIPT
509 ifeq ($(CONFIG_NAND_U_BOOT),y) 509 ifeq ($(CONFIG_NAND_U_BOOT),y)
510 LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds 510 LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds
511 ifeq ($(wildcard $(LDSCRIPT)),) 511 ifeq ($(wildcard $(LDSCRIPT)),)
512 LDSCRIPT := $(TOPDIR)/$(CPUDIR)/u-boot-nand.lds 512 LDSCRIPT := $(TOPDIR)/$(CPUDIR)/u-boot-nand.lds
513 endif 513 endif
514 endif 514 endif
515 ifeq ($(wildcard $(LDSCRIPT)),) 515 ifeq ($(wildcard $(LDSCRIPT)),)
516 LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds 516 LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds
517 endif 517 endif
518 ifeq ($(wildcard $(LDSCRIPT)),) 518 ifeq ($(wildcard $(LDSCRIPT)),)
519 LDSCRIPT := $(TOPDIR)/$(CPUDIR)/u-boot.lds 519 LDSCRIPT := $(TOPDIR)/$(CPUDIR)/u-boot.lds
520 endif 520 endif
521 ifeq ($(wildcard $(LDSCRIPT)),) 521 ifeq ($(wildcard $(LDSCRIPT)),)
522 LDSCRIPT := $(TOPDIR)/arch/$(ARCH)/cpu/u-boot.lds 522 LDSCRIPT := $(TOPDIR)/arch/$(ARCH)/cpu/u-boot.lds
523 # We don't expect a Makefile here 523 # We don't expect a Makefile here
524 LDSCRIPT_MAKEFILE_DIR = 524 LDSCRIPT_MAKEFILE_DIR =
525 endif 525 endif
526 ifeq ($(wildcard $(LDSCRIPT)),) 526 ifeq ($(wildcard $(LDSCRIPT)),)
527 $(error could not find linker script) 527 $(error could not find linker script)
528 endif 528 endif
529 endif 529 endif
530 530
531 else 531 else
532 532
533 533
534 endif # $(dot-config) 534 endif # $(dot-config)
535 535
536 KBUILD_CFLAGS += -Os #-fomit-frame-pointer 536 KBUILD_CFLAGS += -Os #-fomit-frame-pointer
537 537
538 ifdef BUILD_TAG 538 ifdef BUILD_TAG
539 KBUILD_CFLAGS += -DBUILD_TAG='"$(BUILD_TAG)"' 539 KBUILD_CFLAGS += -DBUILD_TAG='"$(BUILD_TAG)"'
540 endif 540 endif
541 541
542 KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector) 542 KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
543 543
544 KBUILD_CFLAGS += -g 544 KBUILD_CFLAGS += -g
545 # $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g<format> 545 # $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g<format>
546 # option to the assembler. 546 # option to the assembler.
547 KBUILD_AFLAGS += -g 547 KBUILD_AFLAGS += -g
548 548
549 # Report stack usage if supported 549 # Report stack usage if supported
550 KBUILD_CFLAGS += $(call cc-option,-fstack-usage) 550 KBUILD_CFLAGS += $(call cc-option,-fstack-usage)
551 551
552 KBUILD_CFLAGS += $(call cc-option,-Wno-format-nonliteral) 552 KBUILD_CFLAGS += $(call cc-option,-Wno-format-nonliteral)
553 553
554 # turn jbsr into jsr for m68k 554 # turn jbsr into jsr for m68k
555 ifeq ($(ARCH),m68k) 555 ifeq ($(ARCH),m68k)
556 ifeq ($(findstring 3.4,$(shell $(CC) --version)),3.4) 556 ifeq ($(findstring 3.4,$(shell $(CC) --version)),3.4)
557 KBUILD_AFLAGS += -Wa,-gstabs,-S 557 KBUILD_AFLAGS += -Wa,-gstabs,-S
558 endif 558 endif
559 endif 559 endif
560 560
561 ifneq ($(CONFIG_SYS_TEXT_BASE),) 561 ifneq ($(CONFIG_SYS_TEXT_BASE),)
562 KBUILD_CPPFLAGS += -DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE) 562 KBUILD_CPPFLAGS += -DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE)
563 endif 563 endif
564 564
565 export CONFIG_SYS_TEXT_BASE 565 export CONFIG_SYS_TEXT_BASE
566 566
567 # Use UBOOTINCLUDE when you must reference the include/ directory. 567 # Use UBOOTINCLUDE when you must reference the include/ directory.
568 # Needed to be compatible with the O= option 568 # Needed to be compatible with the O= option
569 UBOOTINCLUDE := 569 UBOOTINCLUDE :=
570 ifneq ($(OBJTREE),$(SRCTREE)) 570 ifneq ($(OBJTREE),$(SRCTREE))
571 UBOOTINCLUDE += -I$(OBJTREE)/include 571 UBOOTINCLUDE += -I$(OBJTREE)/include
572 endif 572 endif
573 UBOOTINCLUDE += -I$(srctree)/include \ 573 UBOOTINCLUDE += -I$(srctree)/include \
574 -I$(srctree)/arch/$(ARCH)/include 574 -I$(srctree)/arch/$(ARCH)/include
575 575
576 NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) 576 NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
577 CHECKFLAGS += $(NOSTDINC_FLAGS) 577 CHECKFLAGS += $(NOSTDINC_FLAGS)
578 578
579 # FIX ME 579 # FIX ME
580 cpp_flags := $(KBUILD_CPPFLAGS) $(CPPFLAGS) $(UBOOTINCLUDE) $(NOSTDINC_FLAGS) 580 cpp_flags := $(KBUILD_CPPFLAGS) $(CPPFLAGS) $(UBOOTINCLUDE) $(NOSTDINC_FLAGS)
581 c_flags := $(KBUILD_CFLAGS) $(cpp_flags) 581 c_flags := $(KBUILD_CFLAGS) $(cpp_flags)
582 582
583 .PHONY : $(VERSION_FILE) $(TIMESTAMP_FILE) 583 .PHONY : $(VERSION_FILE) $(TIMESTAMP_FILE)
584 584
585 ######################################################################### 585 #########################################################################
586 # U-Boot objects....order is important (i.e. start must be first) 586 # U-Boot objects....order is important (i.e. start must be first)
587 587
588 head-y := $(CPUDIR)/start.o 588 head-y := $(CPUDIR)/start.o
589 head-$(CONFIG_4xx) += arch/powerpc/cpu/ppc4xx/resetvec.o 589 head-$(CONFIG_4xx) += arch/powerpc/cpu/ppc4xx/resetvec.o
590 head-$(CONFIG_MPC85xx) += arch/powerpc/cpu/mpc85xx/resetvec.o 590 head-$(CONFIG_MPC85xx) += arch/powerpc/cpu/mpc85xx/resetvec.o
591 591
592 HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n) 592 HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n)
593 593
594 libs-y += lib/ 594 libs-y += lib/
595 libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/ 595 libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/
596 libs-y += $(CPUDIR)/ 596 libs-y += $(CPUDIR)/
597 ifdef SOC 597 ifdef SOC
598 libs-y += $(CPUDIR)/$(SOC)/ 598 libs-y += $(CPUDIR)/$(SOC)/
599 endif 599 endif
600 libs-$(CONFIG_IXP4XX_NPE) += drivers/net/npe/ 600 libs-$(CONFIG_IXP4XX_NPE) += drivers/net/npe/
601 libs-$(CONFIG_OF_EMBED) += dts/ 601 libs-$(CONFIG_OF_EMBED) += dts/
602 libs-y += arch/$(ARCH)/lib/ 602 libs-y += arch/$(ARCH)/lib/
603 libs-y += fs/ 603 libs-y += fs/
604 libs-y += net/ 604 libs-y += net/
605 libs-y += disk/ 605 libs-y += disk/
606 libs-y += drivers/ 606 libs-y += drivers/
607 libs-y += drivers/dma/ 607 libs-y += drivers/dma/
608 libs-y += drivers/gpio/ 608 libs-y += drivers/gpio/
609 libs-y += drivers/i2c/ 609 libs-y += drivers/i2c/
610 libs-y += drivers/input/ 610 libs-y += drivers/input/
611 libs-y += drivers/mmc/ 611 libs-y += drivers/mmc/
612 libs-y += drivers/mtd/ 612 libs-y += drivers/mtd/
613 libs-$(CONFIG_CMD_NAND) += drivers/mtd/nand/ 613 libs-$(CONFIG_CMD_NAND) += drivers/mtd/nand/
614 libs-y += drivers/mtd/onenand/ 614 libs-y += drivers/mtd/onenand/
615 libs-$(CONFIG_CMD_UBI) += drivers/mtd/ubi/ 615 libs-$(CONFIG_CMD_UBI) += drivers/mtd/ubi/
616 libs-y += drivers/mtd/spi/ 616 libs-y += drivers/mtd/spi/
617 libs-y += drivers/net/ 617 libs-y += drivers/net/
618 libs-y += drivers/net/phy/ 618 libs-y += drivers/net/phy/
619 libs-y += drivers/pci/ 619 libs-y += drivers/pci/
620 libs-y += drivers/power/ \ 620 libs-y += drivers/power/ \
621 drivers/power/fuel_gauge/ \ 621 drivers/power/fuel_gauge/ \
622 drivers/power/mfd/ \ 622 drivers/power/mfd/ \
623 drivers/power/pmic/ \ 623 drivers/power/pmic/ \
624 drivers/power/battery/ 624 drivers/power/battery/
625 libs-y += drivers/spi/ 625 libs-y += drivers/spi/
626 libs-$(CONFIG_FMAN_ENET) += drivers/net/fm/ 626 libs-$(CONFIG_FMAN_ENET) += drivers/net/fm/
627 libs-$(CONFIG_SYS_FSL_DDR) += drivers/ddr/fsl/ 627 libs-$(CONFIG_SYS_FSL_DDR) += drivers/ddr/fsl/
628 libs-y += drivers/serial/ 628 libs-y += drivers/serial/
629 libs-y += drivers/usb/eth/ 629 libs-y += drivers/usb/eth/
630 libs-y += drivers/usb/gadget/ 630 libs-y += drivers/usb/gadget/
631 libs-y += drivers/usb/host/ 631 libs-y += drivers/usb/host/
632 libs-y += drivers/usb/musb/ 632 libs-y += drivers/usb/musb/
633 libs-y += drivers/usb/musb-new/ 633 libs-y += drivers/usb/musb-new/
634 libs-y += drivers/usb/phy/ 634 libs-y += drivers/usb/phy/
635 libs-y += drivers/usb/ulpi/ 635 libs-y += drivers/usb/ulpi/
636 libs-y += common/ 636 libs-y += common/
637 libs-y += lib/libfdt/ 637 libs-y += lib/libfdt/
638 libs-$(CONFIG_API) += api/ 638 libs-$(CONFIG_API) += api/
639 libs-$(CONFIG_HAS_POST) += post/ 639 libs-$(CONFIG_HAS_POST) += post/
640 libs-y += test/ 640 libs-y += test/
641 641
642 ifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35 mxs vf610)) 642 ifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35 mxs vf610))
643 libs-y += arch/$(ARCH)/imx-common/ 643 libs-y += arch/$(ARCH)/imx-common/
644 endif 644 endif
645 645
646 libs-$(CONFIG_ARM) += arch/arm/cpu/ 646 libs-$(CONFIG_ARM) += arch/arm/cpu/
647 libs-$(CONFIG_PPC) += arch/powerpc/cpu/ 647 libs-$(CONFIG_PPC) += arch/powerpc/cpu/
648 648
649 libs-y += board/$(BOARDDIR)/ 649 libs-y += board/$(BOARDDIR)/
650 650
651 libs-y := $(sort $(libs-y)) 651 libs-y := $(sort $(libs-y))
652 652
653 u-boot-dirs := $(patsubst %/,%,$(filter %/, $(libs-y))) tools examples 653 u-boot-dirs := $(patsubst %/,%,$(filter %/, $(libs-y))) tools examples
654 654
655 u-boot-alldirs := $(sort $(u-boot-dirs) $(patsubst %/,%,$(filter %/, $(libs-)))) 655 u-boot-alldirs := $(sort $(u-boot-dirs) $(patsubst %/,%,$(filter %/, $(libs-))))
656 656
657 libs-y := $(patsubst %/, %/built-in.o, $(libs-y)) 657 libs-y := $(patsubst %/, %/built-in.o, $(libs-y))
658 658
659 u-boot-init := $(head-y) 659 u-boot-init := $(head-y)
660 u-boot-main := $(libs-y) 660 u-boot-main := $(libs-y)
661 661
662 662
663 # Add GCC lib 663 # Add GCC lib
664 ifdef USE_PRIVATE_LIBGCC 664 ifdef USE_PRIVATE_LIBGCC
665 ifeq ("$(USE_PRIVATE_LIBGCC)", "yes") 665 ifeq ("$(USE_PRIVATE_LIBGCC)", "yes")
666 PLATFORM_LIBGCC = $(OBJTREE)/arch/$(ARCH)/lib/lib.a 666 PLATFORM_LIBGCC = $(OBJTREE)/arch/$(ARCH)/lib/lib.a
667 else 667 else
668 PLATFORM_LIBGCC = -L $(USE_PRIVATE_LIBGCC) -lgcc 668 PLATFORM_LIBGCC = -L $(USE_PRIVATE_LIBGCC) -lgcc
669 endif 669 endif
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 675
676 # Special flags for CPP when processing the linker script. 676 # Special flags for CPP when processing the linker script.
677 # Pass the version down so we can handle backwards compatibility 677 # Pass the version down so we can handle backwards compatibility
678 # on the fly. 678 # on the fly.
679 LDPPFLAGS += \ 679 LDPPFLAGS += \
680 -include $(TOPDIR)/include/u-boot/u-boot.lds.h \ 680 -include $(TOPDIR)/include/u-boot/u-boot.lds.h \
681 -DCPUDIR=$(CPUDIR) \ 681 -DCPUDIR=$(CPUDIR) \
682 $(shell $(LD) --version | \ 682 $(shell $(LD) --version | \
683 sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p') 683 sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p')
684 684
685 ######################################################################### 685 #########################################################################
686 ######################################################################### 686 #########################################################################
687 687
688 ifneq ($(CONFIG_BOARD_SIZE_LIMIT),) 688 ifneq ($(CONFIG_BOARD_SIZE_LIMIT),)
689 BOARD_SIZE_CHECK = \ 689 BOARD_SIZE_CHECK = \
690 @actual=`wc -c $@ | awk '{print $$1}'`; \ 690 @actual=`wc -c $@ | awk '{print $$1}'`; \
691 limit=`printf "%d" $(CONFIG_BOARD_SIZE_LIMIT)`; \ 691 limit=`printf "%d" $(CONFIG_BOARD_SIZE_LIMIT)`; \
692 if test $$actual -gt $$limit; then \ 692 if test $$actual -gt $$limit; then \
693 echo "$@ exceeds file size limit:" >&2 ; \ 693 echo "$@ exceeds file size limit:" >&2 ; \
694 echo " limit: $$limit bytes" >&2 ; \ 694 echo " limit: $$limit bytes" >&2 ; \
695 echo " actual: $$actual bytes" >&2 ; \ 695 echo " actual: $$actual bytes" >&2 ; \
696 echo " excess: $$((actual - limit)) bytes" >&2; \ 696 echo " excess: $$((actual - limit)) bytes" >&2; \
697 exit 1; \ 697 exit 1; \
698 fi 698 fi
699 else 699 else
700 BOARD_SIZE_CHECK = 700 BOARD_SIZE_CHECK =
701 endif 701 endif
702 702
703 # Statically apply RELA-style relocations (currently arm64 only) 703 # Statically apply RELA-style relocations (currently arm64 only)
704 ifneq ($(CONFIG_STATIC_RELA),) 704 ifneq ($(CONFIG_STATIC_RELA),)
705 # $(1) is u-boot ELF, $(2) is u-boot bin, $(3) is text base 705 # $(1) is u-boot ELF, $(2) is u-boot bin, $(3) is text base
706 DO_STATIC_RELA = \ 706 DO_STATIC_RELA = \
707 start=$$($(NM) $(1) | grep __rel_dyn_start | cut -f 1 -d ' '); \ 707 start=$$($(NM) $(1) | grep __rel_dyn_start | cut -f 1 -d ' '); \
708 end=$$($(NM) $(1) | grep __rel_dyn_end | cut -f 1 -d ' '); \ 708 end=$$($(NM) $(1) | grep __rel_dyn_end | cut -f 1 -d ' '); \
709 tools/relocate-rela $(2) $(3) $$start $$end 709 tools/relocate-rela $(2) $(3) $$start $$end
710 else 710 else
711 DO_STATIC_RELA = 711 DO_STATIC_RELA =
712 endif 712 endif
713 713
714 # Always append ALL so that arch config.mk's can add custom ones 714 # Always append ALL so that arch config.mk's can add custom ones
715 ALL-y += u-boot.srec u-boot.bin System.map 715 ALL-y += u-boot.srec u-boot.bin System.map
716 716
717 ALL-$(CONFIG_NAND_U_BOOT) += u-boot-nand.bin 717 ALL-$(CONFIG_NAND_U_BOOT) += u-boot-nand.bin
718 ALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin 718 ALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin
719 ALL-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl 719 ALL-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl
720 ALL-$(CONFIG_SPL) += spl/u-boot-spl.bin 720 ALL-$(CONFIG_SPL) += spl/u-boot-spl.bin
721 ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img 721 ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img
722 ALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin 722 ALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin
723 ALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb.bin 723 ALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb.bin
724 ifneq ($(CONFIG_SPL_TARGET),) 724 ifneq ($(CONFIG_SPL_TARGET),)
725 ALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%) 725 ALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%)
726 endif 726 endif
727 ALL-$(CONFIG_REMAKE_ELF) += u-boot.elf 727 ALL-$(CONFIG_REMAKE_ELF) += u-boot.elf
728 728
729 # enable combined SPL/u-boot/dtb rules for tegra 729 # enable combined SPL/u-boot/dtb rules for tegra
730 ifneq ($(CONFIG_TEGRA),) 730 ifneq ($(CONFIG_TEGRA),)
731 ifeq ($(CONFIG_SPL),y) 731 ifeq ($(CONFIG_SPL),y)
732 ifeq ($(CONFIG_OF_SEPARATE),y) 732 ifeq ($(CONFIG_OF_SEPARATE),y)
733 ALL-y += u-boot-dtb-tegra.bin 733 ALL-y += u-boot-dtb-tegra.bin
734 else 734 else
735 ALL-y += u-boot-nodtb-tegra.bin 735 ALL-y += u-boot-nodtb-tegra.bin
736 endif 736 endif
737 endif 737 endif
738 endif 738 endif
739 739
740 LDFLAGS_u-boot += -T u-boot.lds $(LDFLAGS_FINAL) 740 LDFLAGS_u-boot += -T u-boot.lds $(LDFLAGS_FINAL)
741 ifneq ($(CONFIG_SYS_TEXT_BASE),) 741 ifneq ($(CONFIG_SYS_TEXT_BASE),)
742 LDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE) 742 LDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE)
743 endif 743 endif
744 744
745 all: $(ALL-y) 745 all: $(ALL-y)
746 746
747 PHONY += dtbs 747 PHONY += dtbs
748 dtbs dts/dt.dtb: checkdtc u-boot 748 dtbs dts/dt.dtb: checkdtc u-boot
749 $(Q)$(MAKE) $(build)=dts dtbs 749 $(Q)$(MAKE) $(build)=dts dtbs
750 750
751 u-boot-dtb.bin: u-boot.bin dts/dt.dtb 751 u-boot-dtb.bin: u-boot.bin dts/dt.dtb
752 cat $^ >$@ 752 cat $^ >$@
753 753
754 u-boot.hex: u-boot 754 u-boot.hex: u-boot
755 $(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@ 755 $(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@
756 756
757 u-boot.srec: u-boot 757 u-boot.srec: u-boot
758 $(OBJCOPY) ${OBJCFLAGS} -O srec $< $@ 758 $(OBJCOPY) ${OBJCFLAGS} -O srec $< $@
759 759
760 u-boot.bin: u-boot 760 u-boot.bin: u-boot
761 $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@ 761 $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
762 $(call DO_STATIC_RELA,$<,$@,$(CONFIG_SYS_TEXT_BASE)) 762 $(call DO_STATIC_RELA,$<,$@,$(CONFIG_SYS_TEXT_BASE))
763 $(BOARD_SIZE_CHECK) 763 $(BOARD_SIZE_CHECK)
764 764
765 u-boot.ldr: u-boot 765 u-boot.ldr: u-boot
766 $(CREATE_LDR_ENV) 766 $(CREATE_LDR_ENV)
767 $(LDR) -T $(CONFIG_BFIN_CPU) -c $@ $< $(LDR_FLAGS) 767 $(LDR) -T $(CONFIG_BFIN_CPU) -c $@ $< $(LDR_FLAGS)
768 $(BOARD_SIZE_CHECK) 768 $(BOARD_SIZE_CHECK)
769 769
770 u-boot.ldr.hex: u-boot.ldr 770 u-boot.ldr.hex: u-boot.ldr
771 $(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@ -I binary 771 $(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@ -I binary
772 772
773 u-boot.ldr.srec: u-boot.ldr 773 u-boot.ldr.srec: u-boot.ldr
774 $(OBJCOPY) ${OBJCFLAGS} -O srec $< $@ -I binary 774 $(OBJCOPY) ${OBJCFLAGS} -O srec $< $@ -I binary
775 775
776 # 776 #
777 # U-Boot entry point, needed for booting of full-blown U-Boot 777 # U-Boot entry point, needed for booting of full-blown U-Boot
778 # from the SPL U-Boot version. 778 # from the SPL U-Boot version.
779 # 779 #
780 ifndef CONFIG_SYS_UBOOT_START 780 ifndef CONFIG_SYS_UBOOT_START
781 CONFIG_SYS_UBOOT_START := 0 781 CONFIG_SYS_UBOOT_START := 0
782 endif 782 endif
783 783
784 u-boot.img: u-boot.bin 784 u-boot.img: u-boot.bin
785 tools/mkimage -A $(ARCH) -T firmware -C none \ 785 tools/mkimage -A $(ARCH) -T firmware -C none \
786 -O u-boot -a $(CONFIG_SYS_TEXT_BASE) \ 786 -O u-boot -a $(CONFIG_SYS_TEXT_BASE) \
787 -e $(CONFIG_SYS_UBOOT_START) \ 787 -e $(CONFIG_SYS_UBOOT_START) \
788 -n $(shell sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE) | \ 788 -n $(shell sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE) | \
789 sed -e 's/"[ ]*$$/ for $(BOARD) board"/') \ 789 sed -e 's/"[ ]*$$/ for $(BOARD) board"/') \
790 -d $< $@ 790 -d $< $@
791 791
792 u-boot.imx: u-boot.bin 792 u-boot.imx: u-boot.bin
793 $(MAKE) $(build)=arch/arm/imx-common $(objtree)/u-boot.imx 793 $(MAKE) $(build)=arch/arm/imx-common $(objtree)/u-boot.imx
794 794
795 u-boot.kwb: u-boot.bin 795 u-boot.kwb: u-boot.bin
796 tools/mkimage -n $(CONFIG_SYS_KWD_CONFIG) -T kwbimage \ 796 tools/mkimage -n $(CONFIG_SYS_KWD_CONFIG) -T kwbimage \
797 -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) -d $< $@ 797 -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) -d $< $@
798 798
799 u-boot.pbl: u-boot.bin 799 u-boot.pbl: u-boot.bin
800 tools/mkimage -n $(CONFIG_SYS_FSL_PBL_RCW) \ 800 tools/mkimage -n $(CONFIG_SYS_FSL_PBL_RCW) \
801 -R $(CONFIG_SYS_FSL_PBL_PBI) -T pblimage \ 801 -R $(CONFIG_SYS_FSL_PBL_PBI) -T pblimage \
802 -d $< $@ 802 -d $< $@
803 803
804 u-boot.sha1: u-boot.bin 804 u-boot.sha1: u-boot.bin
805 tools/ubsha1 u-boot.bin 805 tools/ubsha1 u-boot.bin
806 806
807 u-boot.dis: u-boot 807 u-boot.dis: u-boot
808 $(OBJDUMP) -d $< > $@ 808 $(OBJDUMP) -d $< > $@
809 809
810 # $@ is output, $(1) and $(2) are inputs, $(3) is padded intermediate, 810 # $@ is output, $(1) and $(2) are inputs, $(3) is padded intermediate,
811 # $(4) is pad-to 811 # $(4) is pad-to
812 SPL_PAD_APPEND = \ 812 SPL_PAD_APPEND = \
813 $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(4) -I binary -O binary \ 813 $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(4) -I binary -O binary \
814 $(1) $(3); \ 814 $(1) $(3); \
815 cat $(3) $(2) > $@; \ 815 cat $(3) $(2) > $@; \
816 rm $(3) 816 rm $(3)
817 817
818 ifdef CONFIG_TPL 818 ifdef CONFIG_TPL
819 SPL_PAYLOAD := tpl/u-boot-with-tpl.bin 819 SPL_PAYLOAD := tpl/u-boot-with-tpl.bin
820 else 820 else
821 SPL_PAYLOAD := u-boot.bin 821 SPL_PAYLOAD := u-boot.bin
822 endif 822 endif
823 823
824 u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) 824 u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD)
825 $(call SPL_PAD_APPEND,$<,$(SPL_PAYLOAD),spl/u-boot-spl-pad.bin,$(CONFIG_SPL_PAD_TO)) 825 $(call SPL_PAD_APPEND,$<,$(SPL_PAYLOAD),spl/u-boot-spl-pad.bin,$(CONFIG_SPL_PAD_TO))
826 826
827 tpl/u-boot-with-tpl.bin: tpl/u-boot-tpl.bin u-boot.bin 827 tpl/u-boot-with-tpl.bin: tpl/u-boot-tpl.bin u-boot.bin
828 $(call SPL_PAD_APPEND,$<,u-boot.bin,tpl/u-boot-tpl-pad.bin,$(CONFIG_TPL_PAD_TO)) 828 $(call SPL_PAD_APPEND,$<,u-boot.bin,tpl/u-boot-tpl-pad.bin,$(CONFIG_TPL_PAD_TO))
829 829
830 u-boot-with-spl.imx: spl/u-boot-spl.bin u-boot.bin 830 u-boot-with-spl.imx: spl/u-boot-spl.bin u-boot.bin
831 $(MAKE) $(build)=arch/arm/imx-common \ 831 $(MAKE) $(build)=arch/arm/imx-common \
832 $(OBJTREE)/u-boot-with-spl.imx 832 $(OBJTREE)/u-boot-with-spl.imx
833 833
834 u-boot-with-nand-spl.imx: spl/u-boot-spl.bin u-boot.bin 834 u-boot-with-nand-spl.imx: spl/u-boot-spl.bin u-boot.bin
835 $(MAKE) $(build)=arch/arm/imx-common \ 835 $(MAKE) $(build)=arch/arm/imx-common \
836 $(OBJTREE)/u-boot-with-nand-spl.imx 836 $(OBJTREE)/u-boot-with-nand-spl.imx
837 837
838 u-boot.ubl: u-boot-with-spl.bin 838 u-boot.ubl: u-boot-with-spl.bin
839 tools/mkimage -n $(UBL_CONFIG) -T ublimage \ 839 tools/mkimage -n $(UBL_CONFIG) -T ublimage \
840 -e $(CONFIG_SYS_TEXT_BASE) -d $< u-boot.ubl 840 -e $(CONFIG_SYS_TEXT_BASE) -d $< u-boot.ubl
841 841
842 u-boot.ais: spl/u-boot-spl.bin u-boot.img 842 u-boot.ais: spl/u-boot-spl.bin u-boot.img
843 tools/mkimage -s -n $(if $(CONFIG_AIS_CONFIG_FILE),$(srctree)/$(CONFIG_AIS_CONFIG_FILE:"%"=%),"/dev/null") \ 843 tools/mkimage -s -n $(if $(CONFIG_AIS_CONFIG_FILE),$(srctree)/$(CONFIG_AIS_CONFIG_FILE:"%"=%),"/dev/null") \
844 -T aisimage \ 844 -T aisimage \
845 -e $(CONFIG_SPL_TEXT_BASE) \ 845 -e $(CONFIG_SPL_TEXT_BASE) \
846 -d spl/u-boot-spl.bin \ 846 -d spl/u-boot-spl.bin \
847 spl/u-boot-spl.ais 847 spl/u-boot-spl.ais
848 $(OBJCOPY) ${OBJCFLAGS} -I binary \ 848 $(OBJCOPY) ${OBJCFLAGS} -I binary \
849 --pad-to=$(CONFIG_SPL_MAX_SIZE) -O binary \ 849 --pad-to=$(CONFIG_SPL_MAX_SIZE) -O binary \
850 spl/u-boot-spl.ais spl/u-boot-spl-pad.ais 850 spl/u-boot-spl.ais spl/u-boot-spl-pad.ais
851 cat spl/u-boot-spl-pad.ais u-boot.img > u-boot.ais 851 cat spl/u-boot-spl-pad.ais u-boot.img > u-boot.ais
852 852
853 853
854 u-boot.sb: u-boot.bin spl/u-boot-spl.bin 854 u-boot.sb: u-boot.bin spl/u-boot-spl.bin
855 $(MAKE) $(build)=$(CPUDIR)/$(SOC)/ $(OBJTREE)/u-boot.sb 855 $(MAKE) $(build)=$(CPUDIR)/$(SOC)/ $(OBJTREE)/u-boot.sb
856 856
857 # On x600 (SPEAr600) U-Boot is appended to U-Boot SPL. 857 # On x600 (SPEAr600) U-Boot is appended to U-Boot SPL.
858 # Both images are created using mkimage (crc etc), so that the ROM 858 # Both images are created using mkimage (crc etc), so that the ROM
859 # bootloader can check its integrity. Padding needs to be done to the 859 # bootloader can check its integrity. Padding needs to be done to the
860 # SPL image (with mkimage header) and not the binary. Otherwise the resulting image 860 # SPL image (with mkimage header) and not the binary. Otherwise the resulting image
861 # which is loaded/copied by the ROM bootloader to SRAM doesn't fit. 861 # which is loaded/copied by the ROM bootloader to SRAM doesn't fit.
862 # The resulting image containing both U-Boot images is called u-boot.spr 862 # The resulting image containing both U-Boot images is called u-boot.spr
863 u-boot.spr: u-boot.img spl/u-boot-spl.bin 863 u-boot.spr: u-boot.img spl/u-boot-spl.bin
864 tools/mkimage -A $(ARCH) -T firmware -C none \ 864 tools/mkimage -A $(ARCH) -T firmware -C none \
865 -a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n XLOADER \ 865 -a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n XLOADER \
866 -d spl/u-boot-spl.bin $@ 866 -d spl/u-boot-spl.bin $@
867 $(OBJCOPY) -I binary -O binary \ 867 $(OBJCOPY) -I binary -O binary \
868 --pad-to=$(CONFIG_SPL_PAD_TO) --gap-fill=0xff $@ 868 --pad-to=$(CONFIG_SPL_PAD_TO) --gap-fill=0xff $@
869 cat u-boot.img >> $@ 869 cat u-boot.img >> $@
870 870
871 ifneq ($(CONFIG_TEGRA),) 871 ifneq ($(CONFIG_TEGRA),)
872 u-boot-nodtb-tegra.bin: spl/u-boot-spl.bin u-boot.bin 872 u-boot-nodtb-tegra.bin: spl/u-boot-spl.bin u-boot.bin
873 $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(CONFIG_SYS_TEXT_BASE) -O binary spl/u-boot-spl spl/u-boot-spl-pad.bin 873 $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(CONFIG_SYS_TEXT_BASE) -O binary spl/u-boot-spl spl/u-boot-spl-pad.bin
874 cat spl/u-boot-spl-pad.bin u-boot.bin > $@ 874 cat spl/u-boot-spl-pad.bin u-boot.bin > $@
875 rm spl/u-boot-spl-pad.bin 875 rm spl/u-boot-spl-pad.bin
876 876
877 ifeq ($(CONFIG_OF_SEPARATE),y) 877 ifeq ($(CONFIG_OF_SEPARATE),y)
878 u-boot-dtb-tegra.bin: u-boot-nodtb-tegra.bin dts/dt.dtb 878 u-boot-dtb-tegra.bin: u-boot-nodtb-tegra.bin dts/dt.dtb
879 cat $^ > $@ 879 cat $^ > $@
880 endif 880 endif
881 endif 881 endif
882 882
883 u-boot-img.bin: spl/u-boot-spl.bin u-boot.img 883 u-boot-img.bin: spl/u-boot-spl.bin u-boot.img
884 cat spl/u-boot-spl.bin u-boot.img > $@ 884 cat spl/u-boot-spl.bin u-boot.img > $@
885 885
886 # PPC4xx needs the SPL at the end of the image, since the reset vector 886 # PPC4xx needs the SPL at the end of the image, since the reset vector
887 # is located at 0xfffffffc. So we can't use the "u-boot-img.bin" target 887 # is located at 0xfffffffc. So we can't use the "u-boot-img.bin" target
888 # and need to introduce a new build target with the full blown U-Boot 888 # and need to introduce a new build target with the full blown U-Boot
889 # at the start padded up to the start of the SPL image. And then concat 889 # at the start padded up to the start of the SPL image. And then concat
890 # the SPL image to the end. 890 # the SPL image to the end.
891 u-boot-img-spl-at-end.bin: spl/u-boot-spl.bin u-boot.img 891 u-boot-img-spl-at-end.bin: spl/u-boot-spl.bin u-boot.img
892 $(OBJCOPY) -I binary -O binary --pad-to=$(CONFIG_UBOOT_PAD_TO) \ 892 $(OBJCOPY) -I binary -O binary --pad-to=$(CONFIG_UBOOT_PAD_TO) \
893 --gap-fill=0xff u-boot.img $@ 893 --gap-fill=0xff u-boot.img $@
894 cat spl/u-boot-spl.bin >> $@ 894 cat spl/u-boot-spl.bin >> $@
895 895
896 # Create a new ELF from a raw binary file. This is useful for arm64 896 # Create a new ELF from a raw binary file. This is useful for arm64
897 # where static relocation needs to be performed on the raw binary, 897 # where static relocation needs to be performed on the raw binary,
898 # but certain simulators only accept an ELF file (but don't do the 898 # but certain simulators only accept an ELF file (but don't do the
899 # relocation). 899 # relocation).
900 # FIXME refactor dts/Makefile to share target/arch detection 900 # FIXME refactor dts/Makefile to share target/arch detection
901 u-boot.elf: u-boot.bin 901 u-boot.elf: u-boot.bin
902 @$(OBJCOPY) -B aarch64 -I binary -O elf64-littleaarch64 \ 902 @$(OBJCOPY) -B aarch64 -I binary -O elf64-littleaarch64 \
903 $< u-boot-elf.o 903 $< u-boot-elf.o
904 @$(LD) u-boot-elf.o -o $@ \ 904 @$(LD) u-boot-elf.o -o $@ \
905 --defsym=_start=$(CONFIG_SYS_TEXT_BASE) \ 905 --defsym=_start=$(CONFIG_SYS_TEXT_BASE) \
906 -Ttext=$(CONFIG_SYS_TEXT_BASE) 906 -Ttext=$(CONFIG_SYS_TEXT_BASE)
907 907
908 ifeq ($(CONFIG_SANDBOX),y) 908 ifeq ($(CONFIG_SANDBOX),y)
909 GEN_UBOOT = \ 909 GEN_UBOOT = \
910 $(CC) $(SYMS) -T u-boot.lds \ 910 $(CC) $(SYMS) -T u-boot.lds \
911 -Wl,--start-group $(u-boot-main) -Wl,--end-group \ 911 -Wl,--start-group $(u-boot-main) -Wl,--end-group \
912 $(PLATFORM_LIBS) -Wl,-Map -Wl,u-boot.map -o u-boot 912 $(PLATFORM_LIBS) -Wl,-Map -Wl,u-boot.map -o u-boot
913 else 913 else
914 GEN_UBOOT = \ 914 GEN_UBOOT = \
915 $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) \ 915 $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) \
916 $(u-boot-init) \ 916 $(u-boot-init) \
917 --start-group $(u-boot-main) --end-group $(PLATFORM_LIBS) \ 917 --start-group $(u-boot-main) --end-group $(PLATFORM_LIBS) \
918 -Map u-boot.map -o u-boot 918 -Map u-boot.map -o u-boot
919 endif 919 endif
920 920
921 u-boot: $(u-boot-init) $(u-boot-main) u-boot.lds 921 u-boot: $(u-boot-init) $(u-boot-main) u-boot.lds
922 $(GEN_UBOOT) 922 $(GEN_UBOOT)
923 ifeq ($(CONFIG_KALLSYMS),y) 923 ifeq ($(CONFIG_KALLSYMS),y)
924 smap=`$(call SYSTEM_MAP,u-boot) | \ 924 smap=`$(call SYSTEM_MAP,u-boot) | \
925 awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \ 925 awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \
926 $(CC) $(c_flags) -DSYSTEM_MAP="\"$${smap}\"" \ 926 $(CC) $(c_flags) -DSYSTEM_MAP="\"$${smap}\"" \
927 -c $(srctree)/common/system_map.c -o common/system_map.o 927 -c $(srctree)/common/system_map.c -o common/system_map.o
928 $(GEN_UBOOT) common/system_map.o 928 $(GEN_UBOOT) common/system_map.o
929 endif 929 endif
930 930
931 # The actual objects are generated when descending, 931 # The actual objects are generated when descending,
932 # make sure no implicit rule kicks in 932 # make sure no implicit rule kicks in
933 $(sort $(u-boot-init) $(u-boot-main)): $(u-boot-dirs) ; 933 $(sort $(u-boot-init) $(u-boot-main)): $(u-boot-dirs) ;
934 934
935 # Handle descending into subdirectories listed in $(vmlinux-dirs) 935 # Handle descending into subdirectories listed in $(vmlinux-dirs)
936 # Preset locale variables to speed up the build process. Limit locale 936 # Preset locale variables to speed up the build process. Limit locale
937 # tweaks to this spot to avoid wrong language settings when running 937 # tweaks to this spot to avoid wrong language settings when running
938 # make menuconfig etc. 938 # make menuconfig etc.
939 # Error messages still appears in the original language 939 # Error messages still appears in the original language
940 940
941 PHONY += $(u-boot-dirs) 941 PHONY += $(u-boot-dirs)
942 $(u-boot-dirs): depend prepare scripts 942 $(u-boot-dirs): depend prepare scripts
943 $(Q)$(MAKE) $(build)=$@ 943 $(Q)$(MAKE) $(build)=$@
944 944
945 tools: $(TIMESTAMP_FILE) $(VERSION_FILE) 945 tools: $(TIMESTAMP_FILE) $(VERSION_FILE)
946 # The "tools" are needed early 946 # The "tools" are needed early
947 $(filter-out tools, $(u-boot-dirs)): tools 947 $(filter-out tools, $(u-boot-dirs)): tools
948 # The "examples" conditionally depend on U-Boot (say, when USE_PRIVATE_LIBGCC 948 # The "examples" conditionally depend on U-Boot (say, when USE_PRIVATE_LIBGCC
949 # is "yes"), so compile examples after U-Boot is compiled. 949 # is "yes"), so compile examples after U-Boot is compiled.
950 examples: $(filter-out examples, $(u-boot-dirs)) 950 examples: $(filter-out examples, $(u-boot-dirs))
951 951
952 # Things we need to do before we recursively start building the kernel 952 # Things we need to do before we recursively start building the kernel
953 # or the modules are listed in "prepare". 953 # or the modules are listed in "prepare".
954 # A multi level approach is used. prepareN is processed before prepareN-1. 954 # A multi level approach is used. prepareN is processed before prepareN-1.
955 # archprepare is used in arch Makefiles and when processed asm symlink, 955 # archprepare is used in arch Makefiles and when processed asm symlink,
956 # version.h and scripts_basic is processed / created. 956 # version.h and scripts_basic is processed / created.
957 957
958 # Listed in dependency order 958 # Listed in dependency order
959 PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3 959 PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3
960 960
961 # prepare3 is used to check if we are building in a separate output directory, 961 # prepare3 is used to check if we are building in a separate output directory,
962 # and if so do: 962 # and if so do:
963 # 1) Check that make has not been executed in the kernel src $(srctree) 963 # 1) Check that make has not been executed in the kernel src $(srctree)
964 prepare3: 964 prepare3:
965 ifneq ($(KBUILD_SRC),) 965 ifneq ($(KBUILD_SRC),)
966 @$(kecho) ' Using $(srctree) as source for u-boot' 966 @$(kecho) ' Using $(srctree) as source for u-boot'
967 $(Q)if [ -f $(srctree)/include/config.mk ]; then \ 967 $(Q)if [ -f $(srctree)/include/config.mk ]; then \
968 echo >&2 " $(srctree) is not clean, please run 'make mrproper'"; \ 968 echo >&2 " $(srctree) is not clean, please run 'make mrproper'"; \
969 echo >&2 " in the '$(srctree)' directory.";\ 969 echo >&2 " in the '$(srctree)' directory.";\
970 /bin/false; \ 970 /bin/false; \
971 fi; 971 fi;
972 endif 972 endif
973 973
974 # prepare2 creates a makefile if using a separate output directory 974 # prepare2 creates a makefile if using a separate output directory
975 prepare2: prepare3 outputmakefile 975 prepare2: prepare3 outputmakefile
976 976
977 prepare1: prepare2 977 prepare1: prepare2
978 @: 978 @:
979 979
980 archprepare: prepare1 scripts_basic 980 archprepare: prepare1 scripts_basic
981 981
982 prepare0: archprepare FORCE 982 prepare0: archprepare FORCE
983 @: 983 @:
984 984
985 # All the preparing.. 985 # All the preparing..
986 prepare: prepare0 986 prepare: prepare0
987 987
988 # 988 #
989 # Auto-generate the autoconf.mk file (which is included by all makefiles) 989 # Auto-generate the autoconf.mk file (which is included by all makefiles)
990 # 990 #
991 # This target actually generates 2 files; autoconf.mk and autoconf.mk.dep. 991 # This target actually generates 2 files; autoconf.mk and autoconf.mk.dep.
992 # the dep file is only include in this top level makefile to determine when 992 # the dep file is only include in this top level makefile to determine when
993 # to regenerate the autoconf.mk file. 993 # to regenerate the autoconf.mk file.
994 994
995 quiet_cmd_autoconf_dep = GEN $@ 995 quiet_cmd_autoconf_dep = GEN $@
996 cmd_autoconf_dep = $(CC) -x c -DDO_DEPS_ONLY -M $(c_flags) \ 996 cmd_autoconf_dep = $(CC) -x c -DDO_DEPS_ONLY -M $(c_flags) \
997 -MQ include/autoconf.mk $(srctree)/include/common.h > $@ || rm $@ 997 -MQ include/autoconf.mk $(srctree)/include/common.h > $@ || rm $@
998 998
999 include/autoconf.mk.dep: include/config.h include/common.h 999 include/autoconf.mk.dep: include/config.h include/common.h
1000 $(call cmd,autoconf_dep) 1000 $(call cmd,autoconf_dep)
1001 1001
1002 quiet_cmd_autoconf = GEN $@ 1002 quiet_cmd_autoconf = GEN $@
1003 cmd_autoconf = \ 1003 cmd_autoconf = \
1004 $(CPP) $(c_flags) -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && \ 1004 $(CPP) $(c_flags) -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && \
1005 sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp > $@; \ 1005 sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp > $@; \
1006 rm $@.tmp 1006 rm $@.tmp
1007 1007
1008 include/autoconf.mk: include/config.h 1008 include/autoconf.mk: include/config.h
1009 $(call cmd,autoconf) 1009 $(call cmd,autoconf)
1010 1010
1011 u-boot.lds: $(LDSCRIPT) depend 1011 u-boot.lds: $(LDSCRIPT) depend
1012 $(CPP) $(cpp_flags) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@ 1012 $(CPP) $(cpp_flags) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
1013 1013
1014 nand_spl: $(TIMESTAMP_FILE) $(VERSION_FILE) depend prepare 1014 nand_spl: $(TIMESTAMP_FILE) $(VERSION_FILE) depend prepare
1015 $(MAKE) $(build)=nand_spl/board/$(BOARDDIR) all 1015 $(MAKE) $(build)=nand_spl/board/$(BOARDDIR) all
1016 1016
1017 u-boot-nand.bin: nand_spl u-boot.bin 1017 u-boot-nand.bin: nand_spl u-boot.bin
1018 cat nand_spl/u-boot-spl-16k.bin u-boot.bin > u-boot-nand.bin 1018 cat nand_spl/u-boot-spl-16k.bin u-boot.bin > u-boot-nand.bin
1019 1019
1020 spl/u-boot-spl.bin: tools depend prepare 1020 spl/u-boot-spl.bin: tools depend prepare
1021 $(MAKE) obj=spl -f $(srctree)/spl/Makefile all 1021 $(MAKE) obj=spl -f $(srctree)/spl/Makefile all
1022 1022
1023 tpl/u-boot-tpl.bin: tools depend prepare 1023 tpl/u-boot-tpl.bin: tools depend prepare
1024 $(MAKE) obj=tpl -f $(srctree)/spl/Makefile all CONFIG_TPL_BUILD=y 1024 $(MAKE) obj=tpl -f $(srctree)/spl/Makefile all CONFIG_TPL_BUILD=y
1025 1025
1026 # Explicitly make _depend in subdirs containing multiple targets to prevent 1026 # Explicitly make _depend in subdirs containing multiple targets to prevent
1027 # parallel sub-makes creating .depend files simultaneously. 1027 # parallel sub-makes creating .depend files simultaneously.
1028 depend dep: $(TIMESTAMP_FILE) $(VERSION_FILE) \ 1028 depend dep: $(TIMESTAMP_FILE) $(VERSION_FILE) \
1029 include/generated/generic-asm-offsets.h \ 1029 include/generated/generic-asm-offsets.h \
1030 include/generated/asm-offsets.h 1030 include/generated/asm-offsets.h
1031 1031
1032 TAG_SUBDIRS := $(u-boot-dirs) include 1032 TAG_SUBDIRS := $(u-boot-dirs) include
1033 1033
1034 FIND := find 1034 FIND := find
1035 FINDFLAGS := -L 1035 FINDFLAGS := -L
1036 1036
1037 PHONY += checkstack 1037 PHONY += checkstack
1038 1038
1039 checkstack: 1039 checkstack:
1040 $(OBJDUMP) -d u-boot $$(find . -name u-boot-spl) | \ 1040 $(OBJDUMP) -d u-boot $$(find . -name u-boot-spl) | \
1041 $(PERL) $(src)/scripts/checkstack.pl $(ARCH) 1041 $(PERL) $(src)/scripts/checkstack.pl $(ARCH)
1042 1042
1043 tags ctags: 1043 tags ctags:
1044 ctags -w -o ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \ 1044 ctags -w -o ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
1045 -name '*.[chS]' -print` 1045 -name '*.[chS]' -print`
1046 1046
1047 etags: 1047 etags:
1048 etags -a -o $(obj)etags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \ 1048 etags -a -o $(obj)etags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
1049 -name '*.[chS]' -print` 1049 -name '*.[chS]' -print`
1050 cscope: 1050 cscope:
1051 $(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \ 1051 $(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \
1052 cscope.files 1052 cscope.files
1053 cscope -b -q -k 1053 cscope -b -q -k
1054 1054
1055 SYSTEM_MAP = \ 1055 SYSTEM_MAP = \
1056 $(NM) $1 | \ 1056 $(NM) $1 | \
1057 grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \ 1057 grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
1058 LC_ALL=C sort 1058 LC_ALL=C sort
1059 System.map: u-boot 1059 System.map: u-boot
1060 @$(call SYSTEM_MAP,$<) > $@ 1060 @$(call SYSTEM_MAP,$<) > $@
1061 1061
1062 checkthumb: 1062 checkthumb:
1063 @if test $(call cc-version) -lt 0404; then \ 1063 @if test $(call cc-version) -lt 0404; then \
1064 echo -n '*** Your GCC does not produce working '; \ 1064 echo -n '*** Your GCC does not produce working '; \
1065 echo 'binaries in THUMB mode.'; \ 1065 echo 'binaries in THUMB mode.'; \
1066 echo '*** Your board is configured for THUMB mode.'; \ 1066 echo '*** Your board is configured for THUMB mode.'; \
1067 false; \ 1067 false; \
1068 fi 1068 fi
1069 1069
1070 # GCC 3.x is reported to have problems generating the type of relocation 1070 # GCC 3.x is reported to have problems generating the type of relocation
1071 # that U-Boot wants. 1071 # that U-Boot wants.
1072 # See http://lists.denx.de/pipermail/u-boot/2012-September/135156.html 1072 # See http://lists.denx.de/pipermail/u-boot/2012-September/135156.html
1073 checkgcc4: 1073 checkgcc4:
1074 @if test $(call cc-version) -lt 0400; then \ 1074 @if test $(call cc-version) -lt 0400; then \
1075 echo -n '*** Your GCC is too old, please upgrade to GCC 4.x or newer'; \ 1075 echo -n '*** Your GCC is too old, please upgrade to GCC 4.x or newer'; \
1076 false; \ 1076 false; \
1077 fi 1077 fi
1078 1078
1079 checkdtc: 1079 checkdtc:
1080 @if test $(call dtc-version) -lt 0104; then \ 1080 @if test $(call dtc-version) -lt 0104; then \
1081 echo '*** Your dtc is too old, please upgrade to dtc 1.4 or newer'; \ 1081 echo '*** Your dtc is too old, please upgrade to dtc 1.4 or newer'; \
1082 false; \ 1082 false; \
1083 fi 1083 fi
1084 1084
1085 quiet_cmd_offsets = GEN $@ 1085 quiet_cmd_offsets = GEN $@
1086 cmd_offsets = $(srctree)/tools/scripts/make-asm-offsets $< $@ 1086 cmd_offsets = $(srctree)/tools/scripts/make-asm-offsets $< $@
1087 1087
1088 include/generated/generic-asm-offsets.h: lib/asm-offsets.s 1088 include/generated/generic-asm-offsets.h: lib/asm-offsets.s
1089 $(call cmd,offsets) 1089 $(call cmd,offsets)
1090 1090
1091 quiet_cmd_asm-offsets.s = CC $@ 1091 quiet_cmd_asm-offsets.s = CC $@
1092 cmd_asm-offsets.s = mkdir -p lib; \ 1092 cmd_asm-offsets.s = mkdir -p lib; \
1093 $(CC) -DDO_DEPS_ONLY \ 1093 $(CC) -DDO_DEPS_ONLY \
1094 $(c_flags) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \ 1094 $(c_flags) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \
1095 -o $@ $< -c -S 1095 -o $@ $< -c -S
1096 1096
1097 lib/asm-offsets.s: $(srctree)/lib/asm-offsets.c include/config.h 1097 lib/asm-offsets.s: $(srctree)/lib/asm-offsets.c include/config.h
1098 $(call cmd,asm-offsets.s) 1098 $(call cmd,asm-offsets.s)
1099 1099
1100 include/generated/asm-offsets.h: $(CPUDIR)/$(SOC)/asm-offsets.s 1100 include/generated/asm-offsets.h: $(CPUDIR)/$(SOC)/asm-offsets.s
1101 $(call cmd,offsets) 1101 $(call cmd,offsets)
1102 1102
1103 quiet_cmd_soc_asm-offsets.s = CC $@ 1103 quiet_cmd_soc_asm-offsets.s = CC $@
1104 cmd_soc_asm-offsets.s = mkdir -p $(CPUDIR)/$(SOC); \ 1104 cmd_soc_asm-offsets.s = mkdir -p $(CPUDIR)/$(SOC); \
1105 if [ -f $(srctree)/$(CPUDIR)/$(SOC)/asm-offsets.c ];then \ 1105 if [ -f $(srctree)/$(CPUDIR)/$(SOC)/asm-offsets.c ];then \
1106 $(CC) -DDO_DEPS_ONLY \ 1106 $(CC) -DDO_DEPS_ONLY \
1107 $(c_flags) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \ 1107 $(c_flags) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \
1108 -o $@ $(srctree)/$(CPUDIR)/$(SOC)/asm-offsets.c -c -S; \ 1108 -o $@ $(srctree)/$(CPUDIR)/$(SOC)/asm-offsets.c -c -S; \
1109 else \ 1109 else \
1110 touch $@; \ 1110 touch $@; \
1111 fi 1111 fi
1112 1112
1113 $(CPUDIR)/$(SOC)/asm-offsets.s: include/config.h 1113 $(CPUDIR)/$(SOC)/asm-offsets.s: include/config.h
1114 $(call cmd,soc_asm-offsets.s) 1114 $(call cmd,soc_asm-offsets.s)
1115 1115
1116 ######################################################################### 1116 #########################################################################
1117 1117
1118 # ARM relocations should all be R_ARM_RELATIVE (32-bit) or 1118 # ARM relocations should all be R_ARM_RELATIVE (32-bit) or
1119 # R_AARCH64_RELATIVE (64-bit). 1119 # R_AARCH64_RELATIVE (64-bit).
1120 checkarmreloc: u-boot 1120 checkarmreloc: u-boot
1121 @RELOC="`$(CROSS_COMPILE)readelf -r -W $< | cut -d ' ' -f 4 | \ 1121 @RELOC="`$(CROSS_COMPILE)readelf -r -W $< | cut -d ' ' -f 4 | \
1122 grep R_A | sort -u`"; \ 1122 grep R_A | sort -u`"; \
1123 if test "$$RELOC" != "R_ARM_RELATIVE" -a \ 1123 if test "$$RELOC" != "R_ARM_RELATIVE" -a \
1124 "$$RELOC" != "R_AARCH64_RELATIVE"; then \ 1124 "$$RELOC" != "R_AARCH64_RELATIVE"; then \
1125 echo "$< contains unexpected relocations: $$RELOC"; \ 1125 echo "$< contains unexpected relocations: $$RELOC"; \
1126 false; \ 1126 false; \
1127 fi 1127 fi
1128 1128
1129 $(VERSION_FILE): 1129 $(VERSION_FILE):
1130 @mkdir -p $(dir $(VERSION_FILE)) 1130 @mkdir -p $(dir $(VERSION_FILE))
1131 @( localvers='$(shell $(TOPDIR)/scripts/setlocalversion $(TOPDIR))' ; \ 1131 @( localvers='$(shell $(TOPDIR)/scripts/setlocalversion $(TOPDIR))' ; \
1132 printf '#define PLAIN_VERSION "%s%s"\n' \ 1132 printf '#define PLAIN_VERSION "%s%s"\n' \
1133 "$(U_BOOT_VERSION)" "$${localvers}" ; \ 1133 "$(U_BOOT_VERSION)" "$${localvers}" ; \
1134 printf '#define U_BOOT_VERSION "U-Boot %s%s"\n' \ 1134 printf '#define U_BOOT_VERSION "U-Boot %s%s"\n' \
1135 "$(U_BOOT_VERSION)" "$${localvers}" ; \ 1135 "$(U_BOOT_VERSION)" "$${localvers}" ; \
1136 ) > $@.tmp 1136 ) > $@.tmp
1137 @( printf '#define CC_VERSION_STRING "%s"\n' \ 1137 @( printf '#define CC_VERSION_STRING "%s"\n' \
1138 '$(shell $(CC) --version | head -n 1)' )>> $@.tmp 1138 '$(shell $(CC) --version | head -n 1)' )>> $@.tmp
1139 @( printf '#define LD_VERSION_STRING "%s"\n' \ 1139 @( printf '#define LD_VERSION_STRING "%s"\n' \
1140 '$(shell $(LD) -v | head -n 1)' )>> $@.tmp 1140 '$(shell $(LD) -v | head -n 1)' )>> $@.tmp
1141 @cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@ 1141 @cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@
1142 1142
1143 $(TIMESTAMP_FILE): 1143 $(TIMESTAMP_FILE):
1144 @mkdir -p $(dir $(TIMESTAMP_FILE)) 1144 @mkdir -p $(dir $(TIMESTAMP_FILE))
1145 @LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"' > $@.tmp 1145 @LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"' > $@.tmp
1146 @LC_ALL=C date +'#define U_BOOT_TIME "%T"' >> $@.tmp 1146 @LC_ALL=C date +'#define U_BOOT_TIME "%T"' >> $@.tmp
1147 @cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@ 1147 @cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@
1148 1148
1149 env: depend scripts_basic 1149 env: depend scripts_basic
1150 $(Q)$(MAKE) $(build)=tools/$@ 1150 $(Q)$(MAKE) $(build)=tools/$@
1151 1151
1152 tools-all: HOST_TOOLS_ALL=y 1152 tools-all: HOST_TOOLS_ALL=y
1153 tools-all: env tools ; 1153 tools-all: env tools ;
1154 1154
1155 .PHONY : CHANGELOG 1155 .PHONY : CHANGELOG
1156 CHANGELOG: 1156 CHANGELOG:
1157 git log --no-merges U-Boot-1_1_5.. | \ 1157 git log --no-merges U-Boot-1_1_5.. | \
1158 unexpand -a | sed -e 's/\s\s*$$//' > $@ 1158 unexpand -a | sed -e 's/\s\s*$$//' > $@
1159 1159
1160 include/license.h: tools/bin2header COPYING 1160 include/license.h: tools/bin2header COPYING
1161 cat COPYING | gzip -9 -c | ./tools/bin2header license_gzip > include/license.h 1161 cat COPYING | gzip -9 -c | ./tools/bin2header license_gzip > include/license.h
1162 ######################################################################### 1162 #########################################################################
1163 1163
1164 ### 1164 ###
1165 # Cleaning is done on three levels. 1165 # Cleaning is done on three levels.
1166 # make clean Delete most generated files 1166 # make clean Delete most generated files
1167 # Leave enough to build external modules 1167 # Leave enough to build external modules
1168 # make mrproper Delete the current configuration, and all generated files 1168 # make mrproper Delete the current configuration, and all generated files
1169 # make distclean Remove editor backup files, patch leftover files and the like 1169 # make distclean Remove editor backup files, patch leftover files and the like
1170 1170
1171 # Directories & files removed with 'make clean' 1171 # Directories & files removed with 'make clean'
1172 CLEAN_DIRS += $(MODVERDIR) 1172 CLEAN_DIRS += $(MODVERDIR)
1173 CLEAN_FILES += u-boot.lds include/bmp_logo.h include/bmp_logo_data.h \ 1173 CLEAN_FILES += u-boot.lds include/bmp_logo.h include/bmp_logo_data.h \
1174 board/*/config.tmp board/*/*/config.tmp \ 1174 board/*/config.tmp board/*/*/config.tmp \
1175 include/autoconf.mk* include/spl-autoconf.mk \ 1175 include/autoconf.mk* include/spl-autoconf.mk \
1176 include/tpl-autoconf.mk 1176 include/tpl-autoconf.mk
1177 1177
1178 # Directories & files removed with 'make clobber' 1178 # Directories & files removed with 'make clobber'
1179 CLOBBER_DIRS += $(patsubst %,spl/%, $(filter-out Makefile, \ 1179 CLOBBER_DIRS += $(patsubst %,spl/%, $(filter-out Makefile, \
1180 $(shell ls -1 spl 2>/dev/null))) \ 1180 $(shell ls -1 spl 2>/dev/null))) \
1181 tpl 1181 tpl
1182 CLOBBER_FILES += u-boot* MLO MLO* SPL System.map nand_spl/u-boot* 1182 CLOBBER_FILES += u-boot* MLO MLO* SPL System.map nand_spl/u-boot*
1183 1183
1184 # Directories & files removed with 'make mrproper' 1184 # Directories & files removed with 'make mrproper'
1185 MRPROPER_DIRS += include/config include/generated 1185 MRPROPER_DIRS += include/config include/generated
1186 MRPROPER_FILES += .config .config.old \ 1186 MRPROPER_FILES += .config .config.old \
1187 tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \ 1187 tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \
1188 include/config.h include/config.mk 1188 include/config.h include/config.mk
1189 1189
1190 # clean - Delete most, but leave enough to build external modules 1190 # clean - Delete most, but leave enough to build external modules
1191 # 1191 #
1192 clean: rm-dirs := $(CLEAN_DIRS) 1192 clean: rm-dirs := $(CLEAN_DIRS)
1193 clean: rm-files := $(CLEAN_FILES) 1193 clean: rm-files := $(CLEAN_FILES)
1194 1194
1195 clean-dirs := $(foreach f,$(u-boot-alldirs),$(if $(wildcard $f/Makefile),$f)) 1195 clean-dirs := $(foreach f,$(u-boot-alldirs),$(if $(wildcard $f/Makefile),$f))
1196 1196
1197 clean-dirs := $(addprefix _clean_, $(clean-dirs) doc/DocBook) 1197 clean-dirs := $(addprefix _clean_, $(clean-dirs) doc/DocBook)
1198 1198
1199 PHONY += $(clean-dirs) clean archclean 1199 PHONY += $(clean-dirs) clean archclean
1200 $(clean-dirs): 1200 $(clean-dirs):
1201 $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@) 1201 $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@)
1202 1202
1203 # TODO: Do not use *.cfgtmp 1203 # TODO: Do not use *.cfgtmp
1204 clean: $(clean-dirs) 1204 clean: $(clean-dirs)
1205 $(call cmd,rmdirs) 1205 $(call cmd,rmdirs)
1206 $(call cmd,rmfiles) 1206 $(call cmd,rmfiles)
1207 @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \ 1207 @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \
1208 \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \ 1208 \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
1209 -o -name '*.ko.*' -o -name '*.su' -o -name '*.cfgtmp' \ 1209 -o -name '*.ko.*' -o -name '*.su' -o -name '*.cfgtmp' \
1210 -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \ 1210 -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
1211 -o -name '*.symtypes' -o -name 'modules.order' \ 1211 -o -name '*.symtypes' -o -name 'modules.order' \
1212 -o -name modules.builtin -o -name '.tmp_*.o.*' \ 1212 -o -name modules.builtin -o -name '.tmp_*.o.*' \
1213 -o -name '*.gcno' \) -type f -print | xargs rm -f 1213 -o -name '*.gcno' \) -type f -print | xargs rm -f
1214 @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \ 1214 @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \
1215 -path './nand_spl/*' -type l -print | xargs rm -f 1215 -path './nand_spl/*' -type l -print | xargs rm -f
1216 1216
1217 # clobber 1217 # clobber
1218 # 1218 #
1219 clobber: rm-dirs := $(CLOBBER_DIRS) 1219 clobber: rm-dirs := $(CLOBBER_DIRS)
1220 clobber: rm-files := $(CLOBBER_FILES) 1220 clobber: rm-files := $(CLOBBER_FILES)
1221 1221
1222 PHONY += clobber 1222 PHONY += clobber
1223 1223
1224 clobber: clean 1224 clobber: clean
1225 $(call cmd,rmdirs) 1225 $(call cmd,rmdirs)
1226 $(call cmd,rmfiles) 1226 $(call cmd,rmfiles)
1227 1227
1228 # mrproper - Delete all generated files, including .config 1228 # mrproper - Delete all generated files, including .config
1229 # 1229 #
1230 mrproper: rm-dirs := $(wildcard $(MRPROPER_DIRS)) 1230 mrproper: rm-dirs := $(wildcard $(MRPROPER_DIRS))
1231 mrproper: rm-files := $(wildcard $(MRPROPER_FILES)) 1231 mrproper: rm-files := $(wildcard $(MRPROPER_FILES))
1232 mrproper-dirs := $(addprefix _mrproper_,scripts) 1232 mrproper-dirs := $(addprefix _mrproper_,scripts)
1233 1233
1234 PHONY += $(mrproper-dirs) mrproper archmrproper 1234 PHONY += $(mrproper-dirs) mrproper archmrproper
1235 $(mrproper-dirs): 1235 $(mrproper-dirs):
1236 $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@) 1236 $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@)
1237 1237
1238 mrproper: clobber $(mrproper-dirs) 1238 mrproper: clobber $(mrproper-dirs)
1239 $(call cmd,rmdirs) 1239 $(call cmd,rmdirs)
1240 $(call cmd,rmfiles) 1240 $(call cmd,rmfiles)
1241 @rm -f arch/*/include/asm/arch arch/*/include/asm/proc 1241 @rm -f arch/*/include/asm/arch arch/*/include/asm/proc
1242 1242
1243 # distclean 1243 # distclean
1244 # 1244 #
1245 PHONY += distclean 1245 PHONY += distclean
1246 1246
1247 distclean: mrproper 1247 distclean: mrproper
1248 @find $(srctree) $(RCS_FIND_IGNORE) \ 1248 @find $(srctree) $(RCS_FIND_IGNORE) \
1249 \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ 1249 \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
1250 -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ 1250 -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
1251 -o -name '.*.rej' \ 1251 -o -name '.*.rej' \
1252 -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \ 1252 -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \
1253 -type f -print | xargs rm -f 1253 -type f -print | xargs rm -f
1254 1254
1255 backup: 1255 backup:
1256 F=`basename $(TOPDIR)` ; cd .. ; \ 1256 F=`basename $(TOPDIR)` ; cd .. ; \
1257 gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F 1257 gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F
1258 1258
1259 1259
1260 # Documentation targets 1260 # Documentation targets
1261 # --------------------------------------------------------------------------- 1261 # ---------------------------------------------------------------------------
1262 %docs: scripts_basic FORCE 1262 %docs: scripts_basic FORCE
1263 $(Q)$(MAKE) $(build)=scripts build_docproc 1263 $(Q)$(MAKE) $(build)=scripts build_docproc
1264 $(Q)$(MAKE) $(build)=doc/DocBook $@ 1264 $(Q)$(MAKE) $(build)=doc/DocBook $@
1265 1265
1266 # Dummies... 1266 # Dummies...
1267 PHONY += prepare scripts 1267 PHONY += prepare scripts
1268 prepare: ; 1268 prepare: ;
1269 scripts: ; 1269 scripts: ;
1270 1270
1271 endif #ifeq ($(config-targets),1) 1271 endif #ifeq ($(config-targets),1)
1272 endif #ifeq ($(mixed-targets),1) 1272 endif #ifeq ($(mixed-targets),1)
1273 1273
1274 quiet_cmd_rmdirs = $(if $(wildcard $(rm-dirs)),CLEAN $(wildcard $(rm-dirs))) 1274 quiet_cmd_rmdirs = $(if $(wildcard $(rm-dirs)),CLEAN $(wildcard $(rm-dirs)))
1275 cmd_rmdirs = rm -rf $(rm-dirs) 1275 cmd_rmdirs = rm -rf $(rm-dirs)
1276 1276
1277 quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files))) 1277 quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files)))
1278 cmd_rmfiles = rm -f $(rm-files) 1278 cmd_rmfiles = rm -f $(rm-files)
1279 1279
1280 # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj=dir 1280 # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj=dir
1281 # Usage: 1281 # Usage:
1282 # $(Q)$(MAKE) $(clean)=dir 1282 # $(Q)$(MAKE) $(clean)=dir
1283 clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj 1283 clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj
1284 1284
1285 endif # skip-makefile 1285 endif # skip-makefile
1286 1286
1287 PHONY += FORCE 1287 PHONY += FORCE
1288 FORCE: 1288 FORCE:
1289 1289
1290 # Declare the contents of the .PHONY variable as phony. We keep that 1290 # Declare the contents of the .PHONY variable as phony. We keep that
1291 # information in a variable so we can use it in if_changed and friends. 1291 # information in a variable so we can use it in if_changed and friends.
1292 .PHONY: $(PHONY) 1292 .PHONY: $(PHONY)
1293 1293