@echo off
::
:: Expect the script at /path/to/wolfssh/IDE/Espressif/ESP-IDF/
::
:: Note that over the course of time there are 3 possible config files:
::
:: user_settings.h
:: used with IDE; enable with:
::
:: #define WOLFSSL_USER_SETTINGS
::
:: options.h is excluded with that setting
::
:: options.h
:: used with configure builds
::
:: This is an older file related an issue that’s been working forever.
:: There should only be a wolfSSL copy right now. It is generated based on configure.
::
:: config.h
:: This is generated per project. The configure script creates it.
:: The one for wolfSSL is different than the one for wolfSSH
:: There’s a #define that is added to the Makefile:
::
:: #define HAVE_CONFIG
::
:: EDITOR NOTE: There's a Linux setup.sh that should identically mirror functionality here.
:: Please try to keep code lines matching between files for easily comparing.
::******************************************************************************************************
::******************************************************************************************************
echo;
echo wolfSSH (Secure Shell) Windows Setup. Version 0.1d
echo;
echo This utility will copy a static snapshot of wolfSSH files to the ESP32-IDF component directory.
echo;
echo You must first have installed wolfSSL component for this SSH component to function properly.
echo;
echo If you wish to keep your component library fresh with git pull, consider hard link with mklink.
echo;
echo "mklink [[/d] | [/h] | [/j]] "
echo;
::******************************************************************************************************
::******************************************************************************************************
:: Set REPLICATE_WOLFSSL=true if a local copy of wolfssl is desired.
:: The default is false: use use wolfssl in the parent directory component.
SET REPLICATE_WOLFSSL=false
SET COPYERROR=false
SET WOLFSSH_FOUND=false
SET WOLFSSH_FORCE_CONFIG=false
:: if there's a setup.sh, we are probably starting in the right place.
if NOT EXIST "setup.sh" (
echo Please run this script at /path/to/wolfssh/IDE/Espressif/ESP-IDF/
goto :ERR
)
:: if there's also a default wolfssh_espressif_semaphore.md, we are very likely starting in the right place.
if NOT EXIST "wolfssh_espressif_semaphore.md" (
echo Please run this script at /path/to/wolfssh/IDE/Espressif/ESP-IDF/
goto :ERR
)
:: see if there was a parameter passed for a specific EDP-IDF directory
:: this may be different than the standard ESP-IDF environment (e.g. VisualGDB)
if "%~1" == "" (
if "%IDF_PATH%" == "" (
echo;
echo ERROR: Specify your ESP-IDF path as a parameter or run from ESP-IDF prompt with IDF_PATH environment variable.
echo;
echo For example: setup_win.bat C:\SysGCC\esp32\esp-idf\v4.4
echo;
goto :ERR
)
REM There's no parameter, check if %IDF_PATH% non-blank
if exist "%IDF_PATH%" (
echo Using IDF_PATH: %IDF_PATH%
echo;
) else (
echo ERROR: IDF_PATH=%IDF_PATH% does not exist!
echo;
goto :ERR
)
) else (
if not exist "%~1" (
echo ERROR: optional directory was specified, but not found: %~1
goto :ERR
)
SET "IDF_PATH=%~1"
echo Set specified IDF_PATH.
)
:: if no IDF_PATH is found, we don't know what to do. Go exit with error.
if "%IDF_PATH%" == "" (
echo Please launch the script from ESP-IDF command prompt,
echo or set your desired IDF_PATH environment variable,
echo or pass a parameter to your directory, such as for VisualGDB with ESP-IDF 4.4:
echo;
echo .\setup_win.bat C:\SysGCC\esp32\esp-idf\v4.4
echo;
echo The wolfssl components can also be installed in project directory:
echo;
echo .\setup_win.bat C:\workspace\wolfssh\examples\ESP32-SSH-Server
echo;
goto :ERR
)
echo;
echo Using IDF_PATH: %IDF_PATH%
:: Here we go!
:: setup some path variables
echo;
set SCRIPTDIR=%CD%
set BASEDIR=%SCRIPTDIR%\..\..\..
:: SSH
set WOLFSSH_ESPIDFDIR=%BASEDIR%\IDE\Espressif\ESP-IDF
set WOLFSSHLIB_TRG_DIR=%IDF_PATH%\components\wolfssh
set WOLFSSHEXP_TRG_DIR=%IDF_PATH%\examples\protocols
:: SSL
set WOLFSSLLIB_TRG_DIR=%IDF_PATH%\components\wolfssl
echo Using SCRIPTDIR = %SCRIPTDIR%
echo Using BASEDIR = %BASEDIR%
if exist "%WOLFSSLLIB_TRG_DIR%" (
echo Using WOLFSSLLIB_TRG_DIR = %WOLFSSLLIB_TRG_DIR%
echo;
) else (
echo ERROR: this wolfSSH component depends on the wolfSSL component being installed first.
echo;
echo Directory "%WOLFSSLLIB_TRG_DIR%" not found.
echo;
echo See https://github.com/wolfSSL/wolfssl for more info
echo;
goto :ERR
)
if exist "%WOLFSSHLIB_TRG_DIR%" (
echo Found exisintg %WOLFSSHLIB_TRG_DIR%
SET WOLFSSH_FOUND=true
) else (
mkdir "%WOLFSSHLIB_TRG_DIR%"
)
echo Using WOLFSSH_ESPIDFDIR = %WOLFSSH_ESPIDFDIR%
echo Using WOLFSSHLIB_TRG_DIR = %WOLFSSHLIB_TRG_DIR%
echo Using WOLFSSHEXP_TRG_DIR = %WOLFSSHEXP_TRG_DIR%
echo;
echo Equivalalent wolfSSH destination path:
dir "%WOLFSSH_ESPIDFDIR%\*.xyzzy" 2> nul | findstr \
echo;
echo Equivalalent wolfSSL source directory paths:
:: show the path of the equivalent %VALUE% (search for files that don't exist, supress error, and look for string with "\")
dir "%WOLFSSLLIB_TRG_DIR%\*.xyzzy" 2> nul | findstr \
echo;
echo Equivalalent wolfSSH source directory paths:
dir "%BASEDIR%\*.xyzzy" 2> nul | findstr \
dir "%WOLFSSHLIB_TRG_DIR%\*.xyzzy" 2> nul | findstr \
dir "%WOLFSSHEXP_TRG_DIR%\*.xyzzy" 2> nul | findstr \
:: DOS already has current DATE and TIME environment variables
::
:: set the FileStamp variable to the current date: YYMMYY_HHMMSS
:: the simplest method, to use existing TIME ad DATE variables:
:: date = Thu 09/17/2015
:: time = 11:13:15.47
:: 012345678901234567890
::
:: There is no leading zero for single digit hours (e.g. 9:00am), so we need to manually include the zero
:: here |
if "%TIME:~0,1%" == " " set FileStamp=%DATE:~12,2%%DATE:~7,2%%DATE:~4,2%_0%TIME:~1,1%%TIME:~3,2%%TIME:~6,2%
:: otherwise, if a space not found before the digit, it is a 2 digit hour, so no extract zero is needed
if NOT "%TIME:~0,1%" == " " set FileStamp=%DATE:~12,2%%DATE:~7,2%%DATE:~4,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
:: Backup existing ssh config settings file
if exist "%WOLFSSHLIB_TRG_DIR%\include\config.h" (
echo;
echo Saving: %WOLFSSHLIB_TRG_DIR%\include\config.h
echo to: %SCRIPTDIR%\config_h_%FileStamp%.bak
copy %WOLFSSHLIB_TRG_DIR%\include\config.h %SCRIPTDIR%\config_h_%FileStamp%.bak
echo;
)
:: Backup existing ssh user_settings file
if exist "%WOLFSSHLIB_TRG_DIR%\include\user_settings.h" (
echo;
echo Saving: %WOLFSSHLIB_TRG_DIR%\include\user_settings.h
echo to: %SCRIPTDIR%\user_settings_h_%FileStamp%.bak
copy %WOLFSSHLIB_TRG_DIR%\include\user_settings.h %SCRIPTDIR%\user_settings_h_%FileStamp%.bak
echo;
)
::******************************************************************************************************
:: check if there's already an existing %WOLFSSHLIB_TRG_DIR% and confirm removal
::******************************************************************************************************
:: clear any error level that will be used in choice command
call;
if exist "%WOLFSSHLIB_TRG_DIR%" (
echo;
echo WARNING: Existing files found in %WOLFSSHLIB_TRG_DIR%
echo;
REM clear any prior errorlevel
call;
choice /c YN /m "Delete files and proceed with install in %WOLFSSHLIB_TRG_DIR% "
if ERRORLEVEL 2 GOTO :NODELETE
GOTO :PURGE
echo;
echo Ready to copy files into %IDF_PATH%
::******************************************************************************************************
:NODELETE
::******************************************************************************************************
REM clear any prior errorlevel
echo;
call;
choice /c YN /m "Refresh files %WOLFSSHLIB_TRG_DIR% (there will be a prompt to keep or overwrite config) "
if ERRORLEVEL 2 GOTO :NOCOPY
::
::
:: space placeholder for side-by-side, line-by-line Linux script comparison
::
::
GOTO :REFRESH
) else (
echo;
pause
)
::******************************************************************************************************
:PURGE
::******************************************************************************************************
:: purge existing directory
if exist "%WOLFSSHLIB_TRG_DIR%" (
echo;
echo Removing "%WOLFSSHLIB_TRG_DIR%"
rmdir "%WOLFSSHLIB_TRG_DIR%" /S /Q
if exist "%WOLFSSHLIB_TRG_DIR%" (
SET COPYERROR=true
echo;
echo WARNING: Failed to remove %WOLFSSHLIB_TRG_DIR%
echo;
echo Check permissions, open files, read-only attributes, etc.
echo;
)
echo;
) else (
echo;
echo Prior %WOLFSSHLIB_TRG_DIR% not found, installing fresh.
echo;
)
::******************************************************************************************************
:REFRESH
::******************************************************************************************************
if not exist "%WOLFSSHLIB_TRG_DIR%" mkdir "%WOLFSSHLIB_TRG_DIR%"
if not exist "%WOLFSSHLIB_TRG_DIR%\wolfssh" mkdir "%WOLFSSHLIB_TRG_DIR%\wolfssh\"
if not exist "%WOLFSSHLIB_TRG_DIR%\include" mkdir "%WOLFSSHLIB_TRG_DIR%\include\"
if not exist "%WOLFSSHLIB_TRG_DIR%\src" mkdir "%WOLFSSHLIB_TRG_DIR%\src\"
if not exist "%WOLFSSHEXP_TRG_DIR%" mkdir "%WOLFSSHEXP_TRG_DIR%"
::******************************************************************************************************
:: optionally copy wolfssl here (the default is to use the parent directory shared component)
::******************************************************************************************************
if "%REPLICATE_WOLFSSL%" == "true" (
REM note we copy wolfcrypt from wolfssl component
if not exist "%WOLFSSHLIB_TRG_DIR%\wolfcrypt\" mkdir "%WOLFSSHLIB_TRG_DIR%\wolfcrypt\"
if not exist "%WOLFSSHLIB_TRG_DIR%\wolfcrypt\benchmark\" mkdir "%WOLFSSHLIB_TRG_DIR%\wolfcrypt\benchmark\"
if not exist "%WOLFSSHLIB_TRG_DIR%\wolfcrypt\src\" mkdir "%WOLFSSHLIB_TRG_DIR%\wolfcrypt\src\"
if not exist "%WOLFSSHLIB_TRG_DIR%\wolfcrypt\src\port\" mkdir "%WOLFSSHLIB_TRG_DIR%\wolfcrypt\src\port\"
if not exist "%WOLFSSHLIB_TRG_DIR%\wolfcrypt\src\port\Atmel\" mkdir "%WOLFSSHLIB_TRG_DIR%\wolfcrypt\src\port\Atmel\"
if not exist "%WOLFSSHLIB_TRG_DIR%\wolfcrypt\src\port\Espressif\" mkdir "%WOLFSSHLIB_TRG_DIR%\wolfcrypt\src\port\Espressif\"
)
echo;
echo Copying files to %WOLFSSHLIB_TRG_DIR%\src\
xcopy "%BASEDIR%\src\*.c" "%WOLFSSHLIB_TRG_DIR%\src\" /Q /Y
if %errorlevel% NEQ 0 SET COPYERROR=true
::******************************************************************************************************
:: optionally copy wolfssl here (the default is to use the parent directory shared component)
::******************************************************************************************************
if "%REPLICATE_WOLFSSL%" == "true" (
echo Copying port/Atmel files to %WOLFSSHLIB_TRG_DIR%\src\port\Atmel
xcopy "%BASEDIR%\src\port\Atmel\*.c " "%WOLFSSHLIB_TRG_DIR%\src\port\Atmel" /Q /Y
if %errorlevel% NEQ 0 SET COPYERROR=true
echo Copying port/Espressif files to %WOLFSSHLIB_TRG_DIR%\src\port\Espressif
xcopy "%BASEDIR%\src\port\Espressif\*.c" "%WOLFSSHLIB_TRG_DIR%\src\port\Espressif" /Q /Y
if %errorlevel% NEQ 0 SET COPYERROR=true
echo Copying wolfSSL component src\*.c files to %WOLFSSHLIB_TRG_DIR%\wolfcrypt\src
xcopy "%WOLFSSLLIB_TRG_DIR%\wolfcrypt\src\*.c" "%WOLFSSHLIB_TRG_DIR%\wolfcrypt\src\" /S /E /Q /Y
if %errorlevel% NEQ 0 SET COPYERROR=true
echo Copying src\*.i files to %WOLFSSHLIB_TRG_DIR%\wolfcrypt\src
xcopy "%WOLFSSLLIB_TRG_DIR%\wolfcrypt\src\*.i" "%WOLFSSHLIB_TRG_DIR%\wolfcrypt\src\" /S /E /Q /Y
if %errorlevel% NEQ 0 SET COPYERROR=true
echo Copying files to %WOLFSSHLIB_TRG_DIR%\wolfcrypt\benchmark\
xcopy "%WOLFSSLLIB_TRG_DIR%\wolfcrypt\benchmark" "%WOLFSSHLIB_TRG_DIR%\wolfcrypt\benchmark\" /S /E /Q /Y
if %errorlevel% NEQ 0 SET COPYERROR=true
)
echo Copying files to %WOLFSSHLIB_TRG_DIR%\wolfssh\
xcopy "%BASEDIR%\wolfssh\*.h" "%WOLFSSHLIB_TRG_DIR%\wolfssh\" /Q /Y
if %errorlevel% NEQ 0 SET COPYERROR=true
::******************************************************************************************************
:: optionally copy wolfssl here (the default is to use the parent directory shared component)
::******************************************************************************************************
if "%REPLICATE_WOLFSSL%" == "true" (
echo;
echo Replicating %WOLFSSLLIB_TRG_DIR%\wolfssl\ to %WOLFSSHLIB_TRG_DIR%\wolfssl\
if not EXIST "%WOLFSSHLIB_TRG_DIR%\wolfssl\" mkdir "%WOLFSSHLIB_TRG_DIR%\wolfssl\"
if not EXIST "%WOLFSSHLIB_TRG_DIR%\wolfssl\" mkdir "%WOLFSSHLIB_TRG_DIR%\wolfssl\wolfcrypt\"
xcopy "%WOLFSSLLIB_TRG_DIR%\wolfssl\*.*" "%WOLFSSHLIB_TRG_DIR%\wolfssl\"
xcopy "%WOLFSSLLIB_TRG_DIR%\wolfssl\wolfcrypt\*.*" "%WOLFSSHLIB_TRG_DIR%\wolfssl\wolfcrypt\"
)
::******************************************************************************************************
:: config file
::******************************************************************************************************
echo;
echo Copying config files to %WOLFSSHLIB_TRG_DIR%\include\
echo;
:: Check if operator wants to keep prior config.h
if EXIST config_h_%FileStamp%.bak (
echo;
echo Found prior config.h in "%SCRIPTDIR%\config_h_%FileStamp%.bak"
echo;
dir "config_h_%FileStamp%.bak" | findstr config_h_%FileStamp%.bak
echo;
REM clear any prior errorlevel
call;
choice /c YN /m "Use prior config.h in %WOLFSSHLIB_TRG_DIR%\include\ "
if ERRORLEVEL 2 GOTO :NO_CONFIG_RESTORE
REM
REM this is just a placeholder for side-by-side code alignment with setup.sh
REM
echo /* new config */ > "%WOLFSSHLIB_TRG_DIR%\include\config.h"
call;
xcopy "config_h_%FileStamp%.bak" "%WOLFSSHLIB_TRG_DIR%\include\config.h" /Y
if %errorlevel% NEQ 0 SET COPYERROR=true
) else (
REM a config_h_%FileStamp%.bak file does not exist
echo;
echo Prior config.h not found. (and one is not desired; it should be in wolfssl)
echo;
if "%WOLFSSH_FORCE_CONFIG%" == "true" (
echo /* new config */ > "%WOLFSSHLIB_TRG_DIR%\include\config.h"
call;
if exist "%WOLFSSH_ESPIDFDIR%\dummy_config_h." (
echo Using default file dummy_config_h for ssh component in "%WOLFSSHLIB_TRG_DIR%\include\config.h"
xcopy "%WOLFSSH_ESPIDFDIR%\dummy_config_h." "%WOLFSSHLIB_TRG_DIR%\include\config.h" /F /Y
if "%ERRORLEVEL%" NEQ "0" SET COPYERROR=true
) else (
echo;
echo WARNING: Prior config.h not found and dummy_config_h default available. Using placeholder.
)
)
)
::******************************************************************************************************
:NO_CONFIG_RESTORE
::******************************************************************************************************
:: Check if operator wants to keep prior user_settings.h
if EXIST "user_settings_h_%FileStamp%.bak" (
echo;
echo Found prior user_settings.h in %SCRIPTDIR%\user_settings_h_%FileStamp%.bak
echo;
dir user_settings_h_%FileStamp%.bak | findstr user_settings_h_%FileStamp%.bak
echo;
REM clear any prior errorlevel
call;
choice /c YN /m "Use prior user_settings.h in %WOLFSSHLIB_TRG_DIR%\include\ "
if ERRORLEVEL 2 GOTO :NO_USER_SETTINGS_RESTORE
REM Create a placeholder file so we don't get prompted for file or directory with xcopy
echo /* new config */ > "%WOLFSSHLIB_TRG_DIR%\include\user_settings.h"
REM
echo;
call;
xcopy "user_settings_h_%FileStamp%.bak" "%WOLFSSHLIB_TRG_DIR%\include\user_settings.h" /Y
if %errorlevel% NEQ 0 SET COPYERROR=true
REM TODO do we really need to replicate the user_settings.h here for wolfSSH?
if EXIST "${WOLFSSHLIB_TRG_DIR}/wolfssl/include/user_settings.h" (
xcopy "user_settings_h_%FileStamp%.bak" "%WOLFSSHLIB_TRG_DIR%\wolfssl\include\user_settings.h" /Y
if %errorlevel% NEQ 0 SET COPYERROR=true
)
REM space placeholder for side-by-side, line-by-line Linux script comparison
REM
) else (
REM user_settings_h_%FileStamp%.bak not found
echo;
echo;
REM TODO do we really need to replicate the user_settings.h here? It does seem the compiler wants one.
echo Prior user_settings.h not found.
echo /* new file */ > "%WOLFSSHLIB_TRG_DIR%\include\user_settings.h"
if exist "%WOLFSSLLIB_TRG_DIR%\include\user_settings.h" (
echo Using file: "%WOLFSSLLIB_TRG_DIR%\include\user_settings.h"
xcopy "%WOLFSSLLIB_TRG_DIR%\include\user_settings.h" "%WOLFSSHLIB_TRG_DIR%\include\user_settings.h" /Y
) else (
echo;
echo WARNING: No %WOLFSSLLIB_TRG_DIR%\include\user_settings.h file found
echo;
echo Created placeholder. Edit %WOLFSSHLIB_TRG_DIR%\include\user_settings.h
)
echo;
)
::******************************************************************************************************
:NO_USER_SETTINGS_RESTORE
::******************************************************************************************************
echo;
echo Copying libs\CMakeLists.txt to %WOLFSSHLIB_TRG_DIR%\
xcopy "%WOLFSSH_ESPIDFDIR%\libs\CMakeLists.txt" "%WOLFSSHLIB_TRG_DIR%\" /F
if %errorlevel% NEQ 0 GOTO :COPYERR
echo Copying libs\component.mk to %WOLFSSHLIB_TRG_DIR%\
xcopy "%WOLFSSH_ESPIDFDIR%\libs\component.mk" "%WOLFSSHLIB_TRG_DIR%\" /F
if %errorlevel% NEQ 0 GOTO :COPYERR
:: TODO determine what happened to ssl x509_str.c (we get a compile error when this is missing):
if not exist "%WOLFSSHLIB_TRG_DIR%\src\x509_str.c" (
echo /* placeholder */ > "%WOLFSSHLIB_TRG_DIR%\src\x509_str.c"
echo Created placeholder "%WOLFSSHLIB_TRG_DIR%\src\x509_str.c"
)
:: TODO determine what happened to ssh x509_str.c (we get a compile error when this is missing):
if not exist "%WOLFSSLLIB_TRG_DIR%\src\x509_str.c" (
echo /* placeholder */ > "%WOLFSSLLIB_TRG_DIR%\src\x509_str.c"
echo Created placeholder "%WOLFSSLLIB_TRG_DIR%\src\x509_str.c"
)
::******************************************************************************************************
:: check if there's a wolfssl/options.h
::******************************************************************************************************
echo Checking for %WOLFSSLLIB_TRG_DIR%\wolfssl\options.h
if exist "%WOLFSSLLIB_TRG_DIR%\wolfssl\options.h" (
echo;
echo WARNING: options.h found in "%WOLFSSLLIB_TRG_DIR%\wolfssl\"
echo;
echo Consider using a project user_settings.h and #define WOLFSSL_USER_SETTINGS
) else (
echo Confirmed no options.h file; will expect user_settings.h
)
goto :DONE
:: error during copy encountered
::******************************************************************************************************
:COPYERR
::******************************************************************************************************
echo;
echo Error during copy.
echo;
echo Please ensure none of the target files are flagged as read-only, open, etc.
goto :ERR
:: abort at user request
::******************************************************************************************************
:NOCOPY
::******************************************************************************************************
echo;
echo Setup did not copy any files.
goto :ERR
:: ERROR
::******************************************************************************************************
:ERR
::******************************************************************************************************
exit /B 1
:: Success
::******************************************************************************************************
:DONE
::******************************************************************************************************
echo;
echo;
echo See Component files for wolfSSH in %WOLFSSHLIB_TRG_DIR%
echo;
echo See additional examples at https://github.com/wolfSSL/wolfssh/tree/master/examples
echo;
echo REMINDER: Ensure any wolfSSL #include definitions occur BEFORE include files in your source code.
echo;
if "%COPYERROR%" == "true" (
echo;
echo WARNING: Copy completed with errors! Check for files in use, permissions, symbolic links, etc.
echo;
)
echo Configuration files found:
:: ssl
where /R %WOLFSSLLIB_TRG_DIR%\ config.h 2> nul
where /R %WOLFSSLLIB_TRG_DIR%\ options.h 2> nul
where /R %WOLFSSLLIB_TRG_DIR%\ user_settings.h 2> nul
:: ssh
where /R %WOLFSSHLIB_TRG_DIR%\ config.h 2> nul
where /R %WOLFSSHLIB_TRG_DIR%\ options.h 2> nul
where /R %WOLFSSHLIB_TRG_DIR%\ user_settings.h 2> nul
:: Remind of backup files
if exist %SCRIPTDIR%\config_h_%FileStamp%.bak (
echo;
echo Your prior config.h file was saved to: %SCRIPTDIR%\config_h_%FileStamp%.bak
)
if exist %SCRIPTDIR%\user_settings_h_%FileStamp%.bak (
echo Your prior user_settings.h was saved to: %SCRIPTDIR%\user_settings_h_%FileStamp%.bak
echo;
)
:: Check to ensure we have a valid Expressif chip defined
if EXIST "%WOLFSSHLIB_TRG_DIR%\include\user_settings.h" (
SET FOUND_ESP=false
echo Looking for Espressif WOLFSSL_ESPWROOM32, WOLFSSL_ESPWROOM32SE, or WOLFSSL_ESP8266 in user_settings.h
echo;
type "%WOLFSSHLIB_TRG_DIR%\include\user_settings.h" | findstr /C:"#define WOLFSSL_ESPWROOM32" 2> nul
if "%ERRORLEVEL%" == "0" (SET FOUND_ESP=true)
type "%WOLFSSHLIB_TRG_DIR%\include\user_settings.h" | findstr /C:"#define WOLFSSL_ESPWROOM32SE" 2> nul
if "%ERRORLEVEL%" == "0" (SET FOUND_ESP=true)
type "%WOLFSSHLIB_TRG_DIR%\include\user_settings.h" | findstr /C:"#define WOLFSSL_ESP8266" 2> nul
if "%ERRORLEVEL%" == "0" (SET FOUND_ESP=true)
if "%FOUND_ESP%" == "false" (echo WARNING: did not find an Espressif define in "%WOLFSSHLIB_TRG_DIR%\include\user_settings.h" )
REM
REM
) else (
echo;
echo WARNING: File not found: "%WOLFSSHLIB_TRG_DIR%\include\user_settings.h"
)
echo;
echo Review config file in "%WOLFSSHLIB_TRG_DIR%\include\user_settings.h" before compiling.
echo;
echo setup_win.bat for wolfSSH (Secure Shell) ESP-IDF component install completed.