Commit 003086497f07f7f1e67c0c295e261740f822b377

Authored by Kyle McMartin
Committed by Linus Torvalds
1 parent 1db4b2d221

Build with -fno-dwarf2-cfi-asm

With a sufficiently new compiler and binutils, code which wasn't
previously generating .eh_frame sections has begun to.  Certain
architectures (powerpc, in this case) may generate unexpected relocation
formats in response to this, preventing modules from loading.

While the new relocation types should probably be handled, revert to the
previous behaviour with regards to generation of .eh_frame sections.

(This was reported against Fedora, which appears to be the only distro
doing any building against gcc-4.4 at present: RH bz#486545.)

Signed-off-by: Kyle McMartin <kyle@redhat.com>
Acked-by: Roland McGrath <roland@redhat.com>
Cc: Alexandre Oliva <aoliva@redhat.com>
Cc: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 1 changed file with 3 additions and 0 deletions Inline Diff

1 VERSION = 2 1 VERSION = 2
2 PATCHLEVEL = 6 2 PATCHLEVEL = 6
3 SUBLEVEL = 29 3 SUBLEVEL = 29
4 EXTRAVERSION = -rc8 4 EXTRAVERSION = -rc8
5 NAME = Erotic Pickled Herring 5 NAME = Erotic Pickled Herring
6 6
7 # *DOCUMENTATION* 7 # *DOCUMENTATION*
8 # To see a list of typical targets execute "make help" 8 # To see a list of typical targets execute "make help"
9 # More info can be located in ./README 9 # More info can be located in ./README
10 # Comments in this file are targeted only to the developer, do not 10 # Comments in this file are targeted only to the developer, do not
11 # expect to learn how to build the kernel reading this file. 11 # expect to learn how to build the kernel reading this file.
12 12
13 # Do not: 13 # Do not:
14 # o use make's built-in rules and variables 14 # o use make's built-in rules and variables
15 # (this increases performance and avoids hard-to-debug behaviour); 15 # (this increases performance and avoids hard-to-debug behaviour);
16 # o print "Entering directory ..."; 16 # o print "Entering directory ...";
17 MAKEFLAGS += -rR --no-print-directory 17 MAKEFLAGS += -rR --no-print-directory
18 18
19 # We are using a recursive build, so we need to do a little thinking 19 # We are using a recursive build, so we need to do a little thinking
20 # to get the ordering right. 20 # to get the ordering right.
21 # 21 #
22 # Most importantly: sub-Makefiles should only ever modify files in 22 # Most importantly: sub-Makefiles should only ever modify files in
23 # their own directory. If in some directory we have a dependency on 23 # their own directory. If in some directory we have a dependency on
24 # a file in another dir (which doesn't happen often, but it's often 24 # a file in another dir (which doesn't happen often, but it's often
25 # unavoidable when linking the built-in.o targets which finally 25 # unavoidable when linking the built-in.o targets which finally
26 # turn into vmlinux), we will call a sub make in that other dir, and 26 # turn into vmlinux), we will call a sub make in that other dir, and
27 # after that we are sure that everything which is in that other dir 27 # after that we are sure that everything which is in that other dir
28 # is now up to date. 28 # is now up to date.
29 # 29 #
30 # The only cases where we need to modify files which have global 30 # The only cases where we need to modify files which have global
31 # effects are thus separated out and done before the recursive 31 # effects are thus separated out and done before the recursive
32 # descending is started. They are now explicitly listed as the 32 # descending is started. They are now explicitly listed as the
33 # prepare rule. 33 # prepare rule.
34 34
35 # To put more focus on warnings, be less verbose as default 35 # To put more focus on warnings, be less verbose as default
36 # Use 'make V=1' to see the full commands 36 # Use 'make V=1' to see the full commands
37 37
38 ifdef V 38 ifdef V
39 ifeq ("$(origin V)", "command line") 39 ifeq ("$(origin V)", "command line")
40 KBUILD_VERBOSE = $(V) 40 KBUILD_VERBOSE = $(V)
41 endif 41 endif
42 endif 42 endif
43 ifndef KBUILD_VERBOSE 43 ifndef KBUILD_VERBOSE
44 KBUILD_VERBOSE = 0 44 KBUILD_VERBOSE = 0
45 endif 45 endif
46 46
47 # Call a source code checker (by default, "sparse") as part of the 47 # Call a source code checker (by default, "sparse") as part of the
48 # C compilation. 48 # C compilation.
49 # 49 #
50 # Use 'make C=1' to enable checking of only re-compiled files. 50 # Use 'make C=1' to enable checking of only re-compiled files.
51 # Use 'make C=2' to enable checking of *all* source files, regardless 51 # Use 'make C=2' to enable checking of *all* source files, regardless
52 # of whether they are re-compiled or not. 52 # of whether they are re-compiled or not.
53 # 53 #
54 # See the file "Documentation/sparse.txt" for more details, including 54 # See the file "Documentation/sparse.txt" for more details, including
55 # where to get the "sparse" utility. 55 # where to get the "sparse" utility.
56 56
57 ifdef C 57 ifdef C
58 ifeq ("$(origin C)", "command line") 58 ifeq ("$(origin C)", "command line")
59 KBUILD_CHECKSRC = $(C) 59 KBUILD_CHECKSRC = $(C)
60 endif 60 endif
61 endif 61 endif
62 ifndef KBUILD_CHECKSRC 62 ifndef KBUILD_CHECKSRC
63 KBUILD_CHECKSRC = 0 63 KBUILD_CHECKSRC = 0
64 endif 64 endif
65 65
66 # Use make M=dir to specify directory of external module to build 66 # Use make M=dir to specify directory of external module to build
67 # Old syntax make ... SUBDIRS=$PWD is still supported 67 # Old syntax make ... SUBDIRS=$PWD is still supported
68 # Setting the environment variable KBUILD_EXTMOD take precedence 68 # Setting the environment variable KBUILD_EXTMOD take precedence
69 ifdef SUBDIRS 69 ifdef SUBDIRS
70 KBUILD_EXTMOD ?= $(SUBDIRS) 70 KBUILD_EXTMOD ?= $(SUBDIRS)
71 endif 71 endif
72 ifdef M 72 ifdef M
73 ifeq ("$(origin M)", "command line") 73 ifeq ("$(origin M)", "command line")
74 KBUILD_EXTMOD := $(M) 74 KBUILD_EXTMOD := $(M)
75 endif 75 endif
76 endif 76 endif
77 77
78 78
79 # kbuild supports saving output files in a separate directory. 79 # kbuild supports saving output files in a separate directory.
80 # To locate output files in a separate directory two syntaxes are supported. 80 # To locate output files in a separate directory two syntaxes are supported.
81 # In both cases the working directory must be the root of the kernel src. 81 # In both cases the working directory must be the root of the kernel src.
82 # 1) O= 82 # 1) O=
83 # Use "make O=dir/to/store/output/files/" 83 # Use "make O=dir/to/store/output/files/"
84 # 84 #
85 # 2) Set KBUILD_OUTPUT 85 # 2) Set KBUILD_OUTPUT
86 # Set the environment variable KBUILD_OUTPUT to point to the directory 86 # Set the environment variable KBUILD_OUTPUT to point to the directory
87 # where the output files shall be placed. 87 # where the output files shall be placed.
88 # export KBUILD_OUTPUT=dir/to/store/output/files/ 88 # export KBUILD_OUTPUT=dir/to/store/output/files/
89 # make 89 # make
90 # 90 #
91 # The O= assignment takes precedence over the KBUILD_OUTPUT environment 91 # The O= assignment takes precedence over the KBUILD_OUTPUT environment
92 # variable. 92 # variable.
93 93
94 94
95 # KBUILD_SRC is set on invocation of make in OBJ directory 95 # KBUILD_SRC is set on invocation of make in OBJ directory
96 # KBUILD_SRC is not intended to be used by the regular user (for now) 96 # KBUILD_SRC is not intended to be used by the regular user (for now)
97 ifeq ($(KBUILD_SRC),) 97 ifeq ($(KBUILD_SRC),)
98 98
99 # OK, Make called in directory where kernel src resides 99 # OK, Make called in directory where kernel src resides
100 # Do we want to locate output files in a separate directory? 100 # Do we want to locate output files in a separate directory?
101 ifdef O 101 ifdef O
102 ifeq ("$(origin O)", "command line") 102 ifeq ("$(origin O)", "command line")
103 KBUILD_OUTPUT := $(O) 103 KBUILD_OUTPUT := $(O)
104 endif 104 endif
105 endif 105 endif
106 106
107 # That's our default target when none is given on the command line 107 # That's our default target when none is given on the command line
108 PHONY := _all 108 PHONY := _all
109 _all: 109 _all:
110 110
111 # Cancel implicit rules on top Makefile 111 # Cancel implicit rules on top Makefile
112 $(CURDIR)/Makefile Makefile: ; 112 $(CURDIR)/Makefile Makefile: ;
113 113
114 ifneq ($(KBUILD_OUTPUT),) 114 ifneq ($(KBUILD_OUTPUT),)
115 # Invoke a second make in the output directory, passing relevant variables 115 # Invoke a second make in the output directory, passing relevant variables
116 # check that the output directory actually exists 116 # check that the output directory actually exists
117 saved-output := $(KBUILD_OUTPUT) 117 saved-output := $(KBUILD_OUTPUT)
118 KBUILD_OUTPUT := $(shell cd $(KBUILD_OUTPUT) && /bin/pwd) 118 KBUILD_OUTPUT := $(shell cd $(KBUILD_OUTPUT) && /bin/pwd)
119 $(if $(KBUILD_OUTPUT),, \ 119 $(if $(KBUILD_OUTPUT),, \
120 $(error output directory "$(saved-output)" does not exist)) 120 $(error output directory "$(saved-output)" does not exist))
121 121
122 PHONY += $(MAKECMDGOALS) sub-make 122 PHONY += $(MAKECMDGOALS) sub-make
123 123
124 $(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make 124 $(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make
125 $(Q)@: 125 $(Q)@:
126 126
127 sub-make: FORCE 127 sub-make: FORCE
128 $(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT) \ 128 $(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT) \
129 KBUILD_SRC=$(CURDIR) \ 129 KBUILD_SRC=$(CURDIR) \
130 KBUILD_EXTMOD="$(KBUILD_EXTMOD)" -f $(CURDIR)/Makefile \ 130 KBUILD_EXTMOD="$(KBUILD_EXTMOD)" -f $(CURDIR)/Makefile \
131 $(filter-out _all sub-make,$(MAKECMDGOALS)) 131 $(filter-out _all sub-make,$(MAKECMDGOALS))
132 132
133 # Leave processing to above invocation of make 133 # Leave processing to above invocation of make
134 skip-makefile := 1 134 skip-makefile := 1
135 endif # ifneq ($(KBUILD_OUTPUT),) 135 endif # ifneq ($(KBUILD_OUTPUT),)
136 endif # ifeq ($(KBUILD_SRC),) 136 endif # ifeq ($(KBUILD_SRC),)
137 137
138 # We process the rest of the Makefile if this is the final invocation of make 138 # We process the rest of the Makefile if this is the final invocation of make
139 ifeq ($(skip-makefile),) 139 ifeq ($(skip-makefile),)
140 140
141 # If building an external module we do not care about the all: rule 141 # If building an external module we do not care about the all: rule
142 # but instead _all depend on modules 142 # but instead _all depend on modules
143 PHONY += all 143 PHONY += all
144 ifeq ($(KBUILD_EXTMOD),) 144 ifeq ($(KBUILD_EXTMOD),)
145 _all: all 145 _all: all
146 else 146 else
147 _all: modules 147 _all: modules
148 endif 148 endif
149 149
150 srctree := $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR)) 150 srctree := $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR))
151 TOPDIR := $(srctree) 151 TOPDIR := $(srctree)
152 # FIXME - TOPDIR is obsolete, use srctree/objtree 152 # FIXME - TOPDIR is obsolete, use srctree/objtree
153 objtree := $(CURDIR) 153 objtree := $(CURDIR)
154 src := $(srctree) 154 src := $(srctree)
155 obj := $(objtree) 155 obj := $(objtree)
156 156
157 VPATH := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD)) 157 VPATH := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD))
158 158
159 export srctree objtree VPATH TOPDIR 159 export srctree objtree VPATH TOPDIR
160 160
161 161
162 # SUBARCH tells the usermode build what the underlying arch is. That is set 162 # SUBARCH tells the usermode build what the underlying arch is. That is set
163 # first, and if a usermode build is happening, the "ARCH=um" on the command 163 # first, and if a usermode build is happening, the "ARCH=um" on the command
164 # line overrides the setting of ARCH below. If a native build is happening, 164 # line overrides the setting of ARCH below. If a native build is happening,
165 # then ARCH is assigned, getting whatever value it gets normally, and 165 # then ARCH is assigned, getting whatever value it gets normally, and
166 # SUBARCH is subsequently ignored. 166 # SUBARCH is subsequently ignored.
167 167
168 SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \ 168 SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
169 -e s/arm.*/arm/ -e s/sa110/arm/ \ 169 -e s/arm.*/arm/ -e s/sa110/arm/ \
170 -e s/s390x/s390/ -e s/parisc64/parisc/ \ 170 -e s/s390x/s390/ -e s/parisc64/parisc/ \
171 -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \ 171 -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
172 -e s/sh.*/sh/ ) 172 -e s/sh.*/sh/ )
173 173
174 # Cross compiling and selecting different set of gcc/bin-utils 174 # Cross compiling and selecting different set of gcc/bin-utils
175 # --------------------------------------------------------------------------- 175 # ---------------------------------------------------------------------------
176 # 176 #
177 # When performing cross compilation for other architectures ARCH shall be set 177 # When performing cross compilation for other architectures ARCH shall be set
178 # to the target architecture. (See arch/* for the possibilities). 178 # to the target architecture. (See arch/* for the possibilities).
179 # ARCH can be set during invocation of make: 179 # ARCH can be set during invocation of make:
180 # make ARCH=ia64 180 # make ARCH=ia64
181 # Another way is to have ARCH set in the environment. 181 # Another way is to have ARCH set in the environment.
182 # The default ARCH is the host where make is executed. 182 # The default ARCH is the host where make is executed.
183 183
184 # CROSS_COMPILE specify the prefix used for all executables used 184 # CROSS_COMPILE specify the prefix used for all executables used
185 # during compilation. Only gcc and related bin-utils executables 185 # during compilation. Only gcc and related bin-utils executables
186 # are prefixed with $(CROSS_COMPILE). 186 # are prefixed with $(CROSS_COMPILE).
187 # CROSS_COMPILE can be set on the command line 187 # CROSS_COMPILE can be set on the command line
188 # make CROSS_COMPILE=ia64-linux- 188 # make CROSS_COMPILE=ia64-linux-
189 # Alternatively CROSS_COMPILE can be set in the environment. 189 # Alternatively CROSS_COMPILE can be set in the environment.
190 # Default value for CROSS_COMPILE is not to prefix executables 190 # Default value for CROSS_COMPILE is not to prefix executables
191 # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile 191 # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
192 export KBUILD_BUILDHOST := $(SUBARCH) 192 export KBUILD_BUILDHOST := $(SUBARCH)
193 ARCH ?= $(SUBARCH) 193 ARCH ?= $(SUBARCH)
194 CROSS_COMPILE ?= 194 CROSS_COMPILE ?=
195 195
196 # Architecture as present in compile.h 196 # Architecture as present in compile.h
197 UTS_MACHINE := $(ARCH) 197 UTS_MACHINE := $(ARCH)
198 SRCARCH := $(ARCH) 198 SRCARCH := $(ARCH)
199 199
200 # Additional ARCH settings for x86 200 # Additional ARCH settings for x86
201 ifeq ($(ARCH),i386) 201 ifeq ($(ARCH),i386)
202 SRCARCH := x86 202 SRCARCH := x86
203 endif 203 endif
204 ifeq ($(ARCH),x86_64) 204 ifeq ($(ARCH),x86_64)
205 SRCARCH := x86 205 SRCARCH := x86
206 endif 206 endif
207 207
208 # Additional ARCH settings for sparc 208 # Additional ARCH settings for sparc
209 ifeq ($(ARCH),sparc64) 209 ifeq ($(ARCH),sparc64)
210 SRCARCH := sparc 210 SRCARCH := sparc
211 endif 211 endif
212 212
213 # Where to locate arch specific headers 213 # Where to locate arch specific headers
214 hdr-arch := $(SRCARCH) 214 hdr-arch := $(SRCARCH)
215 215
216 ifeq ($(ARCH),m68knommu) 216 ifeq ($(ARCH),m68knommu)
217 hdr-arch := m68k 217 hdr-arch := m68k
218 endif 218 endif
219 219
220 KCONFIG_CONFIG ?= .config 220 KCONFIG_CONFIG ?= .config
221 221
222 # SHELL used by kbuild 222 # SHELL used by kbuild
223 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ 223 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
224 else if [ -x /bin/bash ]; then echo /bin/bash; \ 224 else if [ -x /bin/bash ]; then echo /bin/bash; \
225 else echo sh; fi ; fi) 225 else echo sh; fi ; fi)
226 226
227 HOSTCC = gcc 227 HOSTCC = gcc
228 HOSTCXX = g++ 228 HOSTCXX = g++
229 HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer 229 HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
230 HOSTCXXFLAGS = -O2 230 HOSTCXXFLAGS = -O2
231 231
232 # Decide whether to build built-in, modular, or both. 232 # Decide whether to build built-in, modular, or both.
233 # Normally, just do built-in. 233 # Normally, just do built-in.
234 234
235 KBUILD_MODULES := 235 KBUILD_MODULES :=
236 KBUILD_BUILTIN := 1 236 KBUILD_BUILTIN := 1
237 237
238 # If we have only "make modules", don't compile built-in objects. 238 # If we have only "make modules", don't compile built-in objects.
239 # When we're building modules with modversions, we need to consider 239 # When we're building modules with modversions, we need to consider
240 # the built-in objects during the descend as well, in order to 240 # the built-in objects during the descend as well, in order to
241 # make sure the checksums are up to date before we record them. 241 # make sure the checksums are up to date before we record them.
242 242
243 ifeq ($(MAKECMDGOALS),modules) 243 ifeq ($(MAKECMDGOALS),modules)
244 KBUILD_BUILTIN := $(if $(CONFIG_MODVERSIONS),1) 244 KBUILD_BUILTIN := $(if $(CONFIG_MODVERSIONS),1)
245 endif 245 endif
246 246
247 # If we have "make <whatever> modules", compile modules 247 # If we have "make <whatever> modules", compile modules
248 # in addition to whatever we do anyway. 248 # in addition to whatever we do anyway.
249 # Just "make" or "make all" shall build modules as well 249 # Just "make" or "make all" shall build modules as well
250 250
251 ifneq ($(filter all _all modules,$(MAKECMDGOALS)),) 251 ifneq ($(filter all _all modules,$(MAKECMDGOALS)),)
252 KBUILD_MODULES := 1 252 KBUILD_MODULES := 1
253 endif 253 endif
254 254
255 ifeq ($(MAKECMDGOALS),) 255 ifeq ($(MAKECMDGOALS),)
256 KBUILD_MODULES := 1 256 KBUILD_MODULES := 1
257 endif 257 endif
258 258
259 export KBUILD_MODULES KBUILD_BUILTIN 259 export KBUILD_MODULES KBUILD_BUILTIN
260 export KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD 260 export KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD
261 261
262 # Beautify output 262 # Beautify output
263 # --------------------------------------------------------------------------- 263 # ---------------------------------------------------------------------------
264 # 264 #
265 # Normally, we echo the whole command before executing it. By making 265 # Normally, we echo the whole command before executing it. By making
266 # that echo $($(quiet)$(cmd)), we now have the possibility to set 266 # that echo $($(quiet)$(cmd)), we now have the possibility to set
267 # $(quiet) to choose other forms of output instead, e.g. 267 # $(quiet) to choose other forms of output instead, e.g.
268 # 268 #
269 # quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@ 269 # quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@
270 # cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $< 270 # cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<
271 # 271 #
272 # If $(quiet) is empty, the whole command will be printed. 272 # If $(quiet) is empty, the whole command will be printed.
273 # If it is set to "quiet_", only the short version will be printed. 273 # If it is set to "quiet_", only the short version will be printed.
274 # If it is set to "silent_", nothing will be printed at all, since 274 # If it is set to "silent_", nothing will be printed at all, since
275 # the variable $(silent_cmd_cc_o_c) doesn't exist. 275 # the variable $(silent_cmd_cc_o_c) doesn't exist.
276 # 276 #
277 # A simple variant is to prefix commands with $(Q) - that's useful 277 # A simple variant is to prefix commands with $(Q) - that's useful
278 # for commands that shall be hidden in non-verbose mode. 278 # for commands that shall be hidden in non-verbose mode.
279 # 279 #
280 # $(Q)ln $@ :< 280 # $(Q)ln $@ :<
281 # 281 #
282 # If KBUILD_VERBOSE equals 0 then the above command will be hidden. 282 # If KBUILD_VERBOSE equals 0 then the above command will be hidden.
283 # If KBUILD_VERBOSE equals 1 then the above command is displayed. 283 # If KBUILD_VERBOSE equals 1 then the above command is displayed.
284 284
285 ifeq ($(KBUILD_VERBOSE),1) 285 ifeq ($(KBUILD_VERBOSE),1)
286 quiet = 286 quiet =
287 Q = 287 Q =
288 else 288 else
289 quiet=quiet_ 289 quiet=quiet_
290 Q = @ 290 Q = @
291 endif 291 endif
292 292
293 # If the user is running make -s (silent mode), suppress echoing of 293 # If the user is running make -s (silent mode), suppress echoing of
294 # commands 294 # commands
295 295
296 ifneq ($(findstring s,$(MAKEFLAGS)),) 296 ifneq ($(findstring s,$(MAKEFLAGS)),)
297 quiet=silent_ 297 quiet=silent_
298 endif 298 endif
299 299
300 export quiet Q KBUILD_VERBOSE 300 export quiet Q KBUILD_VERBOSE
301 301
302 302
303 # Look for make include files relative to root of kernel src 303 # Look for make include files relative to root of kernel src
304 MAKEFLAGS += --include-dir=$(srctree) 304 MAKEFLAGS += --include-dir=$(srctree)
305 305
306 # We need some generic definitions (do not try to remake the file). 306 # We need some generic definitions (do not try to remake the file).
307 $(srctree)/scripts/Kbuild.include: ; 307 $(srctree)/scripts/Kbuild.include: ;
308 include $(srctree)/scripts/Kbuild.include 308 include $(srctree)/scripts/Kbuild.include
309 309
310 # Make variables (CC, etc...) 310 # Make variables (CC, etc...)
311 311
312 AS = $(CROSS_COMPILE)as 312 AS = $(CROSS_COMPILE)as
313 LD = $(CROSS_COMPILE)ld 313 LD = $(CROSS_COMPILE)ld
314 CC = $(CROSS_COMPILE)gcc 314 CC = $(CROSS_COMPILE)gcc
315 CPP = $(CC) -E 315 CPP = $(CC) -E
316 AR = $(CROSS_COMPILE)ar 316 AR = $(CROSS_COMPILE)ar
317 NM = $(CROSS_COMPILE)nm 317 NM = $(CROSS_COMPILE)nm
318 STRIP = $(CROSS_COMPILE)strip 318 STRIP = $(CROSS_COMPILE)strip
319 OBJCOPY = $(CROSS_COMPILE)objcopy 319 OBJCOPY = $(CROSS_COMPILE)objcopy
320 OBJDUMP = $(CROSS_COMPILE)objdump 320 OBJDUMP = $(CROSS_COMPILE)objdump
321 AWK = awk 321 AWK = awk
322 GENKSYMS = scripts/genksyms/genksyms 322 GENKSYMS = scripts/genksyms/genksyms
323 DEPMOD = /sbin/depmod 323 DEPMOD = /sbin/depmod
324 KALLSYMS = scripts/kallsyms 324 KALLSYMS = scripts/kallsyms
325 PERL = perl 325 PERL = perl
326 CHECK = sparse 326 CHECK = sparse
327 327
328 CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \ 328 CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
329 -Wbitwise -Wno-return-void $(CF) 329 -Wbitwise -Wno-return-void $(CF)
330 MODFLAGS = -DMODULE 330 MODFLAGS = -DMODULE
331 CFLAGS_MODULE = $(MODFLAGS) 331 CFLAGS_MODULE = $(MODFLAGS)
332 AFLAGS_MODULE = $(MODFLAGS) 332 AFLAGS_MODULE = $(MODFLAGS)
333 LDFLAGS_MODULE = 333 LDFLAGS_MODULE =
334 CFLAGS_KERNEL = 334 CFLAGS_KERNEL =
335 AFLAGS_KERNEL = 335 AFLAGS_KERNEL =
336 336
337 337
338 # Use LINUXINCLUDE when you must reference the include/ directory. 338 # Use LINUXINCLUDE when you must reference the include/ directory.
339 # Needed to be compatible with the O= option 339 # Needed to be compatible with the O= option
340 LINUXINCLUDE := -Iinclude \ 340 LINUXINCLUDE := -Iinclude \
341 $(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \ 341 $(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
342 -I$(srctree)/arch/$(hdr-arch)/include \ 342 -I$(srctree)/arch/$(hdr-arch)/include \
343 -include include/linux/autoconf.h 343 -include include/linux/autoconf.h
344 344
345 KBUILD_CPPFLAGS := -D__KERNEL__ 345 KBUILD_CPPFLAGS := -D__KERNEL__
346 346
347 KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ 347 KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
348 -fno-strict-aliasing -fno-common \ 348 -fno-strict-aliasing -fno-common \
349 -Werror-implicit-function-declaration 349 -Werror-implicit-function-declaration
350 KBUILD_AFLAGS := -D__ASSEMBLY__ 350 KBUILD_AFLAGS := -D__ASSEMBLY__
351 351
352 # Read KERNELRELEASE from include/config/kernel.release (if it exists) 352 # Read KERNELRELEASE from include/config/kernel.release (if it exists)
353 KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null) 353 KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
354 KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) 354 KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
355 355
356 export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION 356 export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION
357 export ARCH SRCARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC 357 export ARCH SRCARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC
358 export CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE 358 export CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE
359 export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS 359 export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
360 360
361 export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS 361 export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS
362 export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE 362 export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE
363 export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE 363 export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE
364 364
365 # When compiling out-of-tree modules, put MODVERDIR in the module 365 # When compiling out-of-tree modules, put MODVERDIR in the module
366 # tree rather than in the kernel tree. The kernel tree might 366 # tree rather than in the kernel tree. The kernel tree might
367 # even be read-only. 367 # even be read-only.
368 export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_versions 368 export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_versions
369 369
370 # Files to ignore in find ... statements 370 # Files to ignore in find ... statements
371 371
372 RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS -o -name .pc -o -name .hg -o -name .git \) -prune -o 372 RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS -o -name .pc -o -name .hg -o -name .git \) -prune -o
373 export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn --exclude CVS --exclude .pc --exclude .hg --exclude .git 373 export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn --exclude CVS --exclude .pc --exclude .hg --exclude .git
374 374
375 # =========================================================================== 375 # ===========================================================================
376 # Rules shared between *config targets and build targets 376 # Rules shared between *config targets and build targets
377 377
378 # Basic helpers built in scripts/ 378 # Basic helpers built in scripts/
379 PHONY += scripts_basic 379 PHONY += scripts_basic
380 scripts_basic: 380 scripts_basic:
381 $(Q)$(MAKE) $(build)=scripts/basic 381 $(Q)$(MAKE) $(build)=scripts/basic
382 382
383 # To avoid any implicit rule to kick in, define an empty command. 383 # To avoid any implicit rule to kick in, define an empty command.
384 scripts/basic/%: scripts_basic ; 384 scripts/basic/%: scripts_basic ;
385 385
386 PHONY += outputmakefile 386 PHONY += outputmakefile
387 # outputmakefile generates a Makefile in the output directory, if using a 387 # outputmakefile generates a Makefile in the output directory, if using a
388 # separate output directory. This allows convenient use of make in the 388 # separate output directory. This allows convenient use of make in the
389 # output directory. 389 # output directory.
390 outputmakefile: 390 outputmakefile:
391 ifneq ($(KBUILD_SRC),) 391 ifneq ($(KBUILD_SRC),)
392 $(Q)ln -fsn $(srctree) source 392 $(Q)ln -fsn $(srctree) source
393 $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile \ 393 $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile \
394 $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL) 394 $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL)
395 endif 395 endif
396 396
397 # To make sure we do not include .config for any of the *config targets 397 # To make sure we do not include .config for any of the *config targets
398 # catch them early, and hand them over to scripts/kconfig/Makefile 398 # catch them early, and hand them over to scripts/kconfig/Makefile
399 # It is allowed to specify more targets when calling make, including 399 # It is allowed to specify more targets when calling make, including
400 # mixing *config targets and build targets. 400 # mixing *config targets and build targets.
401 # For example 'make oldconfig all'. 401 # For example 'make oldconfig all'.
402 # Detect when mixed targets is specified, and make a second invocation 402 # Detect when mixed targets is specified, and make a second invocation
403 # of make so .config is not included in this case either (for *config). 403 # of make so .config is not included in this case either (for *config).
404 404
405 no-dot-config-targets := clean mrproper distclean \ 405 no-dot-config-targets := clean mrproper distclean \
406 cscope TAGS tags help %docs check% \ 406 cscope TAGS tags help %docs check% \
407 include/linux/version.h headers_% \ 407 include/linux/version.h headers_% \
408 kernelrelease kernelversion 408 kernelrelease kernelversion
409 409
410 config-targets := 0 410 config-targets := 0
411 mixed-targets := 0 411 mixed-targets := 0
412 dot-config := 1 412 dot-config := 1
413 413
414 ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),) 414 ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
415 ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),) 415 ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
416 dot-config := 0 416 dot-config := 0
417 endif 417 endif
418 endif 418 endif
419 419
420 ifeq ($(KBUILD_EXTMOD),) 420 ifeq ($(KBUILD_EXTMOD),)
421 ifneq ($(filter config %config,$(MAKECMDGOALS)),) 421 ifneq ($(filter config %config,$(MAKECMDGOALS)),)
422 config-targets := 1 422 config-targets := 1
423 ifneq ($(filter-out config %config,$(MAKECMDGOALS)),) 423 ifneq ($(filter-out config %config,$(MAKECMDGOALS)),)
424 mixed-targets := 1 424 mixed-targets := 1
425 endif 425 endif
426 endif 426 endif
427 endif 427 endif
428 428
429 ifeq ($(mixed-targets),1) 429 ifeq ($(mixed-targets),1)
430 # =========================================================================== 430 # ===========================================================================
431 # We're called with mixed targets (*config and build targets). 431 # We're called with mixed targets (*config and build targets).
432 # Handle them one by one. 432 # Handle them one by one.
433 433
434 %:: FORCE 434 %:: FORCE
435 $(Q)$(MAKE) -C $(srctree) KBUILD_SRC= $@ 435 $(Q)$(MAKE) -C $(srctree) KBUILD_SRC= $@
436 436
437 else 437 else
438 ifeq ($(config-targets),1) 438 ifeq ($(config-targets),1)
439 # =========================================================================== 439 # ===========================================================================
440 # *config targets only - make sure prerequisites are updated, and descend 440 # *config targets only - make sure prerequisites are updated, and descend
441 # in scripts/kconfig to make the *config target 441 # in scripts/kconfig to make the *config target
442 442
443 # Read arch specific Makefile to set KBUILD_DEFCONFIG as needed. 443 # Read arch specific Makefile to set KBUILD_DEFCONFIG as needed.
444 # KBUILD_DEFCONFIG may point out an alternative default configuration 444 # KBUILD_DEFCONFIG may point out an alternative default configuration
445 # used for 'make defconfig' 445 # used for 'make defconfig'
446 include $(srctree)/arch/$(SRCARCH)/Makefile 446 include $(srctree)/arch/$(SRCARCH)/Makefile
447 export KBUILD_DEFCONFIG KBUILD_KCONFIG 447 export KBUILD_DEFCONFIG KBUILD_KCONFIG
448 448
449 config: scripts_basic outputmakefile FORCE 449 config: scripts_basic outputmakefile FORCE
450 $(Q)mkdir -p include/linux include/config 450 $(Q)mkdir -p include/linux include/config
451 $(Q)$(MAKE) $(build)=scripts/kconfig $@ 451 $(Q)$(MAKE) $(build)=scripts/kconfig $@
452 452
453 %config: scripts_basic outputmakefile FORCE 453 %config: scripts_basic outputmakefile FORCE
454 $(Q)mkdir -p include/linux include/config 454 $(Q)mkdir -p include/linux include/config
455 $(Q)$(MAKE) $(build)=scripts/kconfig $@ 455 $(Q)$(MAKE) $(build)=scripts/kconfig $@
456 456
457 else 457 else
458 # =========================================================================== 458 # ===========================================================================
459 # Build targets only - this includes vmlinux, arch specific targets, clean 459 # Build targets only - this includes vmlinux, arch specific targets, clean
460 # targets and others. In general all targets except *config targets. 460 # targets and others. In general all targets except *config targets.
461 461
462 ifeq ($(KBUILD_EXTMOD),) 462 ifeq ($(KBUILD_EXTMOD),)
463 # Additional helpers built in scripts/ 463 # Additional helpers built in scripts/
464 # Carefully list dependencies so we do not try to build scripts twice 464 # Carefully list dependencies so we do not try to build scripts twice
465 # in parallel 465 # in parallel
466 PHONY += scripts 466 PHONY += scripts
467 scripts: scripts_basic include/config/auto.conf 467 scripts: scripts_basic include/config/auto.conf
468 $(Q)$(MAKE) $(build)=$(@) 468 $(Q)$(MAKE) $(build)=$(@)
469 469
470 # Objects we will link into vmlinux / subdirs we need to visit 470 # Objects we will link into vmlinux / subdirs we need to visit
471 init-y := init/ 471 init-y := init/
472 drivers-y := drivers/ sound/ firmware/ 472 drivers-y := drivers/ sound/ firmware/
473 net-y := net/ 473 net-y := net/
474 libs-y := lib/ 474 libs-y := lib/
475 core-y := usr/ 475 core-y := usr/
476 endif # KBUILD_EXTMOD 476 endif # KBUILD_EXTMOD
477 477
478 ifeq ($(dot-config),1) 478 ifeq ($(dot-config),1)
479 # Read in config 479 # Read in config
480 -include include/config/auto.conf 480 -include include/config/auto.conf
481 481
482 ifeq ($(KBUILD_EXTMOD),) 482 ifeq ($(KBUILD_EXTMOD),)
483 # Read in dependencies to all Kconfig* files, make sure to run 483 # Read in dependencies to all Kconfig* files, make sure to run
484 # oldconfig if changes are detected. 484 # oldconfig if changes are detected.
485 -include include/config/auto.conf.cmd 485 -include include/config/auto.conf.cmd
486 486
487 # To avoid any implicit rule to kick in, define an empty command 487 # To avoid any implicit rule to kick in, define an empty command
488 $(KCONFIG_CONFIG) include/config/auto.conf.cmd: ; 488 $(KCONFIG_CONFIG) include/config/auto.conf.cmd: ;
489 489
490 # If .config is newer than include/config/auto.conf, someone tinkered 490 # If .config is newer than include/config/auto.conf, someone tinkered
491 # with it and forgot to run make oldconfig. 491 # with it and forgot to run make oldconfig.
492 # if auto.conf.cmd is missing then we are probably in a cleaned tree so 492 # if auto.conf.cmd is missing then we are probably in a cleaned tree so
493 # we execute the config step to be sure to catch updated Kconfig files 493 # we execute the config step to be sure to catch updated Kconfig files
494 include/config/auto.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd 494 include/config/auto.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd
495 $(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig 495 $(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig
496 else 496 else
497 # external modules needs include/linux/autoconf.h and include/config/auto.conf 497 # external modules needs include/linux/autoconf.h and include/config/auto.conf
498 # but do not care if they are up-to-date. Use auto.conf to trigger the test 498 # but do not care if they are up-to-date. Use auto.conf to trigger the test
499 PHONY += include/config/auto.conf 499 PHONY += include/config/auto.conf
500 500
501 include/config/auto.conf: 501 include/config/auto.conf:
502 $(Q)test -e include/linux/autoconf.h -a -e $@ || ( \ 502 $(Q)test -e include/linux/autoconf.h -a -e $@ || ( \
503 echo; \ 503 echo; \
504 echo " ERROR: Kernel configuration is invalid."; \ 504 echo " ERROR: Kernel configuration is invalid."; \
505 echo " include/linux/autoconf.h or $@ are missing."; \ 505 echo " include/linux/autoconf.h or $@ are missing."; \
506 echo " Run 'make oldconfig && make prepare' on kernel src to fix it."; \ 506 echo " Run 'make oldconfig && make prepare' on kernel src to fix it."; \
507 echo; \ 507 echo; \
508 /bin/false) 508 /bin/false)
509 509
510 endif # KBUILD_EXTMOD 510 endif # KBUILD_EXTMOD
511 511
512 else 512 else
513 # Dummy target needed, because used as prerequisite 513 # Dummy target needed, because used as prerequisite
514 include/config/auto.conf: ; 514 include/config/auto.conf: ;
515 endif # $(dot-config) 515 endif # $(dot-config)
516 516
517 # The all: target is the default when no target is given on the 517 # The all: target is the default when no target is given on the
518 # command line. 518 # command line.
519 # This allow a user to issue only 'make' to build a kernel including modules 519 # This allow a user to issue only 'make' to build a kernel including modules
520 # Defaults vmlinux but it is usually overridden in the arch makefile 520 # Defaults vmlinux but it is usually overridden in the arch makefile
521 all: vmlinux 521 all: vmlinux
522 522
523 ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE 523 ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
524 KBUILD_CFLAGS += -Os 524 KBUILD_CFLAGS += -Os
525 else 525 else
526 KBUILD_CFLAGS += -O2 526 KBUILD_CFLAGS += -O2
527 endif 527 endif
528 528
529 include $(srctree)/arch/$(SRCARCH)/Makefile 529 include $(srctree)/arch/$(SRCARCH)/Makefile
530 530
531 ifneq (CONFIG_FRAME_WARN,0) 531 ifneq (CONFIG_FRAME_WARN,0)
532 KBUILD_CFLAGS += $(call cc-option,-Wframe-larger-than=${CONFIG_FRAME_WARN}) 532 KBUILD_CFLAGS += $(call cc-option,-Wframe-larger-than=${CONFIG_FRAME_WARN})
533 endif 533 endif
534 534
535 # Force gcc to behave correct even for buggy distributions 535 # Force gcc to behave correct even for buggy distributions
536 # Arch Makefiles may override this setting 536 # Arch Makefiles may override this setting
537 KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector) 537 KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector)
538 538
539 ifdef CONFIG_FRAME_POINTER 539 ifdef CONFIG_FRAME_POINTER
540 KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls 540 KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
541 else 541 else
542 KBUILD_CFLAGS += -fomit-frame-pointer 542 KBUILD_CFLAGS += -fomit-frame-pointer
543 endif 543 endif
544 544
545 ifdef CONFIG_DEBUG_INFO 545 ifdef CONFIG_DEBUG_INFO
546 KBUILD_CFLAGS += -g 546 KBUILD_CFLAGS += -g
547 KBUILD_AFLAGS += -gdwarf-2 547 KBUILD_AFLAGS += -gdwarf-2
548 endif 548 endif
549 549
550 ifdef CONFIG_FUNCTION_TRACER 550 ifdef CONFIG_FUNCTION_TRACER
551 KBUILD_CFLAGS += -pg 551 KBUILD_CFLAGS += -pg
552 endif 552 endif
553 553
554 # We trigger additional mismatches with less inlining 554 # We trigger additional mismatches with less inlining
555 ifdef CONFIG_DEBUG_SECTION_MISMATCH 555 ifdef CONFIG_DEBUG_SECTION_MISMATCH
556 KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions-called-once) 556 KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions-called-once)
557 endif 557 endif
558 558
559 # arch Makefile may override CC so keep this after arch Makefile is included 559 # arch Makefile may override CC so keep this after arch Makefile is included
560 NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) 560 NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
561 CHECKFLAGS += $(NOSTDINC_FLAGS) 561 CHECKFLAGS += $(NOSTDINC_FLAGS)
562 562
563 # warn about C99 declaration after statement 563 # warn about C99 declaration after statement
564 KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement,) 564 KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
565 565
566 # disable pointer signed / unsigned warnings in gcc 4.0 566 # disable pointer signed / unsigned warnings in gcc 4.0
567 KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,) 567 KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,)
568 568
569 # disable invalid "can't wrap" optimzations for signed / pointers 569 # disable invalid "can't wrap" optimzations for signed / pointers
570 KBUILD_CFLAGS += $(call cc-option,-fwrapv) 570 KBUILD_CFLAGS += $(call cc-option,-fwrapv)
571 571
572 # revert to pre-gcc-4.4 behaviour of .eh_frame
573 KBUILD_CFLAGS += $(call cc-option,-fno-dwarf2-cfi-asm)
574
572 # Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments 575 # Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments
573 # But warn user when we do so 576 # But warn user when we do so
574 warn-assign = \ 577 warn-assign = \
575 $(warning "WARNING: Appending $$K$(1) ($(K$(1))) from $(origin K$(1)) to kernel $$$(1)") 578 $(warning "WARNING: Appending $$K$(1) ($(K$(1))) from $(origin K$(1)) to kernel $$$(1)")
576 579
577 ifneq ($(KCPPFLAGS),) 580 ifneq ($(KCPPFLAGS),)
578 $(call warn-assign,CPPFLAGS) 581 $(call warn-assign,CPPFLAGS)
579 KBUILD_CPPFLAGS += $(KCPPFLAGS) 582 KBUILD_CPPFLAGS += $(KCPPFLAGS)
580 endif 583 endif
581 ifneq ($(KAFLAGS),) 584 ifneq ($(KAFLAGS),)
582 $(call warn-assign,AFLAGS) 585 $(call warn-assign,AFLAGS)
583 KBUILD_AFLAGS += $(KAFLAGS) 586 KBUILD_AFLAGS += $(KAFLAGS)
584 endif 587 endif
585 ifneq ($(KCFLAGS),) 588 ifneq ($(KCFLAGS),)
586 $(call warn-assign,CFLAGS) 589 $(call warn-assign,CFLAGS)
587 KBUILD_CFLAGS += $(KCFLAGS) 590 KBUILD_CFLAGS += $(KCFLAGS)
588 endif 591 endif
589 592
590 # Use --build-id when available. 593 # Use --build-id when available.
591 LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\ 594 LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
592 $(call ld-option, -Wl$(comma)--build-id,)) 595 $(call ld-option, -Wl$(comma)--build-id,))
593 LDFLAGS_MODULE += $(LDFLAGS_BUILD_ID) 596 LDFLAGS_MODULE += $(LDFLAGS_BUILD_ID)
594 LDFLAGS_vmlinux += $(LDFLAGS_BUILD_ID) 597 LDFLAGS_vmlinux += $(LDFLAGS_BUILD_ID)
595 598
596 # Default kernel image to build when no specific target is given. 599 # Default kernel image to build when no specific target is given.
597 # KBUILD_IMAGE may be overruled on the command line or 600 # KBUILD_IMAGE may be overruled on the command line or
598 # set in the environment 601 # set in the environment
599 # Also any assignments in arch/$(ARCH)/Makefile take precedence over 602 # Also any assignments in arch/$(ARCH)/Makefile take precedence over
600 # this default value 603 # this default value
601 export KBUILD_IMAGE ?= vmlinux 604 export KBUILD_IMAGE ?= vmlinux
602 605
603 # 606 #
604 # INSTALL_PATH specifies where to place the updated kernel and system map 607 # INSTALL_PATH specifies where to place the updated kernel and system map
605 # images. Default is /boot, but you can set it to other values 608 # images. Default is /boot, but you can set it to other values
606 export INSTALL_PATH ?= /boot 609 export INSTALL_PATH ?= /boot
607 610
608 # 611 #
609 # INSTALL_MOD_PATH specifies a prefix to MODLIB for module directory 612 # INSTALL_MOD_PATH specifies a prefix to MODLIB for module directory
610 # relocations required by build roots. This is not defined in the 613 # relocations required by build roots. This is not defined in the
611 # makefile but the argument can be passed to make if needed. 614 # makefile but the argument can be passed to make if needed.
612 # 615 #
613 616
614 MODLIB = $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE) 617 MODLIB = $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
615 export MODLIB 618 export MODLIB
616 619
617 # 620 #
618 # INSTALL_MOD_STRIP, if defined, will cause modules to be 621 # INSTALL_MOD_STRIP, if defined, will cause modules to be
619 # stripped after they are installed. If INSTALL_MOD_STRIP is '1', then 622 # stripped after they are installed. If INSTALL_MOD_STRIP is '1', then
620 # the default option --strip-debug will be used. Otherwise, 623 # the default option --strip-debug will be used. Otherwise,
621 # INSTALL_MOD_STRIP will used as the options to the strip command. 624 # INSTALL_MOD_STRIP will used as the options to the strip command.
622 625
623 ifdef INSTALL_MOD_STRIP 626 ifdef INSTALL_MOD_STRIP
624 ifeq ($(INSTALL_MOD_STRIP),1) 627 ifeq ($(INSTALL_MOD_STRIP),1)
625 mod_strip_cmd = $(STRIP) --strip-debug 628 mod_strip_cmd = $(STRIP) --strip-debug
626 else 629 else
627 mod_strip_cmd = $(STRIP) $(INSTALL_MOD_STRIP) 630 mod_strip_cmd = $(STRIP) $(INSTALL_MOD_STRIP)
628 endif # INSTALL_MOD_STRIP=1 631 endif # INSTALL_MOD_STRIP=1
629 else 632 else
630 mod_strip_cmd = true 633 mod_strip_cmd = true
631 endif # INSTALL_MOD_STRIP 634 endif # INSTALL_MOD_STRIP
632 export mod_strip_cmd 635 export mod_strip_cmd
633 636
634 637
635 ifeq ($(KBUILD_EXTMOD),) 638 ifeq ($(KBUILD_EXTMOD),)
636 core-y += kernel/ mm/ fs/ ipc/ security/ crypto/ block/ 639 core-y += kernel/ mm/ fs/ ipc/ security/ crypto/ block/
637 640
638 vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \ 641 vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
639 $(core-y) $(core-m) $(drivers-y) $(drivers-m) \ 642 $(core-y) $(core-m) $(drivers-y) $(drivers-m) \
640 $(net-y) $(net-m) $(libs-y) $(libs-m))) 643 $(net-y) $(net-m) $(libs-y) $(libs-m)))
641 644
642 vmlinux-alldirs := $(sort $(vmlinux-dirs) $(patsubst %/,%,$(filter %/, \ 645 vmlinux-alldirs := $(sort $(vmlinux-dirs) $(patsubst %/,%,$(filter %/, \
643 $(init-n) $(init-) \ 646 $(init-n) $(init-) \
644 $(core-n) $(core-) $(drivers-n) $(drivers-) \ 647 $(core-n) $(core-) $(drivers-n) $(drivers-) \
645 $(net-n) $(net-) $(libs-n) $(libs-)))) 648 $(net-n) $(net-) $(libs-n) $(libs-))))
646 649
647 init-y := $(patsubst %/, %/built-in.o, $(init-y)) 650 init-y := $(patsubst %/, %/built-in.o, $(init-y))
648 core-y := $(patsubst %/, %/built-in.o, $(core-y)) 651 core-y := $(patsubst %/, %/built-in.o, $(core-y))
649 drivers-y := $(patsubst %/, %/built-in.o, $(drivers-y)) 652 drivers-y := $(patsubst %/, %/built-in.o, $(drivers-y))
650 net-y := $(patsubst %/, %/built-in.o, $(net-y)) 653 net-y := $(patsubst %/, %/built-in.o, $(net-y))
651 libs-y1 := $(patsubst %/, %/lib.a, $(libs-y)) 654 libs-y1 := $(patsubst %/, %/lib.a, $(libs-y))
652 libs-y2 := $(patsubst %/, %/built-in.o, $(libs-y)) 655 libs-y2 := $(patsubst %/, %/built-in.o, $(libs-y))
653 libs-y := $(libs-y1) $(libs-y2) 656 libs-y := $(libs-y1) $(libs-y2)
654 657
655 # Build vmlinux 658 # Build vmlinux
656 # --------------------------------------------------------------------------- 659 # ---------------------------------------------------------------------------
657 # vmlinux is built from the objects selected by $(vmlinux-init) and 660 # vmlinux is built from the objects selected by $(vmlinux-init) and
658 # $(vmlinux-main). Most are built-in.o files from top-level directories 661 # $(vmlinux-main). Most are built-in.o files from top-level directories
659 # in the kernel tree, others are specified in arch/$(ARCH)/Makefile. 662 # in the kernel tree, others are specified in arch/$(ARCH)/Makefile.
660 # Ordering when linking is important, and $(vmlinux-init) must be first. 663 # Ordering when linking is important, and $(vmlinux-init) must be first.
661 # 664 #
662 # vmlinux 665 # vmlinux
663 # ^ 666 # ^
664 # | 667 # |
665 # +-< $(vmlinux-init) 668 # +-< $(vmlinux-init)
666 # | +--< init/version.o + more 669 # | +--< init/version.o + more
667 # | 670 # |
668 # +--< $(vmlinux-main) 671 # +--< $(vmlinux-main)
669 # | +--< driver/built-in.o mm/built-in.o + more 672 # | +--< driver/built-in.o mm/built-in.o + more
670 # | 673 # |
671 # +-< kallsyms.o (see description in CONFIG_KALLSYMS section) 674 # +-< kallsyms.o (see description in CONFIG_KALLSYMS section)
672 # 675 #
673 # vmlinux version (uname -v) cannot be updated during normal 676 # vmlinux version (uname -v) cannot be updated during normal
674 # descending-into-subdirs phase since we do not yet know if we need to 677 # descending-into-subdirs phase since we do not yet know if we need to
675 # update vmlinux. 678 # update vmlinux.
676 # Therefore this step is delayed until just before final link of vmlinux - 679 # Therefore this step is delayed until just before final link of vmlinux -
677 # except in the kallsyms case where it is done just before adding the 680 # except in the kallsyms case where it is done just before adding the
678 # symbols to the kernel. 681 # symbols to the kernel.
679 # 682 #
680 # System.map is generated to document addresses of all kernel symbols 683 # System.map is generated to document addresses of all kernel symbols
681 684
682 vmlinux-init := $(head-y) $(init-y) 685 vmlinux-init := $(head-y) $(init-y)
683 vmlinux-main := $(core-y) $(libs-y) $(drivers-y) $(net-y) 686 vmlinux-main := $(core-y) $(libs-y) $(drivers-y) $(net-y)
684 vmlinux-all := $(vmlinux-init) $(vmlinux-main) 687 vmlinux-all := $(vmlinux-init) $(vmlinux-main)
685 vmlinux-lds := arch/$(SRCARCH)/kernel/vmlinux.lds 688 vmlinux-lds := arch/$(SRCARCH)/kernel/vmlinux.lds
686 export KBUILD_VMLINUX_OBJS := $(vmlinux-all) 689 export KBUILD_VMLINUX_OBJS := $(vmlinux-all)
687 690
688 # Rule to link vmlinux - also used during CONFIG_KALLSYMS 691 # Rule to link vmlinux - also used during CONFIG_KALLSYMS
689 # May be overridden by arch/$(ARCH)/Makefile 692 # May be overridden by arch/$(ARCH)/Makefile
690 quiet_cmd_vmlinux__ ?= LD $@ 693 quiet_cmd_vmlinux__ ?= LD $@
691 cmd_vmlinux__ ?= $(LD) $(LDFLAGS) $(LDFLAGS_vmlinux) -o $@ \ 694 cmd_vmlinux__ ?= $(LD) $(LDFLAGS) $(LDFLAGS_vmlinux) -o $@ \
692 -T $(vmlinux-lds) $(vmlinux-init) \ 695 -T $(vmlinux-lds) $(vmlinux-init) \
693 --start-group $(vmlinux-main) --end-group \ 696 --start-group $(vmlinux-main) --end-group \
694 $(filter-out $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) vmlinux.o FORCE ,$^) 697 $(filter-out $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) vmlinux.o FORCE ,$^)
695 698
696 # Generate new vmlinux version 699 # Generate new vmlinux version
697 quiet_cmd_vmlinux_version = GEN .version 700 quiet_cmd_vmlinux_version = GEN .version
698 cmd_vmlinux_version = set -e; \ 701 cmd_vmlinux_version = set -e; \
699 if [ ! -r .version ]; then \ 702 if [ ! -r .version ]; then \
700 rm -f .version; \ 703 rm -f .version; \
701 echo 1 >.version; \ 704 echo 1 >.version; \
702 else \ 705 else \
703 mv .version .old_version; \ 706 mv .version .old_version; \
704 expr 0$$(cat .old_version) + 1 >.version; \ 707 expr 0$$(cat .old_version) + 1 >.version; \
705 fi; \ 708 fi; \
706 $(MAKE) $(build)=init 709 $(MAKE) $(build)=init
707 710
708 # Generate System.map 711 # Generate System.map
709 quiet_cmd_sysmap = SYSMAP 712 quiet_cmd_sysmap = SYSMAP
710 cmd_sysmap = $(CONFIG_SHELL) $(srctree)/scripts/mksysmap 713 cmd_sysmap = $(CONFIG_SHELL) $(srctree)/scripts/mksysmap
711 714
712 # Link of vmlinux 715 # Link of vmlinux
713 # If CONFIG_KALLSYMS is set .version is already updated 716 # If CONFIG_KALLSYMS is set .version is already updated
714 # Generate System.map and verify that the content is consistent 717 # Generate System.map and verify that the content is consistent
715 # Use + in front of the vmlinux_version rule to silent warning with make -j2 718 # Use + in front of the vmlinux_version rule to silent warning with make -j2
716 # First command is ':' to allow us to use + in front of the rule 719 # First command is ':' to allow us to use + in front of the rule
717 define rule_vmlinux__ 720 define rule_vmlinux__
718 : 721 :
719 $(if $(CONFIG_KALLSYMS),,+$(call cmd,vmlinux_version)) 722 $(if $(CONFIG_KALLSYMS),,+$(call cmd,vmlinux_version))
720 723
721 $(call cmd,vmlinux__) 724 $(call cmd,vmlinux__)
722 $(Q)echo 'cmd_$@ := $(cmd_vmlinux__)' > $(@D)/.$(@F).cmd 725 $(Q)echo 'cmd_$@ := $(cmd_vmlinux__)' > $(@D)/.$(@F).cmd
723 726
724 $(Q)$(if $($(quiet)cmd_sysmap), \ 727 $(Q)$(if $($(quiet)cmd_sysmap), \
725 echo ' $($(quiet)cmd_sysmap) System.map' &&) \ 728 echo ' $($(quiet)cmd_sysmap) System.map' &&) \
726 $(cmd_sysmap) $@ System.map; \ 729 $(cmd_sysmap) $@ System.map; \
727 if [ $$? -ne 0 ]; then \ 730 if [ $$? -ne 0 ]; then \
728 rm -f $@; \ 731 rm -f $@; \
729 /bin/false; \ 732 /bin/false; \
730 fi; 733 fi;
731 $(verify_kallsyms) 734 $(verify_kallsyms)
732 endef 735 endef
733 736
734 737
735 ifdef CONFIG_KALLSYMS 738 ifdef CONFIG_KALLSYMS
736 # Generate section listing all symbols and add it into vmlinux $(kallsyms.o) 739 # Generate section listing all symbols and add it into vmlinux $(kallsyms.o)
737 # It's a three stage process: 740 # It's a three stage process:
738 # o .tmp_vmlinux1 has all symbols and sections, but __kallsyms is 741 # o .tmp_vmlinux1 has all symbols and sections, but __kallsyms is
739 # empty 742 # empty
740 # Running kallsyms on that gives us .tmp_kallsyms1.o with 743 # Running kallsyms on that gives us .tmp_kallsyms1.o with
741 # the right size - vmlinux version (uname -v) is updated during this step 744 # the right size - vmlinux version (uname -v) is updated during this step
742 # o .tmp_vmlinux2 now has a __kallsyms section of the right size, 745 # o .tmp_vmlinux2 now has a __kallsyms section of the right size,
743 # but due to the added section, some addresses have shifted. 746 # but due to the added section, some addresses have shifted.
744 # From here, we generate a correct .tmp_kallsyms2.o 747 # From here, we generate a correct .tmp_kallsyms2.o
745 # o The correct .tmp_kallsyms2.o is linked into the final vmlinux. 748 # o The correct .tmp_kallsyms2.o is linked into the final vmlinux.
746 # o Verify that the System.map from vmlinux matches the map from 749 # o Verify that the System.map from vmlinux matches the map from
747 # .tmp_vmlinux2, just in case we did not generate kallsyms correctly. 750 # .tmp_vmlinux2, just in case we did not generate kallsyms correctly.
748 # o If CONFIG_KALLSYMS_EXTRA_PASS is set, do an extra pass using 751 # o If CONFIG_KALLSYMS_EXTRA_PASS is set, do an extra pass using
749 # .tmp_vmlinux3 and .tmp_kallsyms3.o. This is only meant as a 752 # .tmp_vmlinux3 and .tmp_kallsyms3.o. This is only meant as a
750 # temporary bypass to allow the kernel to be built while the 753 # temporary bypass to allow the kernel to be built while the
751 # maintainers work out what went wrong with kallsyms. 754 # maintainers work out what went wrong with kallsyms.
752 755
753 ifdef CONFIG_KALLSYMS_EXTRA_PASS 756 ifdef CONFIG_KALLSYMS_EXTRA_PASS
754 last_kallsyms := 3 757 last_kallsyms := 3
755 else 758 else
756 last_kallsyms := 2 759 last_kallsyms := 2
757 endif 760 endif
758 761
759 kallsyms.o := .tmp_kallsyms$(last_kallsyms).o 762 kallsyms.o := .tmp_kallsyms$(last_kallsyms).o
760 763
761 define verify_kallsyms 764 define verify_kallsyms
762 $(Q)$(if $($(quiet)cmd_sysmap), \ 765 $(Q)$(if $($(quiet)cmd_sysmap), \
763 echo ' $($(quiet)cmd_sysmap) .tmp_System.map' &&) \ 766 echo ' $($(quiet)cmd_sysmap) .tmp_System.map' &&) \
764 $(cmd_sysmap) .tmp_vmlinux$(last_kallsyms) .tmp_System.map 767 $(cmd_sysmap) .tmp_vmlinux$(last_kallsyms) .tmp_System.map
765 $(Q)cmp -s System.map .tmp_System.map || \ 768 $(Q)cmp -s System.map .tmp_System.map || \
766 (echo Inconsistent kallsyms data; \ 769 (echo Inconsistent kallsyms data; \
767 echo Try setting CONFIG_KALLSYMS_EXTRA_PASS; \ 770 echo Try setting CONFIG_KALLSYMS_EXTRA_PASS; \
768 rm .tmp_kallsyms* ; /bin/false ) 771 rm .tmp_kallsyms* ; /bin/false )
769 endef 772 endef
770 773
771 # Update vmlinux version before link 774 # Update vmlinux version before link
772 # Use + in front of this rule to silent warning about make -j1 775 # Use + in front of this rule to silent warning about make -j1
773 # First command is ':' to allow us to use + in front of this rule 776 # First command is ':' to allow us to use + in front of this rule
774 cmd_ksym_ld = $(cmd_vmlinux__) 777 cmd_ksym_ld = $(cmd_vmlinux__)
775 define rule_ksym_ld 778 define rule_ksym_ld
776 : 779 :
777 +$(call cmd,vmlinux_version) 780 +$(call cmd,vmlinux_version)
778 $(call cmd,vmlinux__) 781 $(call cmd,vmlinux__)
779 $(Q)echo 'cmd_$@ := $(cmd_vmlinux__)' > $(@D)/.$(@F).cmd 782 $(Q)echo 'cmd_$@ := $(cmd_vmlinux__)' > $(@D)/.$(@F).cmd
780 endef 783 endef
781 784
782 # Generate .S file with all kernel symbols 785 # Generate .S file with all kernel symbols
783 quiet_cmd_kallsyms = KSYM $@ 786 quiet_cmd_kallsyms = KSYM $@
784 cmd_kallsyms = $(NM) -n $< | $(KALLSYMS) \ 787 cmd_kallsyms = $(NM) -n $< | $(KALLSYMS) \
785 $(if $(CONFIG_KALLSYMS_ALL),--all-symbols) > $@ 788 $(if $(CONFIG_KALLSYMS_ALL),--all-symbols) > $@
786 789
787 .tmp_kallsyms1.o .tmp_kallsyms2.o .tmp_kallsyms3.o: %.o: %.S scripts FORCE 790 .tmp_kallsyms1.o .tmp_kallsyms2.o .tmp_kallsyms3.o: %.o: %.S scripts FORCE
788 $(call if_changed_dep,as_o_S) 791 $(call if_changed_dep,as_o_S)
789 792
790 .tmp_kallsyms%.S: .tmp_vmlinux% $(KALLSYMS) 793 .tmp_kallsyms%.S: .tmp_vmlinux% $(KALLSYMS)
791 $(call cmd,kallsyms) 794 $(call cmd,kallsyms)
792 795
793 # .tmp_vmlinux1 must be complete except kallsyms, so update vmlinux version 796 # .tmp_vmlinux1 must be complete except kallsyms, so update vmlinux version
794 .tmp_vmlinux1: $(vmlinux-lds) $(vmlinux-all) FORCE 797 .tmp_vmlinux1: $(vmlinux-lds) $(vmlinux-all) FORCE
795 $(call if_changed_rule,ksym_ld) 798 $(call if_changed_rule,ksym_ld)
796 799
797 .tmp_vmlinux2: $(vmlinux-lds) $(vmlinux-all) .tmp_kallsyms1.o FORCE 800 .tmp_vmlinux2: $(vmlinux-lds) $(vmlinux-all) .tmp_kallsyms1.o FORCE
798 $(call if_changed,vmlinux__) 801 $(call if_changed,vmlinux__)
799 802
800 .tmp_vmlinux3: $(vmlinux-lds) $(vmlinux-all) .tmp_kallsyms2.o FORCE 803 .tmp_vmlinux3: $(vmlinux-lds) $(vmlinux-all) .tmp_kallsyms2.o FORCE
801 $(call if_changed,vmlinux__) 804 $(call if_changed,vmlinux__)
802 805
803 # Needs to visit scripts/ before $(KALLSYMS) can be used. 806 # Needs to visit scripts/ before $(KALLSYMS) can be used.
804 $(KALLSYMS): scripts ; 807 $(KALLSYMS): scripts ;
805 808
806 # Generate some data for debugging strange kallsyms problems 809 # Generate some data for debugging strange kallsyms problems
807 debug_kallsyms: .tmp_map$(last_kallsyms) 810 debug_kallsyms: .tmp_map$(last_kallsyms)
808 811
809 .tmp_map%: .tmp_vmlinux% FORCE 812 .tmp_map%: .tmp_vmlinux% FORCE
810 ($(OBJDUMP) -h $< | $(AWK) '/^ +[0-9]/{print $$4 " 0 " $$2}'; $(NM) $<) | sort > $@ 813 ($(OBJDUMP) -h $< | $(AWK) '/^ +[0-9]/{print $$4 " 0 " $$2}'; $(NM) $<) | sort > $@
811 814
812 .tmp_map3: .tmp_map2 815 .tmp_map3: .tmp_map2
813 816
814 .tmp_map2: .tmp_map1 817 .tmp_map2: .tmp_map1
815 818
816 endif # ifdef CONFIG_KALLSYMS 819 endif # ifdef CONFIG_KALLSYMS
817 820
818 # Do modpost on a prelinked vmlinux. The finally linked vmlinux has 821 # Do modpost on a prelinked vmlinux. The finally linked vmlinux has
819 # relevant sections renamed as per the linker script. 822 # relevant sections renamed as per the linker script.
820 quiet_cmd_vmlinux-modpost = LD $@ 823 quiet_cmd_vmlinux-modpost = LD $@
821 cmd_vmlinux-modpost = $(LD) $(LDFLAGS) -r -o $@ \ 824 cmd_vmlinux-modpost = $(LD) $(LDFLAGS) -r -o $@ \
822 $(vmlinux-init) --start-group $(vmlinux-main) --end-group \ 825 $(vmlinux-init) --start-group $(vmlinux-main) --end-group \
823 $(filter-out $(vmlinux-init) $(vmlinux-main) FORCE ,$^) 826 $(filter-out $(vmlinux-init) $(vmlinux-main) FORCE ,$^)
824 define rule_vmlinux-modpost 827 define rule_vmlinux-modpost
825 : 828 :
826 +$(call cmd,vmlinux-modpost) 829 +$(call cmd,vmlinux-modpost)
827 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost $@ 830 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost $@
828 $(Q)echo 'cmd_$@ := $(cmd_vmlinux-modpost)' > $(dot-target).cmd 831 $(Q)echo 'cmd_$@ := $(cmd_vmlinux-modpost)' > $(dot-target).cmd
829 endef 832 endef
830 833
831 # vmlinux image - including updated kernel symbols 834 # vmlinux image - including updated kernel symbols
832 vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) vmlinux.o $(kallsyms.o) FORCE 835 vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) vmlinux.o $(kallsyms.o) FORCE
833 ifdef CONFIG_HEADERS_CHECK 836 ifdef CONFIG_HEADERS_CHECK
834 $(Q)$(MAKE) -f $(srctree)/Makefile headers_check 837 $(Q)$(MAKE) -f $(srctree)/Makefile headers_check
835 endif 838 endif
836 ifdef CONFIG_SAMPLES 839 ifdef CONFIG_SAMPLES
837 $(Q)$(MAKE) $(build)=samples 840 $(Q)$(MAKE) $(build)=samples
838 endif 841 endif
839 ifdef CONFIG_BUILD_DOCSRC 842 ifdef CONFIG_BUILD_DOCSRC
840 $(Q)$(MAKE) $(build)=Documentation 843 $(Q)$(MAKE) $(build)=Documentation
841 endif 844 endif
842 $(call vmlinux-modpost) 845 $(call vmlinux-modpost)
843 $(call if_changed_rule,vmlinux__) 846 $(call if_changed_rule,vmlinux__)
844 $(Q)rm -f .old_version 847 $(Q)rm -f .old_version
845 848
846 # build vmlinux.o first to catch section mismatch errors early 849 # build vmlinux.o first to catch section mismatch errors early
847 ifdef CONFIG_KALLSYMS 850 ifdef CONFIG_KALLSYMS
848 .tmp_vmlinux1: vmlinux.o 851 .tmp_vmlinux1: vmlinux.o
849 endif 852 endif
850 853
851 modpost-init := $(filter-out init/built-in.o, $(vmlinux-init)) 854 modpost-init := $(filter-out init/built-in.o, $(vmlinux-init))
852 vmlinux.o: $(modpost-init) $(vmlinux-main) FORCE 855 vmlinux.o: $(modpost-init) $(vmlinux-main) FORCE
853 $(call if_changed_rule,vmlinux-modpost) 856 $(call if_changed_rule,vmlinux-modpost)
854 857
855 # The actual objects are generated when descending, 858 # The actual objects are generated when descending,
856 # make sure no implicit rule kicks in 859 # make sure no implicit rule kicks in
857 $(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ; 860 $(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ;
858 861
859 # Handle descending into subdirectories listed in $(vmlinux-dirs) 862 # Handle descending into subdirectories listed in $(vmlinux-dirs)
860 # Preset locale variables to speed up the build process. Limit locale 863 # Preset locale variables to speed up the build process. Limit locale
861 # tweaks to this spot to avoid wrong language settings when running 864 # tweaks to this spot to avoid wrong language settings when running
862 # make menuconfig etc. 865 # make menuconfig etc.
863 # Error messages still appears in the original language 866 # Error messages still appears in the original language
864 867
865 PHONY += $(vmlinux-dirs) 868 PHONY += $(vmlinux-dirs)
866 $(vmlinux-dirs): prepare scripts 869 $(vmlinux-dirs): prepare scripts
867 $(Q)$(MAKE) $(build)=$@ 870 $(Q)$(MAKE) $(build)=$@
868 871
869 # Build the kernel release string 872 # Build the kernel release string
870 # 873 #
871 # The KERNELRELEASE value built here is stored in the file 874 # The KERNELRELEASE value built here is stored in the file
872 # include/config/kernel.release, and is used when executing several 875 # include/config/kernel.release, and is used when executing several
873 # make targets, such as "make install" or "make modules_install." 876 # make targets, such as "make install" or "make modules_install."
874 # 877 #
875 # The eventual kernel release string consists of the following fields, 878 # The eventual kernel release string consists of the following fields,
876 # shown in a hierarchical format to show how smaller parts are concatenated 879 # shown in a hierarchical format to show how smaller parts are concatenated
877 # to form the larger and final value, with values coming from places like 880 # to form the larger and final value, with values coming from places like
878 # the Makefile, kernel config options, make command line options and/or 881 # the Makefile, kernel config options, make command line options and/or
879 # SCM tag information. 882 # SCM tag information.
880 # 883 #
881 # $(KERNELVERSION) 884 # $(KERNELVERSION)
882 # $(VERSION) eg, 2 885 # $(VERSION) eg, 2
883 # $(PATCHLEVEL) eg, 6 886 # $(PATCHLEVEL) eg, 6
884 # $(SUBLEVEL) eg, 18 887 # $(SUBLEVEL) eg, 18
885 # $(EXTRAVERSION) eg, -rc6 888 # $(EXTRAVERSION) eg, -rc6
886 # $(localver-full) 889 # $(localver-full)
887 # $(localver) 890 # $(localver)
888 # localversion* (files without backups, containing '~') 891 # localversion* (files without backups, containing '~')
889 # $(CONFIG_LOCALVERSION) (from kernel config setting) 892 # $(CONFIG_LOCALVERSION) (from kernel config setting)
890 # $(localver-auto) (only if CONFIG_LOCALVERSION_AUTO is set) 893 # $(localver-auto) (only if CONFIG_LOCALVERSION_AUTO is set)
891 # ./scripts/setlocalversion (SCM tag, if one exists) 894 # ./scripts/setlocalversion (SCM tag, if one exists)
892 # $(LOCALVERSION) (from make command line if provided) 895 # $(LOCALVERSION) (from make command line if provided)
893 # 896 #
894 # Note how the final $(localver-auto) string is included *only* if the 897 # Note how the final $(localver-auto) string is included *only* if the
895 # kernel config option CONFIG_LOCALVERSION_AUTO is selected. Also, at the 898 # kernel config option CONFIG_LOCALVERSION_AUTO is selected. Also, at the
896 # moment, only git is supported but other SCMs can edit the script 899 # moment, only git is supported but other SCMs can edit the script
897 # scripts/setlocalversion and add the appropriate checks as needed. 900 # scripts/setlocalversion and add the appropriate checks as needed.
898 901
899 pattern = ".*/localversion[^~]*" 902 pattern = ".*/localversion[^~]*"
900 string = $(shell cat /dev/null \ 903 string = $(shell cat /dev/null \
901 `find $(objtree) $(srctree) -maxdepth 1 -regex $(pattern) | sort -u`) 904 `find $(objtree) $(srctree) -maxdepth 1 -regex $(pattern) | sort -u`)
902 905
903 localver = $(subst $(space),, $(string) \ 906 localver = $(subst $(space),, $(string) \
904 $(patsubst "%",%,$(CONFIG_LOCALVERSION))) 907 $(patsubst "%",%,$(CONFIG_LOCALVERSION)))
905 908
906 # If CONFIG_LOCALVERSION_AUTO is set scripts/setlocalversion is called 909 # If CONFIG_LOCALVERSION_AUTO is set scripts/setlocalversion is called
907 # and if the SCM is know a tag from the SCM is appended. 910 # and if the SCM is know a tag from the SCM is appended.
908 # The appended tag is determined by the SCM used. 911 # The appended tag is determined by the SCM used.
909 # 912 #
910 # .scmversion is used when generating rpm packages so we do not loose 913 # .scmversion is used when generating rpm packages so we do not loose
911 # the version information from the SCM when we do the build of the kernel 914 # the version information from the SCM when we do the build of the kernel
912 # from the copied source 915 # from the copied source
913 ifdef CONFIG_LOCALVERSION_AUTO 916 ifdef CONFIG_LOCALVERSION_AUTO
914 917
915 ifeq ($(wildcard .scmversion),) 918 ifeq ($(wildcard .scmversion),)
916 _localver-auto = $(shell $(CONFIG_SHELL) \ 919 _localver-auto = $(shell $(CONFIG_SHELL) \
917 $(srctree)/scripts/setlocalversion $(srctree)) 920 $(srctree)/scripts/setlocalversion $(srctree))
918 else 921 else
919 _localver-auto = $(shell cat .scmversion 2> /dev/null) 922 _localver-auto = $(shell cat .scmversion 2> /dev/null)
920 endif 923 endif
921 924
922 localver-auto = $(LOCALVERSION)$(_localver-auto) 925 localver-auto = $(LOCALVERSION)$(_localver-auto)
923 endif 926 endif
924 927
925 localver-full = $(localver)$(localver-auto) 928 localver-full = $(localver)$(localver-auto)
926 929
927 # Store (new) KERNELRELASE string in include/config/kernel.release 930 # Store (new) KERNELRELASE string in include/config/kernel.release
928 kernelrelease = $(KERNELVERSION)$(localver-full) 931 kernelrelease = $(KERNELVERSION)$(localver-full)
929 include/config/kernel.release: include/config/auto.conf FORCE 932 include/config/kernel.release: include/config/auto.conf FORCE
930 $(Q)rm -f $@ 933 $(Q)rm -f $@
931 $(Q)echo $(kernelrelease) > $@ 934 $(Q)echo $(kernelrelease) > $@
932 935
933 936
934 # Things we need to do before we recursively start building the kernel 937 # Things we need to do before we recursively start building the kernel
935 # or the modules are listed in "prepare". 938 # or the modules are listed in "prepare".
936 # A multi level approach is used. prepareN is processed before prepareN-1. 939 # A multi level approach is used. prepareN is processed before prepareN-1.
937 # archprepare is used in arch Makefiles and when processed asm symlink, 940 # archprepare is used in arch Makefiles and when processed asm symlink,
938 # version.h and scripts_basic is processed / created. 941 # version.h and scripts_basic is processed / created.
939 942
940 # Listed in dependency order 943 # Listed in dependency order
941 PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3 944 PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3
942 945
943 # prepare3 is used to check if we are building in a separate output directory, 946 # prepare3 is used to check if we are building in a separate output directory,
944 # and if so do: 947 # and if so do:
945 # 1) Check that make has not been executed in the kernel src $(srctree) 948 # 1) Check that make has not been executed in the kernel src $(srctree)
946 # 2) Create the include2 directory, used for the second asm symlink 949 # 2) Create the include2 directory, used for the second asm symlink
947 prepare3: include/config/kernel.release 950 prepare3: include/config/kernel.release
948 ifneq ($(KBUILD_SRC),) 951 ifneq ($(KBUILD_SRC),)
949 @$(kecho) ' Using $(srctree) as source for kernel' 952 @$(kecho) ' Using $(srctree) as source for kernel'
950 $(Q)if [ -f $(srctree)/.config -o -d $(srctree)/include/config ]; then \ 953 $(Q)if [ -f $(srctree)/.config -o -d $(srctree)/include/config ]; then \
951 echo " $(srctree) is not clean, please run 'make mrproper'";\ 954 echo " $(srctree) is not clean, please run 'make mrproper'";\
952 echo " in the '$(srctree)' directory.";\ 955 echo " in the '$(srctree)' directory.";\
953 /bin/false; \ 956 /bin/false; \
954 fi; 957 fi;
955 $(Q)if [ ! -d include2 ]; then \ 958 $(Q)if [ ! -d include2 ]; then \
956 mkdir -p include2; \ 959 mkdir -p include2; \
957 ln -fsn $(srctree)/include/asm-$(SRCARCH) include2/asm; \ 960 ln -fsn $(srctree)/include/asm-$(SRCARCH) include2/asm; \
958 fi 961 fi
959 endif 962 endif
960 963
961 # prepare2 creates a makefile if using a separate output directory 964 # prepare2 creates a makefile if using a separate output directory
962 prepare2: prepare3 outputmakefile 965 prepare2: prepare3 outputmakefile
963 966
964 prepare1: prepare2 include/linux/version.h include/linux/utsrelease.h \ 967 prepare1: prepare2 include/linux/version.h include/linux/utsrelease.h \
965 include/asm include/config/auto.conf 968 include/asm include/config/auto.conf
966 $(cmd_crmodverdir) 969 $(cmd_crmodverdir)
967 970
968 archprepare: prepare1 scripts_basic 971 archprepare: prepare1 scripts_basic
969 972
970 prepare0: archprepare FORCE 973 prepare0: archprepare FORCE
971 $(Q)$(MAKE) $(build)=. 974 $(Q)$(MAKE) $(build)=.
972 $(Q)$(MAKE) $(build)=. missing-syscalls 975 $(Q)$(MAKE) $(build)=. missing-syscalls
973 976
974 # All the preparing.. 977 # All the preparing..
975 prepare: prepare0 978 prepare: prepare0
976 979
977 # Leave this as default for preprocessing vmlinux.lds.S, which is now 980 # Leave this as default for preprocessing vmlinux.lds.S, which is now
978 # done in arch/$(ARCH)/kernel/Makefile 981 # done in arch/$(ARCH)/kernel/Makefile
979 982
980 export CPPFLAGS_vmlinux.lds += -P -C -U$(ARCH) 983 export CPPFLAGS_vmlinux.lds += -P -C -U$(ARCH)
981 984
982 # The asm symlink changes when $(ARCH) changes. 985 # The asm symlink changes when $(ARCH) changes.
983 # Detect this and ask user to run make mrproper 986 # Detect this and ask user to run make mrproper
984 # If asm is a stale symlink (point to dir that does not exist) remove it 987 # If asm is a stale symlink (point to dir that does not exist) remove it
985 define check-symlink 988 define check-symlink
986 set -e; \ 989 set -e; \
987 if [ -L include/asm ]; then \ 990 if [ -L include/asm ]; then \
988 asmlink=`readlink include/asm | cut -d '-' -f 2`; \ 991 asmlink=`readlink include/asm | cut -d '-' -f 2`; \
989 if [ "$$asmlink" != "$(SRCARCH)" ]; then \ 992 if [ "$$asmlink" != "$(SRCARCH)" ]; then \
990 echo "ERROR: the symlink $@ points to asm-$$asmlink but asm-$(SRCARCH) was expected"; \ 993 echo "ERROR: the symlink $@ points to asm-$$asmlink but asm-$(SRCARCH) was expected"; \
991 echo " set ARCH or save .config and run 'make mrproper' to fix it"; \ 994 echo " set ARCH or save .config and run 'make mrproper' to fix it"; \
992 exit 1; \ 995 exit 1; \
993 fi; \ 996 fi; \
994 test -e $$asmlink || rm include/asm; \ 997 test -e $$asmlink || rm include/asm; \
995 elif [ -d include/asm ]; then \ 998 elif [ -d include/asm ]; then \
996 echo "ERROR: $@ is a directory but a symlink was expected";\ 999 echo "ERROR: $@ is a directory but a symlink was expected";\
997 exit 1; \ 1000 exit 1; \
998 fi 1001 fi
999 endef 1002 endef
1000 1003
1001 # We create the target directory of the symlink if it does 1004 # We create the target directory of the symlink if it does
1002 # not exist so the test in check-symlink works and we have a 1005 # not exist so the test in check-symlink works and we have a
1003 # directory for generated filesas used by some architectures. 1006 # directory for generated filesas used by some architectures.
1004 define create-symlink 1007 define create-symlink
1005 if [ ! -L include/asm ]; then \ 1008 if [ ! -L include/asm ]; then \
1006 $(kecho) ' SYMLINK $@ -> include/asm-$(SRCARCH)'; \ 1009 $(kecho) ' SYMLINK $@ -> include/asm-$(SRCARCH)'; \
1007 if [ ! -d include/asm-$(SRCARCH) ]; then \ 1010 if [ ! -d include/asm-$(SRCARCH) ]; then \
1008 mkdir -p include/asm-$(SRCARCH); \ 1011 mkdir -p include/asm-$(SRCARCH); \
1009 fi; \ 1012 fi; \
1010 ln -fsn asm-$(SRCARCH) $@; \ 1013 ln -fsn asm-$(SRCARCH) $@; \
1011 fi 1014 fi
1012 endef 1015 endef
1013 1016
1014 include/asm: FORCE 1017 include/asm: FORCE
1015 $(Q)$(check-symlink) 1018 $(Q)$(check-symlink)
1016 $(Q)$(create-symlink) 1019 $(Q)$(create-symlink)
1017 1020
1018 # Generate some files 1021 # Generate some files
1019 # --------------------------------------------------------------------------- 1022 # ---------------------------------------------------------------------------
1020 1023
1021 # KERNELRELEASE can change from a few different places, meaning version.h 1024 # KERNELRELEASE can change from a few different places, meaning version.h
1022 # needs to be updated, so this check is forced on all builds 1025 # needs to be updated, so this check is forced on all builds
1023 1026
1024 uts_len := 64 1027 uts_len := 64
1025 define filechk_utsrelease.h 1028 define filechk_utsrelease.h
1026 if [ `echo -n "$(KERNELRELEASE)" | wc -c ` -gt $(uts_len) ]; then \ 1029 if [ `echo -n "$(KERNELRELEASE)" | wc -c ` -gt $(uts_len) ]; then \
1027 echo '"$(KERNELRELEASE)" exceeds $(uts_len) characters' >&2; \ 1030 echo '"$(KERNELRELEASE)" exceeds $(uts_len) characters' >&2; \
1028 exit 1; \ 1031 exit 1; \
1029 fi; \ 1032 fi; \
1030 (echo \#define UTS_RELEASE \"$(KERNELRELEASE)\";) 1033 (echo \#define UTS_RELEASE \"$(KERNELRELEASE)\";)
1031 endef 1034 endef
1032 1035
1033 define filechk_version.h 1036 define filechk_version.h
1034 (echo \#define LINUX_VERSION_CODE $(shell \ 1037 (echo \#define LINUX_VERSION_CODE $(shell \
1035 expr $(VERSION) \* 65536 + $(PATCHLEVEL) \* 256 + $(SUBLEVEL)); \ 1038 expr $(VERSION) \* 65536 + $(PATCHLEVEL) \* 256 + $(SUBLEVEL)); \
1036 echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))';) 1039 echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))';)
1037 endef 1040 endef
1038 1041
1039 include/linux/version.h: $(srctree)/Makefile FORCE 1042 include/linux/version.h: $(srctree)/Makefile FORCE
1040 $(call filechk,version.h) 1043 $(call filechk,version.h)
1041 1044
1042 include/linux/utsrelease.h: include/config/kernel.release FORCE 1045 include/linux/utsrelease.h: include/config/kernel.release FORCE
1043 $(call filechk,utsrelease.h) 1046 $(call filechk,utsrelease.h)
1044 1047
1045 PHONY += headerdep 1048 PHONY += headerdep
1046 headerdep: 1049 headerdep:
1047 $(Q)find include/ -name '*.h' | xargs --max-args 1 scripts/headerdep.pl 1050 $(Q)find include/ -name '*.h' | xargs --max-args 1 scripts/headerdep.pl
1048 1051
1049 # --------------------------------------------------------------------------- 1052 # ---------------------------------------------------------------------------
1050 1053
1051 PHONY += depend dep 1054 PHONY += depend dep
1052 depend dep: 1055 depend dep:
1053 @echo '*** Warning: make $@ is unnecessary now.' 1056 @echo '*** Warning: make $@ is unnecessary now.'
1054 1057
1055 # --------------------------------------------------------------------------- 1058 # ---------------------------------------------------------------------------
1056 # Firmware install 1059 # Firmware install
1057 INSTALL_FW_PATH=$(INSTALL_MOD_PATH)/lib/firmware 1060 INSTALL_FW_PATH=$(INSTALL_MOD_PATH)/lib/firmware
1058 export INSTALL_FW_PATH 1061 export INSTALL_FW_PATH
1059 1062
1060 PHONY += firmware_install 1063 PHONY += firmware_install
1061 firmware_install: FORCE 1064 firmware_install: FORCE
1062 @mkdir -p $(objtree)/firmware 1065 @mkdir -p $(objtree)/firmware
1063 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_install 1066 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_install
1064 1067
1065 # --------------------------------------------------------------------------- 1068 # ---------------------------------------------------------------------------
1066 # Kernel headers 1069 # Kernel headers
1067 1070
1068 #Default location for installed headers 1071 #Default location for installed headers
1069 export INSTALL_HDR_PATH = $(objtree)/usr 1072 export INSTALL_HDR_PATH = $(objtree)/usr
1070 1073
1071 hdr-inst := -rR -f $(srctree)/scripts/Makefile.headersinst obj 1074 hdr-inst := -rR -f $(srctree)/scripts/Makefile.headersinst obj
1072 # Find out where the Kbuild file is located to support 1075 # Find out where the Kbuild file is located to support
1073 # arch/$(ARCH)/include/asm 1076 # arch/$(ARCH)/include/asm
1074 hdr-dir = $(strip \ 1077 hdr-dir = $(strip \
1075 $(if $(wildcard $(srctree)/arch/$(hdr-arch)/include/asm/Kbuild), \ 1078 $(if $(wildcard $(srctree)/arch/$(hdr-arch)/include/asm/Kbuild), \
1076 arch/$(hdr-arch)/include/asm, include/asm-$(hdr-arch))) 1079 arch/$(hdr-arch)/include/asm, include/asm-$(hdr-arch)))
1077 1080
1078 # If we do an all arch process set dst to asm-$(hdr-arch) 1081 # If we do an all arch process set dst to asm-$(hdr-arch)
1079 hdr-dst = $(if $(KBUILD_HEADERS), dst=include/asm-$(hdr-arch), dst=include/asm) 1082 hdr-dst = $(if $(KBUILD_HEADERS), dst=include/asm-$(hdr-arch), dst=include/asm)
1080 1083
1081 PHONY += __headers 1084 PHONY += __headers
1082 __headers: include/linux/version.h scripts_basic FORCE 1085 __headers: include/linux/version.h scripts_basic FORCE
1083 $(Q)$(MAKE) $(build)=scripts scripts/unifdef 1086 $(Q)$(MAKE) $(build)=scripts scripts/unifdef
1084 1087
1085 PHONY += headers_install_all 1088 PHONY += headers_install_all
1086 headers_install_all: 1089 headers_install_all:
1087 $(Q)$(CONFIG_SHELL) $(srctree)/scripts/headers.sh install 1090 $(Q)$(CONFIG_SHELL) $(srctree)/scripts/headers.sh install
1088 1091
1089 PHONY += headers_install 1092 PHONY += headers_install
1090 headers_install: __headers 1093 headers_install: __headers
1091 $(if $(wildcard $(srctree)/$(hdr-dir)/Kbuild),, \ 1094 $(if $(wildcard $(srctree)/$(hdr-dir)/Kbuild),, \
1092 $(error Headers not exportable for the $(SRCARCH) architecture)) 1095 $(error Headers not exportable for the $(SRCARCH) architecture))
1093 $(Q)$(MAKE) $(hdr-inst)=include 1096 $(Q)$(MAKE) $(hdr-inst)=include
1094 $(Q)$(MAKE) $(hdr-inst)=$(hdr-dir) $(hdr-dst) 1097 $(Q)$(MAKE) $(hdr-inst)=$(hdr-dir) $(hdr-dst)
1095 1098
1096 PHONY += headers_check_all 1099 PHONY += headers_check_all
1097 headers_check_all: headers_install_all 1100 headers_check_all: headers_install_all
1098 $(Q)$(CONFIG_SHELL) $(srctree)/scripts/headers.sh check 1101 $(Q)$(CONFIG_SHELL) $(srctree)/scripts/headers.sh check
1099 1102
1100 PHONY += headers_check 1103 PHONY += headers_check
1101 headers_check: headers_install 1104 headers_check: headers_install
1102 $(Q)$(MAKE) $(hdr-inst)=include HDRCHECK=1 1105 $(Q)$(MAKE) $(hdr-inst)=include HDRCHECK=1
1103 $(Q)$(MAKE) $(hdr-inst)=$(hdr-dir) $(hdr-dst) HDRCHECK=1 1106 $(Q)$(MAKE) $(hdr-inst)=$(hdr-dir) $(hdr-dst) HDRCHECK=1
1104 1107
1105 # --------------------------------------------------------------------------- 1108 # ---------------------------------------------------------------------------
1106 # Modules 1109 # Modules
1107 1110
1108 ifdef CONFIG_MODULES 1111 ifdef CONFIG_MODULES
1109 1112
1110 # By default, build modules as well 1113 # By default, build modules as well
1111 1114
1112 all: modules 1115 all: modules
1113 1116
1114 # Build modules 1117 # Build modules
1115 # 1118 #
1116 # A module can be listed more than once in obj-m resulting in 1119 # A module can be listed more than once in obj-m resulting in
1117 # duplicate lines in modules.order files. Those are removed 1120 # duplicate lines in modules.order files. Those are removed
1118 # using awk while concatenating to the final file. 1121 # using awk while concatenating to the final file.
1119 1122
1120 PHONY += modules 1123 PHONY += modules
1121 modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) 1124 modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux)
1122 $(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order 1125 $(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
1123 @$(kecho) ' Building modules, stage 2.'; 1126 @$(kecho) ' Building modules, stage 2.';
1124 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost 1127 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
1125 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modbuild 1128 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modbuild
1126 1129
1127 1130
1128 # Target to prepare building external modules 1131 # Target to prepare building external modules
1129 PHONY += modules_prepare 1132 PHONY += modules_prepare
1130 modules_prepare: prepare scripts 1133 modules_prepare: prepare scripts
1131 1134
1132 # Target to install modules 1135 # Target to install modules
1133 PHONY += modules_install 1136 PHONY += modules_install
1134 modules_install: _modinst_ _modinst_post 1137 modules_install: _modinst_ _modinst_post
1135 1138
1136 PHONY += _modinst_ 1139 PHONY += _modinst_
1137 _modinst_: 1140 _modinst_:
1138 @if [ -z "`$(DEPMOD) -V 2>/dev/null | grep module-init-tools`" ]; then \ 1141 @if [ -z "`$(DEPMOD) -V 2>/dev/null | grep module-init-tools`" ]; then \
1139 echo "Warning: you may need to install module-init-tools"; \ 1142 echo "Warning: you may need to install module-init-tools"; \
1140 echo "See http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt";\ 1143 echo "See http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt";\
1141 sleep 1; \ 1144 sleep 1; \
1142 fi 1145 fi
1143 @rm -rf $(MODLIB)/kernel 1146 @rm -rf $(MODLIB)/kernel
1144 @rm -f $(MODLIB)/source 1147 @rm -f $(MODLIB)/source
1145 @mkdir -p $(MODLIB)/kernel 1148 @mkdir -p $(MODLIB)/kernel
1146 @ln -s $(srctree) $(MODLIB)/source 1149 @ln -s $(srctree) $(MODLIB)/source
1147 @if [ ! $(objtree) -ef $(MODLIB)/build ]; then \ 1150 @if [ ! $(objtree) -ef $(MODLIB)/build ]; then \
1148 rm -f $(MODLIB)/build ; \ 1151 rm -f $(MODLIB)/build ; \
1149 ln -s $(objtree) $(MODLIB)/build ; \ 1152 ln -s $(objtree) $(MODLIB)/build ; \
1150 fi 1153 fi
1151 @cp -f $(objtree)/modules.order $(MODLIB)/ 1154 @cp -f $(objtree)/modules.order $(MODLIB)/
1152 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst 1155 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
1153 1156
1154 # This depmod is only for convenience to give the initial 1157 # This depmod is only for convenience to give the initial
1155 # boot a modules.dep even before / is mounted read-write. However the 1158 # boot a modules.dep even before / is mounted read-write. However the
1156 # boot script depmod is the master version. 1159 # boot script depmod is the master version.
1157 PHONY += _modinst_post 1160 PHONY += _modinst_post
1158 _modinst_post: _modinst_ 1161 _modinst_post: _modinst_
1159 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modinst 1162 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modinst
1160 $(call cmd,depmod) 1163 $(call cmd,depmod)
1161 1164
1162 else # CONFIG_MODULES 1165 else # CONFIG_MODULES
1163 1166
1164 # Modules not configured 1167 # Modules not configured
1165 # --------------------------------------------------------------------------- 1168 # ---------------------------------------------------------------------------
1166 1169
1167 modules modules_install: FORCE 1170 modules modules_install: FORCE
1168 @echo 1171 @echo
1169 @echo "The present kernel configuration has modules disabled." 1172 @echo "The present kernel configuration has modules disabled."
1170 @echo "Type 'make config' and enable loadable module support." 1173 @echo "Type 'make config' and enable loadable module support."
1171 @echo "Then build a kernel with module support enabled." 1174 @echo "Then build a kernel with module support enabled."
1172 @echo 1175 @echo
1173 @exit 1 1176 @exit 1
1174 1177
1175 endif # CONFIG_MODULES 1178 endif # CONFIG_MODULES
1176 1179
1177 ### 1180 ###
1178 # Cleaning is done on three levels. 1181 # Cleaning is done on three levels.
1179 # make clean Delete most generated files 1182 # make clean Delete most generated files
1180 # Leave enough to build external modules 1183 # Leave enough to build external modules
1181 # make mrproper Delete the current configuration, and all generated files 1184 # make mrproper Delete the current configuration, and all generated files
1182 # make distclean Remove editor backup files, patch leftover files and the like 1185 # make distclean Remove editor backup files, patch leftover files and the like
1183 1186
1184 # Directories & files removed with 'make clean' 1187 # Directories & files removed with 'make clean'
1185 CLEAN_DIRS += $(MODVERDIR) 1188 CLEAN_DIRS += $(MODVERDIR)
1186 CLEAN_FILES += vmlinux System.map \ 1189 CLEAN_FILES += vmlinux System.map \
1187 .tmp_kallsyms* .tmp_version .tmp_vmlinux* .tmp_System.map 1190 .tmp_kallsyms* .tmp_version .tmp_vmlinux* .tmp_System.map
1188 1191
1189 # Directories & files removed with 'make mrproper' 1192 # Directories & files removed with 'make mrproper'
1190 MRPROPER_DIRS += include/config include2 usr/include 1193 MRPROPER_DIRS += include/config include2 usr/include
1191 MRPROPER_FILES += .config .config.old include/asm .version .old_version \ 1194 MRPROPER_FILES += .config .config.old include/asm .version .old_version \
1192 include/linux/autoconf.h include/linux/version.h \ 1195 include/linux/autoconf.h include/linux/version.h \
1193 include/linux/utsrelease.h \ 1196 include/linux/utsrelease.h \
1194 include/linux/bounds.h include/asm*/asm-offsets.h \ 1197 include/linux/bounds.h include/asm*/asm-offsets.h \
1195 Module.symvers Module.markers tags TAGS cscope* 1198 Module.symvers Module.markers tags TAGS cscope*
1196 1199
1197 # clean - Delete most, but leave enough to build external modules 1200 # clean - Delete most, but leave enough to build external modules
1198 # 1201 #
1199 clean: rm-dirs := $(CLEAN_DIRS) 1202 clean: rm-dirs := $(CLEAN_DIRS)
1200 clean: rm-files := $(CLEAN_FILES) 1203 clean: rm-files := $(CLEAN_FILES)
1201 clean-dirs := $(addprefix _clean_,$(srctree) $(vmlinux-alldirs) Documentation) 1204 clean-dirs := $(addprefix _clean_,$(srctree) $(vmlinux-alldirs) Documentation)
1202 1205
1203 PHONY += $(clean-dirs) clean archclean 1206 PHONY += $(clean-dirs) clean archclean
1204 $(clean-dirs): 1207 $(clean-dirs):
1205 $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@) 1208 $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@)
1206 1209
1207 clean: archclean $(clean-dirs) 1210 clean: archclean $(clean-dirs)
1208 $(call cmd,rmdirs) 1211 $(call cmd,rmdirs)
1209 $(call cmd,rmfiles) 1212 $(call cmd,rmfiles)
1210 @find . $(RCS_FIND_IGNORE) \ 1213 @find . $(RCS_FIND_IGNORE) \
1211 \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \ 1214 \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
1212 -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \ 1215 -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
1213 -o -name '*.symtypes' -o -name 'modules.order' \ 1216 -o -name '*.symtypes' -o -name 'modules.order' \
1214 -o -name 'Module.markers' -o -name '.tmp_*.o.*' \) \ 1217 -o -name 'Module.markers' -o -name '.tmp_*.o.*' \) \
1215 -type f -print | xargs rm -f 1218 -type f -print | xargs rm -f
1216 1219
1217 # mrproper - Delete all generated files, including .config 1220 # mrproper - Delete all generated files, including .config
1218 # 1221 #
1219 mrproper: rm-dirs := $(wildcard $(MRPROPER_DIRS)) 1222 mrproper: rm-dirs := $(wildcard $(MRPROPER_DIRS))
1220 mrproper: rm-files := $(wildcard $(MRPROPER_FILES)) 1223 mrproper: rm-files := $(wildcard $(MRPROPER_FILES))
1221 mrproper-dirs := $(addprefix _mrproper_,Documentation/DocBook scripts) 1224 mrproper-dirs := $(addprefix _mrproper_,Documentation/DocBook scripts)
1222 1225
1223 PHONY += $(mrproper-dirs) mrproper archmrproper 1226 PHONY += $(mrproper-dirs) mrproper archmrproper
1224 $(mrproper-dirs): 1227 $(mrproper-dirs):
1225 $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@) 1228 $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@)
1226 1229
1227 mrproper: clean archmrproper $(mrproper-dirs) 1230 mrproper: clean archmrproper $(mrproper-dirs)
1228 $(call cmd,rmdirs) 1231 $(call cmd,rmdirs)
1229 $(call cmd,rmfiles) 1232 $(call cmd,rmfiles)
1230 1233
1231 # distclean 1234 # distclean
1232 # 1235 #
1233 PHONY += distclean 1236 PHONY += distclean
1234 1237
1235 distclean: mrproper 1238 distclean: mrproper
1236 @find $(srctree) $(RCS_FIND_IGNORE) \ 1239 @find $(srctree) $(RCS_FIND_IGNORE) \
1237 \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ 1240 \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
1238 -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ 1241 -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
1239 -o -name '.*.rej' -o -size 0 \ 1242 -o -name '.*.rej' -o -size 0 \
1240 -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \ 1243 -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \
1241 -type f -print | xargs rm -f 1244 -type f -print | xargs rm -f
1242 1245
1243 1246
1244 # Packaging of the kernel to various formats 1247 # Packaging of the kernel to various formats
1245 # --------------------------------------------------------------------------- 1248 # ---------------------------------------------------------------------------
1246 # rpm target kept for backward compatibility 1249 # rpm target kept for backward compatibility
1247 package-dir := $(srctree)/scripts/package 1250 package-dir := $(srctree)/scripts/package
1248 1251
1249 %pkg: include/config/kernel.release FORCE 1252 %pkg: include/config/kernel.release FORCE
1250 $(Q)$(MAKE) $(build)=$(package-dir) $@ 1253 $(Q)$(MAKE) $(build)=$(package-dir) $@
1251 rpm: include/config/kernel.release FORCE 1254 rpm: include/config/kernel.release FORCE
1252 $(Q)$(MAKE) $(build)=$(package-dir) $@ 1255 $(Q)$(MAKE) $(build)=$(package-dir) $@
1253 1256
1254 1257
1255 # Brief documentation of the typical targets used 1258 # Brief documentation of the typical targets used
1256 # --------------------------------------------------------------------------- 1259 # ---------------------------------------------------------------------------
1257 1260
1258 boards := $(wildcard $(srctree)/arch/$(SRCARCH)/configs/*_defconfig) 1261 boards := $(wildcard $(srctree)/arch/$(SRCARCH)/configs/*_defconfig)
1259 boards := $(notdir $(boards)) 1262 boards := $(notdir $(boards))
1260 board-dirs := $(dir $(wildcard $(srctree)/arch/$(SRCARCH)/configs/*/*_defconfig)) 1263 board-dirs := $(dir $(wildcard $(srctree)/arch/$(SRCARCH)/configs/*/*_defconfig))
1261 board-dirs := $(sort $(notdir $(board-dirs:/=))) 1264 board-dirs := $(sort $(notdir $(board-dirs:/=)))
1262 1265
1263 help: 1266 help:
1264 @echo 'Cleaning targets:' 1267 @echo 'Cleaning targets:'
1265 @echo ' clean - Remove most generated files but keep the config and' 1268 @echo ' clean - Remove most generated files but keep the config and'
1266 @echo ' enough build support to build external modules' 1269 @echo ' enough build support to build external modules'
1267 @echo ' mrproper - Remove all generated files + config + various backup files' 1270 @echo ' mrproper - Remove all generated files + config + various backup files'
1268 @echo ' distclean - mrproper + remove editor backup and patch files' 1271 @echo ' distclean - mrproper + remove editor backup and patch files'
1269 @echo '' 1272 @echo ''
1270 @echo 'Configuration targets:' 1273 @echo 'Configuration targets:'
1271 @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help 1274 @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help
1272 @echo '' 1275 @echo ''
1273 @echo 'Other generic targets:' 1276 @echo 'Other generic targets:'
1274 @echo ' all - Build all targets marked with [*]' 1277 @echo ' all - Build all targets marked with [*]'
1275 @echo '* vmlinux - Build the bare kernel' 1278 @echo '* vmlinux - Build the bare kernel'
1276 @echo '* modules - Build all modules' 1279 @echo '* modules - Build all modules'
1277 @echo ' modules_install - Install all modules to INSTALL_MOD_PATH (default: /)' 1280 @echo ' modules_install - Install all modules to INSTALL_MOD_PATH (default: /)'
1278 @echo ' firmware_install- Install all firmware to INSTALL_FW_PATH' 1281 @echo ' firmware_install- Install all firmware to INSTALL_FW_PATH'
1279 @echo ' (default: $$(INSTALL_MOD_PATH)/lib/firmware)' 1282 @echo ' (default: $$(INSTALL_MOD_PATH)/lib/firmware)'
1280 @echo ' dir/ - Build all files in dir and below' 1283 @echo ' dir/ - Build all files in dir and below'
1281 @echo ' dir/file.[ois] - Build specified target only' 1284 @echo ' dir/file.[ois] - Build specified target only'
1282 @echo ' dir/file.ko - Build module including final link' 1285 @echo ' dir/file.ko - Build module including final link'
1283 @echo ' prepare - Set up for building external modules' 1286 @echo ' prepare - Set up for building external modules'
1284 @echo ' tags/TAGS - Generate tags file for editors' 1287 @echo ' tags/TAGS - Generate tags file for editors'
1285 @echo ' cscope - Generate cscope index' 1288 @echo ' cscope - Generate cscope index'
1286 @echo ' kernelrelease - Output the release version string' 1289 @echo ' kernelrelease - Output the release version string'
1287 @echo ' kernelversion - Output the version stored in Makefile' 1290 @echo ' kernelversion - Output the version stored in Makefile'
1288 @echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \ 1291 @echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \
1289 echo ' (default: $(INSTALL_HDR_PATH))'; \ 1292 echo ' (default: $(INSTALL_HDR_PATH))'; \
1290 echo '' 1293 echo ''
1291 @echo 'Static analysers' 1294 @echo 'Static analysers'
1292 @echo ' checkstack - Generate a list of stack hogs' 1295 @echo ' checkstack - Generate a list of stack hogs'
1293 @echo ' namespacecheck - Name space analysis on compiled kernel' 1296 @echo ' namespacecheck - Name space analysis on compiled kernel'
1294 @echo ' versioncheck - Sanity check on version.h usage' 1297 @echo ' versioncheck - Sanity check on version.h usage'
1295 @echo ' includecheck - Check for duplicate included header files' 1298 @echo ' includecheck - Check for duplicate included header files'
1296 @echo ' export_report - List the usages of all exported symbols' 1299 @echo ' export_report - List the usages of all exported symbols'
1297 @echo ' headers_check - Sanity check on exported headers' 1300 @echo ' headers_check - Sanity check on exported headers'
1298 @echo ' headerdep - Detect inclusion cycles in headers'; \ 1301 @echo ' headerdep - Detect inclusion cycles in headers'; \
1299 echo '' 1302 echo ''
1300 @echo 'Kernel packaging:' 1303 @echo 'Kernel packaging:'
1301 @$(MAKE) $(build)=$(package-dir) help 1304 @$(MAKE) $(build)=$(package-dir) help
1302 @echo '' 1305 @echo ''
1303 @echo 'Documentation targets:' 1306 @echo 'Documentation targets:'
1304 @$(MAKE) -f $(srctree)/Documentation/DocBook/Makefile dochelp 1307 @$(MAKE) -f $(srctree)/Documentation/DocBook/Makefile dochelp
1305 @echo '' 1308 @echo ''
1306 @echo 'Architecture specific targets ($(SRCARCH)):' 1309 @echo 'Architecture specific targets ($(SRCARCH)):'
1307 @$(if $(archhelp),$(archhelp),\ 1310 @$(if $(archhelp),$(archhelp),\
1308 echo ' No architecture specific help defined for $(SRCARCH)') 1311 echo ' No architecture specific help defined for $(SRCARCH)')
1309 @echo '' 1312 @echo ''
1310 @$(if $(boards), \ 1313 @$(if $(boards), \
1311 $(foreach b, $(boards), \ 1314 $(foreach b, $(boards), \
1312 printf " %-24s - Build for %s\\n" $(b) $(subst _defconfig,,$(b));) \ 1315 printf " %-24s - Build for %s\\n" $(b) $(subst _defconfig,,$(b));) \
1313 echo '') 1316 echo '')
1314 @$(if $(board-dirs), \ 1317 @$(if $(board-dirs), \
1315 $(foreach b, $(board-dirs), \ 1318 $(foreach b, $(board-dirs), \
1316 printf " %-16s - Show %s-specific targets\\n" help-$(b) $(b);) \ 1319 printf " %-16s - Show %s-specific targets\\n" help-$(b) $(b);) \
1317 printf " %-16s - Show all of the above\\n" help-boards; \ 1320 printf " %-16s - Show all of the above\\n" help-boards; \
1318 echo '') 1321 echo '')
1319 1322
1320 @echo ' make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build' 1323 @echo ' make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build'
1321 @echo ' make V=2 [targets] 2 => give reason for rebuild of target' 1324 @echo ' make V=2 [targets] 2 => give reason for rebuild of target'
1322 @echo ' make O=dir [targets] Locate all output files in "dir", including .config' 1325 @echo ' make O=dir [targets] Locate all output files in "dir", including .config'
1323 @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)' 1326 @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)'
1324 @echo ' make C=2 [targets] Force check of all c source with $$CHECK' 1327 @echo ' make C=2 [targets] Force check of all c source with $$CHECK'
1325 @echo '' 1328 @echo ''
1326 @echo 'Execute "make" or "make all" to build all targets marked with [*] ' 1329 @echo 'Execute "make" or "make all" to build all targets marked with [*] '
1327 @echo 'For further info see the ./README file' 1330 @echo 'For further info see the ./README file'
1328 1331
1329 1332
1330 help-board-dirs := $(addprefix help-,$(board-dirs)) 1333 help-board-dirs := $(addprefix help-,$(board-dirs))
1331 1334
1332 help-boards: $(help-board-dirs) 1335 help-boards: $(help-board-dirs)
1333 1336
1334 boards-per-dir = $(notdir $(wildcard $(srctree)/arch/$(SRCARCH)/configs/$*/*_defconfig)) 1337 boards-per-dir = $(notdir $(wildcard $(srctree)/arch/$(SRCARCH)/configs/$*/*_defconfig))
1335 1338
1336 $(help-board-dirs): help-%: 1339 $(help-board-dirs): help-%:
1337 @echo 'Architecture specific targets ($(SRCARCH) $*):' 1340 @echo 'Architecture specific targets ($(SRCARCH) $*):'
1338 @$(if $(boards-per-dir), \ 1341 @$(if $(boards-per-dir), \
1339 $(foreach b, $(boards-per-dir), \ 1342 $(foreach b, $(boards-per-dir), \
1340 printf " %-24s - Build for %s\\n" $*/$(b) $(subst _defconfig,,$(b));) \ 1343 printf " %-24s - Build for %s\\n" $*/$(b) $(subst _defconfig,,$(b));) \
1341 echo '') 1344 echo '')
1342 1345
1343 1346
1344 # Documentation targets 1347 # Documentation targets
1345 # --------------------------------------------------------------------------- 1348 # ---------------------------------------------------------------------------
1346 %docs: scripts_basic FORCE 1349 %docs: scripts_basic FORCE
1347 $(Q)$(MAKE) $(build)=Documentation/DocBook $@ 1350 $(Q)$(MAKE) $(build)=Documentation/DocBook $@
1348 1351
1349 else # KBUILD_EXTMOD 1352 else # KBUILD_EXTMOD
1350 1353
1351 ### 1354 ###
1352 # External module support. 1355 # External module support.
1353 # When building external modules the kernel used as basis is considered 1356 # When building external modules the kernel used as basis is considered
1354 # read-only, and no consistency checks are made and the make 1357 # read-only, and no consistency checks are made and the make
1355 # system is not used on the basis kernel. If updates are required 1358 # system is not used on the basis kernel. If updates are required
1356 # in the basis kernel ordinary make commands (without M=...) must 1359 # in the basis kernel ordinary make commands (without M=...) must
1357 # be used. 1360 # be used.
1358 # 1361 #
1359 # The following are the only valid targets when building external 1362 # The following are the only valid targets when building external
1360 # modules. 1363 # modules.
1361 # make M=dir clean Delete all automatically generated files 1364 # make M=dir clean Delete all automatically generated files
1362 # make M=dir modules Make all modules in specified dir 1365 # make M=dir modules Make all modules in specified dir
1363 # make M=dir Same as 'make M=dir modules' 1366 # make M=dir Same as 'make M=dir modules'
1364 # make M=dir modules_install 1367 # make M=dir modules_install
1365 # Install the modules built in the module directory 1368 # Install the modules built in the module directory
1366 # Assumes install directory is already created 1369 # Assumes install directory is already created
1367 1370
1368 # We are always building modules 1371 # We are always building modules
1369 KBUILD_MODULES := 1 1372 KBUILD_MODULES := 1
1370 PHONY += crmodverdir 1373 PHONY += crmodverdir
1371 crmodverdir: 1374 crmodverdir:
1372 $(cmd_crmodverdir) 1375 $(cmd_crmodverdir)
1373 1376
1374 PHONY += $(objtree)/Module.symvers 1377 PHONY += $(objtree)/Module.symvers
1375 $(objtree)/Module.symvers: 1378 $(objtree)/Module.symvers:
1376 @test -e $(objtree)/Module.symvers || ( \ 1379 @test -e $(objtree)/Module.symvers || ( \
1377 echo; \ 1380 echo; \
1378 echo " WARNING: Symbol version dump $(objtree)/Module.symvers"; \ 1381 echo " WARNING: Symbol version dump $(objtree)/Module.symvers"; \
1379 echo " is missing; modules will have no dependencies and modversions."; \ 1382 echo " is missing; modules will have no dependencies and modversions."; \
1380 echo ) 1383 echo )
1381 1384
1382 module-dirs := $(addprefix _module_,$(KBUILD_EXTMOD)) 1385 module-dirs := $(addprefix _module_,$(KBUILD_EXTMOD))
1383 PHONY += $(module-dirs) modules 1386 PHONY += $(module-dirs) modules
1384 $(module-dirs): crmodverdir $(objtree)/Module.symvers 1387 $(module-dirs): crmodverdir $(objtree)/Module.symvers
1385 $(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@) 1388 $(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@)
1386 1389
1387 modules: $(module-dirs) 1390 modules: $(module-dirs)
1388 @$(kecho) ' Building modules, stage 2.'; 1391 @$(kecho) ' Building modules, stage 2.';
1389 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost 1392 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
1390 1393
1391 PHONY += modules_install 1394 PHONY += modules_install
1392 modules_install: _emodinst_ _emodinst_post 1395 modules_install: _emodinst_ _emodinst_post
1393 1396
1394 install-dir := $(if $(INSTALL_MOD_DIR),$(INSTALL_MOD_DIR),extra) 1397 install-dir := $(if $(INSTALL_MOD_DIR),$(INSTALL_MOD_DIR),extra)
1395 PHONY += _emodinst_ 1398 PHONY += _emodinst_
1396 _emodinst_: 1399 _emodinst_:
1397 $(Q)mkdir -p $(MODLIB)/$(install-dir) 1400 $(Q)mkdir -p $(MODLIB)/$(install-dir)
1398 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst 1401 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
1399 1402
1400 PHONY += _emodinst_post 1403 PHONY += _emodinst_post
1401 _emodinst_post: _emodinst_ 1404 _emodinst_post: _emodinst_
1402 $(call cmd,depmod) 1405 $(call cmd,depmod)
1403 1406
1404 clean-dirs := $(addprefix _clean_,$(KBUILD_EXTMOD)) 1407 clean-dirs := $(addprefix _clean_,$(KBUILD_EXTMOD))
1405 1408
1406 PHONY += $(clean-dirs) clean 1409 PHONY += $(clean-dirs) clean
1407 $(clean-dirs): 1410 $(clean-dirs):
1408 $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@) 1411 $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@)
1409 1412
1410 clean: rm-dirs := $(MODVERDIR) 1413 clean: rm-dirs := $(MODVERDIR)
1411 clean: rm-files := $(KBUILD_EXTMOD)/Module.symvers 1414 clean: rm-files := $(KBUILD_EXTMOD)/Module.symvers
1412 clean: $(clean-dirs) 1415 clean: $(clean-dirs)
1413 $(call cmd,rmdirs) 1416 $(call cmd,rmdirs)
1414 $(call cmd,rmfiles) 1417 $(call cmd,rmfiles)
1415 @find $(KBUILD_EXTMOD) $(RCS_FIND_IGNORE) \ 1418 @find $(KBUILD_EXTMOD) $(RCS_FIND_IGNORE) \
1416 \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \ 1419 \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
1417 -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \) \ 1420 -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \) \
1418 -type f -print | xargs rm -f 1421 -type f -print | xargs rm -f
1419 1422
1420 help: 1423 help:
1421 @echo ' Building external modules.' 1424 @echo ' Building external modules.'
1422 @echo ' Syntax: make -C path/to/kernel/src M=$$PWD target' 1425 @echo ' Syntax: make -C path/to/kernel/src M=$$PWD target'
1423 @echo '' 1426 @echo ''
1424 @echo ' modules - default target, build the module(s)' 1427 @echo ' modules - default target, build the module(s)'
1425 @echo ' modules_install - install the module' 1428 @echo ' modules_install - install the module'
1426 @echo ' clean - remove generated files in module directory only' 1429 @echo ' clean - remove generated files in module directory only'
1427 @echo '' 1430 @echo ''
1428 1431
1429 # Dummies... 1432 # Dummies...
1430 PHONY += prepare scripts 1433 PHONY += prepare scripts
1431 prepare: ; 1434 prepare: ;
1432 scripts: ; 1435 scripts: ;
1433 endif # KBUILD_EXTMOD 1436 endif # KBUILD_EXTMOD
1434 1437
1435 # Generate tags for editors 1438 # Generate tags for editors
1436 # --------------------------------------------------------------------------- 1439 # ---------------------------------------------------------------------------
1437 quiet_cmd_tags = GEN $@ 1440 quiet_cmd_tags = GEN $@
1438 cmd_tags = $(CONFIG_SHELL) $(srctree)/scripts/tags.sh $@ 1441 cmd_tags = $(CONFIG_SHELL) $(srctree)/scripts/tags.sh $@
1439 1442
1440 tags TAGS cscope: FORCE 1443 tags TAGS cscope: FORCE
1441 $(call cmd,tags) 1444 $(call cmd,tags)
1442 1445
1443 # Scripts to check various things for consistency 1446 # Scripts to check various things for consistency
1444 # --------------------------------------------------------------------------- 1447 # ---------------------------------------------------------------------------
1445 1448
1446 includecheck: 1449 includecheck:
1447 find * $(RCS_FIND_IGNORE) \ 1450 find * $(RCS_FIND_IGNORE) \
1448 -name '*.[hcS]' -type f -print | sort \ 1451 -name '*.[hcS]' -type f -print | sort \
1449 | xargs $(PERL) -w $(srctree)/scripts/checkincludes.pl 1452 | xargs $(PERL) -w $(srctree)/scripts/checkincludes.pl
1450 1453
1451 versioncheck: 1454 versioncheck:
1452 find * $(RCS_FIND_IGNORE) \ 1455 find * $(RCS_FIND_IGNORE) \
1453 -name '*.[hcS]' -type f -print | sort \ 1456 -name '*.[hcS]' -type f -print | sort \
1454 | xargs $(PERL) -w $(srctree)/scripts/checkversion.pl 1457 | xargs $(PERL) -w $(srctree)/scripts/checkversion.pl
1455 1458
1456 namespacecheck: 1459 namespacecheck:
1457 $(PERL) $(srctree)/scripts/namespace.pl 1460 $(PERL) $(srctree)/scripts/namespace.pl
1458 1461
1459 export_report: 1462 export_report:
1460 $(PERL) $(srctree)/scripts/export_report.pl 1463 $(PERL) $(srctree)/scripts/export_report.pl
1461 1464
1462 endif #ifeq ($(config-targets),1) 1465 endif #ifeq ($(config-targets),1)
1463 endif #ifeq ($(mixed-targets),1) 1466 endif #ifeq ($(mixed-targets),1)
1464 1467
1465 PHONY += checkstack kernelrelease kernelversion 1468 PHONY += checkstack kernelrelease kernelversion
1466 1469
1467 # UML needs a little special treatment here. It wants to use the host 1470 # UML needs a little special treatment here. It wants to use the host
1468 # toolchain, so needs $(SUBARCH) passed to checkstack.pl. Everyone 1471 # toolchain, so needs $(SUBARCH) passed to checkstack.pl. Everyone
1469 # else wants $(ARCH), including people doing cross-builds, which means 1472 # else wants $(ARCH), including people doing cross-builds, which means
1470 # that $(SUBARCH) doesn't work here. 1473 # that $(SUBARCH) doesn't work here.
1471 ifeq ($(ARCH), um) 1474 ifeq ($(ARCH), um)
1472 CHECKSTACK_ARCH := $(SUBARCH) 1475 CHECKSTACK_ARCH := $(SUBARCH)
1473 else 1476 else
1474 CHECKSTACK_ARCH := $(ARCH) 1477 CHECKSTACK_ARCH := $(ARCH)
1475 endif 1478 endif
1476 checkstack: 1479 checkstack:
1477 $(OBJDUMP) -d vmlinux $$(find . -name '*.ko') | \ 1480 $(OBJDUMP) -d vmlinux $$(find . -name '*.ko') | \
1478 $(PERL) $(src)/scripts/checkstack.pl $(CHECKSTACK_ARCH) 1481 $(PERL) $(src)/scripts/checkstack.pl $(CHECKSTACK_ARCH)
1479 1482
1480 kernelrelease: 1483 kernelrelease:
1481 $(if $(wildcard include/config/kernel.release), $(Q)echo $(KERNELRELEASE), \ 1484 $(if $(wildcard include/config/kernel.release), $(Q)echo $(KERNELRELEASE), \
1482 $(error kernelrelease not valid - run 'make prepare' to update it)) 1485 $(error kernelrelease not valid - run 'make prepare' to update it))
1483 kernelversion: 1486 kernelversion:
1484 @echo $(KERNELVERSION) 1487 @echo $(KERNELVERSION)
1485 1488
1486 # Single targets 1489 # Single targets
1487 # --------------------------------------------------------------------------- 1490 # ---------------------------------------------------------------------------
1488 # Single targets are compatible with: 1491 # Single targets are compatible with:
1489 # - build with mixed source and output 1492 # - build with mixed source and output
1490 # - build with separate output dir 'make O=...' 1493 # - build with separate output dir 'make O=...'
1491 # - external modules 1494 # - external modules
1492 # 1495 #
1493 # target-dir => where to store outputfile 1496 # target-dir => where to store outputfile
1494 # build-dir => directory in kernel source tree to use 1497 # build-dir => directory in kernel source tree to use
1495 1498
1496 ifeq ($(KBUILD_EXTMOD),) 1499 ifeq ($(KBUILD_EXTMOD),)
1497 build-dir = $(patsubst %/,%,$(dir $@)) 1500 build-dir = $(patsubst %/,%,$(dir $@))
1498 target-dir = $(dir $@) 1501 target-dir = $(dir $@)
1499 else 1502 else
1500 zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@))) 1503 zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@)))
1501 build-dir = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash)) 1504 build-dir = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash))
1502 target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@)) 1505 target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@))
1503 endif 1506 endif
1504 1507
1505 %.s: %.c prepare scripts FORCE 1508 %.s: %.c prepare scripts FORCE
1506 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1509 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1507 %.i: %.c prepare scripts FORCE 1510 %.i: %.c prepare scripts FORCE
1508 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1511 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1509 %.o: %.c prepare scripts FORCE 1512 %.o: %.c prepare scripts FORCE
1510 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1513 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1511 %.lst: %.c prepare scripts FORCE 1514 %.lst: %.c prepare scripts FORCE
1512 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1515 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1513 %.s: %.S prepare scripts FORCE 1516 %.s: %.S prepare scripts FORCE
1514 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1517 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1515 %.o: %.S prepare scripts FORCE 1518 %.o: %.S prepare scripts FORCE
1516 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1519 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1517 %.symtypes: %.c prepare scripts FORCE 1520 %.symtypes: %.c prepare scripts FORCE
1518 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1521 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1519 1522
1520 # Modules 1523 # Modules
1521 /: prepare scripts FORCE 1524 /: prepare scripts FORCE
1522 $(cmd_crmodverdir) 1525 $(cmd_crmodverdir)
1523 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 1526 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
1524 $(build)=$(build-dir) 1527 $(build)=$(build-dir)
1525 %/: prepare scripts FORCE 1528 %/: prepare scripts FORCE
1526 $(cmd_crmodverdir) 1529 $(cmd_crmodverdir)
1527 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 1530 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
1528 $(build)=$(build-dir) 1531 $(build)=$(build-dir)
1529 %.ko: prepare scripts FORCE 1532 %.ko: prepare scripts FORCE
1530 $(cmd_crmodverdir) 1533 $(cmd_crmodverdir)
1531 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 1534 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
1532 $(build)=$(build-dir) $(@:.ko=.o) 1535 $(build)=$(build-dir) $(@:.ko=.o)
1533 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost 1536 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
1534 1537
1535 # FIXME Should go into a make.lib or something 1538 # FIXME Should go into a make.lib or something
1536 # =========================================================================== 1539 # ===========================================================================
1537 1540
1538 quiet_cmd_rmdirs = $(if $(wildcard $(rm-dirs)),CLEAN $(wildcard $(rm-dirs))) 1541 quiet_cmd_rmdirs = $(if $(wildcard $(rm-dirs)),CLEAN $(wildcard $(rm-dirs)))
1539 cmd_rmdirs = rm -rf $(rm-dirs) 1542 cmd_rmdirs = rm -rf $(rm-dirs)
1540 1543
1541 quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files))) 1544 quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files)))
1542 cmd_rmfiles = rm -f $(rm-files) 1545 cmd_rmfiles = rm -f $(rm-files)
1543 1546
1544 # Run depmod only if we have System.map and depmod is executable 1547 # Run depmod only if we have System.map and depmod is executable
1545 quiet_cmd_depmod = DEPMOD $(KERNELRELEASE) 1548 quiet_cmd_depmod = DEPMOD $(KERNELRELEASE)
1546 cmd_depmod = \ 1549 cmd_depmod = \
1547 if [ -r System.map -a -x $(DEPMOD) ]; then \ 1550 if [ -r System.map -a -x $(DEPMOD) ]; then \
1548 $(DEPMOD) -ae -F System.map \ 1551 $(DEPMOD) -ae -F System.map \
1549 $(if $(strip $(INSTALL_MOD_PATH)), -b $(INSTALL_MOD_PATH) ) \ 1552 $(if $(strip $(INSTALL_MOD_PATH)), -b $(INSTALL_MOD_PATH) ) \
1550 $(KERNELRELEASE); \ 1553 $(KERNELRELEASE); \
1551 fi 1554 fi
1552 1555
1553 # Create temporary dir for module support files 1556 # Create temporary dir for module support files
1554 # clean it up only when building all modules 1557 # clean it up only when building all modules
1555 cmd_crmodverdir = $(Q)mkdir -p $(MODVERDIR) \ 1558 cmd_crmodverdir = $(Q)mkdir -p $(MODVERDIR) \
1556 $(if $(KBUILD_MODULES),; rm -f $(MODVERDIR)/*) 1559 $(if $(KBUILD_MODULES),; rm -f $(MODVERDIR)/*)
1557 1560
1558 a_flags = -Wp,-MD,$(depfile) $(KBUILD_AFLAGS) $(AFLAGS_KERNEL) \ 1561 a_flags = -Wp,-MD,$(depfile) $(KBUILD_AFLAGS) $(AFLAGS_KERNEL) \
1559 $(NOSTDINC_FLAGS) $(LINUXINCLUDE) $(KBUILD_CPPFLAGS) \ 1562 $(NOSTDINC_FLAGS) $(LINUXINCLUDE) $(KBUILD_CPPFLAGS) \
1560 $(modkern_aflags) $(EXTRA_AFLAGS) $(AFLAGS_$(basetarget).o) 1563 $(modkern_aflags) $(EXTRA_AFLAGS) $(AFLAGS_$(basetarget).o)
1561 1564
1562 quiet_cmd_as_o_S = AS $@ 1565 quiet_cmd_as_o_S = AS $@
1563 cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $< 1566 cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $<
1564 1567
1565 # read all saved command lines 1568 # read all saved command lines
1566 1569
1567 targets := $(wildcard $(sort $(targets))) 1570 targets := $(wildcard $(sort $(targets)))
1568 cmd_files := $(wildcard .*.cmd $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd)) 1571 cmd_files := $(wildcard .*.cmd $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd))
1569 1572
1570 ifneq ($(cmd_files),) 1573 ifneq ($(cmd_files),)
1571 $(cmd_files): ; # Do not try to update included dependency files 1574 $(cmd_files): ; # Do not try to update included dependency files
1572 include $(cmd_files) 1575 include $(cmd_files)
1573 endif 1576 endif
1574 1577
1575 # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj=dir 1578 # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj=dir
1576 # Usage: 1579 # Usage:
1577 # $(Q)$(MAKE) $(clean)=dir 1580 # $(Q)$(MAKE) $(clean)=dir
1578 clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj 1581 clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj
1579 1582
1580 endif # skip-makefile 1583 endif # skip-makefile
1581 1584
1582 PHONY += FORCE 1585 PHONY += FORCE
1583 FORCE: 1586 FORCE:
1584 1587
1585 # Declare the contents of the .PHONY variable as phony. We keep that 1588 # Declare the contents of the .PHONY variable as phony. We keep that
1586 # information in a variable se we can use it in if_changed and friends. 1589 # information in a variable se we can use it in if_changed and friends.
1587 .PHONY: $(PHONY) 1590 .PHONY: $(PHONY)
1588 1591