Kconfig¶
This project makes use of KConfig <> for build-time configurations.
KConfig is a well-known tool
that originated from the Linux kernel.
Among the various implementations available,
the Kconfiglib implementation
is required by this project.
See the Prerequisites documentation for further reference.
The build system relies on the KBUILD_DEFCONFIG Make variable
to determine the configuration.
KBUILD_DEFCONFIG must point to a file
including the list of configurations.
For example:
make KBUILD_DEFCONFIG=/path/to/my/config
This file is used to generate a .config file in the root directory,
which in turn is included by the build system
to generate a config.h header file
inside the include/ directory.
This header file is later consumed by other source files.
If no KBUILD_DEFCONFIG is given,
configs/default.config is selected by default.
configs/default.config points to builds meant for Raspberry Pi users.
In order to remove the generated config.h,
call make distclean.
Note that this will also remove other artifacts,
such as object files,
as well as de-initializing all submodules in the repository.
Available configurations¶
The configs/ directory provides a set of .config files
that can be used as KBUILD_DEFCONFIG.
However, all of them
(except from unit-test-all-hubs-wasm.config and default.config)
are there for historical reasons,
they are not actively tested
and therefore they are not guaranteed to be maintained.
unit-test-all-hubs-wasm.config is the configuration shared
among all unit tests and system tests.