394 lines
16 KiB
Batchfile
394 lines
16 KiB
Batchfile
@echo off
|
|
REM Expect the script at /path/to/wolfssl/IDE/Espressif/ESP-IDF/
|
|
|
|
::******************************************************************************************************
|
|
::******************************************************************************************************
|
|
echo;
|
|
echo wolfSSL Windows Setup. Version 1.0a
|
|
echo;
|
|
echo This utility will copy a static snapshot of wolfSSL files to the ESP32-IDF component directory.
|
|
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]] <link> <target>"
|
|
echo;
|
|
::******************************************************************************************************
|
|
::******************************************************************************************************
|
|
SET COPYERROR=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/wolfssl/IDE/Espressif/ESP-IDF/
|
|
goto :ERR
|
|
)
|
|
|
|
:: if there's also a default user_settings.h, we are very likely starting in the right place.
|
|
if NOT EXIST "user_settings.h" (
|
|
echo Please run this script at /path/to/wolfssl/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 not "%1" == "" (
|
|
if not exist "%1" (
|
|
echo "ERROR: optional directory was specified, but not found: %1"
|
|
goto :ERR
|
|
)
|
|
|
|
SET IDF_PATH=%1
|
|
echo Using specified IDF_PATH: %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;
|
|
goto :ERR
|
|
)
|
|
|
|
:: Here we go!
|
|
:: setup some path variables
|
|
echo;
|
|
|
|
set SCRIPTDIR=%CD%
|
|
set BASEDIR=%SCRIPTDIR%\..\..\..
|
|
set WOLFSSL_ESPIDFDIR=%BASEDIR%\IDE\Espressif\ESP-IDF
|
|
set WOLFSSLLIB_TRG_DIR=%IDF_PATH%\components\wolfssl
|
|
set WOLFSSLEXP_TRG_DIR=%IDF_PATH%\examples\protocols
|
|
|
|
echo Using SCRIPTDIR = %SCRIPTDIR%
|
|
echo Using BASEDIR = %BASEDIR%
|
|
echo Using WOLFSSL_ESPIDFDIR = %WOLFSSL_ESPIDFDIR%
|
|
echo Using WOLFSSLLIB_TRG_DIR = %WOLFSSLLIB_TRG_DIR%
|
|
echo Using WOLFSSLEXP_TRG_DIR = %WOLFSSLEXP_TRG_DIR%
|
|
|
|
echo;
|
|
echo Equivalalent destination path:
|
|
dir %WOLFSSL_ESPIDFDIR%\*.xyzzy 2> nul | findstr \
|
|
|
|
echo;
|
|
echo Equivalalent source directory paths:
|
|
:: show the path of the equivalent %VALUE% (search for files that don't exist, suppress error, and look for string with "\")
|
|
dir %BASEDIR%\*.xyzzy 2> nul | findstr \
|
|
dir %WOLFSSLLIB_TRG_DIR%\*.xyzzy 2> nul | findstr \
|
|
dir %WOLFSSLEXP_TRG_DIR%\*.xyzzy 2> nul | findstr \
|
|
|
|
:: 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 user settings
|
|
if exist %WOLFSSLLIB_TRG_DIR%\include\config.h (
|
|
echo;
|
|
echo Saving: %WOLFSSLLIB_TRG_DIR%\include\config.h
|
|
echo to: %SCRIPTDIR%\config_h_%FileStamp%.bak
|
|
copy %WOLFSSLLIB_TRG_DIR%\include\config.h %SCRIPTDIR%\config_h_%FileStamp%.bak
|
|
echo;
|
|
)
|
|
|
|
if exist %WOLFSSL_ESPIDFDIR%\user_settings.h (
|
|
echo Saving: %WOLFSSLLIB_TRG_DIR%\include\user_settings.h
|
|
echo to: %SCRIPTDIR%\user_settings_h_%FileStamp%.bak
|
|
copy %WOLFSSLLIB_TRG_DIR%\include\user_settings.h %SCRIPTDIR%\user_settings_h_%FileStamp%.bak
|
|
echo;
|
|
)
|
|
|
|
|
|
::******************************************************************************************************
|
|
:: check if there's already an existing %WOLFSSLLIB_TRG_DIR% and confirm removal
|
|
::******************************************************************************************************
|
|
if exist %WOLFSSLLIB_TRG_DIR% (
|
|
echo;
|
|
echo WARNING: Existing files found in %WOLFSSLLIB_TRG_DIR%
|
|
echo;
|
|
|
|
:: clear any prior errorlevel
|
|
call;
|
|
choice /c YN /m "Delete files and proceed with install in %WOLFSSLLIB_TRG_DIR% "
|
|
if errorlevel 2 GOTO :NODELETE
|
|
GOTO :PURGE
|
|
|
|
|
|
echo;
|
|
echo Ready to copy files into %IDF_PATH%
|
|
|
|
|
|
::******************************************************************************************************
|
|
:NODELETE
|
|
::******************************************************************************************************
|
|
:: clear any prior errorlevel
|
|
echo;
|
|
call;
|
|
choice /c YN /m "Refresh files %WOLFSSLLIB_TRG_DIR% (there will be a prompt to keep or overwrite user_settings and config) "
|
|
if errorlevel 2 GOTO :NOCOPY
|
|
GOTO :REFRESH
|
|
)
|
|
|
|
|
|
::******************************************************************************************************
|
|
:PURGE
|
|
::******************************************************************************************************
|
|
:: purge existing directory
|
|
|
|
if exist %WOLFSSLLIB_TRG_DIR% (
|
|
echo;
|
|
echo Removing %WOLFSSLLIB_TRG_DIR%
|
|
rmdir %WOLFSSLLIB_TRG_DIR% /S /Q
|
|
if exist %WOLFSSLLIB_TRG_DIR% (
|
|
SET COPYERROR=true
|
|
echo;
|
|
echo WARNING: Failed to remove %WOLFSSLLIB_TRG_DIR%
|
|
echo;
|
|
echo Check permissions, open files, read-only attributes, etc.
|
|
echo;
|
|
)
|
|
echo;
|
|
) else (
|
|
echo;
|
|
echo Prior %WOLFSSLLIB_TRG_DIR% not found, installing fresh.
|
|
echo;
|
|
)
|
|
|
|
::******************************************************************************************************
|
|
:REFRESH
|
|
::******************************************************************************************************
|
|
if not exist %WOLFSSLLIB_TRG_DIR% mkdir %WOLFSSLLIB_TRG_DIR%
|
|
if not exist %WOLFSSLLIB_TRG_DIR%\src mkdir %WOLFSSLLIB_TRG_DIR%\src
|
|
if not exist %WOLFSSLLIB_TRG_DIR%\wolfcrypt\src mkdir %WOLFSSLLIB_TRG_DIR%\wolfcrypt\src
|
|
if not exist %WOLFSSLLIB_TRG_DIR%\wolfssl mkdir %WOLFSSLLIB_TRG_DIR%\wolfssl
|
|
if not exist %WOLFSSLLIB_TRG_DIR%\wolfssl\openssl mkdir %WOLFSSLLIB_TRG_DIR%\wolfssl\openssl
|
|
if not exist %WOLFSSLLIB_TRG_DIR%\test mkdir %WOLFSSLLIB_TRG_DIR%\test
|
|
if not exist %WOLFSSLLIB_TRG_DIR%\include mkdir %WOLFSSLLIB_TRG_DIR%\include
|
|
|
|
|
|
rem copying ... files in src/ into $WOLFSSLLIB_TRG_DIR%/src
|
|
echo;
|
|
echo Copying files to %WOLFSSLLIB_TRG_DIR%\src\
|
|
xcopy %BASEDIR%\src\*.c %WOLFSSLLIB_TRG_DIR%\src\ /S /E /Q /Y
|
|
if %errorlevel% NEQ 0 SET COPYERROR=true
|
|
|
|
echo;
|
|
echo Copying src\*.c files to %WOLFSSLLIB_TRG_DIR%\wolfcrypt\src
|
|
xcopy %BASEDIR%\wolfcrypt\src\*.c %WOLFSSLLIB_TRG_DIR%\wolfcrypt\src /S /E /Q /Y
|
|
if %errorlevel% NEQ 0 SET COPYERROR=true
|
|
|
|
echo;
|
|
echo Copying src\*.i files to %WOLFSSLLIB_TRG_DIR%\wolfcrypt\src
|
|
xcopy %BASEDIR%\wolfcrypt\src\*.i %WOLFSSLLIB_TRG_DIR%\wolfcrypt\src /S /E /Q /Y
|
|
if %errorlevel% NEQ 0 SET COPYERROR=true
|
|
|
|
echo;
|
|
echo Copying files to %WOLFSSLLIB_TRG_DIR%\wolfcrypt\src\port\
|
|
xcopy %BASEDIR%\wolfcrypt\src\port %WOLFSSLLIB_TRG_DIR%\wolfcrypt\src\port\ /S /E /Q /Y
|
|
if %errorlevel% NEQ 0 SET COPYERROR=true
|
|
|
|
echo;
|
|
echo Copying files to %WOLFSSLLIB_TRG_DIR%\wolfcrypt\test\
|
|
xcopy %BASEDIR%\wolfcrypt\test %WOLFSSLLIB_TRG_DIR%\wolfcrypt\test\ /S /E /Q /Y
|
|
if %errorlevel% NEQ 0 SET COPYERROR=true
|
|
|
|
:: Copy dummy test_paths.h to handle the case configure hasn't yet executed
|
|
echo;
|
|
echo Copying dummy_test_paths.h to %WOLFSSLLIB_TRG_DIR%\wolfcrypt\test\test_paths.h
|
|
echo new config > %WOLFSSLLIB_TRG_DIR%\wolfcrypt\test\test_paths.h
|
|
if %errorlevel% NEQ 0 SET COPYERROR=true
|
|
xcopy %WOLFSSL_ESPIDFDIR%\dummy_test_paths.h %WOLFSSLLIB_TRG_DIR%\wolfcrypt\test\test_paths.h /S /E /Y
|
|
if %errorlevel% NEQ 0 SET COPYERROR=true
|
|
|
|
echo;
|
|
echo Copying files to %WOLFSSLLIB_TRG_DIR%\wolfcrypt\benchmark\
|
|
xcopy %BASEDIR%\wolfcrypt\benchmark %WOLFSSLLIB_TRG_DIR%\wolfcrypt\benchmark\ /S /E /Q /Y
|
|
if %errorlevel% NEQ 0 SET COPYERROR=true
|
|
|
|
echo;
|
|
echo Copying files to %WOLFSSLLIB_TRG_DIR%\wolfssl\
|
|
xcopy %BASEDIR%\wolfssl\*.h %WOLFSSLLIB_TRG_DIR%\wolfssl\ /S /E /Q /Y
|
|
if %errorlevel% NEQ 0 SET COPYERROR=true
|
|
|
|
echo;
|
|
echo Copying files to%WOLFSSLLIB_TRG_DIR%\wolfssl\openssl\
|
|
xcopy %BASEDIR%\wolfssl\openssl\*.h %WOLFSSLLIB_TRG_DIR%\wolfssl\openssl\ /S /E /Q /Y
|
|
if %errorlevel% NEQ 0 SET COPYERROR=true
|
|
|
|
echo;
|
|
echo Copying files to %WOLFSSLLIB_TRG_DIR%\wolfssl\wolfcrypt\
|
|
xcopy %BASEDIR%\wolfssl\wolfcrypt %WOLFSSLLIB_TRG_DIR%\wolfssl\wolfcrypt\ /S /E /Q /Y
|
|
if %errorlevel% NEQ 0 SET COPYERROR=true
|
|
|
|
|
|
::******************************************************************************************************
|
|
:: user_settings and config defaults
|
|
::******************************************************************************************************
|
|
:: user_settings.h (default, may be overwritten by prior file)
|
|
echo;
|
|
echo Copying default user_settings.h to %WOLFSSLLIB_TRG_DIR%\include\
|
|
xcopy %WOLFSSL_ESPIDFDIR%\user_settings.h %WOLFSSLLIB_TRG_DIR%\include\ /F
|
|
if %errorlevel% NEQ 0 SET COPYERROR=true
|
|
|
|
:: echo Creating new config file: %WOLFSSLLIB_TRG_DIR%\include\config.h (default, may be overwritten by prior file)
|
|
echo new config > %WOLFSSLLIB_TRG_DIR%\include\config.h
|
|
xcopy %WOLFSSL_ESPIDFDIR%\dummy_config_h. %WOLFSSLLIB_TRG_DIR%\include\config.h /F /Y
|
|
if %errorlevel% NEQ 0 SET COPYERROR=true
|
|
|
|
|
|
:: Check if operator wants to keep prior config.h
|
|
if EXIST config_h_%FileStamp%.bak (
|
|
echo;
|
|
:: clear any prior errorlevel
|
|
call;
|
|
choice /c YN /m "Use your prior config.h "
|
|
if errorlevel 2 GOTO :NO_CONFIG_RESTORE
|
|
xcopy config_h_%FileStamp%.bak %WOLFSSLLIB_TRG_DIR%\include\config.h /Y
|
|
if %errorlevel% NEQ 0 SET COPYERROR=true
|
|
|
|
) else (
|
|
echo;
|
|
echo Prior config.h not found. Using default file.
|
|
)
|
|
::******************************************************************************************************
|
|
:NO_CONFIG_RESTORE
|
|
::******************************************************************************************************
|
|
|
|
:: Check if operator wants to keep prior config.h
|
|
if EXIST user_settings_h_%FileStamp%.bak (
|
|
echo;
|
|
:: clear any prior errorlevel
|
|
call;
|
|
choice /c YN /m "User your prior user_settings.h "
|
|
if errorlevel 2 GOTO :NO_USER_SETTINGS_RESTORE
|
|
xcopy user_settings_h_%FileStamp%.bak %WOLFSSLLIB_TRG_DIR%\include\user_settings.h /Y
|
|
if %errorlevel% NEQ 0 SET COPYERROR=true
|
|
|
|
) else (
|
|
echo;
|
|
echo Prior user_settings.h not found. Using default file.
|
|
)
|
|
|
|
::******************************************************************************************************
|
|
:NO_USER_SETTINGS_RESTORE
|
|
::******************************************************************************************************
|
|
|
|
|
|
:: unit test app
|
|
echo;
|
|
echo Copying unit files to %WOLFSSLLIB_TRG_DIR%\test\
|
|
xcopy %WOLFSSL_ESPIDFDIR%\test %WOLFSSLLIB_TRG_DIR%\test\ /S /E /Q /Y
|
|
if %errorlevel% NEQ 0 GOTO :COPYERR
|
|
|
|
echo;
|
|
echo Copying CMakeLists.txt to %WOLFSSLLIB_TRG_DIR%\
|
|
xcopy %WOLFSSL_ESPIDFDIR%\libs\CMakeLists.txt %WOLFSSLLIB_TRG_DIR%\ /F
|
|
if %errorlevel% NEQ 0 GOTO :COPYERR
|
|
|
|
echo;
|
|
echo Copying component.mk to %WOLFSSLLIB_TRG_DIR%\
|
|
xcopy %WOLFSSL_ESPIDFDIR%\libs\component.mk %WOLFSSLLIB_TRG_DIR%\ /F
|
|
if %errorlevel% NEQ 0 GOTO :COPYERR
|
|
|
|
:: Benchmark program
|
|
echo;
|
|
echo Removing %WOLFSSLEXP_TRG_DIR%\wolfssl_benchmark\
|
|
rmdir %WOLFSSLEXP_TRG_DIR%\wolfssl_benchmark\ /S /Q
|
|
if %errorlevel% NEQ 0 GOTO :COPYERR
|
|
|
|
echo;
|
|
echo Copying %WOLFSSLEXP_TRG_DIR%\wolfssl_benchmark\main\
|
|
mkdir %WOLFSSLEXP_TRG_DIR%\wolfssl_benchmark\main\
|
|
|
|
xcopy %BASEDIR%\wolfcrypt\benchmark\benchmark.c %WOLFSSLEXP_TRG_DIR%\wolfssl_benchmark\main\ /F /Y
|
|
if %errorlevel% NEQ 0 GOTO :COPYERR
|
|
|
|
xcopy %WOLFSSL_ESPIDFDIR%\examples\wolfssl_benchmark %WOLFSSLEXP_TRG_DIR%\wolfssl_benchmark\ /Q /Y
|
|
if %errorlevel% NEQ 0 GOTO :COPYERR
|
|
|
|
:: Crypt Test program
|
|
echo;
|
|
echo Copying %WOLFSSLEXP_TRG_DIR%\wolfssl_test\
|
|
rmdir %WOLFSSLEXP_TRG_DIR%\wolfssl_test\ /S /Q
|
|
mkdir %WOLFSSLEXP_TRG_DIR%\wolfssl_test\main\
|
|
|
|
xcopy %BASEDIR%\wolfcrypt\test\test.c %WOLFSSLEXP_TRG_DIR%\wolfssl_test\main\ /S /E /Q /Y
|
|
if %errorlevel% NEQ 0 GOTO :COPYERR
|
|
|
|
xcopy %WOLFSSL_ESPIDFDIR%\examples\wolfssl_test %WOLFSSLEXP_TRG_DIR%\wolfssl_test\ /S /E /Q /Y
|
|
if %errorlevel% NEQ 0 GOTO :COPYERR
|
|
|
|
:: TLS Client program
|
|
echo;
|
|
echo Copying %WOLFSSLEXP_TRG_DIR%\wolfssl_client\
|
|
rmdir %WOLFSSLEXP_TRG_DIR%\wolfssl_client\ /S /Q
|
|
mkdir %WOLFSSLEXP_TRG_DIR%\wolfssl_client\main\
|
|
|
|
xcopy %WOLFSSL_ESPIDFDIR%\examples\wolfssl_client %WOLFSSLEXP_TRG_DIR%\wolfssl_client\ /S /E /Q /Y
|
|
if %errorlevel% NEQ 0 GOTO :COPYERR
|
|
|
|
:: TLS Server program
|
|
echo;
|
|
echo Copying %WOLFSSLEXP_TRG_DIR%\wolfssl_server\
|
|
rmdir %WOLFSSLEXP_TRG_DIR%\wolfssl_server\ /S /Q
|
|
mkdir %WOLFSSLEXP_TRG_DIR%\wolfssl_server\main\
|
|
|
|
xcopy %WOLFSSL_ESPIDFDIR%\examples\wolfssl_server %WOLFSSLEXP_TRG_DIR%\wolfssl_server\ /S /E /Q /Y
|
|
if %errorlevel% NEQ 0 GOTO :COPYERR
|
|
|
|
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 Edit config file in "%WOLFSSLLIB_TRG_DIR%\include\user_settings.h" before trying to compile.
|
|
echo;
|
|
echo See Component files for wolfSSL in %WOLFSSLLIB_TRG_DIR%
|
|
echo;
|
|
echo See additional examples at https://github.com/wolfSSL/wolfssl-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 setup_win.bat for ESP-IDF completed.
|