35 lines
1.3 KiB
ReStructuredText
35 lines
1.3 KiB
ReStructuredText
|
.. _kconfig:
|
||
|
|
||
|
Configuration System (Kconfig)
|
||
|
*******************************
|
||
|
|
||
|
The Zephyr kernel and subsystems can be configured at build time to adapt them
|
||
|
for specific application and platform needs. Configuration is handled through
|
||
|
Kconfig, which is the same configuration system used by the Linux kernel. The
|
||
|
goal is to support configuration without having to change any source code.
|
||
|
|
||
|
Configuration options (often called *symbols*) are defined in :file:`Kconfig`
|
||
|
files, which also specify dependencies between symbols that determine what
|
||
|
configurations are valid. Symbols can be grouped into menus and sub-menus to
|
||
|
keep the interactive configuration interfaces organized.
|
||
|
|
||
|
The output from Kconfig is a header file :file:`autoconf.h` with macros that
|
||
|
can be tested at build time. Code for unused features can be compiled out to
|
||
|
save space.
|
||
|
|
||
|
The following sections explain how to set Kconfig configuration options, go
|
||
|
into detail on how Kconfig is used within the Zephyr project, and have some
|
||
|
tips and best practices for writing :file:`Kconfig` files.
|
||
|
|
||
|
.. toctree::
|
||
|
:maxdepth: 1
|
||
|
|
||
|
menuconfig.rst
|
||
|
setting.rst
|
||
|
tips.rst
|
||
|
preprocessor-functions.rst
|
||
|
extensions.rst
|
||
|
|
||
|
Users interested in optimizing their configuration for security should refer
|
||
|
to the Zephyr Security Guide's section on the :ref:`hardening`.
|