Commit Graph

504 Commits

Author SHA1 Message Date
Marek Fiala
7613daadc6 fix(tools): send mcp-server startup diagnostics to stderr
idf.py mcp-server printed startup, shutdown, and error messages on
stdout. On the stdio MCP transport, stdout is the JSON-RPC channel, so
those non-JSON lines can confuse or break strict clients. Route them to
stderr like the other diagnostics in mcp_ext.py.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 09:10:01 +02:00
Marek Fiala
be74313d0b fix(tools): detach MCP tool subprocess stdin from JSON-RPC pipe
idf.py mcp-server tool handlers were spawning idf.py without redirecting
stdin, so the child inherited the long-lived MCP JSON-RPC transport and
could hang indefinitely on tools/call. Pass stdin=subprocess.DEVNULL on
every spawn of idf.py.

Closes https://github.com/espressif/esp-idf/issues/18961
2026-08-19 09:09:34 +02:00
Ashish Sharma
e7af5c69d9 feat(esp_image_verify): split image verification out of bootloader_support 2026-08-12 08:39:18 +05:30
Marek Fiala
ee6b0ed9ae Merge branch 'fix/mcp_support_major_2' into 'master'
fix(tools): mcp-server supports python package mcp > 2

Closes IDFGH-18056

See merge request espressif/esp-idf!51517
2026-08-05 21:18:31 +08:00
Michael (XIAO Xufeng)
b12870c43d Merge branch 'sdio-example-4bit-bringup' into 'master'
example(sdio_slave): add docs and examples for SI testing

See merge request espressif/esp-idf!49371
2026-08-05 16:48:38 +08:00
Michael.B
0d9193fa98 feat(sdio): add hw_test example for signal integrity checks 2026-08-05 13:22:15 +08:00
Marek Fiala
9060b31790 fix(tools): support mcp Python SDK 2.0 for mcp-server
FastMCP was renamed to MCPServer in mcp 2.0, which made idf.py mcp-server
report a false "MCP dependencies not available" error. Prefer MCPServer
and keep a FastMCP fallback for mcp 1.x.

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

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-04 11:25:08 +02:00
Roland Dobai
b1d066dbd4 Merge branch 'contrib/github_pr_18871' into 'master'
feat(tools): add -j/--jobs option to idf.py (GitHub PR)

Closes IDFGH-18013

See merge request espressif/esp-idf!51409
2026-08-03 11:25:52 +02:00
Frantisek Hrbata
27a72e4660 style(tools): reformat global_options.py with ruff-format
This file predates the adoption of ruff-format and was never reformatted,
because pre-commit only runs on the files touched by a change. GitHub PR
#18871 bumps the copyright year here, which pulls the file into the hook's
scope and makes check_pre_commit fail on a pre-existing formatting
violation unrelated to that change.

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2026-07-31 12:49:10 +02:00
Nebojša Cvetković
db6b310447 feat(tools): add -j/--jobs option to idf.py
Add a global -j/--jobs option to idf.py that sets the number of parallel
build jobs passed to the underlying build tool. Previously parallelism was
only configurable via the IDF_PY_BUILD_JOBS environment variable, and only
for the Ninja generator.

The option applies to both Ninja and Make and defaults to IDF_PY_BUILD_JOBS
when not given, so the environment variable keeps working as before.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 16:02:52 +01:00
Ivan Grokhotkov (bot)
b3a0e166fe feat: add compile_options support to idf.py build-file
Allow specifying extra compiler flags (warning flags, preprocessor
definitions, etc.) via a new 'compile_options' entry in the
idf-build-file frontmatter. The options are applied to the source
file via target_compile_options in the generated main component
CMakeLists, with CMake quoting so that flags like -DMSG="hello world"
reach the compiler exactly as written.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 22:04:41 +02:00
Ivan Grokhotkov
16275df0a1 feat: add idf.py build-file command for standalone C files
Add a new idf.py extension that allows building standalone C files
without requiring full project boilerplate. Source files can include
optional YAML frontmatter in block comments to specify sdkconfig
options, component dependencies, and target configuration.

When the frontmatter configuration changes, the stale sdkconfig is
removed so the new defaults are applied, and a target change also
clears the build directory since IDF_TARGET is pinned in the CMake
cache.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 22:04:41 +02:00
Marek Fiala
8974c24968 feat(tools): idf.py --port autocompletion 2026-07-15 20:19:07 +08:00
Marek Fiala
8c08c75f48 feat(tools): adopt esp-pylib for idf.py logging and errors
Migrate idf.py and its actions to the shared esp-pylib library:
- add esp-pylib (and esp-pylib[ide]) to the core/ide requirements
- base FatalError on esp_pylib.errors.FatalError, keeping the idf.py ctx cleanup
- replace the local raw-ANSI helpers (red_print/yellow_print/print_warning/
  color_print) with esp_pylib.logger.log (warn/err/note/hint) across the
  idf.py actions
- install esp_pylib exception reporting at the idf.py entry point and silence
  the logger during shell completion
- update affected tests for the new prefixes/line wrapping
- add normalize_output() helper and unify terminal env in conftest to handle
  Rich line-wrapping in CI assertions

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-15 20:19:07 +08:00
Roland Dobai
d022d594fe Merge branch 'fix/cmake-colors' into 'master'
fix: force colors in output of RunTool and ensure_build_directory

See merge request espressif/esp-idf!49966
2026-06-24 19:18:30 +02:00
Jan Beran
f963565341 fix: force colors in output of RunTool and ensure_build_directory 2026-06-24 12:47:16 +02:00
Marek Fiala
12ea480988 feat(tools): Improved verification of ESP-IDF project
Closes https://github.com/espressif/esp-idf/issues/18675
2026-06-24 18:46:39 +08:00
Marek Fiala
1be844551a feat(tools): mcp-server added create-project tool 2026-06-24 18:46:39 +08:00
Marek Fiala
2dd6b604fa feat(tools): mcp-server accepts project_dir from chat
At the same time, it's possible to start idf.py mcp-server
outside ESP-IDF project directory.

Added ESP-IDF mcp server tests
2026-06-24 18:46:39 +08:00
Jan Beran
dd742179ee fix: cleanup after dropping curses from menuconfig
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-16 16:56:46 +02:00
Roland Dobai
941bc94ec6 Merge branch 'feat/generate_per_component_headers' into 'master'
feat(kconfig): add support for per option based build optimization

Closes IDF-8957

See merge request espressif/esp-idf!41966
2026-06-02 19:46:09 +02:00
Jan Beran
9522af1d8f feat: introduce esp-idf-configdep as a build optimization
The esp-idf-configdep utility works as a compiler wrapper. It lets the
compiler compile the app and checks whether -MF option was used to
generate dependency files. If yes, it checks for sdkconfig.h dependency
in those files.

Target file depending on sdkconfig.h is then scanned for all CONFIG_*
occurrences and the dependency file is altered so that the given target
file is marked as "dirty" only if the config options it actually uses
are changed.

This ensures that after a configuration update, only affected files are
rebuilt, reducing incremental build times.

The compiler launcher mechanism is changed from RULE_LAUNCH_COMPILE
(Makefile-only) to CMAKE_*_COMPILER_LAUNCHER (generator-agnostic),
enabling launcher chaining (configdep -> ccache -> compiler).

Made-with: Cursor
2026-06-02 01:26:10 +08:00
Marek Fiala
f8799b8bba feat(tools): idf.py --help custom CMake targets rich-click style 2026-06-01 20:07:27 +08:00
Marek Fiala
eb91e45092 feat(tools): Replaced click with rich_click 2026-06-01 20:07:27 +08:00
Tomas Rezucha
232035071e feat(tools): Add 'check' field to idf.py actions 2026-05-27 19:06:10 +02:00
igor.masar
d4d993c818 feat(soc): add USB DFU and OTG console caps
Add USB DFU and OTG console SOC capability flags for esp32s2, esp32s3, and esp32p4.

Use these caps in Kconfig, documentation conditionals, and idf.py DFU actions so USB support
is derived from SOC capabilities instead of hardcoded target names.
2026-05-27 10:58:50 +02:00
Marius Vikhammer
027a1509be fix(tools): dont call idf_size.py for linux target
Calling idf.py size on linux target project would cause an
error. This was a problem for IDEs or build script which
often call this as the last step in the build process,
as it could mark the whole "build" as failed.
2026-05-27 08:53:01 +08:00
Alexey Gerenkov
edb75262a1 Merge branch 'feature/update-esp-clang-to-esp-21.1.3_20260304' into 'master'
feat(tools): update esp-clang version to esp-21.1.3_20260408

Closes IDF-14965, LLVM-501, and LLVM-531

See merge request espressif/esp-idf!46361
2026-05-13 22:54:10 +08:00
Jakub Kocka
6e4ed2c204 fix(tools): Forward build subprocess stdout as UTF-8 bytes on Windows 2026-05-12 18:14:27 +08:00
Alexey Gerenkov
f16bb34ff7 fix(build): fix Clang 21 build warnings/errors 2026-05-07 17:42:38 +03:00
Ashish Sharma
cd38d68bd1 feat(bootloader_support): remove P192 curve support 2026-04-30 18:04:00 +08:00
Jakub Kocka
d715ed0244 Merge branch 'feat/create-project_c++' into 'master'
feat(tools): Added create-project argument to allow cpp project creation

Closes IDFGH-15480

See merge request espressif/esp-idf!47373
2026-04-28 17:37:03 +08:00
Jakub Kocka
c21d05e612 feat(tools): Added listing of CMake custom targets in idf.py --help 2026-04-28 09:46:35 +02:00
Jakub Kocka
fb02854ad6 feat(tools): Added create-project argument to allow cpp project creation
Closes https://github.com/espressif/esp-idf/issues/16121
2026-04-28 09:24:20 +02:00
Fu Hanxi
2aee18d827 feat(build): support env var IDF_PY_BUILD_JOBS for ninja jobs 2026-04-16 13:27:18 +02:00
Marek Fiala
4d1612cd3c feat(tools): Restrict loading extension components to trusted sources 2026-04-15 16:30:57 +08:00
Radim Karniš
38d37e5e9f feat(idf_py): idf.py flash will reflash only changed data sectors by default
idf.py flash -a is introduced to trigger a flash of all data (not just changed sectors).
2026-04-02 10:59:30 +02:00
Marek Fiala
c07737ee17 feat(tools): mcp_ext.py commands adjustments 2026-03-16 13:27:54 +08:00
morris
ab16c09947 refactor(hints): move driver migration hints to own components 2026-02-14 15:51:18 +08:00
Marek Fiala
eb0086ef7f change: Moved esp-tls hint to component specific hints.yml file 2026-02-13 15:59:31 +08:00
Marek Fiala
75bf3bdb54 feat(tools): Extended hints.yml loading from components 2026-02-13 15:59:31 +08:00
Chen Chen
60284a9c86 feat(sdm): remove sdm_channel_set_duty API 2026-01-13 16:26:57 +08:00
Song Ruo Jing
643b2508fa refactor(uart): remove soc/uart_channel.h 2025-12-25 14:42:43 +08:00
yinqingzhao
a6b2eb6ad0 refactor(wifi): remove enum values WIFI_BW_HT20 and WIFI_BW_HT40 2025-12-24 14:11:52 +08:00
Marek Fiala
9d6c0ee7ce feat(tools): Clean up esp-idf-size new generation 2025-12-18 03:43:04 +08:00
morris
b385b6e533 Merge branch 'refactor/reduce_bin_size_when_dsi_without_dma2d' into 'master'
feat(lcd): support draw bitmap hook function

Closes IDFGH-15572

See merge request espressif/esp-idf!42209
2025-12-06 13:47:42 +08:00
Chen Jichang
1e190ccd74 feat(lcd): support draw bitmap hook function
Closes https://github.com/espressif/esp-idf/issues/16201
2025-12-05 15:44:38 +08:00
Peter Dragun
d64110442f Merge branch 'fix/output_rewrite' into 'master'
Fix dependencies for flash targets

Closes IDF-14540

See merge request espressif/esp-idf!43906
2025-12-04 17:39:00 +08:00
Peter Dragun
3f0fde84e1 fix(tools/idf.py): Add implicit dependencies to flash targets 2025-12-02 08:45:59 +01:00
Jan Beran
132f191874 feat(core-ext): Add refresh-config command
This command will allow users to resolve mismatches in default values
between sdkconfig and Kconfig according to a policy specified:

* sdkconfig: Using default values from sdkconfig (backward compatible)
* interactive: User can choose the source for every affected config
  option separatedly
* kconfig: Using default values from Kconfig
2025-11-25 20:31:08 +08:00