docs: update the migration guides for esp_timer

Previous commit removes esp_timer from the common requirements.
This commit updates the documentation to describe the resulting
changes.
This commit is contained in:
Ivan Grokhotkov 2022-04-16 08:08:37 +02:00
parent b0544b9745
commit ceeb9f9451
No known key found for this signature in database
GPG Key ID: 1E050E141B280628

View File

@ -11,7 +11,19 @@ Update fragment file grammar
Please follow the :ref:`migrate linker script fragment files grammar<ldgen-migrate-lf-grammar>` chapter for migrating v3.x grammar to the new one.
Component dependencies that shall be explicit
---------------------------------------------
Specify component requirements explicitly
-----------------------------------------
In previous versions of ESP-IDF, target components (``components/esp32*``) had a dependency on ``driver`` and ``efuse`` components. Since target components were part of common requirements (:ref:`more info about common requirements <component-common-requirements>`), all components in the project implicitly had a dependency on ``driver`` and ``efuse``. Now that the dependency of target components on these components has been removed, every component depending on ``driver`` or ``efuse`` has to declare this dependency explicitly. This can be done by adding ``REQUIRES <component_name>`` or ``PRIV_REQUIRES <component_name>`` in ``idf_component_register`` call inside component's ``CMakeLists.txt``. See :ref:`Component Requirements` for more information on specifying requirements.
In previous versions of ESP-IDF, some components were always added as public requirements (dependencies) to every component in the build, in addition to the :ref:`common requirements<component-common-requirements>`:
* ``driver``
* ``efuse``
* ``esp_timer``
This means that it was possible to include header files of those components without specifying them as requirements in ``idf_component_register``.
This behavior was caused by transitive dependencies of various common components.
In ESP-IDF v5.0, this behavior is fixed and these components are no longer added as public requirements by default.
Every component depending on one of the components which isn't part of common requirements has to declare this dependency explicitly. This can be done by adding ``REQUIRES <component_name>`` or ``PRIV_REQUIRES <component_name>`` in ``idf_component_register`` call inside component's ``CMakeLists.txt``. See :ref:`Component Requirements` for more information on specifying requirements.