.. _Header_configuration: ############################# The Header File Config System ############################# The header file configurations system is used to fine-tune component options. The following diagram shows how the system works. .. figure:: ../../../../../../modules/tee/tf-m/trusted-firmware-m/docs/configuration/header_file_config_diagram.svg :align: center Source files shall include ``config_tfm.h`` when necessary to fetch Component option settings. It is expected that all Component options are included in ``config_tfm.h`` to explicitly set values for each option. The ``config_tfm.h`` includes base configuration ``config_base.h``. Refer to :ref:`Base_configuration` for details of the base configurations. The ``config_tfm.h`` includes a customized project config file provided via compile definition ``PROJECT_CONFIG_HEADER_FILE``. Customized Component options in the project config file overrides those configured in ``config_base.h``. The project config header file can be - Generated by the TF-M Kconfig system - One of the header files of Profiles , set via the ``TFM_PROFILE`` build option. - Manually customized profile based on pre-set profiles. Users set CMake variable ``PROJECT_CONFIG_HEADER_FILE`` with the full path of the configuration header file. A platform can adjust or place restriction on config options by providing a ``config_tfm_target.h`` under the root folder of their platforms. If the build system finds the file, it sets the ``TARGET_CONFIG_HEADER_FILE`` compile definition. Platform specific option settings in ``TARGET_CONFIG_HEADER_FILE`` overrides those configured in ``config_base.h``. .. code-block:: c #ifdef TARGET_CONFIG_HEADER_FILE #include TARGET_CONFIG_HEADER_FILE #endif #ifdef PROJECT_CONFIG_HEADER_FILE #include PROJECT_CONFIG_HEADER_FILE #endif #include "config_base.h" Each component can implement a ``config__check.h`` to validate component specific config dependencies. ``config__check.h`` shall include ``config_tfm.h`` -------------- *Copyright (c) 2022, Arm Limited. All rights reserved.*