espressif / esp-idf

Espressif IoT Development Framework. Official development framework for Espressif SoCs.
Apache License 2.0
13.87k stars 7.32k forks source link

Cannot run/build menuconfig with make toolchain (IDFGH-5967) #7655

Closed ataweg closed 3 years ago

ataweg commented 3 years ago

Running on my windows environment with make and msys32 (the old fashioned toolchain) I am not able to run "make menuconfig". I use esp-idf v4.3. Half a year ago, it all worked. But in the meantime I have both switched to V4.3 and updated msys32 (esp32_win32_msys2_environment_and_esp2020r2_toolchain-20200601.zip). Any idea how to fix the problem?

Toolchain path: /c/Espressif/.espressif/tools/xtensa-esp32-elf/esp-2021r1-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
Toolchain version: esp-2021r1
Compiler version: 8.4.0
Python requirements from C:/Espressif/esp-idf-master\requirements.txt are satisfied.
make[1]: Entering directory '/c/Espressif/esp-idf-master/tools/kconfig'
/c/Espressif/esp-idf-master/tools/kconfig/lxdialog/check-lxdialog.sh -check cc -DCURSES_LOC="<curses.h>" -DLOCALE -MMD -MP -I "." -I "/c/Espressif/esp-idf-master/tools/kconfig" -lncursesw -lintl
 *** Unable to find the ncurses libraries or the
 *** required header files.
 *** 'make menuconfig' requires the ncurses libraries.
 ***
 *** Install ncurses (ncurses-devel) and try again.
 ***
make[1]: *** [Makefile:219: dochecklxdialog] Error 1
make[1]: Leaving directory '/c/Espressif/esp-idf-master/tools/kconfig'
make: *** No rule to make target '/c/Espressif/esp-idf-master/tools/kconfig/conf-idf', needed by '/c/Espressif/esp-idf-master/tools/kconfig/mconf-idf'.  Stop.
ataweg commented 3 years ago

also using the latest msys2 from https://github.com/msys2/msys2-installer/releases/download/2021-07-25/msys2-x86_64-20210725.exe failed.

dobairoland commented 3 years ago

Probably you need to install the ncurses-devel package.

This is our old script we used to create our environment: https://github.com/espressif/esp-idf/blob/master/tools/windows/windows_install_prerequisites.sh

You can see there which packages are installed:

pacman --noconfirm -S --needed gettext-devel gcc git make ncurses-devel flex bison gperf vim \
       mingw-w64-i686-python-pip mingw-w64-i686-python-cryptography unzip winpty mingw-w64-i686-gcc

This is not supported by ESP-IDF anymore. Please switch as soon as possible to Windows CMD/Powershell/Vscode/Eclipse & cmake.

ataweg commented 3 years ago

Thanks for the tip. Now it works again. Here are the steps I took to set up an environment for the make toolchain:

Download msys2-x86_64-20210725.exe from https://www.msys2.org/ and follow the instructions on the website to install msys2.

At the end of the installation process, a msys2 shell will open. Execute pacman -Syu and confirm "y" twice. The shell will be closed. Open a new MSYS MSYS2 shell from the Windows start menu. And execute pacman -Su. Exit the shell by typing exit. Open a new MSYS MinGW 32-bit shell for the start menu and run C:\Espressif\esp-idf-master\tools\windows_install_prerequisites.sh. This will take a few minutes.

Open a Windows command shell and set up the environment. Here are my settings:

set PRJ_NAME=Wifi-Camera
set FIRMWARE_NAME=%PRJ_NAME%
set PRJ_VARIANT=""

cd /D F:\Projects\InternetOfThings\Devices\%PRJ_NAME%\Firmware\%FIRMWARE_NAME%%PRJ_VARIANT%\source
set PWD=.

set IDF_VER=-master
:set IDF_VER=-v4.3

set IDF_PATH=C:\Espressif\esp-idf%IDF_VER%
set IDF_TOOLS_PATH=c:\Espressif\.espressif

PATH=C:\Program Files\Git\usr\bin;%PATH%
PATH=C:\Python39;C:\Python39\Scripts;%PATH%
PATH=C:\msys64\usr\bin;C:\msys64\mingw32\bin;%PATH%

set IDF_PYTHON_ENV_PATH=C:\Espressif\.espressif\python_env\idf4.4_py3.9_env

PATH=C:\Espressif\.espressif\tools\xtensa-esp32-elf\esp-2021r1-8.4.0\xtensa-esp32-elf\bin;%PATH%
PATH=C:\Espressif\.espressif\python_env\idf4.4_py3.9_env\Scripts;%PATH%
PATH=%IDF_PATH%\tools;%PATH%

set ESP_PORT=COM12
set ESP_FLASH_BAUD=921600

set MAKE_PARAM=ESPPORT=%ESP_PORT% PRJ_NAME=%PRJ_NAME% PRJ_VARIANT=%PRJ_VARIANT%

SET ESPTOOL=python %IDF_PATH%\components\esptool_py\esptool\esptool.py
SET CHIP_OPTIONS=--chip esp32 --port %ESP_PORT% --baud %ESP_FLASH_BAUD% --before default_reset --after hard_reset
SET FLASH_OPTIONS=--flash_mode dio --flash_freq 40m --flash_size detect

: Xensa-esp32 toolchain
: ---------------------
SET XTENSA_TOOLS=C:\espressif\.espressif\tools\xtensa-esp32-elf\esp-2021r1-8.4.0\xtensa-esp32-elf\bin

SET OBJDUMP=%XTENSA_TOOLS%\xtensa-esp32-elf-objdump.exe
SET OBJSIZE=%XTENSA_TOOLS%\xtensa-esp32-elf-size.exe
SET OBJCOPY=%XTENSA_TOOLS%\xtensa-esp32-elf-objcopy.exe

Verify your installation by running python.exe -m pip install --use-feature=in-tree-build -r C:/Espressif/esp-idf-master/requirements.txt.

Now you can run make menuconfig

If you have problems to build the configuration menu, go to the Kconfig folder C:\Espressif\esp-idf-master\tools\kconfig and remove here and in its subfolder the .d , .o files and the zconf.*.c file.

dobairoland commented 3 years ago

Thanks for the feedback and leaving a guide for others. I'm happy that you've got it solved.

ataweg commented 3 years ago

Thanks for your support.