diff options
Diffstat (limited to 'projects/build-wolfssl.bat')
-rw-r--r-- | projects/build-wolfssl.bat | 353 |
1 files changed, 353 insertions, 0 deletions
diff --git a/projects/build-wolfssl.bat b/projects/build-wolfssl.bat new file mode 100644 index 00000000..849357fc --- /dev/null +++ b/projects/build-wolfssl.bat @@ -0,0 +1,353 @@ +@echo off +rem *************************************************************************** +rem * _ _ ____ _ +rem * Project ___| | | | _ \| | +rem * / __| | | | |_) | | +rem * | (__| |_| | _ <| |___ +rem * \___|\___/|_| \_\_____| +rem * +rem * Copyright (C) 2012 - 2015, Steve Holme, <steve_holme@hotmail.com>. +rem * Copyright (C) 2015, Jay Satiro, <raysatiro@yahoo.com>. +rem * +rem * This software is licensed as described in the file COPYING, which +rem * you should have received as part of this distribution. The terms +rem * are also available at https://curl.haxx.se/docs/copyright.html. +rem * +rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell +rem * copies of the Software, and permit persons to whom the Software is +rem * furnished to do so, under the terms of the COPYING file. +rem * +rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +rem * KIND, either express or implied. +rem * +rem *************************************************************************** + +:begin + rem Check we are running on a Windows NT derived OS + if not "%OS%" == "Windows_NT" goto nodos + + rem Set our variables + setlocal + set SUCCESSFUL_BUILDS= + set VC_VER= + set BUILD_PLATFORM= + + rem Ensure we have the required arguments + if /i "%~1" == "" goto syntax + +:parseArgs + if "%~1" == "" goto prerequisites + + if /i "%~1" == "vc10" ( + set VC_VER=10.0 + set VC_DESC=VC10 + set VC_TOOLSET=v100 + set "VC_PATH=Microsoft Visual Studio 10.0\VC" + ) else if /i "%~1" == "vc11" ( + set VC_VER=11.0 + set VC_DESC=VC11 + set VC_TOOLSET=v110 + set "VC_PATH=Microsoft Visual Studio 11.0\VC" + ) else if /i "%~1" == "vc12" ( + set VC_VER=12.0 + set VC_DESC=VC12 + set VC_TOOLSET=v120 + set "VC_PATH=Microsoft Visual Studio 12.0\VC" + ) else if /i "%~1" == "vc14" ( + set VC_VER=14.0 + set VC_DESC=VC14 + set VC_TOOLSET=v140 + set "VC_PATH=Microsoft Visual Studio 14.0\VC" + ) else if /i "%~1" == "x86" ( + set BUILD_PLATFORM=x86 + ) else if /i "%~1" == "x64" ( + set BUILD_PLATFORM=x64 + ) else if /i "%~1" == "debug" ( + set BUILD_CONFIG=debug + ) else if /i "%~1" == "release" ( + set BUILD_CONFIG=release + ) else if /i "%~1" == "-?" ( + goto syntax + ) else if /i "%~1" == "-h" ( + goto syntax + ) else if /i "%~1" == "-help" ( + goto syntax + ) else ( + if not defined START_DIR ( + set START_DIR=%~1 + ) else ( + goto unknown + ) + ) + + shift & goto parseArgs + +:prerequisites + rem Compiler and platform are required parameters. + if not defined VC_VER goto syntax + if not defined BUILD_PLATFORM goto syntax + + rem Default the start directory if one isn't specified + if not defined START_DIR set START_DIR=..\..\wolfssl + + rem Calculate the program files directory + if defined PROGRAMFILES ( + set "PF=%PROGRAMFILES%" + set OS_PLATFORM=x86 + ) + if defined PROGRAMFILES(x86) ( + set "PF=%PROGRAMFILES(x86)%" + set OS_PLATFORM=x64 + ) + + rem Check we have a program files directory + if not defined PF goto nopf + + rem Check we have Visual Studio installed + if not exist "%PF%\%VC_PATH%" goto novc + + rem Check the start directory exists + if not exist "%START_DIR%" goto nowolfssl + +:configure + if "%BUILD_PLATFORM%" == "" set BUILD_PLATFORM=%OS_PLATFORM% + + if "%BUILD_PLATFORM%" == "x86" ( + set VCVARS_PLATFORM=x86 + ) else if "%BUILD_PLATFORM%" == "x64" ( + if "%VC_VER%" == "10.0" set VCVARS_PLATFORM=%BUILD_PLATFORM% + if "%VC_VER%" == "11.0" set VCVARS_PLATFORM=amd64 + if "%VC_VER%" == "12.0" set VCVARS_PLATFORM=amd64 + if "%VC_VER%" == "14.0" set VCVARS_PLATFORM=amd64 + ) + +:start + echo. + call "%PF%\%VC_PATH%\vcvarsall" %VCVARS_PLATFORM% + + echo. + set SAVED_PATH=%CD% + cd %START_DIR% + goto %BUILD_PLATFORM% + +:x64 + rem Calculate our output directory + set OUTDIR=build\Win64\%VC_DESC% + if not exist %OUTDIR% md %OUTDIR% + + if "%BUILD_CONFIG%" == "release" goto x64release + +:x64debug + rem Perform 64-bit Debug Build + + call :build Debug x64 + if errorlevel 1 goto error + + call :build "DLL Debug" x64 + if errorlevel 1 goto error + + if "%BUILD_CONFIG%" == "debug" goto success + +:x64release + rem Perform 64-bit Release Build + + call :build Release x64 + if errorlevel 1 goto error + + call :build "DLL Release" x64 + if errorlevel 1 goto error + + goto success + +:x86 + rem Calculate our output directory + set OUTDIR=build\Win32\%VC_DESC% + if not exist %OUTDIR% md %OUTDIR% + + if "%BUILD_CONFIG%" == "release" goto x86release + +:x86debug + rem Perform 32-bit Debug Build + + call :build Debug Win32 + if errorlevel 1 goto error + + call :build "DLL Debug" Win32 + if errorlevel 1 goto error + + if "%BUILD_CONFIG%" == "debug" goto success + +:x86release + rem Perform 32-bit Release Build + + call :build Release Win32 + if errorlevel 1 goto error + + call :build "DLL Release" Win32 + if errorlevel 1 goto error + + goto success + +:build + rem This function builds wolfSSL. + rem Usage: CALL :build <configuration> <platform> + rem The current directory must be the wolfSSL directory. + rem VS Configuration: Debug, Release, DLL Debug or DLL Release. + rem VS Platform: Win32 or x64. + rem Returns: 1 on fail, 0 on success. + rem An informational message should be shown before any return. + setlocal + set MSBUILD_CONFIG=%~1 + set MSBUILD_PLATFORM=%~2 + + if not exist wolfssl64.sln ( + echo. + echo Error: build: wolfssl64.sln not found in "%CD%" + exit /b 1 + ) + + rem OUTDIR isn't a full path, only relative. MSBUILD_OUTDIR must be full and + rem not have trailing backslashes, which are handled later. + if "%MSBUILD_CONFIG%" == "Debug" ( + set "MSBUILD_OUTDIR=%CD%\%OUTDIR%\LIB Debug" + ) else if "%MSBUILD_CONFIG%" == "Release" ( + set "MSBUILD_OUTDIR=%CD%\%OUTDIR%\LIB Release" + ) else if "%MSBUILD_CONFIG%" == "DLL Debug" ( + set "MSBUILD_OUTDIR=%CD%\%OUTDIR%\DLL Debug" + ) else if "%MSBUILD_CONFIG%" == "DLL Release" ( + set "MSBUILD_OUTDIR=%CD%\%OUTDIR%\DLL Release" + ) else ( + echo. + echo Error: build: Configuration not recognized. + exit /b 1 + ) + + if not "%MSBUILD_PLATFORM%" == "Win32" if not "%MSBUILD_PLATFORM%" == "x64" ( + echo. + echo Error: build: Platform not recognized. + exit /b 1 + ) + + copy /v /y "%~dp0\wolfssl_options.h" .\cyassl\options.h + if %ERRORLEVEL% neq 0 ( + echo. + echo Error: build: Couldn't replace .\cyassl\options.h + exit /b 1 + ) + + copy /v /y "%~dp0\wolfssl_options.h" .\wolfssl\options.h + if %ERRORLEVEL% neq 0 ( + echo. + echo Error: build: Couldn't replace .\wolfssl\options.h + exit /b 1 + ) + + rem Extra trailing \ in Dirs because otherwise it thinks a quote is escaped + msbuild wolfssl64.sln ^ + -p:CustomAfterMicrosoftCommonTargets="%~dp0\wolfssl_override.props" ^ + -p:Configuration="%MSBUILD_CONFIG%" ^ + -p:Platform="%MSBUILD_PLATFORM%" ^ + -p:PlatformToolset="%VC_TOOLSET%" ^ + -p:OutDir="%MSBUILD_OUTDIR%\\" ^ + -p:IntDir="%MSBUILD_OUTDIR%\obj\\" + + if %ERRORLEVEL% neq 0 ( + echo. + echo Error: Failed building wolfSSL %MSBUILD_CONFIG%^|%MSBUILD_PLATFORM%. + exit /b 1 + ) + + rem For tests to run properly the wolfSSL directory must remain the current. + set "PATH=%MSBUILD_OUTDIR%;%PATH%" + "%MSBUILD_OUTDIR%\testsuite.exe" + + if %ERRORLEVEL% neq 0 ( + echo. + echo Error: Failed testing wolfSSL %MSBUILD_CONFIG%^|%MSBUILD_PLATFORM%. + exit /b 1 + ) + + echo. + echo Success: Built and tested wolfSSL %MSBUILD_CONFIG%^|%MSBUILD_PLATFORM%. + echo. + echo. + rem This is necessary to export our local variables back to the caller. + endlocal & set SUCCESSFUL_BUILDS="%MSBUILD_CONFIG%|%MSBUILD_PLATFORM%" ^ + %SUCCESSFUL_BUILDS% + exit /b 0 + +:syntax + rem Display the help + echo. + echo Usage: build-wolfssl ^<compiler^> ^<platform^> [configuration] [directory] + echo. + echo Compiler: + echo. + echo vc10 - Use Visual Studio 2010 + echo vc11 - Use Visual Studio 2012 + echo vc12 - Use Visual Studio 2013 + echo vc14 - Use Visual Studio 2015 + echo. + echo Platform: + echo. + echo x86 - Perform a 32-bit build + echo x64 - Perform a 64-bit build + echo. + echo Configuration: + echo. + echo debug - Perform a debug build + echo release - Perform a release build + echo. + echo Other: + echo. + echo directory - Specifies the wolfSSL source directory + goto error + +:unknown + echo. + echo Error: Unknown argument '%1' + goto error + +:nodos + echo. + echo Error: Only a Windows NT based Operating System is supported + goto error + +:nopf + echo. + echo Error: Cannot obtain the directory for Program Files + goto error + +:novc + echo. + echo Error: %VC_DESC% is not installed + goto error + +:nox64 + echo. + echo Error: %VC_DESC% does not support 64-bit builds + goto error + +:nowolfssl + echo. + echo Error: Cannot locate wolfSSL source directory, expected "%START_DIR%" + goto error + +:error + if "%OS%" == "Windows_NT" endlocal + exit /B 1 + +:success + if defined SUCCESSFUL_BUILDS ( + echo. + echo. + echo Build complete. + echo. + echo The following configurations were built and tested successfully: + echo. + echo %SUCCESSFUL_BUILDS% + echo. + ) + cd %SAVED_PATH% + endlocal + exit /B 0 |