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