Annotation of embedaddon/curl/projects/build-wolfssl.bat, revision 1.1
1.1 ! misho 1: @echo off
! 2: rem ***************************************************************************
! 3: rem * _ _ ____ _
! 4: rem * Project ___| | | | _ \| |
! 5: rem * / __| | | | |_) | |
! 6: rem * | (__| |_| | _ <| |___
! 7: rem * \___|\___/|_| \_\_____|
! 8: rem *
! 9: rem * Copyright (C) 2012 - 2018, Steve Holme, <steve_holme@hotmail.com>.
! 10: rem * Copyright (C) 2015, Jay Satiro, <raysatiro@yahoo.com>.
! 11: rem *
! 12: rem * This software is licensed as described in the file COPYING, which
! 13: rem * you should have received as part of this distribution. The terms
! 14: rem * are also available at https://curl.haxx.se/docs/copyright.html.
! 15: rem *
! 16: rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell
! 17: rem * copies of the Software, and permit persons to whom the Software is
! 18: rem * furnished to do so, under the terms of the COPYING file.
! 19: rem *
! 20: rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
! 21: rem * KIND, either express or implied.
! 22: rem *
! 23: rem ***************************************************************************
! 24:
! 25: :begin
! 26: rem Check we are running on a Windows NT derived OS
! 27: if not "%OS%" == "Windows_NT" goto nodos
! 28:
! 29: rem Set our variables
! 30: setlocal
! 31: set SUCCESSFUL_BUILDS=
! 32: set VC_VER=
! 33: set BUILD_PLATFORM=
! 34:
! 35: rem Ensure we have the required arguments
! 36: if /i "%~1" == "" goto syntax
! 37:
! 38: rem Calculate the program files directory
! 39: if defined PROGRAMFILES (
! 40: set "PF=%PROGRAMFILES%"
! 41: set OS_PLATFORM=x86
! 42: )
! 43: if defined PROGRAMFILES(x86) (
! 44: set "PF=%PROGRAMFILES(x86)%"
! 45: set OS_PLATFORM=x64
! 46: )
! 47:
! 48: :parseArgs
! 49: if "%~1" == "" goto prerequisites
! 50:
! 51: if /i "%~1" == "vc10" (
! 52: set VC_VER=10.0
! 53: set VC_DESC=VC10
! 54: set VC_TOOLSET=v100
! 55: set "VC_PATH=Microsoft Visual Studio 10.0\VC"
! 56: ) else if /i "%~1" == "vc11" (
! 57: set VC_VER=11.0
! 58: set VC_DESC=VC11
! 59: set VC_TOOLSET=v110
! 60: set "VC_PATH=Microsoft Visual Studio 11.0\VC"
! 61: ) else if /i "%~1" == "vc12" (
! 62: set VC_VER=12.0
! 63: set VC_DESC=VC12
! 64: set VC_TOOLSET=v120
! 65: set "VC_PATH=Microsoft Visual Studio 12.0\VC"
! 66: ) else if /i "%~1" == "vc14" (
! 67: set VC_VER=14.0
! 68: set VC_DESC=VC14
! 69: set VC_TOOLSET=v140
! 70: set "VC_PATH=Microsoft Visual Studio 14.0\VC"
! 71: ) else if /i "%~1" == "vc14.1" (
! 72: set VC_VER=14.1
! 73: set VC_DESC=VC14.1
! 74: set VC_TOOLSET=v141
! 75:
! 76: rem Determine the VC14.1 path based on the installed edition in descending
! 77: rem order (Enterprise, then Professional and finally Community)
! 78: if exist "%PF%\Microsoft Visual Studio\2017\Enterprise\VC" (
! 79: set "VC_PATH=Microsoft Visual Studio\2017\Enterprise\VC"
! 80: ) else if exist "%PF%\Microsoft Visual Studio\2017\Professional\VC" (
! 81: set "VC_PATH=Microsoft Visual Studio\2017\Professional\VC"
! 82: ) else (
! 83: set "VC_PATH=Microsoft Visual Studio\2017\Community\VC"
! 84: )
! 85: ) else if /i "%~1" == "x86" (
! 86: set BUILD_PLATFORM=x86
! 87: ) else if /i "%~1" == "x64" (
! 88: set BUILD_PLATFORM=x64
! 89: ) else if /i "%~1" == "debug" (
! 90: set BUILD_CONFIG=debug
! 91: ) else if /i "%~1" == "release" (
! 92: set BUILD_CONFIG=release
! 93: ) else if /i "%~1" == "-?" (
! 94: goto syntax
! 95: ) else if /i "%~1" == "-h" (
! 96: goto syntax
! 97: ) else if /i "%~1" == "-help" (
! 98: goto syntax
! 99: ) else (
! 100: if not defined START_DIR (
! 101: set START_DIR=%~1
! 102: ) else (
! 103: goto unknown
! 104: )
! 105: )
! 106:
! 107: shift & goto parseArgs
! 108:
! 109: :prerequisites
! 110: rem Compiler is a required parameter
! 111: if not defined VC_VER goto syntax
! 112:
! 113: rem Default the start directory if one isn't specified
! 114: if not defined START_DIR set START_DIR=..\..\wolfssl
! 115:
! 116: rem Check we have a program files directory
! 117: if not defined PF goto nopf
! 118:
! 119: rem Check we have Visual Studio installed
! 120: if not exist "%PF%\%VC_PATH%" goto novc
! 121:
! 122: rem Check the start directory exists
! 123: if not exist "%START_DIR%" goto nowolfssl
! 124:
! 125: :configure
! 126: if "%BUILD_PLATFORM%" == "" set BUILD_PLATFORM=%OS_PLATFORM%
! 127:
! 128: if "%BUILD_PLATFORM%" == "x86" (
! 129: set VCVARS_PLATFORM=x86
! 130: ) else if "%BUILD_PLATFORM%" == "x64" (
! 131: if "%VC_VER%" == "10.0" set VCVARS_PLATFORM=%BUILD_PLATFORM%
! 132: if "%VC_VER%" == "11.0" set VCVARS_PLATFORM=amd64
! 133: if "%VC_VER%" == "12.0" set VCVARS_PLATFORM=amd64
! 134: if "%VC_VER%" == "14.0" set VCVARS_PLATFORM=amd64
! 135: if "%VC_VER%" == "14.1" set VCVARS_PLATFORM=amd64
! 136: )
! 137:
! 138: :start
! 139: echo.
! 140: set SAVED_PATH=%CD%
! 141:
! 142: if "%VC_VER%" == "14.1" (
! 143: call "%PF%\%VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
! 144: ) else (
! 145: call "%PF%\%VC_PATH%\vcvarsall" %VCVARS_PLATFORM%
! 146: )
! 147:
! 148: echo.
! 149: cd /d %SAVED_PATH%
! 150: if defined START_DIR cd /d %START_DIR%
! 151: goto %BUILD_PLATFORM%
! 152:
! 153: :x64
! 154: rem Calculate our output directory
! 155: set OUTDIR=build\Win64\%VC_DESC%
! 156: if not exist %OUTDIR% md %OUTDIR%
! 157:
! 158: if "%BUILD_CONFIG%" == "release" goto x64release
! 159:
! 160: :x64debug
! 161: rem Perform 64-bit Debug Build
! 162:
! 163: call :build Debug x64
! 164: if errorlevel 1 goto error
! 165:
! 166: call :build "DLL Debug" x64
! 167: if errorlevel 1 goto error
! 168:
! 169: if "%BUILD_CONFIG%" == "debug" goto success
! 170:
! 171: :x64release
! 172: rem Perform 64-bit Release Build
! 173:
! 174: call :build Release x64
! 175: if errorlevel 1 goto error
! 176:
! 177: call :build "DLL Release" x64
! 178: if errorlevel 1 goto error
! 179:
! 180: goto success
! 181:
! 182: :x86
! 183: rem Calculate our output directory
! 184: set OUTDIR=build\Win32\%VC_DESC%
! 185: if not exist %OUTDIR% md %OUTDIR%
! 186:
! 187: if "%BUILD_CONFIG%" == "release" goto x86release
! 188:
! 189: :x86debug
! 190: rem Perform 32-bit Debug Build
! 191:
! 192: call :build Debug Win32
! 193: if errorlevel 1 goto error
! 194:
! 195: call :build "DLL Debug" Win32
! 196: if errorlevel 1 goto error
! 197:
! 198: if "%BUILD_CONFIG%" == "debug" goto success
! 199:
! 200: :x86release
! 201: rem Perform 32-bit Release Build
! 202:
! 203: call :build Release Win32
! 204: if errorlevel 1 goto error
! 205:
! 206: call :build "DLL Release" Win32
! 207: if errorlevel 1 goto error
! 208:
! 209: goto success
! 210:
! 211: :build
! 212: rem This function builds wolfSSL.
! 213: rem Usage: CALL :build <configuration> <platform>
! 214: rem The current directory must be the wolfSSL directory.
! 215: rem VS Configuration: Debug, Release, DLL Debug or DLL Release.
! 216: rem VS Platform: Win32 or x64.
! 217: rem Returns: 1 on fail, 0 on success.
! 218: rem An informational message should be shown before any return.
! 219: setlocal
! 220: set MSBUILD_CONFIG=%~1
! 221: set MSBUILD_PLATFORM=%~2
! 222:
! 223: if not exist wolfssl64.sln (
! 224: echo.
! 225: echo Error: build: wolfssl64.sln not found in "%CD%"
! 226: exit /b 1
! 227: )
! 228:
! 229: rem OUTDIR isn't a full path, only relative. MSBUILD_OUTDIR must be full and
! 230: rem not have trailing backslashes, which are handled later.
! 231: if "%MSBUILD_CONFIG%" == "Debug" (
! 232: set "MSBUILD_OUTDIR=%CD%\%OUTDIR%\LIB Debug"
! 233: ) else if "%MSBUILD_CONFIG%" == "Release" (
! 234: set "MSBUILD_OUTDIR=%CD%\%OUTDIR%\LIB Release"
! 235: ) else if "%MSBUILD_CONFIG%" == "DLL Debug" (
! 236: set "MSBUILD_OUTDIR=%CD%\%OUTDIR%\DLL Debug"
! 237: ) else if "%MSBUILD_CONFIG%" == "DLL Release" (
! 238: set "MSBUILD_OUTDIR=%CD%\%OUTDIR%\DLL Release"
! 239: ) else (
! 240: echo.
! 241: echo Error: build: Configuration not recognized.
! 242: exit /b 1
! 243: )
! 244:
! 245: if not "%MSBUILD_PLATFORM%" == "Win32" if not "%MSBUILD_PLATFORM%" == "x64" (
! 246: echo.
! 247: echo Error: build: Platform not recognized.
! 248: exit /b 1
! 249: )
! 250:
! 251: copy /v /y "%~dp0\wolfssl_options.h" .\cyassl\options.h
! 252: if %ERRORLEVEL% neq 0 (
! 253: echo.
! 254: echo Error: build: Couldn't replace .\cyassl\options.h
! 255: exit /b 1
! 256: )
! 257:
! 258: copy /v /y "%~dp0\wolfssl_options.h" .\wolfssl\options.h
! 259: if %ERRORLEVEL% neq 0 (
! 260: echo.
! 261: echo Error: build: Couldn't replace .\wolfssl\options.h
! 262: exit /b 1
! 263: )
! 264:
! 265: rem Extra trailing \ in Dirs because otherwise it thinks a quote is escaped
! 266: msbuild wolfssl64.sln ^
! 267: -p:CustomAfterMicrosoftCommonTargets="%~dp0\wolfssl_override.props" ^
! 268: -p:Configuration="%MSBUILD_CONFIG%" ^
! 269: -p:Platform="%MSBUILD_PLATFORM%" ^
! 270: -p:PlatformToolset="%VC_TOOLSET%" ^
! 271: -p:OutDir="%MSBUILD_OUTDIR%\\" ^
! 272: -p:IntDir="%MSBUILD_OUTDIR%\obj\\"
! 273:
! 274: if %ERRORLEVEL% neq 0 (
! 275: echo.
! 276: echo Error: Failed building wolfSSL %MSBUILD_CONFIG%^|%MSBUILD_PLATFORM%.
! 277: exit /b 1
! 278: )
! 279:
! 280: rem For tests to run properly the wolfSSL directory must remain the current.
! 281: set "PATH=%MSBUILD_OUTDIR%;%PATH%"
! 282: "%MSBUILD_OUTDIR%\testsuite.exe"
! 283:
! 284: if %ERRORLEVEL% neq 0 (
! 285: echo.
! 286: echo Error: Failed testing wolfSSL %MSBUILD_CONFIG%^|%MSBUILD_PLATFORM%.
! 287: exit /b 1
! 288: )
! 289:
! 290: echo.
! 291: echo Success: Built and tested wolfSSL %MSBUILD_CONFIG%^|%MSBUILD_PLATFORM%.
! 292: echo.
! 293: echo.
! 294: rem This is necessary to export our local variables back to the caller.
! 295: endlocal & set SUCCESSFUL_BUILDS="%MSBUILD_CONFIG%|%MSBUILD_PLATFORM%" ^
! 296: %SUCCESSFUL_BUILDS%
! 297: exit /b 0
! 298:
! 299: :syntax
! 300: rem Display the help
! 301: echo.
! 302: echo Usage: build-wolfssl ^<compiler^> [platform] [configuration] [directory]
! 303: echo.
! 304: echo Compiler:
! 305: echo.
! 306: echo vc10 - Use Visual Studio 2010
! 307: echo vc11 - Use Visual Studio 2012
! 308: echo vc12 - Use Visual Studio 2013
! 309: echo vc14 - Use Visual Studio 2015
! 310: echo vc14.1 - Use Visual Studio 2017
! 311: echo.
! 312: echo Platform:
! 313: echo.
! 314: echo x86 - Perform a 32-bit build
! 315: echo x64 - Perform a 64-bit build
! 316: echo.
! 317: echo Configuration:
! 318: echo.
! 319: echo debug - Perform a debug build
! 320: echo release - Perform a release build
! 321: echo.
! 322: echo Other:
! 323: echo.
! 324: echo directory - Specifies the wolfSSL source directory
! 325: goto error
! 326:
! 327: :unknown
! 328: echo.
! 329: echo Error: Unknown argument '%1'
! 330: goto error
! 331:
! 332: :nodos
! 333: echo.
! 334: echo Error: Only a Windows NT based Operating System is supported
! 335: goto error
! 336:
! 337: :nopf
! 338: echo.
! 339: echo Error: Cannot obtain the directory for Program Files
! 340: goto error
! 341:
! 342: :novc
! 343: echo.
! 344: echo Error: %VC_DESC% is not installed
! 345: goto error
! 346:
! 347: :nox64
! 348: echo.
! 349: echo Error: %VC_DESC% does not support 64-bit builds
! 350: goto error
! 351:
! 352: :nowolfssl
! 353: echo.
! 354: echo Error: Cannot locate wolfSSL source directory, expected "%START_DIR%"
! 355: goto error
! 356:
! 357: :error
! 358: if "%OS%" == "Windows_NT" endlocal
! 359: exit /B 1
! 360:
! 361: :success
! 362: if defined SUCCESSFUL_BUILDS (
! 363: echo.
! 364: echo.
! 365: echo Build complete.
! 366: echo.
! 367: echo The following configurations were built and tested successfully:
! 368: echo.
! 369: echo %SUCCESSFUL_BUILDS%
! 370: echo.
! 371: )
! 372: cd /d %SAVED_PATH%
! 373: endlocal
! 374: exit /B 0
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>