Commit Graph

87 Commits

Author SHA1 Message Date
Zim Kalinowski
56994aeb0b build system: more accurate error information for git_describe
Closes https://github.com/espressif/esp-idf/issues/9071

See merge request espressif/esp-idf!23891
2023-07-10 11:36:04 +08:00
Frantisek Hrbata
9156bbb55c tools: extend information in project_description.json
This extends information provided in the project_description.json file.
Newly added information can be used in the SBOM generating tool and
also to improve hints regarding the the component dependency issues.

Added fields

version:
   This adds versioning to the project_description.json file,
   so it's easy to identify if it contains the required information.

project_version:
   Can be used as a version for the resulting binary e.g. `hello_world.bin`.

idf_path:
   This one is probably not necessary, but it allows tools to run even without
   esp-idf environment exported(e.g. export.sh).

c_compiler:
   The `CMAKE_C_COMPILER` value with full path to the compiler binary. This can
   be used to get information about toolchain, which was used to build the project.

common_component_reqs:
   List of common components as presented in cmake's __COMPONENT_REQUIRES_COMMON
   and set in tools/cmake/build.cmake:__build_init().

build_component_info:
   Detailed information about components used during build. It's a
   dictionary with the component name as a key and each component has
   a dictionary with detailed information. Following is an example for
   the efuse component.

   "efuse": {
       "alias": "idf::efuse",
       "target": "___idf_efuse",
       "prefix": "idf",
       "dir": "/home/fhrbata/work/esp-idf/components/efuse",
       "type": "LIBRARY",
       "lib": "__idf_efuse",
       "reqs": [],
       "priv_reqs": [ "bootloader_support", "soc", "spi_flash" ],
       "managed_reqs": [],
       "managed_priv_reqs": [],
       "file": "/home/fhrbata/work/blink/build/esp-idf/efuse/libefuse.a",
       "sources": [ "/home/fhrbata/work/esp-idf/components/efuse/esp32s3/esp_efuse_table.c", ... ],
       "include_dirs": [ "include", "esp32s3/include" ]
   }

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2023-06-08 14:30:07 +02:00
Marius Vikhammer
124a43e9ec build-system: replace ADDITIONAL_MAKE_CLEAN_FILES with ADDITIONAL_CLEAN_FILES
ADDITIONAL_MAKE_CLEAN_FILES is deprecated and only worked with make.
Replaced with the new ADDITIONAL_CLEAN_FILES (CMake 3.15) which also works with ninja.
2023-05-10 09:56:15 +08:00
Fu Hanxi
9f01d9aa2c build_system: stop looking for sdkconfig file specified by env var SDKCONFIG_DEFAULTS in bootloader subproject 2023-01-10 09:48:59 +08:00
Ivan Grokhotkov
1ffbee27e7
cmake: enable CMAKE_COLOR_DIAGNOSTICS by default
Related to https://github.com/espressif/esp-idf/issues/4162

Setting this option informs CMake that it should pass
-fcolor-diagnostics flag to the compiler.

(Colorized build system output, like from GNU Make, is produced even
without this flag.)

Note that if the build is done using Ninja and the build output is
redirected (not a TTY), Ninja will still strip the escape codes from
the output. For the case of idf.py, this is handled in the next
commit.
2022-09-13 11:34:59 +02:00
Djordje Nedic
facab8c5a7 tools: Increase the minimal supported CMake version to 3.16
This updates the minimal supported version of CMake to 3.16, which in turn enables us to use more CMake features and have a cleaner build system.
This is the version that provides most new features and also the one we use in our latest docker image for CI.
2022-06-01 06:35:02 +00:00
Sergei Silnov
89518ee86a build & config: Check requirements of managed components of main and add interface versioning 2022-05-30 14:36:22 +02:00
Sergei Silnov
07827ea362 build & config: Don't include common components on early expansion 2022-05-30 14:34:30 +02:00
Sergei Silnov
487603b51f build & config: Add IDF_COMPONENT_MANAGER build property 2022-05-26 12:48:27 +02:00
Djordje Nedic
11f3898e33 tools: Fix cmake variable propagation
This fixes the issue where component CMAKE variables propagate by default to the entire project, for instance compiler flags.
Useful for when you want to have component specific compiler flags or defines.

Closes https://github.com/espressif/esp-idf/pull/8806
Closes https://github.com/espressif/esp-idf/issues/8881
2022-05-16 16:55:34 +02:00
Sergei Silnov
69cf85e6a6 tools: Enable the component manager by default in CMake 2022-05-03 17:38:36 +02:00
Ivan Grokhotkov
273633ee31
build system: add WHOLE_ARCHIVE component property
This component property allows including all component object files
into the executable. It is equivalent to wrapping the component
library with -Wl,--whole-archive and -Wl,--no-whole-archive flags.

Closes https://github.com/espressif/esp-idf/issues/8667
2022-04-05 18:50:20 +02:00
Ivan Grokhotkov
09e50b27ed cmake: handling of space-separated EXTRA_COMPONENT_DIRS
COMPONENT_DIRS and EXTRA_COMPONENT_DIRS should be defined as CMake
lists, using 'set' or 'list' commands. Some applications written
for earlier versions of ESP-IDF used to define these variables as
space separated strings.

For example, the following is correct:

  set(EXTRA_COMPONENT_DIRS path/to/components path/to/more/components)

The following is not correct:

  set(EXTRA_COMPONENT_DIRS "${EXTRA_COMPONENT_DIRS} component1")
  set(EXTRA_COMPONENT_DIRS "${EXTRA_COMPONENT_DIRS} component2")

The string "component1 component2" may indicate a single directory
name with a space, or two directory names separated by space.

However due to the fact that such way of defining EXTRA_COMPONENT_DIRS
was supported in IDF 4.3 and earlier, we need to provide backward
compatibility for it.

This commit introduces a new script, split_paths_by_spaces.py, which
is invoked if EXTRA_COMPONENT_DIRS or COMPONENT_DIRS variable contains
spaces. The script tries to determine if each space should be
interpreted as a separator or as part of the directory name.

When this cannot be done unambiguously, the script reports an error.

In all cases when space separators are detected, the script reports
a warning, and prints instructions for fixing the CMakeLists.txt.

Breaking change in this commit: specifying non-existent directories
in COMPONENT_DIRS or EXTRA_COMPONENT_DIRS is no longer allowed.
2021-12-14 19:17:53 +01:00
Ivan Grokhotkov
ae7d1fff49 cmake: add component dependency graph generation helpers
These optional feature produces a graphviz file showing component
dependencies. It is useful for debugging reasons why certain
components got added to the build.
2021-12-02 15:29:00 +01:00
Roland Dobai
b1817115ce Merge branch 'feature/improve_chip_target_detection' into 'master'
tools: Improve chip target detection

Closes IDF-3751

See merge request espressif/esp-idf!15691
2021-11-05 15:31:32 +00:00
simon.chupin
bca79c75d5 tools: Improve chip target detection 2021-11-03 15:36:56 +01:00
Fu Hanxi
42405604af idf.py gdb: autoload prefix_map_gdbinit when exists in project_description.json 2021-10-26 14:20:40 +08:00
Ivan Grokhotkov
e39d3b2160 build system: project: quote linker map file argument 2021-10-06 10:14:55 +02:00
morris
0f7b90d205 cmake: don't treat the readme file as a component 2021-09-24 10:56:58 +08:00
simon.chupin
844dd5075f Tools: make idf_size work with overflow
Closes https://github.com/espressif/esp-idf/issues/6914
closes https://github.com/espressif/esp-idf/issues/4234
2021-09-16 14:12:46 +02:00
Jakob Hasse
b3271a51af Merge branch 'bugfix/common_components_linux' into 'master'
[build system]: Fixed common requirement for Linux target

Closes IDF-3638

See merge request espressif/esp-idf!14743
2021-08-17 08:48:38 +00:00
Jakob Hasse
7029f0537e [build system]: Fixed common requirement for Linux 2021-08-13 16:50:29 +08:00
Omar Chebib
339454ff19 bootloader: Kconfig files in bootloader_components is now part of menuconfig
It is now possible to configure the options (Kconfig) of bootloader components
directly from the menuconfig
2021-08-12 10:43:00 +08:00
Martina
1e5a2f92c3 feature/update_cmake: Update of outdated CMake version 3.16.4->3.20.3 and CCache version 3.7->4.3 in tools.json
Closes https://github.com/espressif/esp-idf/issues/7083
2021-07-26 21:30:59 +08:00
Angus Gratton
a5faf86934 Merge branch 'bugfix/override_cmake_python' into 'master'
cmake: Minor Python CMake build fixes

Closes IDFGH-4454

See merge request espressif/esp-idf!12975
2021-04-13 03:39:16 +00:00
Angus Gratton
886c465120 cmake: Set IDFTOOL variable using the correct PYTHON interpreter variable 2021-04-01 09:51:26 +11:00
Angus Gratton
7a2c126054 cmake: Fix passing PYTHON path via CMake variable if using IDF as library
Closes https://github.com/espressif/esp-idf/issues/6285
2021-04-01 09:50:56 +11:00
Renz Bagaporo
b5c3d4f615 cmake: swap priority between EXTRA_COMPONENT_DIRS and project components 2021-03-22 19:01:33 +08:00
Sergei Silnov
a5981c12c2 Move call for component manager to build.cmake 2021-02-04 15:07:23 +01:00
Sergei Silnov
99bf2ed61d idf.py: remove mentions of idf_project.yml and update tests 2021-01-29 23:08:47 +01:00
Ivan Grokhotkov
ed7fbfefac build system: don't add GCC-specific options when building with clang 2021-01-24 12:48:29 +01:00
Roland Dobai
548ea1bdd5 tools: Wrap flash binaries into a UF2 file for flashing through USB MSC
@mmoskal This commit adds basic support for UF2 into ESP-IDF.
2020-12-29 18:14:47 +01:00
Michael (XIAO Xufeng)
b52c764bf3 idf_size.py: add support for esp32c3 and risc-v 2020-11-13 07:49:11 +11:00
Renz Bagaporo
7b9ab1e597 cmake: add hidden option to link components as group
Adds a hidden option to link components in projects as one big group for
debugging purposes. Makes it easy to single out if symbols are not
really defined or some requirements are missing for components leading
to undefined link errors.
2020-07-15 08:05:33 +08:00
Renz Bagaporo
565dc4ba4b cmake: convert python path to cmake path 2020-07-09 12:07:45 +08:00
Renz Christian Bagaporo
7f37fb81ca cmake: fix extra component dir ordering 2020-06-02 15:43:03 +08:00
Roland Dobai
ab9f714248 Add build system support for programming ESP32-S2 using DFU utils 2020-04-30 07:59:18 +02:00
Roland Dobai
1821ee8851 tools: Add proper multi-chip support for idf_size.py 2020-02-27 19:50:05 +01:00
KonstantinKondrashov
b49a657448 build: Add CONFIG_APP_PROJECT_VER to set the project version from Kconfig 2020-01-15 11:02:27 +00:00
Sergei Silnov
dfafa98253 Use component manager if available as python package 2019-12-19 16:48:36 +01:00
Renz Christian Bagaporo
42d4f39a9a cmake: consider sdkconfig defaults value from environment 2019-11-03 16:43:58 +08:00
Renz Christian Bagaporo
bf1df9b5b5 cmake: do not check if sdkconfig exists 2019-11-03 16:43:58 +08:00
Renz Christian Bagaporo
d43cc4fa4b cmake: allow multiple sdkconfig defaults to be specified 2019-11-03 16:43:58 +08:00
Angus Gratton
f4ea7c5a46 cmake: Set uninitialized variable warnings in ULP & bootloader subprojects
Fixes issue where PYTHON was not being expanded when running ulp_mapgen.py,
causing Windows launch setting to be used - reported here:
https://esp32.com/viewtopic.php?f=13&t=12640&p=50283#p50283
2019-10-29 05:38:39 +00:00
Angus Gratton
96b96ae244 Merge branch 'bugfix/cmake_component_names' into 'master'
CMake: Component name related bugfixes

See merge request espressif/esp-idf!5921
2019-09-17 11:16:25 +08:00
Angus Gratton
9a7ab28cc2 idf.py: Add environment variable to enable ccache by default 2019-09-03 10:25:28 +10:00
Renz Christian Bagaporo
ba2ec73d59 cmake: fix build failure when git repo is initialized but no first commit
Closes https://github.com/espressif/esp-idf/issues/3920
2019-08-28 09:53:37 +08:00
Renz Christian Bagaporo
826568a120 cmake: introduce BUILD_COMPONENT_ALIASES
This commit makes it so that BUILD_COMPONENT holds only the component,
and a new property BUILD_COMPONENT_ALIASES hold the full name of the
component.

This also removes erroneous check for duplicate components, as this can
never happen:

(1) if two components have the same name but different prefixes,
the internal names are still unique between them

(2)if two components happen to have the same name and same prefix, the
latter would override the former
2019-08-27 20:40:29 +08:00
Renz Christian Bagaporo
4690152eca cmake: make default version 1 2019-08-21 12:46:38 +08:00
Renz Christian Bagaporo
72a5762525 cmake: make use of ccache opt-in 2019-06-29 00:22:57 +00:00