1Linux Kernel Makefiles
2
3This document describes the Linux kernel Makefiles.
4
5=== Table of Contents
6
7	=== 1 Overview
8	=== 2 Who does what
9	=== 3 The kbuild files
10	   --- 3.1 Goal definitions
11	   --- 3.2 Built-in object goals - obj-y
12	   --- 3.3 Loadable module goals - obj-m
13	   --- 3.4 Objects which export symbols
14	   --- 3.5 Library file goals - lib-y
15	   --- 3.6 Descending down in directories
16	   --- 3.7 Compilation flags
17	   --- 3.8 Command line dependency
18	   --- 3.9 Dependency tracking
19	   --- 3.10 Special Rules
20	   --- 3.11 $(CC) support functions
21	   --- 3.12 $(LD) support functions
22
23	=== 4 Host Program support
24	   --- 4.1 Simple Host Program
25	   --- 4.2 Composite Host Programs
26	   --- 4.3 Defining shared libraries
27	   --- 4.4 Using C++ for host programs
28	   --- 4.5 Controlling compiler options for host programs
29	   --- 4.6 When host programs are actually built
30	   --- 4.7 Using hostprogs-$(CONFIG_FOO)
31
32	=== 5 Kbuild clean infrastructure
33
34	=== 6 Architecture Makefiles
35	   --- 6.1 Set variables to tweak the build to the architecture
36	   --- 6.2 Add prerequisites to archprepare:
37	   --- 6.3 List directories to visit when descending
38	   --- 6.4 Architecture-specific boot images
39	   --- 6.5 Building non-kbuild targets
40	   --- 6.6 Commands useful for building a boot image
41	   --- 6.7 Custom kbuild commands
42	   --- 6.8 Preprocessing linker scripts
43
44	=== 7 Kbuild syntax for exported headers
45		--- 7.1 header-y
46		--- 7.2 objhdr-y
47		--- 7.3 destination-y
48
49	=== 8 Kbuild Variables
50	=== 9 Makefile language
51	=== 10 Credits
52	=== 11 TODO
53
54=== 1 Overview
55
56The Makefiles have five parts:
57
58	Makefile		the top Makefile.
59	.config			the kernel configuration file.
60	arch/$(ARCH)/Makefile	the arch Makefile.
61	scripts/Makefile.*	common rules etc. for all kbuild Makefiles.
62	kbuild Makefiles	there are about 500 of these.
63
64The top Makefile reads the .config file, which comes from the kernel
65configuration process.
66
67The top Makefile is responsible for building two major products: vmlinux
68(the resident kernel image) and modules (any module files).
69It builds these goals by recursively descending into the subdirectories of
70the kernel source tree.
71The list of subdirectories which are visited depends upon the kernel
72configuration. The top Makefile textually includes an arch Makefile
73with the name arch/$(ARCH)/Makefile. The arch Makefile supplies
74architecture-specific information to the top Makefile.
75
76Each subdirectory has a kbuild Makefile which carries out the commands
77passed down from above. The kbuild Makefile uses information from the
78.config file to construct various file lists used by kbuild to build
79any built-in or modular targets.
80
81scripts/Makefile.* contains all the definitions/rules etc. that
82are used to build the kernel based on the kbuild makefiles.
83
84
85=== 2 Who does what
86
87People have four different relationships with the kernel Makefiles.
88
89*Users* are people who build kernels.  These people type commands such as
90"make menuconfig" or "make".  They usually do not read or edit
91any kernel Makefiles (or any other source files).
92
93*Normal developers* are people who work on features such as device
94drivers, file systems, and network protocols.  These people need to
95maintain the kbuild Makefiles for the subsystem they are
96working on.  In order to do this effectively, they need some overall
97knowledge about the kernel Makefiles, plus detailed knowledge about the
98public interface for kbuild.
99
100*Arch developers* are people who work on an entire architecture, such
101as sparc or ia64.  Arch developers need to know about the arch Makefile
102as well as kbuild Makefiles.
103
104*Kbuild developers* are people who work on the kernel build system itself.
105These people need to know about all aspects of the kernel Makefiles.
106
107This document is aimed towards normal developers and arch developers.
108
109
110=== 3 The kbuild files
111
112Most Makefiles within the kernel are kbuild Makefiles that use the
113kbuild infrastructure. This chapter introduces the syntax used in the
114kbuild makefiles.
115The preferred name for the kbuild files are 'Makefile' but 'Kbuild' can
116be used and if both a 'Makefile' and a 'Kbuild' file exists, then the 'Kbuild'
117file will be used.
118
119Section 3.1 "Goal definitions" is a quick intro, further chapters provide
120more details, with real examples.
121
122--- 3.1 Goal definitions
123
124	Goal definitions are the main part (heart) of the kbuild Makefile.
125	These lines define the files to be built, any special compilation
126	options, and any subdirectories to be entered recursively.
127
128	The most simple kbuild makefile contains one line:
129
130	Example:
131		obj-y += foo.o
132
133	This tells kbuild that there is one object in that directory, named
134	foo.o. foo.o will be built from foo.c or foo.S.
135
136	If foo.o shall be built as a module, the variable obj-m is used.
137	Therefore the following pattern is often used:
138
139	Example:
140		obj-$(CONFIG_FOO) += foo.o
141
142	$(CONFIG_FOO) evaluates to either y (for built-in) or m (for module).
143	If CONFIG_FOO is neither y nor m, then the file will not be compiled
144	nor linked.
145
146--- 3.2 Built-in object goals - obj-y
147
148	The kbuild Makefile specifies object files for vmlinux
149	in the $(obj-y) lists.  These lists depend on the kernel
150	configuration.
151
152	Kbuild compiles all the $(obj-y) files.  It then calls
153	"$(LD) -r" to merge these files into one built-in.o file.
154	built-in.o is later linked into vmlinux by the parent Makefile.
155
156	The order of files in $(obj-y) is significant.  Duplicates in
157	the lists are allowed: the first instance will be linked into
158	built-in.o and succeeding instances will be ignored.
159
160	Link order is significant, because certain functions
161	(module_init() / __initcall) will be called during boot in the
162	order they appear. So keep in mind that changing the link
163	order may e.g. change the order in which your SCSI
164	controllers are detected, and thus your disks are renumbered.
165
166	Example:
167		#drivers/isdn/i4l/Makefile
168		# Makefile for the kernel ISDN subsystem and device drivers.
169		# Each configuration option enables a list of files.
170		obj-$(CONFIG_ISDN_I4L)         += isdn.o
171		obj-$(CONFIG_ISDN_PPP_BSDCOMP) += isdn_bsdcomp.o
172
173--- 3.3 Loadable module goals - obj-m
174
175	$(obj-m) specify object files which are built as loadable
176	kernel modules.
177
178	A module may be built from one source file or several source
179	files. In the case of one source file, the kbuild makefile
180	simply adds the file to $(obj-m).
181
182	Example:
183		#drivers/isdn/i4l/Makefile
184		obj-$(CONFIG_ISDN_PPP_BSDCOMP) += isdn_bsdcomp.o
185
186	Note: In this example $(CONFIG_ISDN_PPP_BSDCOMP) evaluates to 'm'
187
188	If a kernel module is built from several source files, you specify
189	that you want to build a module in the same way as above; however,
190	kbuild needs to know which object files you want to build your
191	module from, so you have to tell it by setting a $(<module_name>-y)
192	variable.
193
194	Example:
195		#drivers/isdn/i4l/Makefile
196		obj-$(CONFIG_ISDN_I4L) += isdn.o
197		isdn-y := isdn_net_lib.o isdn_v110.o isdn_common.o
198
199	In this example, the module name will be isdn.o. Kbuild will
200	compile the objects listed in $(isdn-y) and then run
201	"$(LD) -r" on the list of these files to generate isdn.o.
202
203	Due to kbuild recognizing $(<module_name>-y) for composite objects,
204	you can use the value of a CONFIG_ symbol to optionally include an
205	object file as part of a composite object.
206
207	Example:
208		#fs/ext2/Makefile
209	        obj-$(CONFIG_EXT2_FS) += ext2.o
210		ext2-y := balloc.o dir.o file.o ialloc.o inode.o ioctl.o \
211			  namei.o super.o symlink.o
212	        ext2-$(CONFIG_EXT2_FS_XATTR) += xattr.o xattr_user.o \
213						xattr_trusted.o
214
215	In this example, xattr.o, xattr_user.o and xattr_trusted.o are only
216	part of the composite object ext2.o if $(CONFIG_EXT2_FS_XATTR)
217	evaluates to 'y'.
218
219	Note: Of course, when you are building objects into the kernel,
220	the syntax above will also work. So, if you have CONFIG_EXT2_FS=y,
221	kbuild will build an ext2.o file for you out of the individual
222	parts and then link this into built-in.o, as you would expect.
223
224--- 3.4 Objects which export symbols
225
226	No special notation is required in the makefiles for
227	modules exporting symbols.
228
229--- 3.5 Library file goals - lib-y
230
231	Objects listed with obj-* are used for modules, or
232	combined in a built-in.o for that specific directory.
233	There is also the possibility to list objects that will
234	be included in a library, lib.a.
235	All objects listed with lib-y are combined in a single
236	library for that directory.
237	Objects that are listed in obj-y and additionally listed in
238	lib-y will not be included in the library, since they will
239	be accessible anyway.
240	For consistency, objects listed in lib-m will be included in lib.a.
241
242	Note that the same kbuild makefile may list files to be built-in
243	and to be part of a library. Therefore the same directory
244	may contain both a built-in.o and a lib.a file.
245
246	Example:
247		#arch/x86/lib/Makefile
248		lib-y    := delay.o
249
250	This will create a library lib.a based on delay.o. For kbuild to
251	actually recognize that there is a lib.a being built, the directory
252	shall be listed in libs-y.
253	See also "6.3 List directories to visit when descending".
254
255	Use of lib-y is normally restricted to lib/ and arch/*/lib.
256
257--- 3.6 Descending down in directories
258
259	A Makefile is only responsible for building objects in its own
260	directory. Files in subdirectories should be taken care of by
261	Makefiles in these subdirs. The build system will automatically
262	invoke make recursively in subdirectories, provided you let it know of
263	them.
264
265	To do so, obj-y and obj-m are used.
266	ext2 lives in a separate directory, and the Makefile present in fs/
267	tells kbuild to descend down using the following assignment.
268
269	Example:
270		#fs/Makefile
271		obj-$(CONFIG_EXT2_FS) += ext2/
272
273	If CONFIG_EXT2_FS is set to either 'y' (built-in) or 'm' (modular)
274	the corresponding obj- variable will be set, and kbuild will descend
275	down in the ext2 directory.
276	Kbuild only uses this information to decide that it needs to visit
277	the directory, it is the Makefile in the subdirectory that
278	specifies what is modules and what is built-in.
279
280	It is good practice to use a CONFIG_ variable when assigning directory
281	names. This allows kbuild to totally skip the directory if the
282	corresponding CONFIG_ option is neither 'y' nor 'm'.
283
284--- 3.7 Compilation flags
285
286    ccflags-y, asflags-y and ldflags-y
287	These three flags apply only to the kbuild makefile in which they
288	are assigned. They are used for all the normal cc, as and ld
289	invocations happening during a recursive build.
290	Note: Flags with the same behaviour were previously named:
291	EXTRA_CFLAGS, EXTRA_AFLAGS and EXTRA_LDFLAGS.
292	They are still supported but their usage is deprecated.
293
294	ccflags-y specifies options for compiling with $(CC).
295
296	Example:
297		# drivers/acpi/Makefile
298		ccflags-y := -Os
299		ccflags-$(CONFIG_ACPI_DEBUG) += -DACPI_DEBUG_OUTPUT
300
301	This variable is necessary because the top Makefile owns the
302	variable $(KBUILD_CFLAGS) and uses it for compilation flags for the
303	entire tree.
304
305	asflags-y specifies options for assembling with $(AS).
306
307	Example:
308		#arch/sparc/kernel/Makefile
309		asflags-y := -ansi
310
311	ldflags-y specifies options for linking with $(LD).
312
313	Example:
314		#arch/cris/boot/compressed/Makefile
315		ldflags-y += -T $(srctree)/$(src)/decompress_$(arch-y).lds
316
317    subdir-ccflags-y, subdir-asflags-y
318	The two flags listed above are similar to ccflags-y and asflags-y.
319	The difference is that the subdir- variants have effect for the kbuild
320	file where they are present and all subdirectories.
321	Options specified using subdir-* are added to the commandline before
322	the options specified using the non-subdir variants.
323
324	Example:
325		subdir-ccflags-y := -Werror
326
327    CFLAGS_$@, AFLAGS_$@
328
329	CFLAGS_$@ and AFLAGS_$@ only apply to commands in current
330	kbuild makefile.
331
332	$(CFLAGS_$@) specifies per-file options for $(CC).  The $@
333	part has a literal value which specifies the file that it is for.
334
335	Example:
336		# drivers/scsi/Makefile
337		CFLAGS_aha152x.o =   -DAHA152X_STAT -DAUTOCONF
338		CFLAGS_gdth.o    = # -DDEBUG_GDTH=2 -D__SERIAL__ -D__COM2__ \
339				     -DGDTH_STATISTICS
340
341	These two lines specify compilation flags for aha152x.o and gdth.o.
342
343	$(AFLAGS_$@) is a similar feature for source files in assembly
344	languages.
345
346	Example:
347		# arch/arm/kernel/Makefile
348		AFLAGS_head.o        := -DTEXT_OFFSET=$(TEXT_OFFSET)
349		AFLAGS_crunch-bits.o := -Wa,-mcpu=ep9312
350		AFLAGS_iwmmxt.o      := -Wa,-mcpu=iwmmxt
351
352
353--- 3.9 Dependency tracking
354
355	Kbuild tracks dependencies on the following:
356	1) All prerequisite files (both *.c and *.h)
357	2) CONFIG_ options used in all prerequisite files
358	3) Command-line used to compile target
359
360	Thus, if you change an option to $(CC) all affected files will
361	be re-compiled.
362
363--- 3.10 Special Rules
364
365	Special rules are used when the kbuild infrastructure does
366	not provide the required support. A typical example is
367	header files generated during the build process.
368	Another example are the architecture-specific Makefiles which
369	need special rules to prepare boot images etc.
370
371	Special rules are written as normal Make rules.
372	Kbuild is not executing in the directory where the Makefile is
373	located, so all special rules shall provide a relative
374	path to prerequisite files and target files.
375
376	Two variables are used when defining special rules:
377
378    $(src)
379	$(src) is a relative path which points to the directory
380	where the Makefile is located. Always use $(src) when
381	referring to files located in the src tree.
382
383    $(obj)
384	$(obj) is a relative path which points to the directory
385	where the target is saved. Always use $(obj) when
386	referring to generated files.
387
388	Example:
389		#drivers/scsi/Makefile
390		$(obj)/53c8xx_d.h: $(src)/53c7,8xx.scr $(src)/script_asm.pl
391			$(CPP) -DCHIP=810 - < $< | ... $(src)/script_asm.pl
392
393	This is a special rule, following the normal syntax
394	required by make.
395	The target file depends on two prerequisite files. References
396	to the target file are prefixed with $(obj), references
397	to prerequisites are referenced with $(src) (because they are not
398	generated files).
399
400    $(kecho)
401	echoing information to user in a rule is often a good practice
402	but when execution "make -s" one does not expect to see any output
403	except for warnings/errors.
404	To support this kbuild define $(kecho) which will echo out the
405	text following $(kecho) to stdout except if "make -s" is used.
406
407	Example:
408		#arch/blackfin/boot/Makefile
409		$(obj)/vmImage: $(obj)/vmlinux.gz
410			$(call if_changed,uimage)
411			@$(kecho) 'Kernel: $@ is ready'
412
413
414--- 3.11 $(CC) support functions
415
416	The kernel may be built with several different versions of
417	$(CC), each supporting a unique set of features and options.
418	kbuild provide basic support to check for valid options for $(CC).
419	$(CC) is usually the gcc compiler, but other alternatives are
420	available.
421
422    as-option
423	as-option is used to check if $(CC) -- when used to compile
424	assembler (*.S) files -- supports the given option. An optional
425	second option may be specified if the first option is not supported.
426
427	Example:
428		#arch/sh/Makefile
429		cflags-y += $(call as-option,-Wa$(comma)-isa=$(isa-y),)
430
431	In the above example, cflags-y will be assigned the option
432	-Wa$(comma)-isa=$(isa-y) if it is supported by $(CC).
433	The second argument is optional, and if supplied will be used
434	if first argument is not supported.
435
436    cc-ldoption
437	cc-ldoption is used to check if $(CC) when used to link object files
438	supports the given option.  An optional second option may be
439	specified if first option are not supported.
440
441	Example:
442		#arch/i386/kernel/Makefile
443		vsyscall-flags += $(call cc-ldoption, -Wl$(comma)--hash-style=sysv)
444
445	In the above example, vsyscall-flags will be assigned the option
446	-Wl$(comma)--hash-style=sysv if it is supported by $(CC).
447	The second argument is optional, and if supplied will be used
448	if first argument is not supported.
449
450    as-instr
451	as-instr checks if the assembler reports a specific instruction
452	and then outputs either option1 or option2
453	C escapes are supported in the test instruction
454	Note: as-instr-option uses KBUILD_AFLAGS for $(AS) options
455
456    cc-option
457	cc-option is used to check if $(CC) supports a given option, and not
458	supported to use an optional second option.
459
460	Example:
461		#arch/i386/Makefile
462		cflags-y += $(call cc-option,-march=pentium-mmx,-march=i586)
463
464	In the above example, cflags-y will be assigned the option
465	-march=pentium-mmx if supported by $(CC), otherwise -march=i586.
466	The second argument to cc-option is optional, and if omitted,
467	cflags-y will be assigned no value if first option is not supported.
468	Note: cc-option uses KBUILD_CFLAGS for $(CC) options
469
470   cc-option-yn
471	cc-option-yn is used to check if gcc supports a given option
472	and return 'y' if supported, otherwise 'n'.
473
474	Example:
475		#arch/ppc/Makefile
476		biarch := $(call cc-option-yn, -m32)
477		aflags-$(biarch) += -a32
478		cflags-$(biarch) += -m32
479
480	In the above example, $(biarch) is set to y if $(CC) supports the -m32
481	option. When $(biarch) equals 'y', the expanded variables $(aflags-y)
482	and $(cflags-y) will be assigned the values -a32 and -m32,
483	respectively.
484	Note: cc-option-yn uses KBUILD_CFLAGS for $(CC) options
485
486    cc-option-align
487	gcc versions >= 3.0 changed the type of options used to specify
488	alignment of functions, loops etc. $(cc-option-align), when used
489	as prefix to the align options, will select the right prefix:
490	gcc < 3.00
491		cc-option-align = -malign
492	gcc >= 3.00
493		cc-option-align = -falign
494
495	Example:
496		KBUILD_CFLAGS += $(cc-option-align)-functions=4
497
498	In the above example, the option -falign-functions=4 is used for
499	gcc >= 3.00. For gcc < 3.00, -malign-functions=4 is used.
500	Note: cc-option-align uses KBUILD_CFLAGS for $(CC) options
501
502    cc-version
503	cc-version returns a numerical version of the $(CC) compiler version.
504	The format is <major><minor> where both are two digits. So for example
505	gcc 3.41 would return 0341.
506	cc-version is useful when a specific $(CC) version is faulty in one
507	area, for example -mregparm=3 was broken in some gcc versions
508	even though the option was accepted by gcc.
509
510	Example:
511		#arch/i386/Makefile
512		cflags-y += $(shell \
513		if [ $(call cc-version) -ge 0300 ] ; then \
514			echo "-mregparm=3"; fi ;)
515
516	In the above example, -mregparm=3 is only used for gcc version greater
517	than or equal to gcc 3.0.
518
519    cc-ifversion
520	cc-ifversion tests the version of $(CC) and equals last argument if
521	version expression is true.
522
523	Example:
524		#fs/reiserfs/Makefile
525		ccflags-y := $(call cc-ifversion, -lt, 0402, -O1)
526
527	In this example, ccflags-y will be assigned the value -O1 if the
528	$(CC) version is less than 4.2.
529	cc-ifversion takes all the shell operators:
530	-eq, -ne, -lt, -le, -gt, and -ge
531	The third parameter may be a text as in this example, but it may also
532	be an expanded variable or a macro.
533
534    cc-fullversion
535	cc-fullversion is useful when the exact version of gcc is needed.
536	One typical use-case is when a specific GCC version is broken.
537	cc-fullversion points out a more specific version than cc-version does.
538
539	Example:
540		#arch/powerpc/Makefile
541		$(Q)if test "$(call cc-fullversion)" = "040200" ; then \
542			echo -n '*** GCC-4.2.0 cannot compile the 64-bit powerpc ' ; \
543			false ; \
544		fi
545
546	In this example for a specific GCC version the build will error out explaining
547	to the user why it stops.
548
549    cc-cross-prefix
550	cc-cross-prefix is used to check if there exists a $(CC) in path with
551	one of the listed prefixes. The first prefix where there exist a
552	prefix$(CC) in the PATH is returned - and if no prefix$(CC) is found
553	then nothing is returned.
554	Additional prefixes are separated by a single space in the
555	call of cc-cross-prefix.
556	This functionality is useful for architecture Makefiles that try
557	to set CROSS_COMPILE to well-known values but may have several
558	values to select between.
559	It is recommended only to try to set CROSS_COMPILE if it is a cross
560	build (host arch is different from target arch). And if CROSS_COMPILE
561	is already set then leave it with the old value.
562
563	Example:
564		#arch/m68k/Makefile
565		ifneq ($(SUBARCH),$(ARCH))
566		        ifeq ($(CROSS_COMPILE),)
567		               CROSS_COMPILE := $(call cc-cross-prefix, m68k-linux-gnu-)
568			endif
569		endif
570
571--- 3.12 $(LD) support functions
572
573    ld-option
574	ld-option is used to check if $(LD) supports the supplied option.
575	ld-option takes two options as arguments.
576	The second argument is an optional option that can be used if the
577	first option is not supported by $(LD).
578
579	Example:
580		#Makefile
581		LDFLAGS_vmlinux += $(call really-ld-option, -X)
582
583
584=== 4 Host Program support
585
586Kbuild supports building executables on the host for use during the
587compilation stage.
588Two steps are required in order to use a host executable.
589
590The first step is to tell kbuild that a host program exists. This is
591done utilising the variable hostprogs-y.
592
593The second step is to add an explicit dependency to the executable.
594This can be done in two ways. Either add the dependency in a rule,
595or utilise the variable $(always).
596Both possibilities are described in the following.
597
598--- 4.1 Simple Host Program
599
600	In some cases there is a need to compile and run a program on the
601	computer where the build is running.
602	The following line tells kbuild that the program bin2hex shall be
603	built on the build host.
604
605	Example:
606		hostprogs-y := bin2hex
607
608	Kbuild assumes in the above example that bin2hex is made from a single
609	c-source file named bin2hex.c located in the same directory as
610	the Makefile.
611
612--- 4.2 Composite Host Programs
613
614	Host programs can be made up based on composite objects.
615	The syntax used to define composite objects for host programs is
616	similar to the syntax used for kernel objects.
617	$(<executable>-objs) lists all objects used to link the final
618	executable.
619
620	Example:
621		#scripts/lxdialog/Makefile
622		hostprogs-y   := lxdialog
623		lxdialog-objs := checklist.o lxdialog.o
624
625	Objects with extension .o are compiled from the corresponding .c
626	files. In the above example, checklist.c is compiled to checklist.o
627	and lxdialog.c is compiled to lxdialog.o.
628	Finally, the two .o files are linked to the executable, lxdialog.
629	Note: The syntax <executable>-y is not permitted for host-programs.
630
631--- 4.3 Defining shared libraries
632
633	Objects with extension .so are considered shared libraries, and
634	will be compiled as position independent objects.
635	Kbuild provides support for shared libraries, but the usage
636	shall be restricted.
637	In the following example the libkconfig.so shared library is used
638	to link the executable conf.
639
640	Example:
641		#scripts/kconfig/Makefile
642		hostprogs-y     := conf
643		conf-objs       := conf.o libkconfig.so
644		libkconfig-objs := expr.o type.o
645
646	Shared libraries always require a corresponding -objs line, and
647	in the example above the shared library libkconfig is composed by
648	the two objects expr.o and type.o.
649	expr.o and type.o will be built as position independent code and
650	linked as a shared library libkconfig.so. C++ is not supported for
651	shared libraries.
652
653--- 4.4 Using C++ for host programs
654
655	kbuild offers support for host programs written in C++. This was
656	introduced solely to support kconfig, and is not recommended
657	for general use.
658
659	Example:
660		#scripts/kconfig/Makefile
661		hostprogs-y   := qconf
662		qconf-cxxobjs := qconf.o
663
664	In the example above the executable is composed of the C++ file
665	qconf.cc - identified by $(qconf-cxxobjs).
666
667	If qconf is composed by a mixture of .c and .cc files, then an
668	additional line can be used to identify this.
669
670	Example:
671		#scripts/kconfig/Makefile
672		hostprogs-y   := qconf
673		qconf-cxxobjs := qconf.o
674		qconf-objs    := check.o
675
676--- 4.5 Controlling compiler options for host programs
677
678	When compiling host programs, it is possible to set specific flags.
679	The programs will always be compiled utilising $(HOSTCC) passed
680	the options specified in $(HOSTCFLAGS).
681	To set flags that will take effect for all host programs created
682	in that Makefile, use the variable HOST_EXTRACFLAGS.
683
684	Example:
685		#scripts/lxdialog/Makefile
686		HOST_EXTRACFLAGS += -I/usr/include/ncurses
687
688	To set specific flags for a single file the following construction
689	is used:
690
691	Example:
692		#arch/ppc64/boot/Makefile
693		HOSTCFLAGS_piggyback.o := -DKERNELBASE=$(KERNELBASE)
694
695	It is also possible to specify additional options to the linker.
696
697	Example:
698		#scripts/kconfig/Makefile
699		HOSTLOADLIBES_qconf := -L$(QTDIR)/lib
700
701	When linking qconf, it will be passed the extra option
702	"-L$(QTDIR)/lib".
703
704--- 4.6 When host programs are actually built
705
706	Kbuild will only build host-programs when they are referenced
707	as a prerequisite.
708	This is possible in two ways:
709
710	(1) List the prerequisite explicitly in a special rule.
711
712	Example:
713		#drivers/pci/Makefile
714		hostprogs-y := gen-devlist
715		$(obj)/devlist.h: $(src)/pci.ids $(obj)/gen-devlist
716			( cd $(obj); ./gen-devlist ) < $<
717
718	The target $(obj)/devlist.h will not be built before
719	$(obj)/gen-devlist is updated. Note that references to
720	the host programs in special rules must be prefixed with $(obj).
721
722	(2) Use $(always)
723	When there is no suitable special rule, and the host program
724	shall be built when a makefile is entered, the $(always)
725	variable shall be used.
726
727	Example:
728		#scripts/lxdialog/Makefile
729		hostprogs-y   := lxdialog
730		always        := $(hostprogs-y)
731
732	This will tell kbuild to build lxdialog even if not referenced in
733	any rule.
734
735--- 4.7 Using hostprogs-$(CONFIG_FOO)
736
737	A typical pattern in a Kbuild file looks like this:
738
739	Example:
740		#scripts/Makefile
741		hostprogs-$(CONFIG_KALLSYMS) += kallsyms
742
743	Kbuild knows about both 'y' for built-in and 'm' for module.
744	So if a config symbol evaluate to 'm', kbuild will still build
745	the binary. In other words, Kbuild handles hostprogs-m exactly
746	like hostprogs-y. But only hostprogs-y is recommended to be used
747	when no CONFIG symbols are involved.
748
749=== 5 Kbuild clean infrastructure
750
751"make clean" deletes most generated files in the obj tree where the kernel
752is compiled. This includes generated files such as host programs.
753Kbuild knows targets listed in $(hostprogs-y), $(hostprogs-m), $(always),
754$(extra-y) and $(targets). They are all deleted during "make clean".
755Files matching the patterns "*.[oas]", "*.ko", plus some additional files
756generated by kbuild are deleted all over the kernel src tree when
757"make clean" is executed.
758
759Additional files can be specified in kbuild makefiles by use of $(clean-files).
760
761	Example:
762		#drivers/pci/Makefile
763		clean-files := devlist.h classlist.h
764
765When executing "make clean", the two files "devlist.h classlist.h" will
766be deleted. Kbuild will assume files to be in same relative directory as the
767Makefile except if an absolute path is specified (path starting with '/').
768
769To delete a directory hierarchy use:
770
771	Example:
772		#scripts/package/Makefile
773		clean-dirs := $(objtree)/debian/
774
775This will delete the directory debian, including all subdirectories.
776Kbuild will assume the directories to be in the same relative path as the
777Makefile if no absolute path is specified (path does not start with '/').
778
779To exclude certain files from make clean, use the $(no-clean-files) variable.
780This is only a special case used in the top level Kbuild file:
781
782	Example:
783		#Kbuild
784		no-clean-files := $(bounds-file) $(offsets-file)
785
786Usually kbuild descends down in subdirectories due to "obj-* := dir/",
787but in the architecture makefiles where the kbuild infrastructure
788is not sufficient this sometimes needs to be explicit.
789
790	Example:
791		#arch/i386/boot/Makefile
792		subdir- := compressed/
793
794The above assignment instructs kbuild to descend down in the
795directory compressed/ when "make clean" is executed.
796
797To support the clean infrastructure in the Makefiles that builds the
798final bootimage there is an optional target named archclean:
799
800	Example:
801		#arch/i386/Makefile
802		archclean:
803			$(Q)$(MAKE) $(clean)=arch/i386/boot
804
805When "make clean" is executed, make will descend down in arch/i386/boot,
806and clean as usual. The Makefile located in arch/i386/boot/ may use
807the subdir- trick to descend further down.
808
809Note 1: arch/$(ARCH)/Makefile cannot use "subdir-", because that file is
810included in the top level makefile, and the kbuild infrastructure
811is not operational at that point.
812
813Note 2: All directories listed in core-y, libs-y, drivers-y and net-y will
814be visited during "make clean".
815
816=== 6 Architecture Makefiles
817
818The top level Makefile sets up the environment and does the preparation,
819before starting to descend down in the individual directories.
820The top level makefile contains the generic part, whereas
821arch/$(ARCH)/Makefile contains what is required to set up kbuild
822for said architecture.
823To do so, arch/$(ARCH)/Makefile sets up a number of variables and defines
824a few targets.
825
826When kbuild executes, the following steps are followed (roughly):
8271) Configuration of the kernel => produce .config
8282) Store kernel version in include/linux/version.h
8293) Symlink include/asm to include/asm-$(ARCH)
8304) Updating all other prerequisites to the target prepare:
831   - Additional prerequisites are specified in arch/$(ARCH)/Makefile
8325) Recursively descend down in all directories listed in
833   init-* core* drivers-* net-* libs-* and build all targets.
834   - The values of the above variables are expanded in arch/$(ARCH)/Makefile.
8356) All object files are then linked and the resulting file vmlinux is
836   located at the root of the obj tree.
837   The very first objects linked are listed in head-y, assigned by
838   arch/$(ARCH)/Makefile.
8397) Finally, the architecture-specific part does any required post processing
840   and builds the final bootimage.
841   - This includes building boot records
842   - Preparing initrd images and the like
843
844
845--- 6.1 Set variables to tweak the build to the architecture
846
847    LDFLAGS		Generic $(LD) options
848
849	Flags used for all invocations of the linker.
850	Often specifying the emulation is sufficient.
851
852	Example:
853		#arch/s390/Makefile
854		LDFLAGS         := -m elf_s390
855	Note: ldflags-y can be used to further customise
856	the flags used. See chapter 3.7.
857
858    LDFLAGS_MODULE	Options for $(LD) when linking modules
859
860	LDFLAGS_MODULE is used to set specific flags for $(LD) when
861	linking the .ko files used for modules.
862	Default is "-r", for relocatable output.
863
864    LDFLAGS_vmlinux	Options for $(LD) when linking vmlinux
865
866	LDFLAGS_vmlinux is used to specify additional flags to pass to
867	the linker when linking the final vmlinux image.
868	LDFLAGS_vmlinux uses the LDFLAGS_$@ support.
869
870	Example:
871		#arch/i386/Makefile
872		LDFLAGS_vmlinux := -e stext
873
874    OBJCOPYFLAGS	objcopy flags
875
876	When $(call if_changed,objcopy) is used to translate a .o file,
877	the flags specified in OBJCOPYFLAGS will be used.
878	$(call if_changed,objcopy) is often used to generate raw binaries on
879	vmlinux.
880
881	Example:
882		#arch/s390/Makefile
883		OBJCOPYFLAGS := -O binary
884
885		#arch/s390/boot/Makefile
886		$(obj)/image: vmlinux FORCE
887			$(call if_changed,objcopy)
888
889	In this example, the binary $(obj)/image is a binary version of
890	vmlinux. The usage of $(call if_changed,xxx) will be described later.
891
892    KBUILD_AFLAGS		$(AS) assembler flags
893
894	Default value - see top level Makefile
895	Append or modify as required per architecture.
896
897	Example:
898		#arch/sparc64/Makefile
899		KBUILD_AFLAGS += -m64 -mcpu=ultrasparc
900
901    KBUILD_CFLAGS		$(CC) compiler flags
902
903	Default value - see top level Makefile
904	Append or modify as required per architecture.
905
906	Often, the KBUILD_CFLAGS variable depends on the configuration.
907
908	Example:
909		#arch/i386/Makefile
910		cflags-$(CONFIG_M386) += -march=i386
911		KBUILD_CFLAGS += $(cflags-y)
912
913	Many arch Makefiles dynamically run the target C compiler to
914	probe supported options:
915
916		#arch/i386/Makefile
917
918		...
919		cflags-$(CONFIG_MPENTIUMII)     += $(call cc-option,\
920						-march=pentium2,-march=i686)
921		...
922		# Disable unit-at-a-time mode ...
923		KBUILD_CFLAGS += $(call cc-option,-fno-unit-at-a-time)
924		...
925
926
927	The first example utilises the trick that a config option expands
928	to 'y' when selected.
929
930    KBUILD_AFLAGS_KERNEL	$(AS) options specific for built-in
931
932	$(KBUILD_AFLAGS_KERNEL) contains extra C compiler flags used to compile
933	resident kernel code.
934
935    KBUILD_AFLAGS_MODULE   Options for $(AS) when building modules
936
937	$(KBUILD_AFLAGS_MODULE) is used to add arch specific options that
938	are used for $(AS).
939	From commandline AFLAGS_MODULE shall be used (see kbuild.txt).
940
941    KBUILD_CFLAGS_KERNEL	$(CC) options specific for built-in
942
943	$(KBUILD_CFLAGS_KERNEL) contains extra C compiler flags used to compile
944	resident kernel code.
945
946    KBUILD_CFLAGS_MODULE   Options for $(CC) when building modules
947
948	$(KBUILD_CFLAGS_MODULE) is used to add arch specific options that
949	are used for $(CC).
950	From commandline CFLAGS_MODULE shall be used (see kbuild.txt).
951
952    KBUILD_LDFLAGS_MODULE   Options for $(LD) when linking modules
953
954	$(KBUILD_LDFLAGS_MODULE) is used to add arch specific options
955	used when linking modules. This is often a linker script.
956	From commandline LDFLAGS_MODULE shall be used (see kbuild.txt).
957
958--- 6.2 Add prerequisites to archprepare:
959
960	The archprepare: rule is used to list prerequisites that need to be
961	built before starting to descend down in the subdirectories.
962	This is usually used for header files containing assembler constants.
963
964		Example:
965		#arch/arm/Makefile
966		archprepare: maketools
967
968	In this example, the file target maketools will be processed
969	before descending down in the subdirectories.
970	See also chapter XXX-TODO that describe how kbuild supports
971	generating offset header files.
972
973
974--- 6.3 List directories to visit when descending
975
976	An arch Makefile cooperates with the top Makefile to define variables
977	which specify how to build the vmlinux file.  Note that there is no
978	corresponding arch-specific section for modules; the module-building
979	machinery is all architecture-independent.
980
981
982    head-y, init-y, core-y, libs-y, drivers-y, net-y
983
984	$(head-y) lists objects to be linked first in vmlinux.
985	$(libs-y) lists directories where a lib.a archive can be located.
986	The rest list directories where a built-in.o object file can be
987	located.
988
989	$(init-y) objects will be located after $(head-y).
990	Then the rest follows in this order:
991	$(core-y), $(libs-y), $(drivers-y) and $(net-y).
992
993	The top level Makefile defines values for all generic directories,
994	and arch/$(ARCH)/Makefile only adds architecture-specific directories.
995
996	Example:
997		#arch/sparc64/Makefile
998		core-y += arch/sparc64/kernel/
999		libs-y += arch/sparc64/prom/ arch/sparc64/lib/
1000		drivers-$(CONFIG_OPROFILE)  += arch/sparc64/oprofile/
1001
1002
1003--- 6.4 Architecture-specific boot images
1004
1005	An arch Makefile specifies goals that take the vmlinux file, compress
1006	it, wrap it in bootstrapping code, and copy the resulting files
1007	somewhere. This includes various kinds of installation commands.
1008	The actual goals are not standardized across architectures.
1009
1010	It is common to locate any additional processing in a boot/
1011	directory below arch/$(ARCH)/.
1012
1013	Kbuild does not provide any smart way to support building a
1014	target specified in boot/. Therefore arch/$(ARCH)/Makefile shall
1015	call make manually to build a target in boot/.
1016
1017	The recommended approach is to include shortcuts in
1018	arch/$(ARCH)/Makefile, and use the full path when calling down
1019	into the arch/$(ARCH)/boot/Makefile.
1020
1021	Example:
1022		#arch/i386/Makefile
1023		boot := arch/i386/boot
1024		bzImage: vmlinux
1025			$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
1026
1027	"$(Q)$(MAKE) $(build)=<dir>" is the recommended way to invoke
1028	make in a subdirectory.
1029
1030	There are no rules for naming architecture-specific targets,
1031	but executing "make help" will list all relevant targets.
1032	To support this, $(archhelp) must be defined.
1033
1034	Example:
1035		#arch/i386/Makefile
1036		define archhelp
1037		  echo  '* bzImage      - Image (arch/$(ARCH)/boot/bzImage)'
1038		endif
1039
1040	When make is executed without arguments, the first goal encountered
1041	will be built. In the top level Makefile the first goal present
1042	is all:.
1043	An architecture shall always, per default, build a bootable image.
1044	In "make help", the default goal is highlighted with a '*'.
1045	Add a new prerequisite to all: to select a default goal different
1046	from vmlinux.
1047
1048	Example:
1049		#arch/i386/Makefile
1050		all: bzImage
1051
1052	When "make" is executed without arguments, bzImage will be built.
1053
1054--- 6.5 Building non-kbuild targets
1055
1056    extra-y
1057
1058	extra-y specify additional targets created in the current
1059	directory, in addition to any targets specified by obj-*.
1060
1061	Listing all targets in extra-y is required for two purposes:
1062	1) Enable kbuild to check changes in command lines
1063	   - When $(call if_changed,xxx) is used
1064	2) kbuild knows what files to delete during "make clean"
1065
1066	Example:
1067		#arch/i386/kernel/Makefile
1068		extra-y := head.o init_task.o
1069
1070	In this example, extra-y is used to list object files that
1071	shall be built, but shall not be linked as part of built-in.o.
1072
1073
1074--- 6.6 Commands useful for building a boot image
1075
1076	Kbuild provides a few macros that are useful when building a
1077	boot image.
1078
1079    if_changed
1080
1081	if_changed is the infrastructure used for the following commands.
1082
1083	Usage:
1084		target: source(s) FORCE
1085			$(call if_changed,ld/objcopy/gzip)
1086
1087	When the rule is evaluated, it is checked to see if any files
1088	need an update, or the command line has changed since the last
1089	invocation. The latter will force a rebuild if any options
1090	to the executable have changed.
1091	Any target that utilises if_changed must be listed in $(targets),
1092	otherwise the command line check will fail, and the target will
1093	always be built.
1094	Assignments to $(targets) are without $(obj)/ prefix.
1095	if_changed may be used in conjunction with custom commands as
1096	defined in 6.7 "Custom kbuild commands".
1097
1098	Note: It is a typical mistake to forget the FORCE prerequisite.
1099	Another common pitfall is that whitespace is sometimes
1100	significant; for instance, the below will fail (note the extra space
1101	after the comma):
1102		target: source(s) FORCE
1103	#WRONG!#	$(call if_changed, ld/objcopy/gzip)
1104
1105    ld
1106	Link target. Often, LDFLAGS_$@ is used to set specific options to ld.
1107
1108    objcopy
1109	Copy binary. Uses OBJCOPYFLAGS usually specified in
1110	arch/$(ARCH)/Makefile.
1111	OBJCOPYFLAGS_$@ may be used to set additional options.
1112
1113    gzip
1114	Compress target. Use maximum compression to compress target.
1115
1116	Example:
1117		#arch/i386/boot/Makefile
1118		LDFLAGS_bootsect := -Ttext 0x0 -s --oformat binary
1119		LDFLAGS_setup    := -Ttext 0x0 -s --oformat binary -e begtext
1120
1121		targets += setup setup.o bootsect bootsect.o
1122		$(obj)/setup $(obj)/bootsect: %: %.o FORCE
1123			$(call if_changed,ld)
1124
1125	In this example, there are two possible targets, requiring different
1126	options to the linker. The linker options are specified using the
1127	LDFLAGS_$@ syntax - one for each potential target.
1128	$(targets) are assigned all potential targets, by which kbuild knows
1129	the targets and will:
1130		1) check for commandline changes
1131		2) delete target during make clean
1132
1133	The ": %: %.o" part of the prerequisite is a shorthand that
1134	free us from listing the setup.o and bootsect.o files.
1135	Note: It is a common mistake to forget the "target :=" assignment,
1136	      resulting in the target file being recompiled for no
1137	      obvious reason.
1138
1139    dtc
1140	Create flattend device tree blob object suitable for linking
1141	into vmlinux. Device tree blobs linked into vmlinux are placed
1142	in an init section in the image. Platform code *must* copy the
1143	blob to non-init memory prior to calling unflatten_device_tree().
1144
1145	Example:
1146		#arch/x86/platform/ce4100/Makefile
1147		clean-files := *dtb.S
1148
1149		DTC_FLAGS := -p 1024
1150		obj-y += foo.dtb.o
1151
1152		$(obj)/%.dtb: $(src)/%.dts
1153			$(call cmd,dtc)
1154
1155--- 6.7 Custom kbuild commands
1156
1157	When kbuild is executing with KBUILD_VERBOSE=0, then only a shorthand
1158	of a command is normally displayed.
1159	To enable this behaviour for custom commands kbuild requires
1160	two variables to be set:
1161	quiet_cmd_<command>	- what shall be echoed
1162	      cmd_<command>	- the command to execute
1163
1164	Example:
1165		#
1166		quiet_cmd_image = BUILD   $@
1167		      cmd_image = $(obj)/tools/build $(BUILDFLAGS) \
1168		                                     $(obj)/vmlinux.bin > $@
1169
1170		targets += bzImage
1171		$(obj)/bzImage: $(obj)/vmlinux.bin $(obj)/tools/build FORCE
1172			$(call if_changed,image)
1173			@echo 'Kernel: $@ is ready'
1174
1175	When updating the $(obj)/bzImage target, the line
1176
1177	BUILD    arch/i386/boot/bzImage
1178
1179	will be displayed with "make KBUILD_VERBOSE=0".
1180
1181
1182--- 6.8 Preprocessing linker scripts
1183
1184	When the vmlinux image is built, the linker script
1185	arch/$(ARCH)/kernel/vmlinux.lds is used.
1186	The script is a preprocessed variant of the file vmlinux.lds.S
1187	located in the same directory.
1188	kbuild knows .lds files and includes a rule *lds.S -> *lds.
1189
1190	Example:
1191		#arch/i386/kernel/Makefile
1192		always := vmlinux.lds
1193
1194		#Makefile
1195		export CPPFLAGS_vmlinux.lds += -P -C -U$(ARCH)
1196
1197	The assignment to $(always) is used to tell kbuild to build the
1198	target vmlinux.lds.
1199	The assignment to $(CPPFLAGS_vmlinux.lds) tells kbuild to use the
1200	specified options when building the target vmlinux.lds.
1201
1202	When building the *.lds target, kbuild uses the variables:
1203	KBUILD_CPPFLAGS	: Set in top-level Makefile
1204	cppflags-y	: May be set in the kbuild makefile
1205	CPPFLAGS_$(@F)  : Target specific flags.
1206	                  Note that the full filename is used in this
1207	                  assignment.
1208
1209	The kbuild infrastructure for *lds file are used in several
1210	architecture-specific files.
1211
1212=== 7 Kbuild syntax for exported headers
1213
1214The kernel include a set of headers that is exported to userspace.
1215Many headers can be exported as-is but other headers require a
1216minimal pre-processing before they are ready for user-space.
1217The pre-processing does:
1218- drop kernel specific annotations
1219- drop include of compiler.h
1220- drop all sections that are kernel internal (guarded by ifdef __KERNEL__)
1221
1222Each relevant directory contains a file name "Kbuild" which specifies the
1223headers to be exported.
1224See subsequent chapter for the syntax of the Kbuild file.
1225
1226	--- 7.1 header-y
1227
1228	header-y specify header files to be exported.
1229
1230		Example:
1231			#include/linux/Kbuild
1232			header-y += usb/
1233			header-y += aio_abi.h
1234
1235	The convention is to list one file per line and
1236	preferably in alphabetic order.
1237
1238	header-y also specify which subdirectories to visit.
1239	A subdirectory is identified by a trailing '/' which
1240	can be seen in the example above for the usb subdirectory.
1241
1242	Subdirectories are visited before their parent directories.
1243
1244	--- 7.2 objhdr-y
1245
1246	objhdr-y specifies generated files to be exported.
1247	Generated files are special as they need to be looked
1248	up in another directory when doing 'make O=...' builds.
1249
1250		Example:
1251			#include/linux/Kbuild
1252			objhdr-y += version.h
1253
1254	--- 7.3 destination-y
1255
1256	When an architecture have a set of exported headers that needs to be
1257	exported to a different directory destination-y is used.
1258	destination-y specify the destination directory for all exported
1259	headers in the file where it is present.
1260
1261		Example:
1262			#arch/xtensa/platforms/s6105/include/platform/Kbuild
1263			destination-y := include/linux
1264
1265	In the example above all exported headers in the Kbuild file
1266	will be located in the directory "include/linux" when exported.
1267
1268
1269=== 8 Kbuild Variables
1270
1271The top Makefile exports the following variables:
1272
1273    VERSION, PATCHLEVEL, SUBLEVEL, EXTRAVERSION
1274
1275	These variables define the current kernel version.  A few arch
1276	Makefiles actually use these values directly; they should use
1277	$(KERNELRELEASE) instead.
1278
1279	$(VERSION), $(PATCHLEVEL), and $(SUBLEVEL) define the basic
1280	three-part version number, such as "2", "4", and "0".  These three
1281	values are always numeric.
1282
1283	$(EXTRAVERSION) defines an even tinier sublevel for pre-patches
1284	or additional patches.	It is usually some non-numeric string
1285	such as "-pre4", and is often blank.
1286
1287    KERNELRELEASE
1288
1289	$(KERNELRELEASE) is a single string such as "2.4.0-pre4", suitable
1290	for constructing installation directory names or showing in
1291	version strings.  Some arch Makefiles use it for this purpose.
1292
1293    ARCH
1294
1295	This variable defines the target architecture, such as "i386",
1296	"arm", or "sparc". Some kbuild Makefiles test $(ARCH) to
1297	determine which files to compile.
1298
1299	By default, the top Makefile sets $(ARCH) to be the same as the
1300	host system architecture.  For a cross build, a user may
1301	override the value of $(ARCH) on the command line:
1302
1303	    make ARCH=m68k ...
1304
1305
1306    INSTALL_PATH
1307
1308	This variable defines a place for the arch Makefiles to install
1309	the resident kernel image and System.map file.
1310	Use this for architecture-specific install targets.
1311
1312    INSTALL_MOD_PATH, MODLIB
1313
1314	$(INSTALL_MOD_PATH) specifies a prefix to $(MODLIB) for module
1315	installation.  This variable is not defined in the Makefile but
1316	may be passed in by the user if desired.
1317
1318	$(MODLIB) specifies the directory for module installation.
1319	The top Makefile defines $(MODLIB) to
1320	$(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE).  The user may
1321	override this value on the command line if desired.
1322
1323    INSTALL_MOD_STRIP
1324
1325	If this variable is specified, will cause modules to be stripped
1326	after they are installed.  If INSTALL_MOD_STRIP is '1', then the
1327	default option --strip-debug will be used.  Otherwise,
1328	INSTALL_MOD_STRIP value will be used as the option(s) to the strip
1329	command.
1330
1331
1332=== 9 Makefile language
1333
1334The kernel Makefiles are designed to be run with GNU Make.  The Makefiles
1335use only the documented features of GNU Make, but they do use many
1336GNU extensions.
1337
1338GNU Make supports elementary list-processing functions.  The kernel
1339Makefiles use a novel style of list building and manipulation with few
1340"if" statements.
1341
1342GNU Make has two assignment operators, ":=" and "=".  ":=" performs
1343immediate evaluation of the right-hand side and stores an actual string
1344into the left-hand side.  "=" is like a formula definition; it stores the
1345right-hand side in an unevaluated form and then evaluates this form each
1346time the left-hand side is used.
1347
1348There are some cases where "=" is appropriate.  Usually, though, ":="
1349is the right choice.
1350
1351=== 10 Credits
1352
1353Original version made by Michael Elizabeth Chastain, <mailto:mec@shout.net>
1354Updates by Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de>
1355Updates by Sam Ravnborg <sam@ravnborg.org>
1356Language QA by Jan Engelhardt <jengelh@gmx.de>
1357
1358=== 11 TODO
1359
1360- Describe how kbuild supports shipped files with _shipped.
1361- Generating offset header files.
1362- Add more variables to section 7?
1363
1364
1365
1366