52 lines
1.7 KiB
ReStructuredText
52 lines
1.7 KiB
ReStructuredText
.. _hv-config:
|
|
|
|
Compile-time Configuration
|
|
##########################
|
|
|
|
The hypervisor provides a kconfig-like way for manipulating compile-time
|
|
configurations. Basically the hypervisor defines a set of configuration
|
|
symbols and declare their default value. A configuration file is
|
|
created, containing the values of each symbol, before building the
|
|
sources.
|
|
|
|
Similar to Linux kconfig, there are three files involved:
|
|
|
|
- **.config** This files stores the values of all configuration
|
|
symbols.
|
|
|
|
- **config.mk** This file is a conversion of .config in Makefile
|
|
syntax, and can be included in makefiles so that the build
|
|
process can rely on the configurations.
|
|
|
|
- **config.h** This file is a conversion of .config in C syntax, and is
|
|
automatically included in every source file so that the values of
|
|
the configuration symbols are available in the sources.
|
|
|
|
.. figure:: images/config-image103.png
|
|
:align: center
|
|
:name: config-build-workflow
|
|
|
|
Hypervisor configuration and build workflow
|
|
|
|
:numref:`config-build-workflow` shows the workflow of building the
|
|
hypervisor:
|
|
|
|
1. Three targets are introduced for manipulating the configurations.
|
|
|
|
a. **defconfig** creates a .config based on a predefined
|
|
configuration file.
|
|
|
|
b. **oldconfig** updates an existing .config after creating one if it
|
|
does not exist.
|
|
|
|
c. **menuconfig** presents a terminal UI to navigate and modify the
|
|
configurations in an interactive manner.
|
|
|
|
2. The target oldconfig is also used to create a .config if a .config
|
|
file does not exist when building the source directly.
|
|
|
|
3. The other two files for makefiles and C sources are regenerated after
|
|
.config changes.
|
|
|
|
Refer to :ref:`configuration` for a complete list of configuration symbols.
|