v1.26.0 error when building ESP32_C3
Port, board and/or hardware
ESP32-C3
MicroPython version
Nonsense, cannot even build, how to run micropython??
Reproduction
Follow the instruction for building ESP32. At the last step, make works, but make BOARD=ESP32_GENERIC_C3 fails with error.
Expected behaviour
ESP32_GENERIC_C3 should be able to build.
Observed behaviour
$ make BOARD=ESP32_GENERIC_C3
Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
Executing action: all (aliases: build)
Running cmake in directory /home/xuancong/projects/micropython-orig/ports/esp32/build-ESP32_GENERIC_C3
Executing "cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DPYTHON=/home/xuancong/.espressif/python_env/idf5.4_py3.10_env/bin/python -DESP_PLATFORM=1 -DMICROPY_BOARD=ESP32_GENERIC_C3 -DMICROPY_BOARD_DIR=/home/xuancong/projects/micropython-orig/ports/esp32/boards/ESP32_GENERIC_C3 -DCCACHE_ENABLE=0 /home/xuancong/projects/micropython-orig/ports/esp32"...
-- Found Git: /usr/bin/git (found version "2.34.1")
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
-- The ASM compiler identification is unknown
-- Found assembler: riscv32-esp-elf-gcc
CMake Error at /home/xuancong/projects/esp-idf/tools/cmake/project.cmake:571 (__project):
The CMAKE_C_COMPILER:
riscv32-esp-elf-gcc
is not a full path and was not found in the PATH.
Tell CMake where to find the compiler by setting either the environment
variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
the compiler, or to the compiler name if it is in the PATH.
Call Stack (most recent call first):
CMakeLists.txt:65 (project)
CMake Error at /home/xuancong/projects/esp-idf/tools/cmake/project.cmake:571 (__project):
The CMAKE_CXX_COMPILER:
riscv32-esp-elf-g++
is not a full path and was not found in the PATH.
Tell CMake where to find the compiler by setting either the environment
variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
to the compiler, or to the compiler name if it is in the PATH.
Call Stack (most recent call first):
CMakeLists.txt:65 (project)
CMake Error at /home/xuancong/projects/esp-idf/tools/cmake/project.cmake:571 (__project):
The CMAKE_ASM_COMPILER:
riscv32-esp-elf-gcc
is not a full path and was not found in the PATH.
Tell CMake where to find the compiler by setting either the environment
variable "ASM" or the CMake cache entry CMAKE_ASM_COMPILER to the full path
to the compiler, or to the compiler name if it is in the PATH.
Call Stack (most recent call first):
CMakeLists.txt:65 (project)
-- Warning: Did not find file Compiler/-ASM
-- Configuring incomplete, errors occurred!
See also "/home/xuancong/projects/micropython-orig/ports/esp32/build-ESP32_GENERIC_C3/CMakeFiles/CMakeOutput.log".
See also "/home/xuancong/projects/micropython-orig/ports/esp32/build-ESP32_GENERIC_C3/CMakeFiles/CMakeError.log".
HINT: Try to reinstall the toolchain for the chip that you trying to use.
For more information run 'idf.py docs -sp get-started/#installation' and follow the instructions for your system
cmake failed with exit code 1, output of the command is in the /home/xuancong/projects/micropython-orig/ports/esp32/build-ESP32_GENERIC_C3/log/idf_py_stderr_output_31507 and /home/xuancong/projects/micropython-orig/ports/esp32/build-ESP32_GENERIC_C3/log/idf_py_stdout_output_31507
-e See https://github.com/micropython/micropython/wiki/Build-Troubleshooting
make: *** [Makefile:77: all] Error 1
Additional Information
No, I've provided everything above.
Code of Conduct
Yes, I agree
esp32/esp32_common.cmake: RISC-V improvements.
Summary
This PR contains some RISC-V specific improvements to the ESP32 port's build script.
The main change is the migration of the ESP32C3/ESP32C6 gchelper implementation over to the native version. This is to make the RISC-V boards' behaviour in line with what most other ports do, and to follow the request found in the generic gchelper source file: to use the native version if possible. This should also be compatible with future ESP32C2 board support, as the RISC-V CPU version in use is the same as the ESP32C6.
Two other changes perform some minor cleanup work by removing obsolete directives, with the last providing the proper architecture name to mpy-cross when needed. The old implementation did that only for Xtensa.
Testing
A build for ESP32_GENERIC_C3 was built without errors and the full test suite was run on an ESP32C3 board with the exactly same behaviour: machine_i2s_rate fails on my board both with current master and with my changes.