Commit 04a34c96b19dab48bfcc22b554227c8d9dca0238

Authored by Masahiro Yamada
Committed by Tom Rini
1 parent ad0fed46b9

kbuild: use shorten logs for misc targets

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>

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