The Kconfig mechanism is today’s standard configuration mechanism and it is used by leading open source projects, such as the
Linux kernel,
Busybox and
uClibc. The Kconfig has a basic configuration syntax that allows you to add configuration options of various types, create dependencies and write a few lines of description. The Kconfig utilities know how to read and parse the configuration files, and create project configuration files (usually by the name of
.config for Makefiles and
autoconf.h for source files). Other advantages this method has, are automatic menu generation (for both graphical and text based consoles), and ease of configuration management. With Kconfig, there is no need to specify any build flags to the project’s make. In this article I will show how to use the Kconfig to configure your Linux kernel, and how to easily modify the kernel’s Kconfig files in order to add a new driver somewhere in the tree. These methods of configuration can be also ported to any other projects.
The Linux kernel is instrumented with a Kconfig file almost per each directory. Each Kconfig file configures its own level. For example, you’ll find a Kconfig in each driver directory or arch directory. Each one of them configures a driver or architecture and includes other Kconfig files in the levels below it.