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>