Commit b8b0618cf6fab3bd5b1da8c72f4b29847d81ac42

Authored by Cheng Renquan
Committed by Sam Ravnborg
1 parent 3e56f08bff

kbuild: remove extra ifdef/endif of top Makefile

The GNU make's origin function know undefined variable well,
so the outer ifdef/endif conditional checking is unneeded.

From `info make` documentation, origin will return

  `undefined'
     if VARIABLE was never defined.
  `command line'
     if VARIABLE was defined on the command line.
   ...

Therefore, $(origin V) will get a value anyway, killing ifdef/endif is
viable and safe.

Furthermore, I've checked the minimal requirements from
Documentation/Changes is GNU make 3.79.1, and that version of GNU make
has support of origin function well already, so now it's safe to kill
the outer conditional checking, without upgrading the minimal
requirements.

Signed-off-by: Cheng Renquan <crq@kernel.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>

Showing 1 changed file with 9 additions and 17 deletions Inline Diff

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