Commit 331b45fb70e6c2355a28f1a11d63075a873bb1d5

Authored by Masahiro Yamada
Committed by Tom Rini
1 parent 0d1e8aacb8

kbuild: Fix a false error of generic board support

Before this commit, make terminated with an error
where is shouldn't under some condition.

This bug happened when we built a board unsupporting
generic board right after building with generic board.

For example, the following sequence failed.
(harmony uses generic board but microblaze-generic does not
support it)

  $ make harmony_config
  Configuring for harmony board...
  $ make CROSS_COMPILE=arm-linux-gnueabi-
    [ Build succeed ]
  $ make microblaze-generic_config
  Configuring for microblaze-generic board...
  $ make CROSS_COMPILE=microblaze-linux-
  Makefile:488: *** Your architecture does not support generic board.
  Please undefined CONFIG_SYS_GENERIC_BOARD in your board config file.  Stop.

We had to do "make clean" before building the microblaze board.

This commit fixes this unconvenience.

Move generic board sanity check to "prepare1" target,
which is run after generation of include/autoconf.mk.

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

Showing 1 changed file with 7 additions and 8 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 ubootversion backup 418 ubootversion 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),)
489 ifneq ($(CONFIG_SYS_GENERIC_BOARD),)
490 $(error Your architecture does not support generic board. \
491 Please undefined CONFIG_SYS_GENERIC_BOARD in your board config file)
492 endif
493 endif
494
495 # If board code explicitly specified LDSCRIPT or CONFIG_SYS_LDSCRIPT, use 488 # 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 489 # that (or fail if absent). Otherwise, search for a linker script in a
497 # standard location. 490 # standard location.
498 491
499 LDSCRIPT_MAKEFILE_DIR = $(dir $(LDSCRIPT)) 492 LDSCRIPT_MAKEFILE_DIR = $(dir $(LDSCRIPT))
500 493
501 ifndef LDSCRIPT 494 ifndef LDSCRIPT
502 #LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds.debug 495 #LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds.debug
503 ifdef CONFIG_SYS_LDSCRIPT 496 ifdef CONFIG_SYS_LDSCRIPT
504 # need to strip off double quotes 497 # need to strip off double quotes
505 LDSCRIPT := $(CONFIG_SYS_LDSCRIPT:"%"=%) 498 LDSCRIPT := $(CONFIG_SYS_LDSCRIPT:"%"=%)
506 endif 499 endif
507 endif 500 endif
508 501
509 # If there is no specified link script, we look in a number of places for it 502 # If there is no specified link script, we look in a number of places for it
510 ifndef LDSCRIPT 503 ifndef LDSCRIPT
511 ifeq ($(CONFIG_NAND_U_BOOT),y) 504 ifeq ($(CONFIG_NAND_U_BOOT),y)
512 LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds 505 LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds
513 ifeq ($(wildcard $(LDSCRIPT)),) 506 ifeq ($(wildcard $(LDSCRIPT)),)
514 LDSCRIPT := $(TOPDIR)/$(CPUDIR)/u-boot-nand.lds 507 LDSCRIPT := $(TOPDIR)/$(CPUDIR)/u-boot-nand.lds
515 endif 508 endif
516 endif 509 endif
517 ifeq ($(wildcard $(LDSCRIPT)),) 510 ifeq ($(wildcard $(LDSCRIPT)),)
518 LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds 511 LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds
519 endif 512 endif
520 ifeq ($(wildcard $(LDSCRIPT)),) 513 ifeq ($(wildcard $(LDSCRIPT)),)
521 LDSCRIPT := $(TOPDIR)/$(CPUDIR)/u-boot.lds 514 LDSCRIPT := $(TOPDIR)/$(CPUDIR)/u-boot.lds
522 endif 515 endif
523 ifeq ($(wildcard $(LDSCRIPT)),) 516 ifeq ($(wildcard $(LDSCRIPT)),)
524 LDSCRIPT := $(TOPDIR)/arch/$(ARCH)/cpu/u-boot.lds 517 LDSCRIPT := $(TOPDIR)/arch/$(ARCH)/cpu/u-boot.lds
525 # We don't expect a Makefile here 518 # We don't expect a Makefile here
526 LDSCRIPT_MAKEFILE_DIR = 519 LDSCRIPT_MAKEFILE_DIR =
527 endif 520 endif
528 ifeq ($(wildcard $(LDSCRIPT)),) 521 ifeq ($(wildcard $(LDSCRIPT)),)
529 $(error could not find linker script) 522 $(error could not find linker script)
530 endif 523 endif
531 endif 524 endif
532 525
533 else 526 else
534 527
535 528
536 endif # $(dot-config) 529 endif # $(dot-config)
537 530
538 KBUILD_CFLAGS += -Os #-fomit-frame-pointer 531 KBUILD_CFLAGS += -Os #-fomit-frame-pointer
539 532
540 ifdef BUILD_TAG 533 ifdef BUILD_TAG
541 KBUILD_CFLAGS += -DBUILD_TAG='"$(BUILD_TAG)"' 534 KBUILD_CFLAGS += -DBUILD_TAG='"$(BUILD_TAG)"'
542 endif 535 endif
543 536
544 KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector) 537 KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
545 538
546 KBUILD_CFLAGS += -g 539 KBUILD_CFLAGS += -g
547 # $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g<format> 540 # $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g<format>
548 # option to the assembler. 541 # option to the assembler.
549 KBUILD_AFLAGS += -g 542 KBUILD_AFLAGS += -g
550 543
551 # Report stack usage if supported 544 # Report stack usage if supported
552 ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-stack-usage.sh $(CC)),y) 545 ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-stack-usage.sh $(CC)),y)
553 KBUILD_CFLAGS += -fstack-usage 546 KBUILD_CFLAGS += -fstack-usage
554 endif 547 endif
555 548
556 KBUILD_CFLAGS += $(call cc-option,-Wno-format-nonliteral) 549 KBUILD_CFLAGS += $(call cc-option,-Wno-format-nonliteral)
557 550
558 # turn jbsr into jsr for m68k 551 # turn jbsr into jsr for m68k
559 ifeq ($(ARCH),m68k) 552 ifeq ($(ARCH),m68k)
560 ifeq ($(findstring 3.4,$(shell $(CC) --version)),3.4) 553 ifeq ($(findstring 3.4,$(shell $(CC) --version)),3.4)
561 KBUILD_AFLAGS += -Wa,-gstabs,-S 554 KBUILD_AFLAGS += -Wa,-gstabs,-S
562 endif 555 endif
563 endif 556 endif
564 557
565 ifneq ($(CONFIG_SYS_TEXT_BASE),) 558 ifneq ($(CONFIG_SYS_TEXT_BASE),)
566 KBUILD_CPPFLAGS += -DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE) 559 KBUILD_CPPFLAGS += -DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE)
567 endif 560 endif
568 561
569 export CONFIG_SYS_TEXT_BASE 562 export CONFIG_SYS_TEXT_BASE
570 563
571 # Use UBOOTINCLUDE when you must reference the include/ directory. 564 # Use UBOOTINCLUDE when you must reference the include/ directory.
572 # Needed to be compatible with the O= option 565 # Needed to be compatible with the O= option
573 UBOOTINCLUDE := 566 UBOOTINCLUDE :=
574 ifneq ($(OBJTREE),$(SRCTREE)) 567 ifneq ($(OBJTREE),$(SRCTREE))
575 UBOOTINCLUDE += -I$(OBJTREE)/include 568 UBOOTINCLUDE += -I$(OBJTREE)/include
576 endif 569 endif
577 UBOOTINCLUDE += -I$(srctree)/include \ 570 UBOOTINCLUDE += -I$(srctree)/include \
578 -I$(srctree)/arch/$(ARCH)/include 571 -I$(srctree)/arch/$(ARCH)/include
579 572
580 NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) 573 NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
581 CHECKFLAGS += $(NOSTDINC_FLAGS) 574 CHECKFLAGS += $(NOSTDINC_FLAGS)
582 575
583 # FIX ME 576 # FIX ME
584 cpp_flags := $(KBUILD_CPPFLAGS) $(CPPFLAGS) $(UBOOTINCLUDE) $(NOSTDINC_FLAGS) 577 cpp_flags := $(KBUILD_CPPFLAGS) $(CPPFLAGS) $(UBOOTINCLUDE) $(NOSTDINC_FLAGS)
585 c_flags := $(KBUILD_CFLAGS) $(cpp_flags) 578 c_flags := $(KBUILD_CFLAGS) $(cpp_flags)
586 579
587 ######################################################################### 580 #########################################################################
588 # U-Boot objects....order is important (i.e. start must be first) 581 # U-Boot objects....order is important (i.e. start must be first)
589 582
590 head-y := $(CPUDIR)/start.o 583 head-y := $(CPUDIR)/start.o
591 head-$(CONFIG_4xx) += arch/powerpc/cpu/ppc4xx/resetvec.o 584 head-$(CONFIG_4xx) += arch/powerpc/cpu/ppc4xx/resetvec.o
592 head-$(CONFIG_MPC85xx) += arch/powerpc/cpu/mpc85xx/resetvec.o 585 head-$(CONFIG_MPC85xx) += arch/powerpc/cpu/mpc85xx/resetvec.o
593 586
594 HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n) 587 HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n)
595 588
596 libs-y += lib/ 589 libs-y += lib/
597 libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/ 590 libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/
598 libs-y += $(CPUDIR)/ 591 libs-y += $(CPUDIR)/
599 ifdef SOC 592 ifdef SOC
600 libs-y += $(CPUDIR)/$(SOC)/ 593 libs-y += $(CPUDIR)/$(SOC)/
601 endif 594 endif
602 libs-$(CONFIG_OF_EMBED) += dts/ 595 libs-$(CONFIG_OF_EMBED) += dts/
603 libs-y += arch/$(ARCH)/lib/ 596 libs-y += arch/$(ARCH)/lib/
604 libs-y += fs/ 597 libs-y += fs/
605 libs-y += net/ 598 libs-y += net/
606 libs-y += disk/ 599 libs-y += disk/
607 libs-y += drivers/ 600 libs-y += drivers/
608 libs-y += drivers/dma/ 601 libs-y += drivers/dma/
609 libs-y += drivers/gpio/ 602 libs-y += drivers/gpio/
610 libs-y += drivers/i2c/ 603 libs-y += drivers/i2c/
611 libs-y += drivers/input/ 604 libs-y += drivers/input/
612 libs-y += drivers/mmc/ 605 libs-y += drivers/mmc/
613 libs-y += drivers/mtd/ 606 libs-y += drivers/mtd/
614 libs-$(CONFIG_CMD_NAND) += drivers/mtd/nand/ 607 libs-$(CONFIG_CMD_NAND) += drivers/mtd/nand/
615 libs-y += drivers/mtd/onenand/ 608 libs-y += drivers/mtd/onenand/
616 libs-$(CONFIG_CMD_UBI) += drivers/mtd/ubi/ 609 libs-$(CONFIG_CMD_UBI) += drivers/mtd/ubi/
617 libs-y += drivers/mtd/spi/ 610 libs-y += drivers/mtd/spi/
618 libs-y += drivers/net/ 611 libs-y += drivers/net/
619 libs-y += drivers/net/phy/ 612 libs-y += drivers/net/phy/
620 libs-y += drivers/pci/ 613 libs-y += drivers/pci/
621 libs-y += drivers/power/ \ 614 libs-y += drivers/power/ \
622 drivers/power/fuel_gauge/ \ 615 drivers/power/fuel_gauge/ \
623 drivers/power/mfd/ \ 616 drivers/power/mfd/ \
624 drivers/power/pmic/ \ 617 drivers/power/pmic/ \
625 drivers/power/battery/ 618 drivers/power/battery/
626 libs-y += drivers/spi/ 619 libs-y += drivers/spi/
627 libs-$(CONFIG_FMAN_ENET) += drivers/net/fm/ 620 libs-$(CONFIG_FMAN_ENET) += drivers/net/fm/
628 libs-$(CONFIG_SYS_FSL_DDR) += drivers/ddr/fsl/ 621 libs-$(CONFIG_SYS_FSL_DDR) += drivers/ddr/fsl/
629 libs-y += drivers/serial/ 622 libs-y += drivers/serial/
630 libs-y += drivers/usb/eth/ 623 libs-y += drivers/usb/eth/
631 libs-y += drivers/usb/gadget/ 624 libs-y += drivers/usb/gadget/
632 libs-y += drivers/usb/host/ 625 libs-y += drivers/usb/host/
633 libs-y += drivers/usb/musb/ 626 libs-y += drivers/usb/musb/
634 libs-y += drivers/usb/musb-new/ 627 libs-y += drivers/usb/musb-new/
635 libs-y += drivers/usb/phy/ 628 libs-y += drivers/usb/phy/
636 libs-y += drivers/usb/ulpi/ 629 libs-y += drivers/usb/ulpi/
637 libs-y += common/ 630 libs-y += common/
638 libs-y += lib/libfdt/ 631 libs-y += lib/libfdt/
639 libs-$(CONFIG_API) += api/ 632 libs-$(CONFIG_API) += api/
640 libs-$(CONFIG_HAS_POST) += post/ 633 libs-$(CONFIG_HAS_POST) += post/
641 libs-y += test/ 634 libs-y += test/
642 635
643 ifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35 mxs vf610)) 636 ifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35 mxs vf610))
644 libs-y += arch/$(ARCH)/imx-common/ 637 libs-y += arch/$(ARCH)/imx-common/
645 endif 638 endif
646 639
647 libs-$(CONFIG_ARM) += arch/arm/cpu/ 640 libs-$(CONFIG_ARM) += arch/arm/cpu/
648 libs-$(CONFIG_PPC) += arch/powerpc/cpu/ 641 libs-$(CONFIG_PPC) += arch/powerpc/cpu/
649 642
650 libs-y += board/$(BOARDDIR)/ 643 libs-y += board/$(BOARDDIR)/
651 644
652 libs-y := $(sort $(libs-y)) 645 libs-y := $(sort $(libs-y))
653 646
654 u-boot-dirs := $(patsubst %/,%,$(filter %/, $(libs-y))) tools examples 647 u-boot-dirs := $(patsubst %/,%,$(filter %/, $(libs-y))) tools examples
655 648
656 u-boot-alldirs := $(sort $(u-boot-dirs) $(patsubst %/,%,$(filter %/, $(libs-)))) 649 u-boot-alldirs := $(sort $(u-boot-dirs) $(patsubst %/,%,$(filter %/, $(libs-))))
657 650
658 libs-y := $(patsubst %/, %/built-in.o, $(libs-y)) 651 libs-y := $(patsubst %/, %/built-in.o, $(libs-y))
659 652
660 u-boot-init := $(head-y) 653 u-boot-init := $(head-y)
661 u-boot-main := $(libs-y) 654 u-boot-main := $(libs-y)
662 655
663 656
664 # Add GCC lib 657 # Add GCC lib
665 ifdef USE_PRIVATE_LIBGCC 658 ifdef USE_PRIVATE_LIBGCC
666 ifeq ("$(USE_PRIVATE_LIBGCC)", "yes") 659 ifeq ("$(USE_PRIVATE_LIBGCC)", "yes")
667 PLATFORM_LIBGCC = $(OBJTREE)/arch/$(ARCH)/lib/lib.a 660 PLATFORM_LIBGCC = $(OBJTREE)/arch/$(ARCH)/lib/lib.a
668 else 661 else
669 PLATFORM_LIBGCC = -L $(USE_PRIVATE_LIBGCC) -lgcc 662 PLATFORM_LIBGCC = -L $(USE_PRIVATE_LIBGCC) -lgcc
670 endif 663 endif
671 else 664 else
672 PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(c_flags) -print-libgcc-file-name`) -lgcc 665 PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(c_flags) -print-libgcc-file-name`) -lgcc
673 endif 666 endif
674 PLATFORM_LIBS += $(PLATFORM_LIBGCC) 667 PLATFORM_LIBS += $(PLATFORM_LIBGCC)
675 export PLATFORM_LIBS 668 export PLATFORM_LIBS
676 669
677 # Special flags for CPP when processing the linker script. 670 # Special flags for CPP when processing the linker script.
678 # Pass the version down so we can handle backwards compatibility 671 # Pass the version down so we can handle backwards compatibility
679 # on the fly. 672 # on the fly.
680 LDPPFLAGS += \ 673 LDPPFLAGS += \
681 -include $(TOPDIR)/include/u-boot/u-boot.lds.h \ 674 -include $(TOPDIR)/include/u-boot/u-boot.lds.h \
682 -DCPUDIR=$(CPUDIR) \ 675 -DCPUDIR=$(CPUDIR) \
683 $(shell $(LD) --version | \ 676 $(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') 677 sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p')
685 678
686 ######################################################################### 679 #########################################################################
687 ######################################################################### 680 #########################################################################
688 681
689 ifneq ($(CONFIG_BOARD_SIZE_LIMIT),) 682 ifneq ($(CONFIG_BOARD_SIZE_LIMIT),)
690 BOARD_SIZE_CHECK = \ 683 BOARD_SIZE_CHECK = \
691 @actual=`wc -c $@ | awk '{print $$1}'`; \ 684 @actual=`wc -c $@ | awk '{print $$1}'`; \
692 limit=`printf "%d" $(CONFIG_BOARD_SIZE_LIMIT)`; \ 685 limit=`printf "%d" $(CONFIG_BOARD_SIZE_LIMIT)`; \
693 if test $$actual -gt $$limit; then \ 686 if test $$actual -gt $$limit; then \
694 echo "$@ exceeds file size limit:" >&2 ; \ 687 echo "$@ exceeds file size limit:" >&2 ; \
695 echo " limit: $$limit bytes" >&2 ; \ 688 echo " limit: $$limit bytes" >&2 ; \
696 echo " actual: $$actual bytes" >&2 ; \ 689 echo " actual: $$actual bytes" >&2 ; \
697 echo " excess: $$((actual - limit)) bytes" >&2; \ 690 echo " excess: $$((actual - limit)) bytes" >&2; \
698 exit 1; \ 691 exit 1; \
699 fi 692 fi
700 else 693 else
701 BOARD_SIZE_CHECK = 694 BOARD_SIZE_CHECK =
702 endif 695 endif
703 696
704 # Statically apply RELA-style relocations (currently arm64 only) 697 # Statically apply RELA-style relocations (currently arm64 only)
705 ifneq ($(CONFIG_STATIC_RELA),) 698 ifneq ($(CONFIG_STATIC_RELA),)
706 # $(1) is u-boot ELF, $(2) is u-boot bin, $(3) is text base 699 # $(1) is u-boot ELF, $(2) is u-boot bin, $(3) is text base
707 DO_STATIC_RELA = \ 700 DO_STATIC_RELA = \
708 start=$$($(NM) $(1) | grep __rel_dyn_start | cut -f 1 -d ' '); \ 701 start=$$($(NM) $(1) | grep __rel_dyn_start | cut -f 1 -d ' '); \
709 end=$$($(NM) $(1) | grep __rel_dyn_end | cut -f 1 -d ' '); \ 702 end=$$($(NM) $(1) | grep __rel_dyn_end | cut -f 1 -d ' '); \
710 tools/relocate-rela $(2) $(3) $$start $$end 703 tools/relocate-rela $(2) $(3) $$start $$end
711 else 704 else
712 DO_STATIC_RELA = 705 DO_STATIC_RELA =
713 endif 706 endif
714 707
715 # Always append ALL so that arch config.mk's can add custom ones 708 # Always append ALL so that arch config.mk's can add custom ones
716 ALL-y += u-boot.srec u-boot.bin System.map 709 ALL-y += u-boot.srec u-boot.bin System.map
717 710
718 ALL-$(CONFIG_NAND_U_BOOT) += u-boot-nand.bin 711 ALL-$(CONFIG_NAND_U_BOOT) += u-boot-nand.bin
719 ALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin 712 ALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin
720 ALL-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl 713 ALL-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl
721 ALL-$(CONFIG_SPL) += spl/u-boot-spl.bin 714 ALL-$(CONFIG_SPL) += spl/u-boot-spl.bin
722 ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img 715 ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img
723 ALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin 716 ALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin
724 ALL-$(CONFIG_OF_SEPARATE) += u-boot.dtb u-boot-dtb.bin 717 ALL-$(CONFIG_OF_SEPARATE) += u-boot.dtb u-boot-dtb.bin
725 ifneq ($(CONFIG_SPL_TARGET),) 718 ifneq ($(CONFIG_SPL_TARGET),)
726 ALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%) 719 ALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%)
727 endif 720 endif
728 ALL-$(CONFIG_REMAKE_ELF) += u-boot.elf 721 ALL-$(CONFIG_REMAKE_ELF) += u-boot.elf
729 722
730 # enable combined SPL/u-boot/dtb rules for tegra 723 # enable combined SPL/u-boot/dtb rules for tegra
731 ifneq ($(CONFIG_TEGRA),) 724 ifneq ($(CONFIG_TEGRA),)
732 ifeq ($(CONFIG_SPL),y) 725 ifeq ($(CONFIG_SPL),y)
733 ifeq ($(CONFIG_OF_SEPARATE),y) 726 ifeq ($(CONFIG_OF_SEPARATE),y)
734 ALL-y += u-boot-dtb-tegra.bin 727 ALL-y += u-boot-dtb-tegra.bin
735 else 728 else
736 ALL-y += u-boot-nodtb-tegra.bin 729 ALL-y += u-boot-nodtb-tegra.bin
737 endif 730 endif
738 endif 731 endif
739 endif 732 endif
740 733
741 LDFLAGS_u-boot += $(LDFLAGS_FINAL) 734 LDFLAGS_u-boot += $(LDFLAGS_FINAL)
742 ifneq ($(CONFIG_SYS_TEXT_BASE),) 735 ifneq ($(CONFIG_SYS_TEXT_BASE),)
743 LDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE) 736 LDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE)
744 endif 737 endif
745 738
746 quiet_cmd_objcopy = OBJCOPY $@ 739 quiet_cmd_objcopy = OBJCOPY $@
747 cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@ 740 cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@
748 741
749 quiet_cmd_mkimage = UIMAGE $@ 742 quiet_cmd_mkimage = UIMAGE $@
750 cmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< $@ \ 743 cmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< $@ \
751 $(if $(KBUILD_VERBOSE:1=), >/dev/null) 744 $(if $(KBUILD_VERBOSE:1=), >/dev/null)
752 745
753 quiet_cmd_cat = CAT $@ 746 quiet_cmd_cat = CAT $@
754 cmd_cat = cat $(filter-out $(PHONY), $^) > $@ 747 cmd_cat = cat $(filter-out $(PHONY), $^) > $@
755 748
756 append = cat $(filter-out $< $(PHONY), $^) >> $@ 749 append = cat $(filter-out $< $(PHONY), $^) >> $@
757 750
758 quiet_cmd_pad_cat = CAT $@ 751 quiet_cmd_pad_cat = CAT $@
759 cmd_pad_cat = $(cmd_objcopy) && $(append) || rm -f $@ 752 cmd_pad_cat = $(cmd_objcopy) && $(append) || rm -f $@
760 753
761 all: $(ALL-y) 754 all: $(ALL-y)
762 755
763 PHONY += dtbs 756 PHONY += dtbs
764 dtbs dts/dt.dtb: checkdtc u-boot 757 dtbs dts/dt.dtb: checkdtc u-boot
765 $(Q)$(MAKE) $(build)=dts dtbs 758 $(Q)$(MAKE) $(build)=dts dtbs
766 759
767 u-boot-dtb.bin: u-boot.bin dts/dt.dtb FORCE 760 u-boot-dtb.bin: u-boot.bin dts/dt.dtb FORCE
768 $(call if_changed,cat) 761 $(call if_changed,cat)
769 762
770 quiet_cmd_copy = COPY $@ 763 quiet_cmd_copy = COPY $@
771 cmd_copy = cp $< $@ 764 cmd_copy = cp $< $@
772 765
773 u-boot.dtb: dts/dt.dtb 766 u-boot.dtb: dts/dt.dtb
774 $(call cmd,copy) 767 $(call cmd,copy)
775 768
776 OBJCOPYFLAGS_u-boot.hex := -O ihex 769 OBJCOPYFLAGS_u-boot.hex := -O ihex
777 770
778 OBJCOPYFLAGS_u-boot.srec := -O srec 771 OBJCOPYFLAGS_u-boot.srec := -O srec
779 772
780 u-boot.hex u-boot.srec: u-boot FORCE 773 u-boot.hex u-boot.srec: u-boot FORCE
781 $(call if_changed,objcopy) 774 $(call if_changed,objcopy)
782 775
783 OBJCOPYFLAGS_u-boot.bin := -O binary 776 OBJCOPYFLAGS_u-boot.bin := -O binary
784 777
785 u-boot.bin: u-boot FORCE 778 u-boot.bin: u-boot FORCE
786 $(call if_changed,objcopy) 779 $(call if_changed,objcopy)
787 $(call DO_STATIC_RELA,$<,$@,$(CONFIG_SYS_TEXT_BASE)) 780 $(call DO_STATIC_RELA,$<,$@,$(CONFIG_SYS_TEXT_BASE))
788 $(BOARD_SIZE_CHECK) 781 $(BOARD_SIZE_CHECK)
789 782
790 u-boot.ldr: u-boot 783 u-boot.ldr: u-boot
791 $(CREATE_LDR_ENV) 784 $(CREATE_LDR_ENV)
792 $(LDR) -T $(CONFIG_BFIN_CPU) -c $@ $< $(LDR_FLAGS) 785 $(LDR) -T $(CONFIG_BFIN_CPU) -c $@ $< $(LDR_FLAGS)
793 $(BOARD_SIZE_CHECK) 786 $(BOARD_SIZE_CHECK)
794 787
795 OBJCOPYFLAGS_u-boot.ldr.hex := -I binary -O ihex 788 OBJCOPYFLAGS_u-boot.ldr.hex := -I binary -O ihex
796 789
797 OBJCOPYFLAGS_u-boot.ldr.srec := -I binary -O srec 790 OBJCOPYFLAGS_u-boot.ldr.srec := -I binary -O srec
798 791
799 u-boot.ldr.hex u-boot.ldr.srec: u-boot.ldr FORCE 792 u-boot.ldr.hex u-boot.ldr.srec: u-boot.ldr FORCE
800 $(call if_changed,objcopy) 793 $(call if_changed,objcopy)
801 794
802 # 795 #
803 # U-Boot entry point, needed for booting of full-blown U-Boot 796 # U-Boot entry point, needed for booting of full-blown U-Boot
804 # from the SPL U-Boot version. 797 # from the SPL U-Boot version.
805 # 798 #
806 ifndef CONFIG_SYS_UBOOT_START 799 ifndef CONFIG_SYS_UBOOT_START
807 CONFIG_SYS_UBOOT_START := 0 800 CONFIG_SYS_UBOOT_START := 0
808 endif 801 endif
809 802
810 MKIMAGEFLAGS_u-boot.img = -A $(ARCH) -T firmware -C none -O u-boot \ 803 MKIMAGEFLAGS_u-boot.img = -A $(ARCH) -T firmware -C none -O u-boot \
811 -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \ 804 -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \
812 -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board" 805 -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board"
813 806
814 MKIMAGEFLAGS_u-boot.kwb = -n $(CONFIG_SYS_KWD_CONFIG) -T kwbimage \ 807 MKIMAGEFLAGS_u-boot.kwb = -n $(CONFIG_SYS_KWD_CONFIG) -T kwbimage \
815 -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) 808 -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE)
816 809
817 MKIMAGEFLAGS_u-boot.pbl = -n $(CONFIG_SYS_FSL_PBL_RCW) \ 810 MKIMAGEFLAGS_u-boot.pbl = -n $(CONFIG_SYS_FSL_PBL_RCW) \
818 -R $(CONFIG_SYS_FSL_PBL_PBI) -T pblimage 811 -R $(CONFIG_SYS_FSL_PBL_PBI) -T pblimage
819 812
820 u-boot.img u-boot.kwb u-boot.pbl: u-boot.bin FORCE 813 u-boot.img u-boot.kwb u-boot.pbl: u-boot.bin FORCE
821 $(call if_changed,mkimage) 814 $(call if_changed,mkimage)
822 815
823 u-boot.imx: u-boot.bin 816 u-boot.imx: u-boot.bin
824 $(Q)$(MAKE) $(build)=arch/arm/imx-common $@ 817 $(Q)$(MAKE) $(build)=arch/arm/imx-common $@
825 818
826 u-boot.sha1: u-boot.bin 819 u-boot.sha1: u-boot.bin
827 tools/ubsha1 u-boot.bin 820 tools/ubsha1 u-boot.bin
828 821
829 u-boot.dis: u-boot 822 u-boot.dis: u-boot
830 $(OBJDUMP) -d $< > $@ 823 $(OBJDUMP) -d $< > $@
831 824
832 ifdef CONFIG_TPL 825 ifdef CONFIG_TPL
833 SPL_PAYLOAD := tpl/u-boot-with-tpl.bin 826 SPL_PAYLOAD := tpl/u-boot-with-tpl.bin
834 else 827 else
835 SPL_PAYLOAD := u-boot.bin 828 SPL_PAYLOAD := u-boot.bin
836 endif 829 endif
837 830
838 OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \ 831 OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \
839 --pad-to=$(CONFIG_SPL_PAD_TO) 832 --pad-to=$(CONFIG_SPL_PAD_TO)
840 u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE 833 u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE
841 $(call if_changed,pad_cat) 834 $(call if_changed,pad_cat)
842 835
843 OBJCOPYFLAGS_u-boot-with-tpl.bin = -I binary -O binary \ 836 OBJCOPYFLAGS_u-boot-with-tpl.bin = -I binary -O binary \
844 --pad-to=$(CONFIG_TPL_PAD_TO) 837 --pad-to=$(CONFIG_TPL_PAD_TO)
845 tpl/u-boot-with-tpl.bin: tpl/u-boot-tpl.bin u-boot.bin FORCE 838 tpl/u-boot-with-tpl.bin: tpl/u-boot-tpl.bin u-boot.bin FORCE
846 $(call if_changed,pad_cat) 839 $(call if_changed,pad_cat)
847 840
848 SPL: spl/u-boot-spl.bin FORCE 841 SPL: spl/u-boot-spl.bin FORCE
849 $(Q)$(MAKE) $(build)=arch/arm/imx-common $@ 842 $(Q)$(MAKE) $(build)=arch/arm/imx-common $@
850 843
851 u-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL u-boot.bin FORCE 844 u-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL u-boot.bin FORCE
852 $(Q)$(MAKE) $(build)=arch/arm/imx-common $@ 845 $(Q)$(MAKE) $(build)=arch/arm/imx-common $@
853 846
854 MKIMAGEFLAGS_u-boot.ubl = -n $(UBL_CONFIG) -T ublimage -e $(CONFIG_SYS_TEXT_BASE) 847 MKIMAGEFLAGS_u-boot.ubl = -n $(UBL_CONFIG) -T ublimage -e $(CONFIG_SYS_TEXT_BASE)
855 848
856 u-boot.ubl: u-boot-with-spl.bin FORCE 849 u-boot.ubl: u-boot-with-spl.bin FORCE
857 $(call if_changed,mkimage) 850 $(call if_changed,mkimage)
858 851
859 MKIMAGEFLAGS_u-boot-spl.ais = -s -n $(if $(CONFIG_AIS_CONFIG_FILE), \ 852 MKIMAGEFLAGS_u-boot-spl.ais = -s -n $(if $(CONFIG_AIS_CONFIG_FILE), \
860 $(srctree)/$(CONFIG_AIS_CONFIG_FILE:"%"=%),"/dev/null") \ 853 $(srctree)/$(CONFIG_AIS_CONFIG_FILE:"%"=%),"/dev/null") \
861 -T aisimage -e $(CONFIG_SPL_TEXT_BASE) 854 -T aisimage -e $(CONFIG_SPL_TEXT_BASE)
862 spl/u-boot-spl.ais: spl/u-boot-spl.bin FORCE 855 spl/u-boot-spl.ais: spl/u-boot-spl.bin FORCE
863 $(call if_changed,mkimage) 856 $(call if_changed,mkimage)
864 857
865 OBJCOPYFLAGS_u-boot.ais = -I binary -O binary --pad-to=$(CONFIG_SPL_MAX_SIZE) 858 OBJCOPYFLAGS_u-boot.ais = -I binary -O binary --pad-to=$(CONFIG_SPL_MAX_SIZE)
866 u-boot.ais: spl/u-boot-spl.ais u-boot.img FORCE 859 u-boot.ais: spl/u-boot-spl.ais u-boot.img FORCE
867 $(call if_changed,pad_cat) 860 $(call if_changed,pad_cat)
868 861
869 u-boot.sb: u-boot.bin spl/u-boot-spl.bin 862 u-boot.sb: u-boot.bin spl/u-boot-spl.bin
870 $(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs $(objtree)/u-boot.sb 863 $(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs $(objtree)/u-boot.sb
871 864
872 # On x600 (SPEAr600) U-Boot is appended to U-Boot SPL. 865 # On x600 (SPEAr600) U-Boot is appended to U-Boot SPL.
873 # Both images are created using mkimage (crc etc), so that the ROM 866 # Both images are created using mkimage (crc etc), so that the ROM
874 # bootloader can check its integrity. Padding needs to be done to the 867 # bootloader can check its integrity. Padding needs to be done to the
875 # SPL image (with mkimage header) and not the binary. Otherwise the resulting image 868 # SPL image (with mkimage header) and not the binary. Otherwise the resulting image
876 # which is loaded/copied by the ROM bootloader to SRAM doesn't fit. 869 # which is loaded/copied by the ROM bootloader to SRAM doesn't fit.
877 # The resulting image containing both U-Boot images is called u-boot.spr 870 # The resulting image containing both U-Boot images is called u-boot.spr
878 MKIMAGEFLAGS_u-boot-spl.img = -A $(ARCH) -T firmware -C none \ 871 MKIMAGEFLAGS_u-boot-spl.img = -A $(ARCH) -T firmware -C none \
879 -a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n XLOADER 872 -a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n XLOADER
880 spl/u-boot-spl.img: spl/u-boot-spl.bin FORCE 873 spl/u-boot-spl.img: spl/u-boot-spl.bin FORCE
881 $(call if_changed,mkimage) 874 $(call if_changed,mkimage)
882 875
883 OBJCOPYFLAGS_u-boot.spr = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \ 876 OBJCOPYFLAGS_u-boot.spr = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \
884 --gap-fill=0xff 877 --gap-fill=0xff
885 u-boot.spr: spl/u-boot-spl.img u-boot.img FORCE 878 u-boot.spr: spl/u-boot-spl.img u-boot.img FORCE
886 $(call if_changed,pad_cat) 879 $(call if_changed,pad_cat)
887 880
888 ifneq ($(CONFIG_TEGRA),) 881 ifneq ($(CONFIG_TEGRA),)
889 OBJCOPYFLAGS_u-boot-nodtb-tegra.bin = -O binary --pad-to=$(CONFIG_SYS_TEXT_BASE) 882 OBJCOPYFLAGS_u-boot-nodtb-tegra.bin = -O binary --pad-to=$(CONFIG_SYS_TEXT_BASE)
890 u-boot-nodtb-tegra.bin: spl/u-boot-spl u-boot.bin FORCE 883 u-boot-nodtb-tegra.bin: spl/u-boot-spl u-boot.bin FORCE
891 $(call if_changed,pad_cat) 884 $(call if_changed,pad_cat)
892 885
893 ifeq ($(CONFIG_OF_SEPARATE),y) 886 ifeq ($(CONFIG_OF_SEPARATE),y)
894 u-boot-dtb-tegra.bin: u-boot-nodtb-tegra.bin dts/dt.dtb FORCE 887 u-boot-dtb-tegra.bin: u-boot-nodtb-tegra.bin dts/dt.dtb FORCE
895 $(call if_changed,cat) 888 $(call if_changed,cat)
896 endif 889 endif
897 endif 890 endif
898 891
899 u-boot-img.bin: spl/u-boot-spl.bin u-boot.img FORCE 892 u-boot-img.bin: spl/u-boot-spl.bin u-boot.img FORCE
900 $(call if_changed,cat) 893 $(call if_changed,cat)
901 894
902 # PPC4xx needs the SPL at the end of the image, since the reset vector 895 # PPC4xx needs the SPL at the end of the image, since the reset vector
903 # is located at 0xfffffffc. So we can't use the "u-boot-img.bin" target 896 # is located at 0xfffffffc. So we can't use the "u-boot-img.bin" target
904 # and need to introduce a new build target with the full blown U-Boot 897 # and need to introduce a new build target with the full blown U-Boot
905 # at the start padded up to the start of the SPL image. And then concat 898 # at the start padded up to the start of the SPL image. And then concat
906 # the SPL image to the end. 899 # the SPL image to the end.
907 900
908 OBJCOPYFLAGS_u-boot-img-spl-at-end.bin := -I binary -O binary \ 901 OBJCOPYFLAGS_u-boot-img-spl-at-end.bin := -I binary -O binary \
909 --pad-to=$(CONFIG_UBOOT_PAD_TO) --gap-fill=0xff 902 --pad-to=$(CONFIG_UBOOT_PAD_TO) --gap-fill=0xff
910 u-boot-img-spl-at-end.bin: u-boot.img spl/u-boot-spl.bin FORCE 903 u-boot-img-spl-at-end.bin: u-boot.img spl/u-boot-spl.bin FORCE
911 $(call if_changed,pad_cat) 904 $(call if_changed,pad_cat)
912 905
913 # Create a new ELF from a raw binary file. This is useful for arm64 906 # Create a new ELF from a raw binary file. This is useful for arm64
914 # where static relocation needs to be performed on the raw binary, 907 # where static relocation needs to be performed on the raw binary,
915 # but certain simulators only accept an ELF file (but don't do the 908 # but certain simulators only accept an ELF file (but don't do the
916 # relocation). 909 # relocation).
917 # FIXME refactor dts/Makefile to share target/arch detection 910 # FIXME refactor dts/Makefile to share target/arch detection
918 u-boot.elf: u-boot.bin 911 u-boot.elf: u-boot.bin
919 @$(OBJCOPY) -B aarch64 -I binary -O elf64-littleaarch64 \ 912 @$(OBJCOPY) -B aarch64 -I binary -O elf64-littleaarch64 \
920 $< u-boot-elf.o 913 $< u-boot-elf.o
921 @$(LD) u-boot-elf.o -o $@ \ 914 @$(LD) u-boot-elf.o -o $@ \
922 --defsym=_start=$(CONFIG_SYS_TEXT_BASE) \ 915 --defsym=_start=$(CONFIG_SYS_TEXT_BASE) \
923 -Ttext=$(CONFIG_SYS_TEXT_BASE) 916 -Ttext=$(CONFIG_SYS_TEXT_BASE)
924 917
925 # Rule to link u-boot 918 # Rule to link u-boot
926 # May be overridden by arch/$(ARCH)/config.mk 919 # May be overridden by arch/$(ARCH)/config.mk
927 quiet_cmd_u-boot__ ?= LD $@ 920 quiet_cmd_u-boot__ ?= LD $@
928 cmd_u-boot__ ?= $(LD) $(LDFLAGS) $(LDFLAGS_u-boot) -o $@ \ 921 cmd_u-boot__ ?= $(LD) $(LDFLAGS) $(LDFLAGS_u-boot) -o $@ \
929 -T u-boot.lds $(u-boot-init) \ 922 -T u-boot.lds $(u-boot-init) \
930 --start-group $(u-boot-main) --end-group \ 923 --start-group $(u-boot-main) --end-group \
931 $(PLATFORM_LIBS) -Map u-boot.map 924 $(PLATFORM_LIBS) -Map u-boot.map
932 925
933 u-boot: $(u-boot-init) $(u-boot-main) u-boot.lds 926 u-boot: $(u-boot-init) $(u-boot-main) u-boot.lds
934 $(call if_changed,u-boot__) 927 $(call if_changed,u-boot__)
935 ifeq ($(CONFIG_KALLSYMS),y) 928 ifeq ($(CONFIG_KALLSYMS),y)
936 smap=`$(call SYSTEM_MAP,u-boot) | \ 929 smap=`$(call SYSTEM_MAP,u-boot) | \
937 awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \ 930 awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \
938 $(CC) $(c_flags) -DSYSTEM_MAP="\"$${smap}\"" \ 931 $(CC) $(c_flags) -DSYSTEM_MAP="\"$${smap}\"" \
939 -c $(srctree)/common/system_map.c -o common/system_map.o 932 -c $(srctree)/common/system_map.c -o common/system_map.o
940 $(call cmd,u-boot__) common/system_map.o 933 $(call cmd,u-boot__) common/system_map.o
941 endif 934 endif
942 935
943 # The actual objects are generated when descending, 936 # The actual objects are generated when descending,
944 # make sure no implicit rule kicks in 937 # make sure no implicit rule kicks in
945 $(sort $(u-boot-init) $(u-boot-main)): $(u-boot-dirs) ; 938 $(sort $(u-boot-init) $(u-boot-main)): $(u-boot-dirs) ;
946 939
947 # Handle descending into subdirectories listed in $(vmlinux-dirs) 940 # Handle descending into subdirectories listed in $(vmlinux-dirs)
948 # Preset locale variables to speed up the build process. Limit locale 941 # Preset locale variables to speed up the build process. Limit locale
949 # tweaks to this spot to avoid wrong language settings when running 942 # tweaks to this spot to avoid wrong language settings when running
950 # make menuconfig etc. 943 # make menuconfig etc.
951 # Error messages still appears in the original language 944 # Error messages still appears in the original language
952 945
953 PHONY += $(u-boot-dirs) 946 PHONY += $(u-boot-dirs)
954 $(u-boot-dirs): prepare scripts 947 $(u-boot-dirs): prepare scripts
955 $(Q)$(MAKE) $(build)=$@ 948 $(Q)$(MAKE) $(build)=$@
956 949
957 tools: prepare 950 tools: prepare
958 # The "tools" are needed early 951 # The "tools" are needed early
959 $(filter-out tools, $(u-boot-dirs)): tools 952 $(filter-out tools, $(u-boot-dirs)): tools
960 # The "examples" conditionally depend on U-Boot (say, when USE_PRIVATE_LIBGCC 953 # The "examples" conditionally depend on U-Boot (say, when USE_PRIVATE_LIBGCC
961 # is "yes"), so compile examples after U-Boot is compiled. 954 # is "yes"), so compile examples after U-Boot is compiled.
962 examples: $(filter-out examples, $(u-boot-dirs)) 955 examples: $(filter-out examples, $(u-boot-dirs))
963 956
964 define filechk_uboot.release 957 define filechk_uboot.release
965 echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))" 958 echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
966 endef 959 endef
967 960
968 # Store (new) UBOOTRELEASE string in include/config/uboot.release 961 # Store (new) UBOOTRELEASE string in include/config/uboot.release
969 include/config/uboot.release: Makefile FORCE 962 include/config/uboot.release: Makefile FORCE
970 $(call filechk,uboot.release) 963 $(call filechk,uboot.release)
971 964
972 965
973 # Things we need to do before we recursively start building the kernel 966 # Things we need to do before we recursively start building the kernel
974 # or the modules are listed in "prepare". 967 # or the modules are listed in "prepare".
975 # A multi level approach is used. prepareN is processed before prepareN-1. 968 # A multi level approach is used. prepareN is processed before prepareN-1.
976 # archprepare is used in arch Makefiles and when processed asm symlink, 969 # archprepare is used in arch Makefiles and when processed asm symlink,
977 # version.h and scripts_basic is processed / created. 970 # version.h and scripts_basic is processed / created.
978 971
979 # Listed in dependency order 972 # Listed in dependency order
980 PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3 973 PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3
981 974
982 # prepare3 is used to check if we are building in a separate output directory, 975 # prepare3 is used to check if we are building in a separate output directory,
983 # and if so do: 976 # and if so do:
984 # 1) Check that make has not been executed in the kernel src $(srctree) 977 # 1) Check that make has not been executed in the kernel src $(srctree)
985 prepare3: include/config/uboot.release 978 prepare3: include/config/uboot.release
986 ifneq ($(KBUILD_SRC),) 979 ifneq ($(KBUILD_SRC),)
987 @$(kecho) ' Using $(srctree) as source for u-boot' 980 @$(kecho) ' Using $(srctree) as source for u-boot'
988 $(Q)if [ -f $(srctree)/include/config.mk ]; then \ 981 $(Q)if [ -f $(srctree)/include/config.mk ]; then \
989 echo >&2 " $(srctree) is not clean, please run 'make mrproper'"; \ 982 echo >&2 " $(srctree) is not clean, please run 'make mrproper'"; \
990 echo >&2 " in the '$(srctree)' directory.";\ 983 echo >&2 " in the '$(srctree)' directory.";\
991 /bin/false; \ 984 /bin/false; \
992 fi; 985 fi;
993 endif 986 endif
994 987
995 # prepare2 creates a makefile if using a separate output directory 988 # prepare2 creates a makefile if using a separate output directory
996 prepare2: prepare3 outputmakefile 989 prepare2: prepare3 outputmakefile
997 990
998 prepare1: prepare2 $(version_h) $(timestamp_h) 991 prepare1: prepare2 $(version_h) $(timestamp_h)
999 @: 992 ifeq ($(__HAVE_ARCH_GENERIC_BOARD),)
993 ifeq ($(CONFIG_SYS_GENERIC_BOARD),y)
994 @echo >&2 " Your architecture does not support generic board."
995 @echo >&2 " Please undefine CONFIG_SYS_GENERIC_BOARD in your board config file."
996 @/bin/false
997 endif
998 endif
1000 999
1001 archprepare: prepare1 scripts_basic 1000 archprepare: prepare1 scripts_basic
1002 1001
1003 prepare0: archprepare FORCE 1002 prepare0: archprepare FORCE
1004 $(Q)$(MAKE) $(build)=. 1003 $(Q)$(MAKE) $(build)=.
1005 1004
1006 # All the preparing.. 1005 # All the preparing..
1007 prepare: prepare0 1006 prepare: prepare0
1008 1007
1009 # Generate some files 1008 # Generate some files
1010 # --------------------------------------------------------------------------- 1009 # ---------------------------------------------------------------------------
1011 1010
1012 define filechk_version.h 1011 define filechk_version.h
1013 (echo \#define PLAIN_VERSION \"$(UBOOTRELEASE)\"; \ 1012 (echo \#define PLAIN_VERSION \"$(UBOOTRELEASE)\"; \
1014 echo \#define U_BOOT_VERSION \"U-Boot \" PLAIN_VERSION; \ 1013 echo \#define U_BOOT_VERSION \"U-Boot \" PLAIN_VERSION; \
1015 echo \#define CC_VERSION_STRING \"$$($(CC) --version | head -n 1)\"; \ 1014 echo \#define CC_VERSION_STRING \"$$($(CC) --version | head -n 1)\"; \
1016 echo \#define LD_VERSION_STRING \"$$($(LD) --version | head -n 1)\"; ) 1015 echo \#define LD_VERSION_STRING \"$$($(LD) --version | head -n 1)\"; )
1017 endef 1016 endef
1018 1017
1019 define filechk_timestamp.h 1018 define filechk_timestamp.h
1020 (LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; \ 1019 (LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; \
1021 LC_ALL=C date +'#define U_BOOT_TIME "%T"') 1020 LC_ALL=C date +'#define U_BOOT_TIME "%T"')
1022 endef 1021 endef
1023 1022
1024 $(version_h): $(srctree)/Makefile FORCE 1023 $(version_h): $(srctree)/Makefile FORCE
1025 $(call filechk,version.h) 1024 $(call filechk,version.h)
1026 1025
1027 $(timestamp_h): $(srctree)/Makefile FORCE 1026 $(timestamp_h): $(srctree)/Makefile FORCE
1028 $(call filechk,timestamp.h) 1027 $(call filechk,timestamp.h)
1029 1028
1030 # 1029 #
1031 # Auto-generate the autoconf.mk file (which is included by all makefiles) 1030 # Auto-generate the autoconf.mk file (which is included by all makefiles)
1032 # 1031 #
1033 # This target actually generates 2 files; autoconf.mk and autoconf.mk.dep. 1032 # This target actually generates 2 files; autoconf.mk and autoconf.mk.dep.
1034 # the dep file is only include in this top level makefile to determine when 1033 # the dep file is only include in this top level makefile to determine when
1035 # to regenerate the autoconf.mk file. 1034 # to regenerate the autoconf.mk file.
1036 1035
1037 quiet_cmd_autoconf_dep = GEN $@ 1036 quiet_cmd_autoconf_dep = GEN $@
1038 cmd_autoconf_dep = $(CC) -x c -DDO_DEPS_ONLY -M $(c_flags) \ 1037 cmd_autoconf_dep = $(CC) -x c -DDO_DEPS_ONLY -M $(c_flags) \
1039 -MQ include/autoconf.mk $(srctree)/include/common.h > $@ || rm $@ 1038 -MQ include/autoconf.mk $(srctree)/include/common.h > $@ || rm $@
1040 1039
1041 include/autoconf.mk.dep: include/config.h include/common.h 1040 include/autoconf.mk.dep: include/config.h include/common.h
1042 $(call cmd,autoconf_dep) 1041 $(call cmd,autoconf_dep)
1043 1042
1044 quiet_cmd_autoconf = GEN $@ 1043 quiet_cmd_autoconf = GEN $@
1045 cmd_autoconf = \ 1044 cmd_autoconf = \
1046 $(CPP) $(c_flags) -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && \ 1045 $(CPP) $(c_flags) -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && \
1047 sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp > $@; \ 1046 sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp > $@; \
1048 rm $@.tmp 1047 rm $@.tmp
1049 1048
1050 include/autoconf.mk: include/config.h 1049 include/autoconf.mk: include/config.h
1051 $(call cmd,autoconf) 1050 $(call cmd,autoconf)
1052 1051
1053 # --------------------------------------------------------------------------- 1052 # ---------------------------------------------------------------------------
1054 1053
1055 PHONY += depend dep 1054 PHONY += depend dep
1056 depend dep: 1055 depend dep:
1057 @echo '*** Warning: make $@ is unnecessary now.' 1056 @echo '*** Warning: make $@ is unnecessary now.'
1058 1057
1059 # --------------------------------------------------------------------------- 1058 # ---------------------------------------------------------------------------
1060 quiet_cmd_cpp_lds = LDS $@ 1059 quiet_cmd_cpp_lds = LDS $@
1061 cmd_cpp_lds = $(CPP) $(cpp_flags) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ \ 1060 cmd_cpp_lds = $(CPP) $(cpp_flags) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ \
1062 -x assembler-with-cpp -P -o $@ $< 1061 -x assembler-with-cpp -P -o $@ $<
1063 1062
1064 u-boot.lds: $(LDSCRIPT) prepare FORCE 1063 u-boot.lds: $(LDSCRIPT) prepare FORCE
1065 $(call if_changed,cpp_lds) 1064 $(call if_changed,cpp_lds)
1066 1065
1067 PHONY += nand_spl 1066 PHONY += nand_spl
1068 nand_spl: prepare 1067 nand_spl: prepare
1069 $(Q)$(MAKE) $(build)=nand_spl/board/$(BOARDDIR) all 1068 $(Q)$(MAKE) $(build)=nand_spl/board/$(BOARDDIR) all
1070 1069
1071 nand_spl/u-boot-spl-16k.bin: nand_spl 1070 nand_spl/u-boot-spl-16k.bin: nand_spl
1072 @: 1071 @:
1073 1072
1074 u-boot-nand.bin: nand_spl/u-boot-spl-16k.bin u-boot.bin FORCE 1073 u-boot-nand.bin: nand_spl/u-boot-spl-16k.bin u-boot.bin FORCE
1075 $(call if_changed,cat) 1074 $(call if_changed,cat)
1076 1075
1077 spl/u-boot-spl.bin: spl/u-boot-spl 1076 spl/u-boot-spl.bin: spl/u-boot-spl
1078 @: 1077 @:
1079 spl/u-boot-spl: tools prepare 1078 spl/u-boot-spl: tools prepare
1080 $(Q)$(MAKE) obj=spl -f $(srctree)/spl/Makefile all 1079 $(Q)$(MAKE) obj=spl -f $(srctree)/spl/Makefile all
1081 1080
1082 tpl/u-boot-tpl.bin: tools prepare 1081 tpl/u-boot-tpl.bin: tools prepare
1083 $(Q)$(MAKE) obj=tpl -f $(srctree)/spl/Makefile all CONFIG_TPL_BUILD=y 1082 $(Q)$(MAKE) obj=tpl -f $(srctree)/spl/Makefile all CONFIG_TPL_BUILD=y
1084 1083
1085 TAG_SUBDIRS := $(u-boot-dirs) include 1084 TAG_SUBDIRS := $(u-boot-dirs) include
1086 1085
1087 FIND := find 1086 FIND := find
1088 FINDFLAGS := -L 1087 FINDFLAGS := -L
1089 1088
1090 tags ctags: 1089 tags ctags:
1091 ctags -w -o ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \ 1090 ctags -w -o ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
1092 -name '*.[chS]' -print` 1091 -name '*.[chS]' -print`
1093 1092
1094 etags: 1093 etags:
1095 etags -a -o $(obj)etags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \ 1094 etags -a -o $(obj)etags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
1096 -name '*.[chS]' -print` 1095 -name '*.[chS]' -print`
1097 cscope: 1096 cscope:
1098 $(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \ 1097 $(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \
1099 cscope.files 1098 cscope.files
1100 cscope -b -q -k 1099 cscope -b -q -k
1101 1100
1102 SYSTEM_MAP = \ 1101 SYSTEM_MAP = \
1103 $(NM) $1 | \ 1102 $(NM) $1 | \
1104 grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \ 1103 grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
1105 LC_ALL=C sort 1104 LC_ALL=C sort
1106 System.map: u-boot 1105 System.map: u-boot
1107 @$(call SYSTEM_MAP,$<) > $@ 1106 @$(call SYSTEM_MAP,$<) > $@
1108 1107
1109 checkthumb: 1108 checkthumb:
1110 @if test $(call cc-version) -lt 0404; then \ 1109 @if test $(call cc-version) -lt 0404; then \
1111 echo -n '*** Your GCC does not produce working '; \ 1110 echo -n '*** Your GCC does not produce working '; \
1112 echo 'binaries in THUMB mode.'; \ 1111 echo 'binaries in THUMB mode.'; \
1113 echo '*** Your board is configured for THUMB mode.'; \ 1112 echo '*** Your board is configured for THUMB mode.'; \
1114 false; \ 1113 false; \
1115 fi 1114 fi
1116 1115
1117 # GCC 3.x is reported to have problems generating the type of relocation 1116 # GCC 3.x is reported to have problems generating the type of relocation
1118 # that U-Boot wants. 1117 # that U-Boot wants.
1119 # See http://lists.denx.de/pipermail/u-boot/2012-September/135156.html 1118 # See http://lists.denx.de/pipermail/u-boot/2012-September/135156.html
1120 checkgcc4: 1119 checkgcc4:
1121 @if test $(call cc-version) -lt 0400; then \ 1120 @if test $(call cc-version) -lt 0400; then \
1122 echo -n '*** Your GCC is too old, please upgrade to GCC 4.x or newer'; \ 1121 echo -n '*** Your GCC is too old, please upgrade to GCC 4.x or newer'; \
1123 false; \ 1122 false; \
1124 fi 1123 fi
1125 1124
1126 checkdtc: 1125 checkdtc:
1127 @if test $(call dtc-version) -lt 0104; then \ 1126 @if test $(call dtc-version) -lt 0104; then \
1128 echo '*** Your dtc is too old, please upgrade to dtc 1.4 or newer'; \ 1127 echo '*** Your dtc is too old, please upgrade to dtc 1.4 or newer'; \
1129 false; \ 1128 false; \
1130 fi 1129 fi
1131 1130
1132 ######################################################################### 1131 #########################################################################
1133 1132
1134 # ARM relocations should all be R_ARM_RELATIVE (32-bit) or 1133 # ARM relocations should all be R_ARM_RELATIVE (32-bit) or
1135 # R_AARCH64_RELATIVE (64-bit). 1134 # R_AARCH64_RELATIVE (64-bit).
1136 checkarmreloc: u-boot 1135 checkarmreloc: u-boot
1137 @RELOC="`$(CROSS_COMPILE)readelf -r -W $< | cut -d ' ' -f 4 | \ 1136 @RELOC="`$(CROSS_COMPILE)readelf -r -W $< | cut -d ' ' -f 4 | \
1138 grep R_A | sort -u`"; \ 1137 grep R_A | sort -u`"; \
1139 if test "$$RELOC" != "R_ARM_RELATIVE" -a \ 1138 if test "$$RELOC" != "R_ARM_RELATIVE" -a \
1140 "$$RELOC" != "R_AARCH64_RELATIVE"; then \ 1139 "$$RELOC" != "R_AARCH64_RELATIVE"; then \
1141 echo "$< contains unexpected relocations: $$RELOC"; \ 1140 echo "$< contains unexpected relocations: $$RELOC"; \
1142 false; \ 1141 false; \
1143 fi 1142 fi
1144 1143
1145 env: scripts_basic 1144 env: scripts_basic
1146 $(Q)$(MAKE) $(build)=tools/$@ 1145 $(Q)$(MAKE) $(build)=tools/$@
1147 1146
1148 tools-all: HOST_TOOLS_ALL=y 1147 tools-all: HOST_TOOLS_ALL=y
1149 tools-all: env tools ; 1148 tools-all: env tools ;
1150 1149
1151 .PHONY : CHANGELOG 1150 .PHONY : CHANGELOG
1152 CHANGELOG: 1151 CHANGELOG:
1153 git log --no-merges U-Boot-1_1_5.. | \ 1152 git log --no-merges U-Boot-1_1_5.. | \
1154 unexpand -a | sed -e 's/\s\s*$$//' > $@ 1153 unexpand -a | sed -e 's/\s\s*$$//' > $@
1155 1154
1156 include/license.h: tools/bin2header COPYING 1155 include/license.h: tools/bin2header COPYING
1157 cat COPYING | gzip -9 -c | ./tools/bin2header license_gzip > include/license.h 1156 cat COPYING | gzip -9 -c | ./tools/bin2header license_gzip > include/license.h
1158 ######################################################################### 1157 #########################################################################
1159 1158
1160 ### 1159 ###
1161 # Cleaning is done on three levels. 1160 # Cleaning is done on three levels.
1162 # make clean Delete most generated files 1161 # make clean Delete most generated files
1163 # Leave enough to build external modules 1162 # Leave enough to build external modules
1164 # make mrproper Delete the current configuration, and all generated files 1163 # make mrproper Delete the current configuration, and all generated files
1165 # make distclean Remove editor backup files, patch leftover files and the like 1164 # make distclean Remove editor backup files, patch leftover files and the like
1166 1165
1167 # Directories & files removed with 'make clean' 1166 # Directories & files removed with 'make clean'
1168 CLEAN_DIRS += $(MODVERDIR) 1167 CLEAN_DIRS += $(MODVERDIR)
1169 CLEAN_FILES += u-boot.lds include/bmp_logo.h include/bmp_logo_data.h \ 1168 CLEAN_FILES += u-boot.lds include/bmp_logo.h include/bmp_logo_data.h \
1170 board/*/config.tmp board/*/*/config.tmp \ 1169 board/*/config.tmp board/*/*/config.tmp \
1171 include/autoconf.mk* include/spl-autoconf.mk \ 1170 include/autoconf.mk* include/spl-autoconf.mk \
1172 include/tpl-autoconf.mk 1171 include/tpl-autoconf.mk
1173 1172
1174 # Directories & files removed with 'make clobber' 1173 # Directories & files removed with 'make clobber'
1175 CLOBBER_DIRS += $(patsubst %,spl/%, $(filter-out Makefile, \ 1174 CLOBBER_DIRS += $(patsubst %,spl/%, $(filter-out Makefile, \
1176 $(shell ls -1 spl 2>/dev/null))) \ 1175 $(shell ls -1 spl 2>/dev/null))) \
1177 tpl 1176 tpl
1178 CLOBBER_FILES += u-boot* MLO* SPL System.map nand_spl/u-boot* 1177 CLOBBER_FILES += u-boot* MLO* SPL System.map nand_spl/u-boot*
1179 1178
1180 # Directories & files removed with 'make mrproper' 1179 # Directories & files removed with 'make mrproper'
1181 MRPROPER_DIRS += include/config include/generated 1180 MRPROPER_DIRS += include/config include/generated
1182 MRPROPER_FILES += .config .config.old \ 1181 MRPROPER_FILES += .config .config.old \
1183 tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \ 1182 tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \
1184 include/config.h include/config.mk 1183 include/config.h include/config.mk
1185 1184
1186 # clean - Delete most, but leave enough to build external modules 1185 # clean - Delete most, but leave enough to build external modules
1187 # 1186 #
1188 clean: rm-dirs := $(CLEAN_DIRS) 1187 clean: rm-dirs := $(CLEAN_DIRS)
1189 clean: rm-files := $(CLEAN_FILES) 1188 clean: rm-files := $(CLEAN_FILES)
1190 1189
1191 clean-dirs := $(foreach f,$(u-boot-alldirs),$(if $(wildcard $f/Makefile),$f)) 1190 clean-dirs := $(foreach f,$(u-boot-alldirs),$(if $(wildcard $f/Makefile),$f))
1192 1191
1193 clean-dirs := $(addprefix _clean_, $(clean-dirs) doc/DocBook) 1192 clean-dirs := $(addprefix _clean_, $(clean-dirs) doc/DocBook)
1194 1193
1195 PHONY += $(clean-dirs) clean archclean 1194 PHONY += $(clean-dirs) clean archclean
1196 $(clean-dirs): 1195 $(clean-dirs):
1197 $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@) 1196 $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@)
1198 1197
1199 # TODO: Do not use *.cfgtmp 1198 # TODO: Do not use *.cfgtmp
1200 clean: $(clean-dirs) 1199 clean: $(clean-dirs)
1201 $(call cmd,rmdirs) 1200 $(call cmd,rmdirs)
1202 $(call cmd,rmfiles) 1201 $(call cmd,rmfiles)
1203 @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \ 1202 @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \
1204 \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \ 1203 \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
1205 -o -name '*.ko.*' -o -name '*.su' -o -name '*.cfgtmp' \ 1204 -o -name '*.ko.*' -o -name '*.su' -o -name '*.cfgtmp' \
1206 -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \ 1205 -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
1207 -o -name '*.symtypes' -o -name 'modules.order' \ 1206 -o -name '*.symtypes' -o -name 'modules.order' \
1208 -o -name modules.builtin -o -name '.tmp_*.o.*' \ 1207 -o -name modules.builtin -o -name '.tmp_*.o.*' \
1209 -o -name '*.gcno' \) -type f -print | xargs rm -f 1208 -o -name '*.gcno' \) -type f -print | xargs rm -f
1210 @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \ 1209 @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \
1211 -path './nand_spl/*' -type l -print | xargs rm -f 1210 -path './nand_spl/*' -type l -print | xargs rm -f
1212 1211
1213 # clobber 1212 # clobber
1214 # 1213 #
1215 clobber: rm-dirs := $(CLOBBER_DIRS) 1214 clobber: rm-dirs := $(CLOBBER_DIRS)
1216 clobber: rm-files := $(CLOBBER_FILES) 1215 clobber: rm-files := $(CLOBBER_FILES)
1217 1216
1218 PHONY += clobber 1217 PHONY += clobber
1219 1218
1220 clobber: clean 1219 clobber: clean
1221 $(call cmd,rmdirs) 1220 $(call cmd,rmdirs)
1222 $(call cmd,rmfiles) 1221 $(call cmd,rmfiles)
1223 1222
1224 # mrproper - Delete all generated files, including .config 1223 # mrproper - Delete all generated files, including .config
1225 # 1224 #
1226 mrproper: rm-dirs := $(wildcard $(MRPROPER_DIRS)) 1225 mrproper: rm-dirs := $(wildcard $(MRPROPER_DIRS))
1227 mrproper: rm-files := $(wildcard $(MRPROPER_FILES)) 1226 mrproper: rm-files := $(wildcard $(MRPROPER_FILES))
1228 mrproper-dirs := $(addprefix _mrproper_,scripts) 1227 mrproper-dirs := $(addprefix _mrproper_,scripts)
1229 1228
1230 PHONY += $(mrproper-dirs) mrproper archmrproper 1229 PHONY += $(mrproper-dirs) mrproper archmrproper
1231 $(mrproper-dirs): 1230 $(mrproper-dirs):
1232 $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@) 1231 $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@)
1233 1232
1234 mrproper: clobber $(mrproper-dirs) 1233 mrproper: clobber $(mrproper-dirs)
1235 $(call cmd,rmdirs) 1234 $(call cmd,rmdirs)
1236 $(call cmd,rmfiles) 1235 $(call cmd,rmfiles)
1237 @rm -f arch/*/include/asm/arch arch/*/include/asm/proc 1236 @rm -f arch/*/include/asm/arch arch/*/include/asm/proc
1238 1237
1239 # distclean 1238 # distclean
1240 # 1239 #
1241 PHONY += distclean 1240 PHONY += distclean
1242 1241
1243 distclean: mrproper 1242 distclean: mrproper
1244 @find $(srctree) $(RCS_FIND_IGNORE) \ 1243 @find $(srctree) $(RCS_FIND_IGNORE) \
1245 \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ 1244 \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
1246 -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ 1245 -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
1247 -o -name '.*.rej' \ 1246 -o -name '.*.rej' \
1248 -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \ 1247 -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \
1249 -type f -print | xargs rm -f 1248 -type f -print | xargs rm -f
1250 1249
1251 backup: 1250 backup:
1252 F=`basename $(TOPDIR)` ; cd .. ; \ 1251 F=`basename $(TOPDIR)` ; cd .. ; \
1253 gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F 1252 gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F
1254 1253
1255 help: 1254 help:
1256 @echo 'Cleaning targets:' 1255 @echo 'Cleaning targets:'
1257 @echo ' clean - Remove most generated files but keep the config and' 1256 @echo ' clean - Remove most generated files but keep the config and'
1258 @echo ' necessities for testing u-boot' 1257 @echo ' necessities for testing u-boot'
1259 @echo ' clobber - Remove most generated files but keep the config' 1258 @echo ' clobber - Remove most generated files but keep the config'
1260 @echo ' mrproper - Remove all generated files + config + various backup files' 1259 @echo ' mrproper - Remove all generated files + config + various backup files'
1261 @echo ' distclean - mrproper + remove editor backup and patch files' 1260 @echo ' distclean - mrproper + remove editor backup and patch files'
1262 @echo '' 1261 @echo ''
1263 # uncomment after adding Kconfig feature 1262 # uncomment after adding Kconfig feature
1264 # @echo 'Configuration targets:' 1263 # @echo 'Configuration targets:'
1265 # @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help 1264 # @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help
1266 # @echo '' 1265 # @echo ''
1267 @echo 'Other generic targets:' 1266 @echo 'Other generic targets:'
1268 @echo ' all - Build all necessary images depending on configuration' 1267 @echo ' all - Build all necessary images depending on configuration'
1269 @echo ' u-boot - Build the bare u-boot' 1268 @echo ' u-boot - Build the bare u-boot'
1270 @echo ' dir/ - Build all files in dir and below' 1269 @echo ' dir/ - Build all files in dir and below'
1271 @echo ' dir/file.[oisS] - Build specified target only' 1270 @echo ' dir/file.[oisS] - Build specified target only'
1272 @echo ' dir/file.lst - Build specified mixed source/assembly target only' 1271 @echo ' dir/file.lst - Build specified mixed source/assembly target only'
1273 @echo ' (requires a recent binutils and recent build (System.map))' 1272 @echo ' (requires a recent binutils and recent build (System.map))'
1274 @echo ' tags/TAGS - Generate tags file for editors' 1273 @echo ' tags/TAGS - Generate tags file for editors'
1275 @echo ' cscope - Generate cscope index' 1274 @echo ' cscope - Generate cscope index'
1276 @echo ' ubootrelease - Output the release version string' 1275 @echo ' ubootrelease - Output the release version string'
1277 @echo ' ubootversion - Output the version stored in Makefile' 1276 @echo ' ubootversion - Output the version stored in Makefile'
1278 @echo '' 1277 @echo ''
1279 @echo 'Static analysers' 1278 @echo 'Static analysers'
1280 @echo ' checkstack - Generate a list of stack hogs' 1279 @echo ' checkstack - Generate a list of stack hogs'
1281 @echo '' 1280 @echo ''
1282 @echo 'Documentation targets:' 1281 @echo 'Documentation targets:'
1283 @$(MAKE) -f $(srctree)/doc/DocBook/Makefile dochelp 1282 @$(MAKE) -f $(srctree)/doc/DocBook/Makefile dochelp
1284 @echo '' 1283 @echo ''
1285 @echo ' make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build' 1284 @echo ' make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build'
1286 @echo ' make V=2 [targets] 2 => give reason for rebuild of target' 1285 @echo ' make V=2 [targets] 2 => give reason for rebuild of target'
1287 @echo ' make O=dir [targets] Locate all output files in "dir", including .config' 1286 @echo ' make O=dir [targets] Locate all output files in "dir", including .config'
1288 @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)' 1287 @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)'
1289 @echo ' make C=2 [targets] Force check of all c source with $$CHECK' 1288 @echo ' make C=2 [targets] Force check of all c source with $$CHECK'
1290 @echo ' make RECORDMCOUNT_WARN=1 [targets] Warn about ignored mcount sections' 1289 @echo ' make RECORDMCOUNT_WARN=1 [targets] Warn about ignored mcount sections'
1291 @echo ' make W=n [targets] Enable extra gcc checks, n=1,2,3 where' 1290 @echo ' make W=n [targets] Enable extra gcc checks, n=1,2,3 where'
1292 @echo ' 1: warnings which may be relevant and do not occur too often' 1291 @echo ' 1: warnings which may be relevant and do not occur too often'
1293 @echo ' 2: warnings which occur quite often but may still be relevant' 1292 @echo ' 2: warnings which occur quite often but may still be relevant'
1294 @echo ' 3: more obscure warnings, can most likely be ignored' 1293 @echo ' 3: more obscure warnings, can most likely be ignored'
1295 @echo ' Multiple levels can be combined with W=12 or W=123' 1294 @echo ' Multiple levels can be combined with W=12 or W=123'
1296 @echo '' 1295 @echo ''
1297 @echo 'Execute "make" or "make all" to build all targets marked with [*] ' 1296 @echo 'Execute "make" or "make all" to build all targets marked with [*] '
1298 @echo 'For further info see the ./README file' 1297 @echo 'For further info see the ./README file'
1299 1298
1300 1299
1301 # Documentation targets 1300 # Documentation targets
1302 # --------------------------------------------------------------------------- 1301 # ---------------------------------------------------------------------------
1303 %docs: scripts_basic FORCE 1302 %docs: scripts_basic FORCE
1304 $(Q)$(MAKE) $(build)=scripts build_docproc 1303 $(Q)$(MAKE) $(build)=scripts build_docproc
1305 $(Q)$(MAKE) $(build)=doc/DocBook $@ 1304 $(Q)$(MAKE) $(build)=doc/DocBook $@
1306 1305
1307 # Dummies... 1306 # Dummies...
1308 PHONY += prepare scripts 1307 PHONY += prepare scripts
1309 prepare: ; 1308 prepare: ;
1310 scripts: ; 1309 scripts: ;
1311 1310
1312 endif #ifeq ($(config-targets),1) 1311 endif #ifeq ($(config-targets),1)
1313 endif #ifeq ($(mixed-targets),1) 1312 endif #ifeq ($(mixed-targets),1)
1314 1313
1315 PHONY += checkstack ubootrelease ubootversion 1314 PHONY += checkstack ubootrelease ubootversion
1316 1315
1317 checkstack: 1316 checkstack:
1318 $(OBJDUMP) -d u-boot $$(find . -name u-boot-spl) | \ 1317 $(OBJDUMP) -d u-boot $$(find . -name u-boot-spl) | \
1319 $(PERL) $(src)/scripts/checkstack.pl $(ARCH) 1318 $(PERL) $(src)/scripts/checkstack.pl $(ARCH)
1320 1319
1321 ubootrelease: 1320 ubootrelease:
1322 @echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))" 1321 @echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
1323 1322
1324 ubootversion: 1323 ubootversion:
1325 @echo $(UBOOTVERSION) 1324 @echo $(UBOOTVERSION)
1326 1325
1327 # Single targets 1326 # Single targets
1328 # --------------------------------------------------------------------------- 1327 # ---------------------------------------------------------------------------
1329 # Single targets are compatible with: 1328 # Single targets are compatible with:
1330 # - build with mixed source and output 1329 # - build with mixed source and output
1331 # - build with separate output dir 'make O=...' 1330 # - build with separate output dir 'make O=...'
1332 # - external modules 1331 # - external modules
1333 # 1332 #
1334 # target-dir => where to store outputfile 1333 # target-dir => where to store outputfile
1335 # build-dir => directory in kernel source tree to use 1334 # build-dir => directory in kernel source tree to use
1336 1335
1337 ifeq ($(KBUILD_EXTMOD),) 1336 ifeq ($(KBUILD_EXTMOD),)
1338 build-dir = $(patsubst %/,%,$(dir $@)) 1337 build-dir = $(patsubst %/,%,$(dir $@))
1339 target-dir = $(dir $@) 1338 target-dir = $(dir $@)
1340 else 1339 else
1341 zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@))) 1340 zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@)))
1342 build-dir = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash)) 1341 build-dir = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash))
1343 target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@)) 1342 target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@))
1344 endif 1343 endif
1345 1344
1346 %.s: %.c prepare scripts FORCE 1345 %.s: %.c prepare scripts FORCE
1347 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1346 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1348 %.i: %.c prepare scripts FORCE 1347 %.i: %.c prepare scripts FORCE
1349 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1348 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1350 %.o: %.c prepare scripts FORCE 1349 %.o: %.c prepare scripts FORCE
1351 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1350 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1352 %.lst: %.c prepare scripts FORCE 1351 %.lst: %.c prepare scripts FORCE
1353 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1352 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1354 %.s: %.S prepare scripts FORCE 1353 %.s: %.S prepare scripts FORCE
1355 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1354 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1356 %.o: %.S prepare scripts FORCE 1355 %.o: %.S prepare scripts FORCE
1357 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1356 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1358 %.symtypes: %.c prepare scripts FORCE 1357 %.symtypes: %.c prepare scripts FORCE
1359 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1358 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1360 1359
1361 # Modules 1360 # Modules
1362 /: prepare scripts FORCE 1361 /: prepare scripts FORCE
1363 $(cmd_crmodverdir) 1362 $(cmd_crmodverdir)
1364 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 1363 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
1365 $(build)=$(build-dir) 1364 $(build)=$(build-dir)
1366 %/: prepare scripts FORCE 1365 %/: prepare scripts FORCE
1367 $(cmd_crmodverdir) 1366 $(cmd_crmodverdir)
1368 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 1367 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
1369 $(build)=$(build-dir) 1368 $(build)=$(build-dir)
1370 %.ko: prepare scripts FORCE 1369 %.ko: prepare scripts FORCE
1371 $(cmd_crmodverdir) 1370 $(cmd_crmodverdir)
1372 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 1371 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
1373 $(build)=$(build-dir) $(@:.ko=.o) 1372 $(build)=$(build-dir) $(@:.ko=.o)
1374 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost 1373 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
1375 1374
1376 # FIXME Should go into a make.lib or something 1375 # FIXME Should go into a make.lib or something
1377 # =========================================================================== 1376 # ===========================================================================
1378 1377
1379 quiet_cmd_rmdirs = $(if $(wildcard $(rm-dirs)),CLEAN $(wildcard $(rm-dirs))) 1378 quiet_cmd_rmdirs = $(if $(wildcard $(rm-dirs)),CLEAN $(wildcard $(rm-dirs)))
1380 cmd_rmdirs = rm -rf $(rm-dirs) 1379 cmd_rmdirs = rm -rf $(rm-dirs)
1381 1380
1382 quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files))) 1381 quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files)))
1383 cmd_rmfiles = rm -f $(rm-files) 1382 cmd_rmfiles = rm -f $(rm-files)
1384 1383
1385 # read all saved command lines 1384 # read all saved command lines
1386 1385
1387 targets := $(wildcard $(sort $(targets))) 1386 targets := $(wildcard $(sort $(targets)))
1388 cmd_files := $(wildcard .*.cmd $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd)) 1387 cmd_files := $(wildcard .*.cmd $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd))
1389 1388
1390 ifneq ($(cmd_files),) 1389 ifneq ($(cmd_files),)
1391 $(cmd_files): ; # Do not try to update included dependency files 1390 $(cmd_files): ; # Do not try to update included dependency files
1392 include $(cmd_files) 1391 include $(cmd_files)
1393 endif 1392 endif
1394 1393
1395 # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj=dir 1394 # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj=dir
1396 # Usage: 1395 # Usage:
1397 # $(Q)$(MAKE) $(clean)=dir 1396 # $(Q)$(MAKE) $(clean)=dir
1398 clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj 1397 clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj
1399 1398
1400 endif # skip-makefile 1399 endif # skip-makefile
1401 1400
1402 PHONY += FORCE 1401 PHONY += FORCE