| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- @echo off
- :: This script is called from a shortcut (cmd.exe /k export_fallback.bat), with
- :: the working directory set to an ESP-IDF directory.
- :: Its purpose is to support using the "IDF Tools Directory" method of
- :: installation for ESP-IDF versions older than IDF v4.0.
- :: It does the same thing as "export.bat" in IDF v4.0.
- set IDF_PATH=%CD%
- if not exist "%IDF_PATH%\tools\idf.py" (
- echo This script must be invoked from ESP-IDF directory.
- goto :end
- )
- if "%~2"=="" (
- echo Usage: idf_cmd_init.bat ^<Python directory^> ^<Git directory^>
- echo This script must be invoked from ESP-IDF directory.
- goto :end
- )
- set "IDF_PYTHON_DIR=%1"
- set "IDF_GIT_DIR=%2"
- :: Strip quoutes
- set "IDF_PYTHON_DIR=%IDF_PYTHON_DIR:"=%"
- set "IDF_GIT_DIR=%IDF_GIT_DIR:"=%"
- :: Clear PYTHONPATH as it may contain libraries of other Python versions
- if not "%PYTHONPATH%"=="" (
- echo Clearing PYTHONPATH, was set to %PYTHONPATH%
- set PYTHONPATH=
- )
- :: Add Python and Git paths to PATH
- set "PATH=%IDF_PYTHON_DIR%;%IDF_GIT_DIR%;%PATH%"
- echo Using Python in %IDF_PYTHON_DIR%
- python.exe --version
- echo Using Git in %IDF_GIT_DIR%
- git.exe --version
- :: Check if this is a recent enough copy of ESP-IDF.
- :: If so, use export.bat provided there.
- :: Note: no "call", will not return into this batch file.
- if exist "%IDF_PATH%\export.bat" %IDF_PATH%\export.bat
- echo IDF version does not include export.bat. Using the fallback version.
- if exist "%IDF_PATH%\tools\tools.json" (
- set "IDF_TOOLS_JSON_PATH=%IDF_PATH%\tools\tools.json"
- ) else (
- echo IDF version does not include tools\tools.json. Using the fallback version.
- set "IDF_TOOLS_JSON_PATH=%~dp0%tools_fallback.json"
- )
- if exist "%IDF_PATH%\tools\idf_tools.py" (
- set "IDF_TOOLS_PY_PATH=%IDF_PATH%\tools\idf_tools.py"
- ) else (
- echo IDF version does not include tools\idf_tools.py. Using the fallback version.
- set "IDF_TOOLS_PY_PATH=%~dp0%idf_tools_fallback.py"
- )
- echo.
- echo Setting IDF_PATH: %IDF_PATH%
- echo.
- set "OLD_PATH=%PATH%"
- echo Adding ESP-IDF tools to PATH...
- :: Export tool paths and environment variables.
- :: It is possible to do this without a temporary file (running idf_tools.py from for /r command),
- :: but that way it is impossible to get the exit code of idf_tools.py.
- set "IDF_TOOLS_EXPORTS_FILE=%TEMP%\idf_export_vars.tmp"
- python.exe "%IDF_TOOLS_PY_PATH%" --tools-json "%IDF_TOOLS_JSON_PATH%" export --format key-value >"%IDF_TOOLS_EXPORTS_FILE%"
- if %errorlevel% neq 0 goto :end
- for /f "usebackq tokens=1,2 eol=# delims==" %%a in ("%IDF_TOOLS_EXPORTS_FILE%") do (
- call set "%%a=%%b"
- )
- :: This removes OLD_PATH substring from PATH, leaving only the paths which have been added,
- :: and prints semicolon-delimited components of the path on separate lines
- call set PATH_ADDITIONS=%%PATH:%OLD_PATH%=%%
- if "%PATH_ADDITIONS%"=="" call :print_nothing_added
- if not "%PATH_ADDITIONS%"=="" echo %PATH_ADDITIONS:;=&echo. %
- echo Checking if Python packages are up to date...
- python.exe %IDF_PATH%\tools\check_python_dependencies.py
- if %errorlevel% neq 0 goto :end
- echo.
- echo Done! You can now compile ESP-IDF projects.
- echo Go to the project directory and run:
- echo.
- echo idf.py build
- echo.
- goto :end
- :print_nothing_added
- echo No directories added to PATH:
- echo.
- echo %PATH%
- echo.
- goto :eof
- :end
- :: Clean up
- if not "%IDF_TOOLS_EXPORTS_FILE%"=="" (
- del "%IDF_TOOLS_EXPORTS_FILE%" 1>nul 2>nul
- )
- set IDF_TOOLS_EXPORTS_FILE=
- set IDF_PYTHON_DIR=
- set IDF_GIT_DIR=
- set IDF_TOOLS_PY_PATH=
- set IDF_TOOLS_JSON_PATH=
- set OLD_PATH=
- set PATH_ADDITIONS=
|