Commit 48aa812d8c5d64956cca49b5e189b0027cea3de7

Authored by Masahiro Yamada
Committed by Tom Rini
1 parent 2302b3ab85

kbuild: remove "clobber" target

Now we stick to Linux Kernel's build system, so squash
"clobber" to "clean" target.

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

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