Commit Graph

559 Commits

Author SHA1 Message Date
Roland Dobai dfd7fd391d Merge branch 'contrib/github_pr_17594_v5.4' into 'release/v5.4'
fix(depgraph): Add double quotes around dependency names (GitHub PR) (v5.4)

See merge request espressif/esp-idf!42493
2025-10-27 16:30:50 +01:00
Roland Dobai b7748ca2f9 Merge branch 'fix/dont-regenerate-unnecessary-config-files_v5.4' into 'release/v5.4'
fix(kconfig.cmake): Do not regenerate unnecessary config files (v5.4)

See merge request espressif/esp-idf!42350
2025-10-27 16:28:06 +01:00
Roland Dobai ea1c174c1c change(version): Update version to 5.4.3 2025-10-21 13:13:31 +02:00
Vincent-Dalstra 4e6f63bdce fix: Add quotes around node ID in dependency graph
Graphviz node ID's are represented as strings, that can only use a
restricted set of characters (characters, digits, and underscores), and
must not match a reserved keyword. These restrictions do not apply when
the string is wrapped in double quotes. This allows for component names
with dashes in them, for example.

Closes https://github.com/espressif/esp-idf/pull/17594
2025-10-15 19:31:09 +08:00
Jan Beran ef0a90af5c fix(kconfig.cmake): Do not regenerate unnecessary config files 2025-10-02 10:06:10 +02:00
Fu Hanxi 8f2801f20c fix: make sure sdkconfig.json is updated after running the menuconfig 2025-09-01 09:40:38 +02:00
Fu Hanxi d16f0da931 fix: kconfig optional dependency in transitive dependency 2025-09-01 09:40:38 +02:00
Fu Hanxi 097ffd3238 feat: support kconfig in component manager 2025-09-01 09:40:38 +02:00
Roland Dobai ee6ada0528 Merge branch 'change/support_lowercase_kconfig_filename_v5.4' into 'release/v5.4'
Backport: Support misspelled Kconfig[.projbuild] files (v5.4)

See merge request espressif/esp-idf!39583
2025-06-30 11:49:08 +02:00
Jan Beran d36596bc56 change: detect misspelled Kconfig[.projbuild] file names
Original issue: https://github.com/espressif/esp-idf-kconfig/issues/14
2025-06-20 15:06:31 +08:00
Xiao Xufeng f5c3654a1c change(version): Update version to 5.4.2 2025-06-20 14:35:04 +08:00
Mahavir Jain 87947712af fix(tools): suppress GNU bin-utils warning about executable stack
Newer GNU bin-utils version 2.39 has started emitting a warning
about an executable stack region for Linux target build:

/usr/bin/ld: warning: x509_crt_bundle.S.o: missing .note.GNU-stack section implies executable stack

Fix the issue by adding appropriate "noexecute" attribute for stack
section.
2025-04-15 21:55:30 +08:00
Roland Dobai 17a2461297 Merge branch 'fix/linux_std_flags_v5.4' into 'release/v5.4'
fix(build): don't call enable_language() before project() (v5.4)

See merge request espressif/esp-idf!37880
2025-04-02 23:42:58 +08:00
Roland Dobai 58210d69b2 Merge branch 'fix/remove-unused-from-gdbinit_cmake_v5.4' into 'release/v5.4'
fix(tools): remove unused variables in gdbinit.cmake (v5.4)

See merge request espressif/esp-idf!38008
2025-04-02 15:14:37 +08:00
Frantisek Hrbata a30e3051fb fix(build): don't call enable_language() before project()
For the Linux target, we currently attempt to fallback to older C/CXX
lagnuage standards in the __build_set_lang_version() function. The
language standard support is checked using CMake's language-specific
functions, such as check_c_compiler_flag(). These functions require the
language to be enabled[1] in CMake beforehand, which is done by calling
project() or by enabling the languages later with enable_language(). At
present, we use enable_language() to enable C and CXX languages in
CMake, allowing us to set the standard early, before invoking project().
However, newer CMake versions (>3.29) issue a warning[2] if
enable_language() is called before project(), as noted in CMP0165[3].

It should generally be acceptable to call __build_set_lang_version()
after __project(), but doing so would alter the behavior of the
COMPILE_OPTIONS also for non-Linux targets. Currently, users can
add to COMPILE_OPTIONS even before calling project() in the project's
CMakeLists.txt and the options will be in the desired order. In other
words, appending to COMPILE_OPTIONS can occur either before or after
calling project() in the project's CMakeLists.txt, with the outcome
remaining consistent. This means the user's settings will appear later
and take priority. However, if __build_set_lang_version() is called
after __project(), the user's COMPILE_OPTIONS settings would be
overridden if set before calling project(). Our documentation[4] explicitly
states that COMPILE_OPTIONS and similar properties should be modified
using idf_build_set_property() after calling project() to prevent
default values from overwriting them.

Even with this guidance, some existing components that modify
COMPILE_OPTIONS before invoking project() might be impacted by this
change. Therefore, separate the language standard settings for non-Linux
and Linux targets. For non-Linux targets, these settings are applied in
__build_set_default_build_specifications(), maintaining the current
behavior. For the Linux target, the language standard is set with
__linux_build_set_lang_version() after calling __project(), ensuring the
languages are already enabled in CMake and no warning is issued. Since the Linux
target is still in preview, this approach should be acceptable,
especially with the existing documentation[4].

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

[1] https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#languages
[2] https://gitlab.kitware.com/cmake/cmake/-/merge_requests/9396
[3] https://cmake.org/cmake/help/latest/policy/CMP0165.html#policy:CMP0165
[4] https://docs.espressif.com/projects/esp-idf/en/v5.4/esp32/api-guides/
    build-system.html#overriding-default-build-specifications

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2025-03-31 16:06:06 +08:00
Xiao Xufeng 4c2820d377 change(version): Update version to 5.4.1 2025-03-27 15:29:07 +08:00
Alexey Lapshin f810a440c9 fix(tools): remove unused variables in gdbinit.cmake
Closes https://github.com/espressif/esp-idf/issues/15035
2025-03-26 19:56:03 +07:00
Erhan Kurubas 8aabaea4f5 change(cmake): use board configuration file for ftdi interface 2025-01-09 12:39:23 +01:00
Alexey Lapshin 0e57dc044e feat(debugging): move gdbinit generation to CMake
This feature is useful for 3rd-party software to run GDB with predefined
options that described in project_description.json file

allow to pass custom options to "idf.py gdb":

  --gdb-commands: command line arguments for gdb. (without changes)
  -ex: pass command to gdb.
  -x: pass gdbinit file to gdb. Alias for old --gdbinit command
2024-12-06 19:36:41 +07:00
Frantisek Hrbata 67039c590d feat(tools): unify sections in idf.py size reports for NG version
By default, esp-idf-size.ng displays all sections individually. This can
be confusing, especially if CONFIG_SOC_MEM_NON_CONTIGUOUS_SRAM is
enabled, resulting in sections like .dram0.data and .dram1.data being
abbreviated as two .data sections in the size report. To avoid confusion
for idf.py and cmake users, pass the --unify option to the underlying
esp_idf_size.ng by default.

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2024-11-12 14:13:02 +01:00
Laukik Hase 5328dcd00c change(build): Add a new CMake flag NON_OS_BUILD for non-FreeRTOS builds 2024-10-21 19:03:30 +05:30
Nebojša Cvetković 8c1ecc4d94 build: Reduce verbosity of disabled component manager warning
closes https://github.com/espressif/esp-idf/pull/14097
2024-10-02 20:52:00 +08:00
Roland Dobai 1143b7639f Merge branch 'fix/idfpy_uf2_fail' into 'master'
fix(uf2): Ignore ESPBAUD, ESPPORT when calling idf.py uf2[-app]

Closes IDF-10768

See merge request espressif/esp-idf!33086
2024-10-01 17:12:29 +08:00
Fu Hanxi 6ff7947fef feat: add component_source property to component targets 2024-09-30 18:14:04 +08:00
Jan Beran d77d1f5a95 fix(uf2): Ignore ESPBAUD, ESPPORT when calling idf.py uf2[-app] 2024-09-23 15:48:59 +02:00
Alexey Lapshin 0fb74b17ab Merge branch 'fix/kconfig-option-orphan_sections_warning' into 'master'
fix(build): fix orphan sections warning kconfig variable

See merge request espressif/esp-idf!32765
2024-09-22 21:57:12 +08:00
Alexey Gerenkov b8d23b334b change(build): Enable 'xesppie' for esp32p4 Clang builds 2024-09-18 21:40:39 +03:00
Alexey Gerenkov 9ca231e76e change(build): Use integrated assembler with Clang for RISCV chips 2024-09-18 21:40:39 +03:00
Alexey Lapshin 64f9917dde fix(build): fix orphan sections warning kconfig variable 2024-08-20 20:07:32 +08:00
Ivan Grokhotkov 5ef75d5073 Merge branch 'bugfix/reproducible_builds_improvements' into 'master'
build system: reproducible build improvements

Closes IDFGH-12690

See merge request espressif/esp-idf!32734
2024-08-16 19:02:40 +08:00
Ivan Grokhotkov bef4cb05ff fix(build_system): fix toolchain sysroot directory affecting builds
Closes https://github.com/espressif/esp-idf/issues/13680
2024-08-15 16:41:31 +02:00
Ivan Grokhotkov c521fcb6fd fix(cmake): report correct error on unknown component name
Previously the error message was

CMake Error at /home/user/esp-idf/tools/cmake/build.cmake:296 (__component_get_property):
  __component_get_property Function invoked with incorrect arguments for
  function named: __component_get_property
Call Stack (most recent call first):
  /home/user/esp-idf/tools/cmake/build.cmake:341 (__build_resolve_and_add_req)
  /home/user/esp-idf/tools/cmake/build.cmake:638 (__build_expand_requirements)
  /home/user/esp-idf/tools/cmake/project.cmake:710 (idf_build_process)
  CMakeLists.txt:6 (project)

Now it will be:

CMake Error at /home/user/esp-idf/tools/cmake/build.cmake:298 (message):
  Failed to resolve component 'whatever' required by component 'main'.
Call Stack (most recent call first):
  /home/user/esp-idf/tools/cmake/build.cmake:345 (__build_resolve_and_add_req)
  /home/user/esp-idf/tools/cmake/build.cmake:642 (__build_expand_requirements)
  /home/user/esp-idf/tools/cmake/project.cmake:710 (idf_build_process)
  CMakeLists.txt:6 (project)

Also improved the hint to show the component name in quotes.
2024-08-12 17:54:44 +02:00
Ivan Grokhotkov 1c343d8923 change(build_system): refactor reproducible build handling
- remove generate_debug_prefix_map.py, move its logic into CMake
- move all reproducible builds logic into a new file, prefix_map.cmake
2024-08-12 13:26:33 +02:00
Alexey Lapshin 1608b4cde4 fix(build): fix error message for absent component 2024-08-01 12:34:13 +07:00
gojimmypi f6a852e1cf fix(cmake): check for missing component_target
Closes https://github.com/espressif/esp-idf/pull/14036

[Frantisek Hrbata: fixed spelling not related to this change so spellcheck succeeds]
[Frantisek Hrbata: modified the error message to be recognized by the existing hint]
[Frantisek Hrbata: added also check in idf_component_set_property and simple tests]
Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2024-07-11 18:33:41 +02:00
Konstantin Kondrashov e596cb5527 feat(tool): Adds idf_build_remove_options_from_property func 2024-06-20 14:43:26 +08:00
Marc Finet 9456c157ff feat(build): Add config to disable warn be considered as errors
The -Werror=all activates error for all warnings in -Wall, however, it
does not activate error for other default warnings, such as:
- int-conversion (pointer from integer w/o a cast)
- incompatible-pointer-types
- discarded-qualifiers

Which are IMO even more important that -Wall.

This commit fixes that by activating error for all warnings (i.e. from
-Wall and default ones) and removing those from -Wextra, as the culprit
commit seemed to address.

Fixes: 60f29236f6 "Build system: Raise warning level" (2016-11-16)

In order to avoid long analysis during esp-idf upgrade, provide a way to
restore the previous -Werror=all behavior that consider only warnings
from -Wall (and not default ones).

Also add a hint to use the Kconfig option on compilation error, but warn
that fixing the code is the preferred way.

Merges https://github.com/espressif/esp-idf/pull/11239

Suggested-By: Ivan Grokhotkov <ivan@espressif.com>
2024-06-20 14:43:26 +08:00
Frantisek Hrbata fbe8bf89ee fix: properly resolve component dependencies
There is currently a bug in the __build_resolve_and_add_req function in
tools/cmake/build.cmake where the check for registered component
requirements is incorrectly applied to the component itself rather than
its dependencies. This issue likely originated from a typo, using
component_target instead of _component_target. To prevent further
confusion, _component_target has been renamed to _req_target.

Fixing this revealed multiple incorrect dependencies for the Linux
target, which have now been resolved by explicitly specifying the
dependencies for the Linux target.

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

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2024-05-30 22:01:55 +08:00
Frantisek Hrbata 6f41dee0cd feat: add diff option support to idf.py size commands
This adds a possibility to specify --diff option to idf.py size,
size-components and size-files commands. This can be map file directly,
project directory or build directory.

Usage example:
idf.py size-components --diff ../hello_world2/build/hello_world.map
idf.py size-components --diff ../hello_world2/build
idf.py size-components --diff ../hello_world2

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2024-05-24 15:19:37 +08:00
Alexey Lapshin 2b36636f6f fix(system): print warning if stray section is found while linking 2024-05-17 13:37:42 +04:00
Alexey Gerenkov 57f61d2311 feat(tools): Update Clang version to esp-17.0.1_20240419 2024-05-03 16:55:13 +03:00
Ivan Grokhotkov 0436d49815 change(version): Update version to v5.4-dev 2024-04-22 22:43:44 +02:00
Fu Hanxi 74843a442b fix: component manager load all component dirs even set(COMPONENTS ...) 2024-03-19 19:52:20 +08:00
Alexey Lapshin 174e9f582b feat(tools): update toolchain version to esp-13.2.0_20240305 2024-03-15 12:35:09 +04:00
wanlei ee02b71f1c feat(esp32c61): introduce target esp32c61 2024-03-01 21:12:25 +08:00
Alexey Lapshin 04b73368e5 fix(tools): do not use builtin memcpy/memset/strcpy on xtensa chips
Closes https://github.com/espressif/esp-idf/issues/13228
2024-02-27 02:09:54 +08:00
Omar Chebib f27d65c7bc Merge branch 'contrib/github_pr_12852' into 'master'
cmake: correct the parameter annotation of idf_build_set_property (GitHub PR)

Closes IDFGH-11752

See merge request espressif/esp-idf!28067
2023-12-22 10:41:24 +08:00
Augtons a8ea638cde cmake: correct the parameter annotation of idf_build_set_property
The value parameter should be marked as [in] instead of [out], as it is used to set the property value, not to get it.
2023-12-21 18:30:57 +08:00
Ivan Grokhotkov 7265febc31 Merge branch 'bugfix/macos_build_linux_target_misc' into 'master'
Misc fixes for IDF_TARGET=linux on macOS host

See merge request espressif/esp-idf!28015
2023-12-21 17:55:24 +08:00
Mahavir Jain 7fc9b09c34 fix(cmake): for embedded data length use .long attribute
For Linux builds if the embedded data length exceeded 16-bit value then
the build used to fail with following error:

build/x509_crt_bundle.S: Assembler messages:
build/x509_crt_bundle.S:4201: Warning: value 0x1056e truncated to 0x56e

GNU ASM for X86 systems treats .word attribute as of size 2 bytes, this commit
uses .long attribute to take the size to 4 bytes.
2023-12-20 13:59:19 +05:30