File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / curl / projects / build-wolfssl.bat
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Jun 3 10:01:14 2020 UTC (5 years ago) by misho
Branches: curl, MAIN
CVS tags: v7_70_0p4, HEAD
curl

    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>