Commit Graph

7512 Commits

Author SHA1 Message Date
Roland Dobai db947a0d51 Merge branch 'fix/minimal_build_no_main' into 'master'
fix(build): ensure the main component exists when MINIMAL_BUILD is enabled

Closes IDFGH-17219 and DOC-13790

See merge request espressif/esp-idf!45770
2026-02-13 06:33:17 +01:00
Frantisek Hrbata 5dac2fee69 Merge branch 'fix/cmakev2_idf_component_optional_requires' into 'master'
fix(cmakev2/compat): change idf_component_optional_requires behavior

Closes IDFGH-17112

See merge request espressif/esp-idf!45588
2026-02-12 08:50:24 +01:00
Alexey Lapshin e93a9f05ca fix(gdbstub): fix task lookup by frame 2026-02-11 17:50:31 +07:00
Fu Hanxi 66f39eb968 Merge branch 'ci/use-interruptible' into 'master'
ci: use common workflow that auto-cancel earlier MR pipelines

See merge request espressif/esp-idf!45736
2026-02-11 10:21:31 +01:00
Fu Hanxi bf9d32d514 ci: compatible with macos base64 version 2026-02-10 11:46:40 +01:00
Alexey Lapshin b0729fec31 fix(tests): gdbstub: test 'next' command for every target 2026-02-10 17:18:32 +07:00
Fu Hanxi c37ec038ad ci: replace custom gen_disabled_report.py to idf-ci build collect report 2026-02-10 10:54:28 +01:00
Samuel Obuch db80c39a4e Merge branch 'feat/esp32h21_debug_assist' into 'master'
feat(esp32h21): add assist_debug support

See merge request espressif/esp-idf!45345
2026-02-10 16:28:37 +08:00
Frantisek Hrbata f62f45cf5c fix(cmakev2/utilities): add a dependency target for the embedded file
Currently, embedded files can be added in two ways. First, by calling
the `target_add_binary_data` function directly within a component.
Second, by passing `EMBED_FILES` or `EMBED_TXTFILES` to
`idf_component_register`, or in cmakev2 by setting the `EMBED_FILES` or
`EMBED_TXTFILES` component properties.

The source file for an embedded file is generated using
`add_custom_command`. When the embedded file is added directly in the
component's CMakeLists.txt file by using the `target_add_binary_data`
function, the `add_custom_command` command is evaluated in the same
directory context where the component target is created. As a result,
the generated embedded file can be used automatically as a file
dependency in component's sources.

However, when an embedded file is added via `idf_component_register` or
by setting the component property, the call to `add_custom_command`
inside `target_add_binary_data` occurs after the component has been
evaluated, specifically after the `add_subdirectory` call, within
`idf_component_include`. This means it is not created in the same
directory context as the component's target. In this case, the embedded
file dependency is not added to the component's target, and the embedded
file is not generated. This behavior is described in the
`add_custom_command` documentation [1].

   > A target created in the same directory (CMakeLists.txt file)
   > that specifies any output of the custom command as a source
   > file is given a rule to generate the file using the command at
   > build time.

To fix this issue, an explicit custom target for the generated embedded
file is created and added as a dependency of the component's target,
ensuring that the file is generated correctly.

[1] - https://cmake.org/cmake/help/latest/command/add_custom_command.html

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2026-02-10 03:36:58 +08:00
Frantisek Hrbata 795904a41c fix(build): ensure the main component exists when MINIMAL_BUILD is enabled
The minimal build property is simply a shorthand for `set(COMPONENTS
main)`. The issue is that there is currently no check to verify whether
the `main` component actually exists or is known to the build system.
If the `main` component is not present, print an error message along
with suggestions on how to fix this inconsistency.

Closes https://github.com/espressif/esp-idf/issues/18219

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2026-02-10 03:36:48 +08:00
Frantisek Hrbata 66c0a4d658 Merge branch 'fix/cmakev2_linux_target' into 'master'
fix(cmakev2): linux target fixes

Closes IDFGH-17121

See merge request espressif/esp-idf!45315
2026-02-09 14:09:36 +01:00
morris c398d8e4a6 Merge branch 'refactor/systimer_hal_split' into 'master'
refactor(hal): graduate systimer hal driver into `esp_hal_systimer`

Closes IDF-15239

See merge request espressif/esp-idf!45479
2026-02-08 21:20:48 +08:00
Samuel Obuch 9014eade4f feat(esp32h21): add assist_debug support 2026-02-06 12:51:29 +01:00
Chen Ji Chang 7a8a5d8852 Merge branch 'test/parlio_flash_enc_test' into 'master'
test(parlio,rmt,lcd): add virtual flash encryption test

Closes IDF-15064, IDF-15065, and IDF-15069

See merge request espressif/esp-idf!45006
2026-02-06 19:26:22 +08:00
Chen Chen eeb24057c4 refactor(hal): graduate systimer hal driver into esp_hal_systimer 2026-02-06 18:08:57 +08:00
Fu Hanxi 84d0de2cd6 Merge branch 'ci/cleanup-checkout-strategy-to-preclone-script' into 'master'
ci: upload junit report from child pipeline

Closes CII-111

See merge request espressif/esp-idf!45606
2026-02-06 10:55:46 +01:00
Fu Hanxi 1c9e7d209d ci: streamline custom before_script checkout code to preclone script 2026-02-05 09:26:56 +01:00
Chen Jichang b8c527a87c refactor(flash_enc): move esp_flash_encryption_enabled() to efuse component 2026-02-05 11:42:08 +08:00
Chen Jichang 0ac402217c test(parlio,rmt,lcd): add virtual flash encryption test 2026-02-05 11:42:08 +08:00
Roland Dobai 356d22c84a Merge branch 'feature/improve-expired-certs-hint' into 'master'
feat(tools): extend suggestions to fix certificate issue

See merge request espressif/esp-idf!45643
2026-02-05 03:38:00 +01:00
Fu Hanxi cb2cca0194 ci: upload junit report from child pipeline
supported in gitlab 18.5
2026-02-04 13:56:35 +01:00
Erhan Kurubas 97491dae35 Merge branch 'feat/coredump_extram_attr' into 'master'
feat(coredump): add coredump_extram attribute

Closes IDFGH-14687

See merge request espressif/esp-idf!45506
2026-02-04 12:59:50 +01:00
Alexey Lapshin 844891340f feat(tools): extend suggestions to fix certificate issue 2026-02-04 18:29:31 +07:00
Frantisek Hrbata e1eae669bc fix(cmakev2/compat): change idf_component_optional_requires behavior
The idf_component_optional_requires compatibility function in cmakev2
currently attempts to mimic the behavior of cmakev1 by adding a
dependency only if a component is already included in the build. In
cmakev1, this is handled by checking the BUILD_COMPONENTS list, which is
created during an early evaluation phase. Because cmakev2 removed this
early phase to allow for configuration-based component dependencies, the
build system does not inherently know which components will be part of
the build beforehand. To compensate, the current compatibility function
relies on the TARGET_EXISTS generator expression to determine if a
component should be linked.

This approach poses a problem because generator expressions are not
evaluated until the generation phase, but cmakev2 processes linker
scripts during the configuration phase by recursively scanning targets
linked to a library. Because the scanner does not recognize and cannot
evaluate generator expressions, any component linked optionally through
generator expression is skipped. If that component carries a linker
script, the script is never added to the library interface, resulting in
build failures. Since cmakev2 aims to support multiple libraries, a
component might also exist globally, causing TARGET_EXISTS to evaluate
to true, yet still be missed during a specific library's recursive scan,
leading to the same omission of necessary linker scripts.

To resolve this, the implementation of idf_component_optional_requires
is changed to check if a component is known to the build system in
COMPONENTS_DISCOVERED build property. If so, it is explicitly included
and linked directly via its interface target. While this may pull more
components into a build than the previous generator expression method,
potentially increasing build times, it ensures that dependency trees are
fully visible to the library target scanner. This serves as a practical
middle ground that maintains compatibility with existing components and
ensures build stability. This approach allows for the gradual fixing of
idf_component_optional_requires usage in components for cmakev2, with
the eventual goal of removing its usage in cmakev2 entirely.

This change also fixes cases where idf_component_optional_requires is
used to conditionally add requirements based on configuration options.
In cmakev2, the presence of a configuration option does not guarantee[1]
that a component has been included via add_subdirectory, unlike the
behavior in cmakev1. With this change even constructions like

```cmake
if(CONFIG_VFS_SUPPORT_IO)
    idf_component_optional_requires(PRIVATE vfs)
endif()
```

will now work in cmakev2, as the updated idf_component_optional_requires
explicitly includes the required component if it is available to the
build system.

Closes https://github.com/espressif/esp-idf/issues/18133

[1] https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/build-system-v2.html#id9

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2026-02-04 09:28:35 +01:00
luoxu 4e006884f8 remove(ble_mesh): deprecate the tinycrypt library within the Bluetooth Mesh component 2026-02-04 00:07:33 +08:00
Fu Hanxi 6660044dda ci: use reusable deploy yaml templates 2026-02-03 11:34:52 +01:00
Armando (Dou Yiwen) 9040191fcc Merge branch 'feat/esp_hal_sdmmc' into 'master'
sd: esp_hal_sd component

Closes IDF-15167 and IDF-14096

See merge request espressif/esp-idf!45225
2026-02-03 08:20:18 +00:00
Alexey Lapshin fff49a4555 Merge branch 'fix/gdbstub_xtensa_fpu_registers' into 'master'
fix(gdbstub): xtensa: fix FPU registers read and write

See merge request espressif/esp-idf!44624
2026-02-03 09:44:16 +04:00
Fu Hanxi 12a8c15c2d Merge branch 'ci/rev_default' into 'master'
ci: rev_default instead of eco_default

See merge request espressif/esp-idf!45269
2026-02-02 12:34:52 +01:00
Mahavir Jain 24984ac376 Merge branch 'fix/esp_mac_drivers' into 'master'
Enable and separate ESP-MAC driver

See merge request espressif/esp-idf!45232
2026-02-02 16:27:23 +05:30
Roland Dobai bc724193b2 Merge branch 'contrib/github_pr_18174' into 'master'
fix(build): Correct the usage example for function (GitHub PR)

Closes IDFGH-17161

See merge request espressif/esp-idf!45478
2026-02-02 11:52:50 +01:00
Erhan Kurubas 5ba3e9df98 feat(coredump): add coredump_extram attribute
Closes https://github.com/espressif/esp-idf/issues/15429
2026-02-02 10:25:03 +01:00
Alexey Lapshin c57443c2b6 fix(gdbstub): xtensa: fix FPU registers read and write
Closes https://github.com/espressif/esp-idf/issues/17944
2026-02-02 10:49:16 +07:00
armando 8499ad6ab0 feat(hal):graudate the sdmmc/sdio_slave hal driver into a new component 2026-02-02 09:47:54 +08:00
harshal.patil 53072bfa9d fix(mbedtls): Enable h/w accel for CMAC and HMAC operations
- Refactor ESP-MAC drivers
2026-01-31 00:45:11 +05:30
Marius Vikhammer 1a0ed26104 Merge branch 'bugfix/core_esp32s31_wrong_jira_id' into 'master'
fix(core): fixed misc wrong jira references

Closes IDF-14685 and IDF-14655

See merge request espressif/esp-idf!45457
2026-01-29 01:19:02 +08:00
Michael (XIAO Xufeng) 5984b29af5 Merge branch 'refactor/spi_flash_private' into 'master'
refactor(spi_flash): reorganize header files, improve encapsulation and simplify ROM implementation

See merge request espressif/esp-idf!44347
2026-01-28 17:39:51 +08:00
Marius Vikhammer 961626e016 fix(core): fixed misc wrong jira references 2026-01-28 11:05:13 +08:00
david zuhn d25272d0de fix(build): Correct the usage example for idf_build_replace_option_from_property 2026-01-27 12:42:53 -06:00
Fu Hanxi 266323482d ci: exclude tools/cmakev2/test while running test script linter 2026-01-27 13:30:17 +01:00
igor.udot 4c26ab876b ci: update build-test-rules to use common_components 2026-01-23 10:14:09 +08:00
igor.udot 70775b1f5f ci(sort_yaml): add mock common components 2026-01-23 10:12:17 +08:00
Xiao Xufeng 8dbf23630a refactor(spi_flash): reorganize header files and improve API encapsulation
This commit reorganizes SPI flash header files to better reflect their
visibility and intended usage:

1. Rename `esp_flash_port/` to `esp_flash_chips/`:
   - Better reflects that these headers are for chip driver implementations
   - All chip driver headers moved to `esp_flash_chips/` directory
   - Added README.md explaining semi-public nature of these headers

2. Move internal headers to `esp_private/`:
   - `esp_flash_internal.h` -> `esp_private/esp_flash_internal.h`
   - `memspi_host_driver.h` -> `esp_private/memspi_host_driver.h`

3. Move chip driver related headers to `esp_flash_chips/`:
   - `esp_private/esp_flash_types.h` -> `esp_flash_chips/esp_flash_types.h`
   - `spi_flash/spi_flash_defs.h` -> `esp_flash_chips/spi_flash_defs.h`
   - `spi_flash_override.h` -> `esp_flash_chips/spi_flash_override.h`
   - All `spi_flash_chip_*.h` headers moved to `esp_flash_chips/`

4. Code improvements:
   - Remove unused includes (e.g., `spi_flash_override.h` from `cache_utils.c`)
   - Use public API `esp_flash_get_size()` instead of direct member access
   - Add `esp_flash_is_quad_mode` to linker.lf for IRAM placement

5. Documentation updates:
   - Add README.md in `esp_flash_chips/` explaining semi-public headers
   - Update programming guide with warnings about internal headers
   - Update both English and Chinese documentation

6. Update all references across the codebase:
   - Update includes in `spi_flash` component
   - Update `bootloader_support`, `app_update`, `esp_tee`, `espcoredump`
   - Update example projects

Breaking changes:
- Headers moved to new locations require include path updates
- `custom_flash_driver` example temporarily disabled until external
  components are updated
2026-01-23 03:38:54 +08:00
Xiao Xufeng 758cf6e1a3 refactor(spi_flash): move internal types to private headers and refactor initialization
This commit refactors the SPI flash component to improve encapsulation and
modularity by moving internal types and functions to private headers, and
reorganizing initialization code.

Key changes:

1. Move PSRAM frequency constraint macro from soc_caps.h to mspi_ll.h
   - Rename SOC_SPI_MEM_PSRAM_FREQ_AXI_CONSTRAINED to
     MSPI_TIMING_LL_PSRAM_FREQ_AXI_CONSTRAINED
   - Move macro definition to chip-specific mspi_ll.h files (C5, C61, H4, P4, S31)
   - Update usage in clk_utils.c and esp_flash_spi_init.c
   - Remove old macro from all soc_caps.h files

2. Move internal types to private headers
   - Move esp_flash_t structure to esp_private/esp_flash_types.h
   - Move esp_flash_os_functions_t to esp_private/spi_flash_os.h
   - Update all internal files to include private headers
   - Keep forward declarations in public esp_flash.h

3. Move chip driver header to internal directory
   - Move spi_flash_chip_driver.h to esp_flash_port/spi_flash_chip_driver.h
   - Update all references to use new path
   - Add esp_private/esp_flash_types.h include to the moved header

4. Refactor initialization functions
   - Move init_flash from esp_system/startup_funcs.c to
     spi_flash/esp_flash_spi_init.c
   - Create new init_pm_flash_freq_limit function in startup_funcs.c
     to call esp_pm_flash_freq_limit_init() conditionally
   - Update system_init_fn.txt with new function locations

5. Improve API encapsulation
   - Replace direct access to esp_flash_t->size in
     esp_partition_register_external() with esp_flash_get_size() API
   - Move esp_flash_is_quad_mode from inline function to regular function
     in esp_flash_api.c

6. Update component dependencies
   - Add esp_driver_gpio to spi_flash component PRIV_REQUIRES
   - Remove unused includes and clean up header dependencies

These changes improve code organization by clearly separating public APIs
from internal implementation details, making the codebase more maintainable
and reducing the risk of breaking changes to internal structures.
2026-01-23 03:38:54 +08:00
Frantisek Hrbata cc294eee2b feat(test_build_system): add buildv2 test for linux target build
Add a simple test to verify that the buildv2_test_app can be built for
the Linux target.

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2026-01-22 18:00:37 +01:00
Frantisek Hrbata 6e5d6b75ae feat(test_build_system): allow buildv2 specific tests
Currently, cmakev2 is being tested only in backward-compatible mode by
using the existing cmakev1 tests with the cmakev2 test application. We
also need to add tests specific to cmakev2, and it is convenient to
reuse the existing build system testing framework. Let's add a `buildv2`
subdirectory to the existing `tools/test_build_system` directory and use
the `pytest_collection_modifyitems` hook to ignore tests in this
directory unless the `--buildv2` option is used.

Without the `--buildv2` option, only the existing cmakev1 tests are
executed and tests in `buildv2` directory are skipped. With the
`--buildv2` option, the existing cmakev1 tests run with the cmakev2
testing application for backward compatibility testing, and all cmakev2
tests within the `buildv2` subdirectory are also executed.

Note: we cannot use the `pytest_ignore_collect` hook, because the
`--buildv2` option is not known to the pytest, so the
`config.getoption('--buildv2', False)` returns always False. We would
likely need to add the `--buildv2` option in the conftest.py in the
esp-idf root directory.

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>

fix: lsadjf las jflasjfl aslfsald asl fsadlf sladsal jfsadfas

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2026-01-22 15:41:05 +01:00
Frantisek Hrbata d1270b62b8 feat(test_build_system): add pytest header whether buildv1 or buildv2 is running
This adds a clear header to the pytest output, indicating which build
system version is currently being tested.

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2026-01-22 15:41:05 +01:00
Frantisek Hrbata ce73a1fd8e fix(cmakev2/build): extend idf_build_generate_metadata to also accept executable
Currently, idf_build_generate_metadata only accepts binary targets for
which it generates metadata (project_description.json). On Linux
targets, binary images are not generated, but we still need to generate
project_description.json. Extend the current function to accept both
executable and binary targets and ensure project_description.json is
generated when a Linux target is used.

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2026-01-22 15:41:05 +01:00
morris 35bdd8c651 feat(dma): graduate the dma driver from esp_hw_support to esp_driver_dma 2026-01-22 14:14:14 +08:00
morris a4f6980e1f Merge branch 'refactor/create_esp_hal_security' into 'master'
refactor: Created esp_hal_security component

Closes IDF-14086

See merge request espressif/esp-idf!44253
2026-01-22 11:56:46 +08:00