Commit Graph
5 Commits
Author SHA1 Message Date
Frantisek Hrbata a78ee285c9 fix: harden build against empty toolchain output
On some Windows systems, antivirus, endpoint-security or DLP/encryption
software intercepts short-lived toolchain processes and strips their
stdout when the build captures it through a pipe, while the same command
prints its output normally when run by hand. The tool exits successfully
but returns nothing, and each build step that reads toolchain output then
failed with a different, cryptic error far from the real cause:

- CMake configuration aborted with "Unknown arguments specified" in
  components/xtensa/project_include.cmake, or "check_expected_tool_version
  invoked with incorrect arguments" in components/esp_common.
- ldgen turned the empty objdump output into an opaque pyparsing
  "Expected 'In archive'" traceback.
- idf_tools.py silently reported the compiler/debugger version as
  "unknown", sending users into a fruitless reinstall loop.

Detect the empty result at each consumer and fail (or warn) with an
actionable message that names the likely cause and the remedy:

- tools/cmake/compiler_query.cmake: new __compiler_query() helper runs a
  compiler query and fails with a clear error on empty or failed output.
  It is a standalone module included by the build system utilities, so
  that it is available to the esp_common and xtensa project_include.cmake
  files that call it. The xtensa if() arguments are now quoted so an
  empty result no longer collapses into a parse error.
- tools/ldgen/ldgen.py: _run_objdump() rejects empty objdump output, and
  non-empty-but-unparsable section info is caught and re-raised as a clear
  LdGenFailure instead of a raw pyparsing traceback.
- tools/idf_tools.py: empty version output now warns with the cause and
  returns UNKNOWN_VERSION instead of silently reporting "unknown".

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

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2026-08-17 19:04:43 +08:00
Alexey Lapshin e6f7b1a3a0 tools: cmake: check tool supported version with idf_tools.py 2022-10-03 19:01:32 +04:00
Ivan Grokhotkov 90a87cf5e4 cmake: don't run crosstool-version-check for clang
We will likely need to check clang version as well, eventually.
However at the moment clang builds change too often for such check
to be maintainable. Disable it for clang.
2021-09-16 10:54:27 +02:00
David Cermak a7d5798b85 esp_common: Add support for linux target providing header only library 2021-07-09 17:29:45 +02:00
Renz Bagaporo daa13b3f62 esp32: move toolchain check 2021-03-31 19:17:33 +08:00