123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393 |
- @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.
|