Kconfig Support in build2
Posted on 19 Jan 2021 by
Boris Kolpackov with comments on r/cpp/
The build2 toolchain now includes a build system module that
allows using the Linux kernel configuration system (Kconfig) to configure
build2-based projects.
What is Kconfig?
Kconfig is the configuration system of the Linux kernel. Over the years it has evolved into a sophisticated variability modeling language and a toolset that are used by the Linux kernel to manage over ten thousand configuration options. It is also increasingly being used by other projects that need to manage complex configurations.
The Kconfig language defines a hierarchy of menus containing configuration options as well as relationships between them. For example:
config FANCY
bool "Fancy options"
help
Enable more fancy configuration options.
config GREETING
string "Custom greeting"
default "Hello"
depends on FANCY
help
Custom string to use as a greeting.
To create and manage configurations, the Kconfig system includes a number of tools called configurators. These provide both interactive (terminal and graphical) and non-interactive (default, random, etc) configuration methods, support for updating old configurations to new definitions (both interactively and non), as well as other configuration management facilities (creation of default configurations, etc).
See What is Kconfig for a more detailed overview and examples.
What is build2 Kconfig module?
The build2 Kconfig module acts as a second-level
configuration mechanism to the builtin configuration support. Specifically,
it integrates the execution of one of the Kconfig configurators into the
build2 configure meta-operation and loads the
resulting configuration file presenting its values as kconfig.*
variables. We can then use these kconfig.* values to make
decisions in buildfiles, testscripts, and/or
propagate them to our source code, similar to the config.*
values (Project
Configuration).
See What
is build2 Kconfig module for a more detailed overview and
examples.
How to Try
The Kconfig functionality is available on all the supported platforms
(including Windows). The kconfig module is part of the standard
pre-installed build2 modules and is available starting with
build2 version 0.14.0. If you would like to try it
before 0.14.0 is released, use the staged version of the
toolchain.
To get started, refer to the Introduction
in The
build2 Kconfig Module manual as well as the kconfig-hello
example. See Kconfig
Language for the description of the language.