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.