Kernel Makefiles are part of the kbuild
system, documented in various places on the web, for example http://lwn.net/Articles/21835/. The relevant excerpt is here:
--- 3.1 Goal definitions
Goal definitions are the main part (heart) of the kbuild Makefile.
These lines define the files to be built, any special compilation
options, and any subdirectories to be entered recursively.The most simple kbuild makefile contains one line:
Example: obj-y += foo.o
This tell kbuild that there is one object in that directory named
foo.o. foo.o will be build from foo.c or foo.S.If foo.o shall be built as a module, the variable obj-m is used.
Therefore the following pattern is often used:Example: obj-$(CONFIG_FOO) += foo.o
$(CONFIG_FOO) evaluates to either y (for built-in) or m (for module).
If CONFIG_FOO is neither y nor m, then the file will not be compiled
nor linked.
So m
means module, y
means built-in (stands for yes in the kernel config process), and $(CONFIG_FOO) pulls the right answer from the normal config process.