Commit Graph
100 Commits
Author SHA1 Message Date
Ivan Grokhotkov b5d17f85a8 Merge branch 'bugfix/stdatomic_sync_op_and_fetch' into 'master'
newlib: stdatomic: implement missing "op_fetch", "nand" builtins

Closes IDF-4397

See merge request espressif/esp-idf!16404
2021-12-17 14:42:57 +00:00
Ivan Grokhotkov 52fb8624cc ldgen: allow + sign in archive names
Closes https://github.com/espressif/esp-idf/issues/8073
2021-12-17 10:31:01 +01:00
Ivan Grokhotkov 5b3b5f006f Merge branch 'feature/cmake_weak_deps_helper' into 'master'
cmake: add idf_component_optional_requires utility function, simplify some component dependencies

Closes IDF-3086

See merge request espressif/esp-idf!16373
2021-12-16 13:46:45 +00:00
Ivan Grokhotkov 7056fd3129 bootloader: don't add nonexistent directories to EXTRA_COMPONENT_DIRS 2021-12-14 19:17:53 +01: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 29489a3303 build system: fix quoting of fragments list passed to ldgen 2021-12-14 19:17:53 +01:00
Ivan Grokhotkov 6b361d923c esptool_py: fix quoting issues in run_serial_tool.cmake 2021-12-14 19:17:53 +01:00
Ivan Grokhotkov 50799e3026 esptool_py: fix passing arguments to cmake -P
Fixes WORKING_DIRECTORY argument being passed with spaces escaped `\ `
which causes failure in run_cmd.cmake, since the WORKING_DIRECTORY is
interpreted as having a literal backslash character in it.
2021-12-14 19:17:53 +01:00
Ivan Grokhotkov 8da98b864d build system: pass semicolon-separated directory lists to kconfig
New —-list-separator argument of confgen.py and
prepare_kconfig_files.py is used to select which character is used
as list separator. For compatibility with esp-docs, we still keep
support for space separator. Otherwise esp-docs would have to choose
the separator depending on the IDF version.
2021-12-14 19:17:53 +01:00
Ivan Grokhotkov 01033a3a60 newlib: stdatomic: implement missing "op_fetch", "nand" builtins
* Adds implementations of __{atomic,sync}_nand_fetch_n. These builtins
  were implemented for other operations but were not defined for NAND.
* Adds implementation of __atomic_OP_fetch_n for all OPs.
* Adds implementation of __sync_OP_and_fetch_n for all OPs.

Reported in https://github.com/espressif/arduino-esp32/issues/5948
2021-12-14 16:06:12 +01:00
Ivan Grokhotkov 636ce4750f ldgen: remove unused variables 2021-12-14 13:14:55 +01:00
Ivan Grokhotkov 44d18506b2 Merge branch 'feature/posix_compat_functions' into 'master'
newlib: implement posix_memalign, sysconf, realpath

Closes IDFGH-4268 and IDFGH-6119

See merge request espressif/esp-idf!16355
2021-12-14 08:56:33 +00:00
Ivan Grokhotkov 8df306ab60 freertos,esp_system: make dependencies on some components optional
Dependencies on gdbstub, espcoredump, app_trace will only be added
if these components are present in the build.
2021-12-13 18:39:49 +01:00
Ivan Grokhotkov d83ce227aa newlib: implement posix_memalign, sysconf, realpath
Closes https://github.com/espressif/esp-idf/issues/6119
Closes https://github.com/espressif/esp-idf/issues/7798
2021-12-13 14:40:21 +01:00
Ivan Grokhotkov 7a5ed12c6b lwip: make some of the component dependencies optional 2021-12-13 10:53:22 +01:00
Ivan Grokhotkov 71a884571c cmake: add idf_component_optional_requires utility function
It can be used in component CMakeLists.txt files when adding "weak"
dependencies between component. A "weak" dependency from A to B is
similar to target_link_libraries(A PRIVATE B), but it gets added only
if B is included in the build.
Use it instead of specifying B as part of PRIV_REQUIRES when the
component can be built (even if with reduced functionality) without
component B being available.
2021-12-13 10:53:22 +01:00
Ivan Grokhotkov f812714ec4 Merge branch 'bugfix/idf_exe_dll_deps' into 'master'
tools: fix idf_exe dependency on vcruntime140.dll, move it out of IDF

Closes IDF-4410

See merge request espressif/esp-idf!16301
2021-12-09 12:29:55 +00:00
Ivan Grokhotkov 6d35cf0f1b tools: upgrade idf_exe to 1.0.3
https://github.com/espressif/idf_py_exe_tool/releases/tag/v1.0.3
2021-12-09 11:33:37 +01:00
Ivan Grokhotkov c358aceb1b Merge branch 'feature/soc_caps_build_sys' into 'master'
build-system: parse soc caps and integrate into kconfig

Closes IDF-2223

See merge request espressif/esp-idf!15305
2021-12-09 06:54:08 +00:00
Ivan Grokhotkov 0061ad19c2 tools: move idf_exe out of IDF
Source code moved into https://github.com/espressif/idf_py_exe_tool,
so that releases can be built in CI and hosted on Github.
2021-12-08 02:12:57 +01:00
Ivan Grokhotkov e96545b261 Merge branch 'bugfix/esp_adc_cal_cmake' into 'master'
esp_adc_cal: minor simplification

See merge request espressif/esp-idf!15814
2021-12-02 15:08:08 +00:00
Ivan Grokhotkov ac99a93f33 tools: add a test app to check "G1-only" build
At the moment the list of components is far from being "G1-only".
"extra_components_which_shouldnt_be_included" list will be reduced in
future MRs.
2021-12-02 15:29:00 +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
Ivan Grokhotkov 98ad01e5fc Merge branch 'contrib/github_pr_7978' into 'master'
docs: fix minor typo (Github PR)

Closes IDFGH-6316

See merge request espressif/esp-idf!16233
2021-12-02 13:29:48 +00:00
Ivan Grokhotkov 4d246baa46 esp_adc_cal: update h2 code to use esp_check.h
Same changes as in commit c45c6f52f for c3.
2021-12-01 22:00:33 +01:00
Ivan Grokhotkov dbd3aa5bfc driver: adc: use SOC_ADC_PERIPH_NUM for array size
ADC_UNIT_MAX is no longer equal to the number of ADC units.
This makes the static s_adc_cali_param arrays larger than necessary.
2021-12-01 22:00:33 +01:00
Ivan Grokhotkov e697e7ff0f esp_adc_cal: move esp_adc_cal_get_voltage into common source file 2021-12-01 22:00:33 +01:00
Ivan Grokhotkov e95b4c2b90 esp_adc_cal: simplify CMakeLists.txt 2021-12-01 20:05:04 +01:00
Ivan Grokhotkov ede3dc3ea4 tools: fix some type annotations in idf_tools.py 2021-12-01 20:03:53 +01:00
Ivan Grokhotkov d835387924 tools: make idf_tools.py download --platform argument optional
...as it is described in the docs.
2021-12-01 20:02:19 +01:00
Ivan Grokhotkov 11547ca56e tools: don't install binutils-esp32ulp on aarch64
Once new binutils-esp32ulp is made and aarch64 artifacts are added,
will add these tools back.

Related to https://github.com/espressif/esp-idf/issues/6432
2021-11-30 14:00:25 +01:00
Ivan Grokhotkov 4675dc428f Merge branch 'bugfix/vfs-select-lock-latency' into 'master'
vfs: reduce lock in vfs_select

Closes WIFI-4063 and WIFI-4207

See merge request espressif/esp-idf!16161
2021-11-30 03:55:44 +00:00
Ivan Grokhotkov b3f5d3b685 tools: add CMake for linux-arm64 (aarch64) platform
Allows installing cmake on aarch64 linux platforms. Also necessary
when building IDF docker image on macOS aarch64.

Part of https://github.com/espressif/esp-idf/issues/6432
2021-11-29 11:31:29 +01:00
Ivan Grokhotkov 68cf4ef2be Merge branch 'feature/remove_component_manager_tests' into 'master'
ci: Remove component manager test from build system tests

Closes IDFCI-809 and IDFCI-929

See merge request espressif/esp-idf!16104
2021-11-26 16:39:56 +00:00
Ivan Grokhotkov d7bb5c4218 Merge branch 'feature/docker_build_use_git_mirror' into 'master'
ci: use LOCAL_GIT_MIRROR in docker build job, if set

Closes IDFCI-982

See merge request espressif/esp-idf!16098
2021-11-24 14:26:28 +00:00
Ivan Grokhotkov 78d83645b8 ci: use LOCAL_GIT_MIRROR in docker build job, if set
When the build runner has a local git mirror configured via
LOCAL_GIT_MIRROR variable, use that mirror when cloning IDF insider
the docker build job. Follows similar logic for
LOCAL_GITLAB_HTTPS_HOST, which is used for geo nodes.
2021-11-24 10:20:11 +01:00
Ivan Grokhotkov 7af719e426 Merge branch 'bugfix/esp32s3_esp_timer_test_failure' into 'master'
examples: esp_timer: disable secondary console for S3/C3 that can affect test timing

Closes IDFCI-935 and IDFCI-936

See merge request espressif/esp-idf!15934
2021-11-15 09:55:44 +00:00
Ivan Grokhotkov 53015490e3 Merge branch 'bugfix/freemodbus_tcp_master_fix_long_frame_buffer_issue' into 'master'
freemodbus: fix tcp master long frame buffer issue

See merge request espressif/esp-idf!11687
2021-11-05 16:23:35 +00:00
Ivan Grokhotkov 8b0e4ce85a Merge branch 'feature/modbus_timer_port_use_esp_timer' into 'master'
modbus: fix timer port to use esp_timer instead of group timer

See merge request espressif/esp-idf!15313
2021-11-05 14:16:42 +00:00
Ivan Grokhotkov ddde1c0f08 Merge branch 'ci/components_dir_files_changes_trigger_ut' into 'master'
ci: components dir files changes trigger ut

Closes IDFCI-918

See merge request espressif/esp-idf!15585
2021-11-04 22:08:02 +00:00
Ivan Grokhotkov 0b376251df Merge branch 'feature/kconfig_for_reproducible_build' into 'master'
Feature: kconfig for reproducible build

See merge request espressif/esp-idf!15100
2021-11-04 22:07:29 +00:00
Ivan Grokhotkov 263fe84130 Merge branch 'bugfix/http2_request' into 'master'
CI: Fix example test for http_request

See merge request espressif/esp-idf!15819
2021-11-04 18:49:55 +00:00
Ivan Grokhotkov 5962a7e931 wear_levelling: move tests from unit-test-app to a component test app
* Migrate test cases from IDF test runner to Unity fixture.
* Tighten heap checks in the test case a bit.
* Run formatting script on test_wl.c
* NEW: Define 4 test configurations, including configs with 512 byte
  sector size. Previously these configs weren't tested in CI.
* NEW: The test app only runs for ESP32 and ESP32-C3 (one chip for
  each architecture). The component is pretty high level so we don't
  need to test it for each chip. This reduces the load on CI.
2021-11-03 09:56:20 +01:00
Ivan Grokhotkov f47e8f90ce Merge branch 'bugfix/multi_heap_get_info_impl' into 'master'
heap: fix multi_heap_get_info_impl

See merge request espressif/esp-idf!15470
2021-11-01 21:21:22 +00:00
Ivan Grokhotkov b549523152 Merge branch 'docs/blink_update_supported_targets_on_readme' into 'master'
example: Update on the README file to change from ESP32-S3-Addax-1 to ESP32-S3-DevKitC-1

See merge request espressif/esp-idf!15604
2021-10-26 13:14:01 +00:00
Ivan Grokhotkov 1561fbd2c5 Merge branch 'ci/minimum_pipeline_for_revert_branch' into 'master'
ci: minimum pipeline for 'revert-' branches

Closes IDFCI-920

See merge request espressif/esp-idf!15592
2021-10-26 12:14:30 +00:00
Ivan Grokhotkov 249abb3fe8 esp_timer: allow querying the timer before esp_timer_init is called 2021-10-26 19:07:34 +08:00
Ivan Grokhotkov 569440bd3c Merge branch 'bugfix/highint_hdl_link_gnumake' into 'master'
esp_system: fix high level interrupt handler not linked for GNU Make

Closes IDFGH-5728 and IDFGH-6078

See merge request espressif/esp-idf!15615
2021-10-26 09:25:34 +00:00
Ivan Grokhotkov 265038bea3 esp_system: fix high level interrupt handler not linked for GNU Make
In 4972605, high-level interrupt handler hook was renamed from
ld_include_highint_hdl to ld_include_panic_highint_hdl. However the
change wasn't applied in GNU Make based build system. As a result,
the default interrupt handler was linked and features which depended
on the high-level interrupt didn't work.

Closes https://github.com/espressif/esp-idf/issues/7759
Closes https://github.com/espressif/esp-idf/issues/7447
2021-10-24 11:08:40 +02:00
Ivan Grokhotkov edf48bbad8 Merge branch 'bugfix/modbus_fix_copyright_headers' into 'master'
Bugfix/modbus fix copyright headers

See merge request espressif/esp-idf!15576
2021-10-22 17:23:03 +00:00
Ivan Grokhotkov c9b84c2b2c Merge branch 'bugfix/newlib_fix_stdatomic_clang' into 'master'
newlib: fix clang atomics

See merge request espressif/esp-idf!15581
2021-10-21 11:37:18 +00:00
Ivan Grokhotkov e89dce8fd1 examples/i2s: bump IDF version in component manifest 2021-10-21 00:24:50 +02:00
Ivan Grokhotkov 68233f58b4 version: starting v5.0.0 development 2021-10-20 22:25:38 +02:00
Ivan Grokhotkov fdfa260b91 Merge branch 'ci/update_esp_eth_cert' into 'master'
ci: update cert used for esp_eth test

Closes IDFCI-911

See merge request espressif/esp-idf!15572
2021-10-20 20:24:55 +00:00
Ivan Grokhotkov c77950e9fe Merge branch 'doc/api_stability' into 'master'
docs: add a section about API conventions and stability

Closes IDFGH-2658

See merge request espressif/esp-idf!14449
2021-10-18 14:19:12 +00:00
Ivan Grokhotkov b46183a539 Merge branch 'feature/esp_timer_example_reenable' into 'master'
examples: esp_timer: enable for all targets

Closes IDF-2022

See merge request espressif/esp-idf!15028
2021-10-18 09:43:17 +00:00
Ivan Grokhotkov 89b8830f50 Merge branch 'bugfix/build_spaces_in_path_tools' into 'master'
tools: fix issues related to spaces in paths in install and export scripts

Closes IDFGH-5913

See merge request espressif/esp-idf!15430
2021-10-18 06:49:49 +00:00
Ivan Grokhotkov f31f360279 Merge branch 'feature/riscv-msave-restore' into 'master'
build system: add COMPILER_SAVE_RESTORE_LIBCALLS option

Closes IDF-3732

See merge request espressif/esp-idf!15004
2021-10-14 23:25:49 +00:00
Ivan Grokhotkov 70d1f94739 ci: retry Gitlab operations on error 500 2021-10-14 17:42:48 +02:00
Ivan Grokhotkov 2c375458ab export.sh: fix undefined reference to realpath after renaming 2021-10-14 09:45:30 +02:00
Ivan Grokhotkov 94f4cfe99b tools: {install, export}.bat: fix path quoting
Also includes fix for DOSKEY definitions.
Closes https://github.com/espressif/esp-idf/issues/7605
2021-10-14 09:45:30 +02:00
Ivan Grokhotkov a038fb24bd tools: {export,install}.sh: fix quoting issues 2021-10-14 09:45:30 +02:00
Ivan Grokhotkov 79f2e68bc0 tools: update idf_exe to 1.0.2 to fix path quoting issue 2021-10-14 09:45:30 +02:00
Ivan Grokhotkov ffb708d403 tools: idf_exe: compatibility with MSVC 2021-10-14 09:45:30 +02:00
Ivan Grokhotkov b8d6985dca tools: idf_exe: quote idf.py path 2021-10-14 09:45:30 +02:00
Ivan Grokhotkov b86fe0c66c Merge branch 'bugfix/clang-atomics' into 'master'
newlib: provide missing atomic libcalls

Closes IDFGH-5896 and IDFGH-5897

See merge request espressif/esp-idf!15332
2021-10-12 10:27:00 +00:00
Ivan Grokhotkov 2423e2eac9 Merge branch 'bugfix/build_spaces_in_path_wifi_phy_ulp' into 'master'
esp_wifi, esp_phy, ulp: fix quoting of linker arguments

See merge request espressif/esp-idf!15428
2021-10-11 15:57:49 +00:00
Ivan Grokhotkov 347884aff5 docs, cmake: updates for ESP32-S3 DFU support 2021-10-08 18:24:20 +02:00
Ivan Grokhotkov a5ba1ac395 Merge branch 'bugfix/build_spaces_in_path_simple_fixes' into 'master'
build system: simple fixes for quoting and other minor issues

See merge request espressif/esp-idf!15427
2021-10-08 06:29:23 +00:00
Ivan Grokhotkov 95ee8104bf build system: add COMPILER_SAVE_RESTORE_LIBCALLS option
Add new Kconfig option to enable -msave-restore flag for RISC-V
targets. This option can be used to reduce binary size by replacing
inlined register save/restore sequences with library calls.
2021-10-07 15:01:35 +08:00
Ivan Grokhotkov 0277ba7e4e ulp: fix quoting issues for linker script and map file arguments 2021-10-06 10:42:07 +02:00
Ivan Grokhotkov ea99e5e969 esp_phy: fix quoting issue for library path 2021-10-06 10:41:58 +02:00
Ivan Grokhotkov c148c4c01c esp_wifi: fix quoting 2021-10-06 10:41:49 +02:00
Ivan Grokhotkov 5bfd10113a bootloader: fix adding bootloader_components to EXTRA_COMPONENT_DIRS 2021-10-06 10:17:19 +02:00
Ivan Grokhotkov 4f3cc319af cmake: kconfig: sort results of new glob expressions
Similar to 2f811b79, see that commit for the explanation.
2021-10-06 10:16:44 +02:00
Ivan Grokhotkov 4ae1b06082 cmake: kconfig: don't add empty entries to kconfigs list 2021-10-06 10:16:35 +02:00
Ivan Grokhotkov 0ad89536ce build system: quote values in __build_write_properties 2021-10-06 10:15:10 +02:00
Ivan Grokhotkov 5a6e27b8a1 build system: quote values in __component_write_properties 2021-10-06 10:15:02 +02:00
Ivan Grokhotkov e39d3b2160 build system: project: quote linker map file argument 2021-10-06 10:14:55 +02:00
Ivan Grokhotkov 83a7ecc7c3 build system: quote LD script search paths in target_linker_script 2021-10-06 10:14:46 +02:00
Ivan Grokhotkov 425a024db4 Merge branch 'bugfix/esp_partition_iterator_release_doc' into 'master'
spi_flash: state that esp_partition_iterator_release allows NULL arg

Closes IDFGH-5843

See merge request espressif/esp-idf!15169
2021-10-05 09:08:55 +00:00
Ivan Grokhotkov f2d0526141 Merge branch 'feature/github-7632' into 'master'
esp_crt_bundle: remove EC-ACC certificate

See merge request espressif/esp-idf!15418
2021-10-05 08:21:03 +00:00
Ivan Grokhotkov 4120397924 ci: add S3 example test template and job 2021-10-04 16:12:47 +08:00
Ivan Grokhotkov bfae073454 examples: esp_timer: enable for all targets
The example compiles and works correctly on all supported targets now,
re-enable it in CI.
2021-10-04 16:12:47 +08:00
Ivan Grokhotkov 8f0ee18931 Merge branch 'feature/clang_toolchain_compat' into 'master'
Build system: minimal changes for clang compatibility

See merge request espressif/esp-idf!15168
2021-09-23 08:19:09 +00:00
Ivan Grokhotkov ca73236f8e Merge branch 'bugfix/vfs_io_disabled_console' into 'master'
Fix console output flushing when CONFIG_VFS_SUPPORT_IO is disabled

Closes IDF-3892

See merge request espressif/esp-idf!15210
2021-09-16 10:27:04 +00:00
Ivan Grokhotkov 3c5e7b89ab spi_flash: extern spi_flash_chip_generic_timeout
spi_flash_generic_timeout is currently defined in the header file,
which makes it a common symbol between translation units where this
header file is included. It is also defined in
spi_flash_chip_generic.c.

Add an explicit `extern` to prevent multiple definition errors.
2021-09-16 11:07:54 +02:00
Ivan Grokhotkov b5606f5e81 esp_system: make the abort operation compatible with clang
Clang warns that the original code wouldn't have any effect:

    warning: indirection of non-volatile null pointer will be deleted,
             not trap [-Wnull-dereference]
    note: consider using __builtin_trap() or qualifying pointer
          with 'volatile'

__builtin_trap translates to 'break 1, 15' instruction on Xtensa,
which might be okay in this case. However to absolutely certainly not
break anything for GCC builds, add 'volatile' instead.
2021-09-16 11:07:54 +02:00
Ivan Grokhotkov 82f0488f77 argtable: move GCC-specific pragma to cmake/make files
...and only add it when building with GCC.
2021-09-16 11:07:54 +02:00
Ivan Grokhotkov d0f960a634 newlib: don't use gcc-specific pragmas for clang 2021-09-16 11:07:54 +02:00
Ivan Grokhotkov 1e2b1238c6 cbor: add a workaround for -ffreestanding being passed to clang
Toolchain CMake files for clang currently pass -ffreestanding option
to prevent clang from picking the wrong copy of stdint.h. This is a
temporary hack until we fix clang distributions to not include the
GCC version of stdint.h. This hack, however, results in setting
__STDC_HOSTED__=0, which is being checked by cbor header files,
making some required functions unavailable as a result.
Undefine __STDC_HOSTED__ as a workaround. This flag is only passed
when compiling cbor itself.
2021-09-16 11:07:54 +02:00
Ivan Grokhotkov 81b97b9a6b spi_flash: only add GCC-specific flags when building with GCC 2021-09-16 11:07:54 +02:00
Ivan Grokhotkov 370473b772 spiffs: only add GCC-specific flags when building with GCC 2021-09-16 11:07:54 +02:00
Ivan Grokhotkov 3177df4986 cmake: temporarily silence additional warnings produced by clang 2021-09-16 11:07:54 +02:00
Ivan Grokhotkov 6bba3ea034 cmake: only add GCC-specific flags when building with GCC
There are probably more GCC-specific flags in component CMakeLists.txt
files; these are just the one being added for all the files.
2021-09-16 11:07:54 +02: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
Ivan Grokhotkov 06c0b8a5d0 cmake: don't search for toolchain files in component directory
This feature was added when we thought that target components might be
added out of IDF tree. That never became possible, and with recent
changes in IDF architecture it is unlikely that this feature will be
necessary any time soon. Remove it, simplifying the code.
2021-09-16 10:54:27 +02:00
Ivan Grokhotkov 14e600801e cmake: allow selection of clang based toolchain
This is an experimental feature intended at the moment for ESP-IDF
developers only.

If IDF_TOOLCHAIN=clang environment variable or CMake variable is set,
use toolchain-clang-esp32xx.cmake instead of toolchain-esp32xx.cmake.

These changes aren't sufficient to actually build any IDF project with
clang; subsequent commits add a few workarounds required to do this.

Toolchain files are added for esp32 and esp32s2, which are the targets
supported in our llvm-project fork at the moment.
2021-09-16 10:54:27 +02:00
Ivan Grokhotkov ccda990ce5 newlib: set errno in the explicitly provided reent structure
Since these functions receive the pointer to reent structure, they
should set errno in it rather than using thread-local errno.

This didn't cause practical issues because console functions in IDF
are only called from threads, and in that case 'r' is a pointer to
the thread-local structure, so &errno is the same thing as
&__errno_r(r). Still, fixing this for consistency.
2021-09-16 09:00:07 +02:00
Ivan Grokhotkov 5da66d1d39 newlib: implement _fstat_r stub for console
When CONFIG_VFS_SUPPORT_IO is disabled, _read_r and _write_r
implementations in syscalls.c are used to provide console I/O via
esp_rom_uart_tx_one_char/esp_rom_uart_rx_one_char.

When newlib opens a (FILE*) stream, it calls fstat to check if the
underlying file is character-oriented. In this case, it configures the
stream to use line buffering. Otherwise (or if fstat fails) the stream
is opened as block buffered.

Since fstat wasn't provided, stdin/stdout/stderr streams got opened in
block buffered mode. For console, we need line buffered output so that
the stream buffer is flushed each time a complete line (ending with
'\n') is sent to stdout or stderr.

Fix by implementing _fstat_r stub, setting st->st_mdoe=S_IFCHR.
2021-09-16 09:00:07 +02:00