1e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET@echo off 2e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem *************************************************************************** 3e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * _ _ ____ _ 4e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * Project ___| | | | _ \| | 5e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * / __| | | | |_) | | 6e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * | (__| |_| | _ <| |___ 7e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * \___|\___/|_| \_\_____| 8e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * 90128fe4043cdbb72cc0c5b8f817749e3f89a7b36Elliott Hughesrem * Copyright (C) 2012 - 2017, Steve Holme, <steve_holme@hotmail.com>. 10e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * 11e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * This software is licensed as described in the file COPYING, which 12e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * you should have received as part of this distribution. The terms 138f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymorem * are also available at https://curl.haxx.se/docs/copyright.html. 14e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * 15e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * You may opt to use, copy, modify, merge, publish, distribute and/or sell 16e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * copies of the Software, and permit persons to whom the Software is 17e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * furnished to do so, under the terms of the COPYING file. 18e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * 19e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 20e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * KIND, either express or implied. 21e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * 22e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem *************************************************************************** 23e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 24e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:begin 25e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Check we are running on a Windows NT derived OS 26e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if not "%OS%" == "Windows_NT" goto nodos 278f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo 288f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo rem Set our variables 29e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET setlocal 308f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo set VC_VER= 318f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo set BUILD_PLATFORM= 328f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo 338f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo rem Ensure we have the required arguments 34e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if /i "%~1" == "" goto syntax 35e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 36e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:parseArgs 37e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%~1" == "" goto prerequisites 38e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 39e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if /i "%~1" == "vc6" ( 40e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set VC_VER=6.0 41e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set VC_DESC=VC6 42e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set "VC_PATH=Microsoft Visual Studio\VC98" 43e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if /i "%~1" == "vc7" ( 44e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set VC_VER=7.0 45e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set VC_DESC=VC7 46e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set "VC_PATH=Microsoft Visual Studio .NET\Vc7" 47e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if /i "%~1" == "vc7.1" ( 48e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set VC_VER=7.1 49e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set VC_DESC=VC7.1 50e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set "VC_PATH=Microsoft Visual Studio .NET 2003\Vc7" 51e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if /i "%~1" == "vc8" ( 52e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set VC_VER=8.0 53e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set VC_DESC=VC8 54e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set "VC_PATH=Microsoft Visual Studio 8\VC" 55e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if /i "%~1" == "vc9" ( 56e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set VC_VER=9.0 57e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set VC_DESC=VC9 58e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set "VC_PATH=Microsoft Visual Studio 9.0\VC" 59e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if /i "%~1" == "vc10" ( 60e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set VC_VER=10.0 61e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set VC_DESC=VC10 62e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set "VC_PATH=Microsoft Visual Studio 10.0\VC" 63e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if /i "%~1" == "vc11" ( 64e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set VC_VER=11.0 65e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set VC_DESC=VC11 66e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set "VC_PATH=Microsoft Visual Studio 11.0\VC" 67e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if /i "%~1" == "vc12" ( 68e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set VC_VER=12.0 69e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set VC_DESC=VC12 70e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set "VC_PATH=Microsoft Visual Studio 12.0\VC" 718f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo ) else if /i "%~1" == "vc14" ( 728f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo set VC_VER=14.0 738f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo set VC_DESC=VC14 748f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo set "VC_PATH=Microsoft Visual Studio 14.0\VC" 750128fe4043cdbb72cc0c5b8f817749e3f89a7b36Elliott Hughes ) else if /i "%~1" == "vc15" ( 760128fe4043cdbb72cc0c5b8f817749e3f89a7b36Elliott Hughes set VC_VER=15.0 770128fe4043cdbb72cc0c5b8f817749e3f89a7b36Elliott Hughes set VC_DESC=VC15 780128fe4043cdbb72cc0c5b8f817749e3f89a7b36Elliott Hughes set "VC_PATH=Microsoft Visual Studio\2017\Community\VC" 79e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if /i "%~1%" == "x86" ( 80e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set BUILD_PLATFORM=x86 81e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if /i "%~1%" == "x64" ( 82e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set BUILD_PLATFORM=x64 83e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if /i "%~1%" == "debug" ( 84e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set BUILD_CONFIG=debug 85e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if /i "%~1%" == "release" ( 86e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set BUILD_CONFIG=release 878f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo ) else if /i "%~1" == "-?" ( 888f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo goto syntax 898f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo ) else if /i "%~1" == "-h" ( 908f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo goto syntax 918f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo ) else if /i "%~1" == "-help" ( 928f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo goto syntax 93e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else ( 94e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if not defined START_DIR ( 95e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set START_DIR=%~1% 96e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else ( 97e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto unknown 98e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) 99e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) 100e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 101e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET shift & goto parseArgs 102e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 103e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:prerequisites 1048f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo rem Compiler and platform are required parameters. 1058f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo if not defined VC_VER goto syntax 1068f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo if not defined BUILD_PLATFORM goto syntax 1078f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo 108e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Default the start directory if one isn't specified 109e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if not defined START_DIR set START_DIR=..\..\openssl 110e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 111e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Calculate the program files directory 112e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if defined PROGRAMFILES ( 113e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set "PF=%PROGRAMFILES%" 114e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set OS_PLATFORM=x86 115e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) 116e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if defined PROGRAMFILES(x86) ( 117e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set "PF=%PROGRAMFILES(x86)%" 118e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set OS_PLATFORM=x64 119e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) 120e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 121e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Check we have a program files directory 122e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if not defined PF goto nopf 123e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 124e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Check we have Visual Studio installed 125e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if not exist "%PF%\%VC_PATH%" goto novc 126e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 1278f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo rem Check we have Perl in our path 128e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo %PATH% | findstr /I /C:"\Perl" 1>nul 129e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if errorlevel 1 ( 1308f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo rem It isn't so check we have it installed and set the path if it is 1318f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo if exist "%SystemDrive%\Perl" ( 1328f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo set "PATH=%SystemDrive%\Perl\bin;%PATH%" 1338f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo ) else ( 1348f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo if exist "%SystemDrive%\Perl64" ( 1358f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo set "PATH=%SystemDrive%\Perl64\bin;%PATH%" 1368f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo ) else ( 1378f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo goto noperl 1388f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo ) 139e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) 140e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) 141e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 142e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Check the start directory exists 143e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if not exist "%START_DIR%" goto noopenssl 144e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 145486467e11b5904b3e04adc2f5fdb96fcfe65da84Alex Deymo rem Check that OpenSSL is not unsupported version 1.1.0 146486467e11b5904b3e04adc2f5fdb96fcfe65da84Alex Deymo if not exist "%START_DIR%\ms\do_ms.bat" goto unsupported 147486467e11b5904b3e04adc2f5fdb96fcfe65da84Alex Deymo 148e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:configure 149e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%BUILD_PLATFORM%" == "" ( 150e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%VC_VER%" == "6.0" ( 151e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set BUILD_PLATFORM=x86 152e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if "%VC_VER%" == "7.0" ( 153e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set BUILD_PLATFORM=x86 154e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if "%VC_VER%" == "7.1" ( 155e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set BUILD_PLATFORM=x86 156e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else ( 157e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set BUILD_PLATFORM=%OS_PLATFORM% 158e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) 159e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) 160e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 161e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%BUILD_PLATFORM%" == "x86" ( 162e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set VCVARS_PLATFORM=x86 163e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if "%BUILD_PLATFORM%" == "x64" ( 164e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%VC_VER%" == "6.0" goto nox64 165e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%VC_VER%" == "7.0" goto nox64 166e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%VC_VER%" == "7.1" goto nox64 167e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%VC_VER%" == "8.0" set VCVARS_PLATFORM=x86_amd64 168e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%VC_VER%" == "9.0" set VCVARS_PLATFORM=%BUILD_PLATFORM% 169e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%VC_VER%" == "10.0" set VCVARS_PLATFORM=%BUILD_PLATFORM% 170e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%VC_VER%" == "11.0" set VCVARS_PLATFORM=amd64 171e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%VC_VER%" == "12.0" set VCVARS_PLATFORM=amd64 1728f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo if "%VC_VER%" == "14.0" set VCVARS_PLATFORM=amd64 1730128fe4043cdbb72cc0c5b8f817749e3f89a7b36Elliott Hughes if "%VC_VER%" == "15.0" set VCVARS_PLATFORM=amd64 174e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) 175e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 176e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:start 177e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 1780128fe4043cdbb72cc0c5b8f817749e3f89a7b36Elliott Hughes set SAVED_PATH=%CD% 1790128fe4043cdbb72cc0c5b8f817749e3f89a7b36Elliott Hughes 180e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%VC_VER%" == "6.0" ( 181e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET call "%PF%\%VC_PATH%\bin\vcvars32" 182e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if "%VC_VER%" == "7.0" ( 183e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET call "%PF%\%VC_PATH%\bin\vcvars32" 184e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if "%VC_VER%" == "7.1" ( 185e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET call "%PF%\%VC_PATH%\bin\vcvars32" 1860128fe4043cdbb72cc0c5b8f817749e3f89a7b36Elliott Hughes ) else if "%VC_VER%" == "15.0" ( 1870128fe4043cdbb72cc0c5b8f817749e3f89a7b36Elliott Hughes call "%PF%\%VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM% 188e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else ( 189e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET call "%PF%\%VC_PATH%\vcvarsall" %VCVARS_PLATFORM% 190e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) 191e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 192e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 1930128fe4043cdbb72cc0c5b8f817749e3f89a7b36Elliott Hughes cd %SAVED_PATH% 1940128fe4043cdbb72cc0c5b8f817749e3f89a7b36Elliott Hughes cd %START_DIR% 195e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto %BUILD_PLATFORM% 196e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 197e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:x64 198e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Calculate our output directory 199e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set OUTDIR=build\Win64\%VC_DESC% 200e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if not exist %OUTDIR% md %OUTDIR% 201e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 202e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%BUILD_CONFIG%" == "release" goto x64release 203e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 204e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:x64debug 205e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Configuring 64-bit Debug Build 206e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET perl Configure debug-VC-WIN64A --prefix=%CD% 207e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 208e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Perform the build 209e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET call ms\do_win64a 210e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET nmake -f ms\nt.mak 211e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET nmake -f ms\ntdll.mak 212e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 213e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Move the output directories 214e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move out32.dbg "%OUTDIR%\LIB Debug" 215e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move out32dll.dbg "%OUTDIR%\DLL Debug" 216e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 217e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Move the PDB files 218e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move tmp32.dbg\lib.pdb "%OUTDIR%\LIB Debug" 219e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move tmp32dll.dbg\lib.pdb "%OUTDIR%\DLL Debug" 220e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 221e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Remove the intermediate directories 222e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rd tmp32.dbg /s /q 223e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rd tmp32dll.dbg /s /q 224e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 225e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%BUILD_CONFIG%" == "debug" goto success 226e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 227e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:x64release 228e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Configuring 64-bit Release Build 229e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET perl Configure VC-WIN64A --prefix=%CD% 230e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 231e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Perform the build 232e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET call ms\do_win64a 233e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET nmake -f ms\nt.mak 234e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET nmake -f ms\ntdll.mak 235e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 236e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Move the output directories 237e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move out32 "%OUTDIR%\LIB Release" 238e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move out32dll "%OUTDIR%\DLL Release" 239e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 240e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Move the PDB files 241e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move tmp32\lib.pdb "%OUTDIR%\LIB Release" 242e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move tmp32dll\lib.pdb "%OUTDIR%\DLL Release" 243e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 244e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Remove the intermediate directories 245e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rd tmp32 /s /q 246e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rd tmp32dll /s /q 247e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 248e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto success 249e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 250e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:x86 251e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Calculate our output directory 252e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set OUTDIR=build\Win32\%VC_DESC% 253e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if not exist %OUTDIR% md %OUTDIR% 254e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 255e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%BUILD_CONFIG%" == "release" goto x86release 256e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 257e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:x86debug 258e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Configuring 32-bit Debug Build 259e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET perl Configure debug-VC-WIN32 no-asm --prefix=%CD% 260e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 261e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Perform the build 262e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET call ms\do_ms 263e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET nmake -f ms\nt.mak 264e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET nmake -f ms\ntdll.mak 265e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 266e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Move the output directories 267e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move out32.dbg "%OUTDIR%\LIB Debug" 268e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move out32dll.dbg "%OUTDIR%\DLL Debug" 269e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 270e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Move the PDB files 271e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move tmp32.dbg\lib.pdb "%OUTDIR%\LIB Debug" 272e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move tmp32dll.dbg\lib.pdb "%OUTDIR%\DLL Debug" 273e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 274e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Remove the intermediate directories 275e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rd tmp32.dbg /s /q 276e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rd tmp32dll.dbg /s /q 277e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 278e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%BUILD_CONFIG%" == "debug" goto success 279e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 280e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:x86release 281e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Configuring 32-bit Release Build 282e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET perl Configure VC-WIN32 no-asm --prefix=%CD% 283e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 284e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Perform the build 285e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET call ms\do_ms 286e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET nmake -f ms\nt.mak 287e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET nmake -f ms\ntdll.mak 288e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 289e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Move the output directories 290e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move out32 "%OUTDIR%\LIB Release" 291e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move out32dll "%OUTDIR%\DLL Release" 292e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 293e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Move the PDB files 294e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move tmp32\lib.pdb "%OUTDIR%\LIB Release" 295e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move tmp32dll\lib.pdb "%OUTDIR%\DLL Release" 296e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 297e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Remove the intermediate directories 298e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rd tmp32 /s /q 299e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rd tmp32dll /s /q 300e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 301e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto success 302e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 303e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:syntax 304e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Display the help 305e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 306e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Usage: build-openssl ^<compiler^> ^<platform^> [configuration] [directory] 307e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 308e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Compiler: 309e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 310e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo vc6 - Use Visual Studio 6 311e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo vc7 - Use Visual Studio .NET 312e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo vc7.1 - Use Visual Studio .NET 2003 313e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo vc8 - Use Visual Studio 2005 314e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo vc9 - Use Visual Studio 2008 315e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo vc10 - Use Visual Studio 2010 316e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo vc11 - Use Visual Studio 2012 317e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo vc12 - Use Visual Studio 2013 3188f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo echo vc14 - Use Visual Studio 2015 3190128fe4043cdbb72cc0c5b8f817749e3f89a7b36Elliott Hughes echo vc15 - Use Visual Studio 2017 320e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 321e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Platform: 322e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 323e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo x86 - Perform a 32-bit build 324e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo x64 - Perform a 64-bit build 325e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 326e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Configuration: 327e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 328e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo debug - Perform a debug build 329e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo release - Perform a release build 330e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 331e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Other: 332e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 333e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo directory - Specifies the OpenSSL source directory 334e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto error 335e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 336e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:unknown 337e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 338e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Error: Unknown argument '%1' 339e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto error 340e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 341e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:nodos 342e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 343e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Error: Only a Windows NT based Operating System is supported 344e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto error 345e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 346e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:nopf 347e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 348e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Error: Cannot obtain the directory for Program Files 349e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto error 350e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 351e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:novc 352e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 353e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Error: %VC_DESC% is not installed 354e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto error 355e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 356e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:noperl 357e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 358e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Error: Perl is not installed 359e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto error 360e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 361e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:nox64 362e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 363e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Error: %VC_DESC% does not support 64-bit builds 364e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto error 365e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 366e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:noopenssl 367e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 368e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Error: Cannot locate OpenSSL source directory 369e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto error 370e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 371486467e11b5904b3e04adc2f5fdb96fcfe65da84Alex Deymo:unsupported 372486467e11b5904b3e04adc2f5fdb96fcfe65da84Alex Deymo echo. 373486467e11b5904b3e04adc2f5fdb96fcfe65da84Alex Deymo echo Error: Unsupported OpenSSL version. 374486467e11b5904b3e04adc2f5fdb96fcfe65da84Alex Deymo echo The pre-generated project files and this build script only support the 375486467e11b5904b3e04adc2f5fdb96fcfe65da84Alex Deymo echo LTS version of OpenSSL ^(v1.0.2^). The next version of this build script 376486467e11b5904b3e04adc2f5fdb96fcfe65da84Alex Deymo echo will support OpenSSL v1.1.0. 377486467e11b5904b3e04adc2f5fdb96fcfe65da84Alex Deymo goto error 378486467e11b5904b3e04adc2f5fdb96fcfe65da84Alex Deymo 379e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:error 380e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%OS%" == "Windows_NT" endlocal 381e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET exit /B 1 382e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 383e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:success 384e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET cd %SAVED_PATH% 385e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET endlocal 386e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET exit /B 0 387