1e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET@echo off 2e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem *************************************************************************** 3e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * _ _ ____ _ 4e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * Project ___| | | | _ \| | 5e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * / __| | | | |_) | | 6e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * | (__| |_| | _ <| |___ 7e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * \___|\___/|_| \_\_____| 8e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETrem * 98f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymorem * Copyright (C) 2012 - 2016, 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" 75e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if /i "%~1%" == "x86" ( 76e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set BUILD_PLATFORM=x86 77e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if /i "%~1%" == "x64" ( 78e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set BUILD_PLATFORM=x64 79e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if /i "%~1%" == "debug" ( 80e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set BUILD_CONFIG=debug 81e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if /i "%~1%" == "release" ( 82e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set BUILD_CONFIG=release 838f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo ) else if /i "%~1" == "-?" ( 848f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo goto syntax 858f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo ) else if /i "%~1" == "-h" ( 868f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo goto syntax 878f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo ) else if /i "%~1" == "-help" ( 888f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo goto syntax 89e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else ( 90e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if not defined START_DIR ( 91e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set START_DIR=%~1% 92e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else ( 93e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto unknown 94e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) 95e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) 96e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 97e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET shift & goto parseArgs 98e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 99e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:prerequisites 1008f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo rem Compiler and platform are required parameters. 1018f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo if not defined VC_VER goto syntax 1028f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo if not defined BUILD_PLATFORM goto syntax 1038f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo 104e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Default the start directory if one isn't specified 105e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if not defined START_DIR set START_DIR=..\..\openssl 106e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 107e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Calculate the program files directory 108e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if defined PROGRAMFILES ( 109e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set "PF=%PROGRAMFILES%" 110e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set OS_PLATFORM=x86 111e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) 112e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if defined PROGRAMFILES(x86) ( 113e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set "PF=%PROGRAMFILES(x86)%" 114e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set OS_PLATFORM=x64 115e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) 116e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 117e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Check we have a program files directory 118e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if not defined PF goto nopf 119e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 120e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Check we have Visual Studio installed 121e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if not exist "%PF%\%VC_PATH%" goto novc 122e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 1238f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo rem Check we have Perl in our path 124e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo %PATH% | findstr /I /C:"\Perl" 1>nul 125e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if errorlevel 1 ( 1268f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo rem It isn't so check we have it installed and set the path if it is 1278f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo if exist "%SystemDrive%\Perl" ( 1288f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo set "PATH=%SystemDrive%\Perl\bin;%PATH%" 1298f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo ) else ( 1308f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo if exist "%SystemDrive%\Perl64" ( 1318f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo set "PATH=%SystemDrive%\Perl64\bin;%PATH%" 1328f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo ) else ( 1338f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo goto noperl 1348f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo ) 135e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) 136e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) 137e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 138e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Check the start directory exists 139e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if not exist "%START_DIR%" goto noopenssl 140e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 141e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:configure 142e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%BUILD_PLATFORM%" == "" ( 143e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%VC_VER%" == "6.0" ( 144e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set BUILD_PLATFORM=x86 145e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if "%VC_VER%" == "7.0" ( 146e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set BUILD_PLATFORM=x86 147e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if "%VC_VER%" == "7.1" ( 148e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set BUILD_PLATFORM=x86 149e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else ( 150e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set BUILD_PLATFORM=%OS_PLATFORM% 151e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) 152e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) 153e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 154e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%BUILD_PLATFORM%" == "x86" ( 155e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set VCVARS_PLATFORM=x86 156e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if "%BUILD_PLATFORM%" == "x64" ( 157e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%VC_VER%" == "6.0" goto nox64 158e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%VC_VER%" == "7.0" goto nox64 159e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%VC_VER%" == "7.1" goto nox64 160e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%VC_VER%" == "8.0" set VCVARS_PLATFORM=x86_amd64 161e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%VC_VER%" == "9.0" set VCVARS_PLATFORM=%BUILD_PLATFORM% 162e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%VC_VER%" == "10.0" set VCVARS_PLATFORM=%BUILD_PLATFORM% 163e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%VC_VER%" == "11.0" set VCVARS_PLATFORM=amd64 164e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%VC_VER%" == "12.0" set VCVARS_PLATFORM=amd64 1658f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo if "%VC_VER%" == "14.0" set VCVARS_PLATFORM=amd64 166e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) 167e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 168e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:start 169e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 170e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%VC_VER%" == "6.0" ( 171e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET call "%PF%\%VC_PATH%\bin\vcvars32" 172e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if "%VC_VER%" == "7.0" ( 173e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET call "%PF%\%VC_PATH%\bin\vcvars32" 174e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else if "%VC_VER%" == "7.1" ( 175e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET call "%PF%\%VC_PATH%\bin\vcvars32" 176e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) else ( 177e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET call "%PF%\%VC_PATH%\vcvarsall" %VCVARS_PLATFORM% 178e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ) 179e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 180e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 181e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set SAVED_PATH=%CD% 182e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if defined START_DIR CD %START_DIR% 183e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto %BUILD_PLATFORM% 184e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 185e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:x64 186e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Calculate our output directory 187e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set OUTDIR=build\Win64\%VC_DESC% 188e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if not exist %OUTDIR% md %OUTDIR% 189e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 190e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%BUILD_CONFIG%" == "release" goto x64release 191e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 192e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:x64debug 193e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Configuring 64-bit Debug Build 194e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET perl Configure debug-VC-WIN64A --prefix=%CD% 195e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 196e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Perform the build 197e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET call ms\do_win64a 198e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET nmake -f ms\nt.mak 199e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET nmake -f ms\ntdll.mak 200e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 201e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Move the output directories 202e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move out32.dbg "%OUTDIR%\LIB Debug" 203e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move out32dll.dbg "%OUTDIR%\DLL Debug" 204e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 205e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Move the PDB files 206e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move tmp32.dbg\lib.pdb "%OUTDIR%\LIB Debug" 207e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move tmp32dll.dbg\lib.pdb "%OUTDIR%\DLL Debug" 208e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 209e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Remove the intermediate directories 210e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rd tmp32.dbg /s /q 211e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rd tmp32dll.dbg /s /q 212e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 213e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%BUILD_CONFIG%" == "debug" goto success 214e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 215e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:x64release 216e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Configuring 64-bit Release Build 217e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET perl Configure VC-WIN64A --prefix=%CD% 218e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 219e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Perform the build 220e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET call ms\do_win64a 221e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET nmake -f ms\nt.mak 222e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET nmake -f ms\ntdll.mak 223e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 224e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Move the output directories 225e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move out32 "%OUTDIR%\LIB Release" 226e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move out32dll "%OUTDIR%\DLL Release" 227e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 228e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Move the PDB files 229e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move tmp32\lib.pdb "%OUTDIR%\LIB Release" 230e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move tmp32dll\lib.pdb "%OUTDIR%\DLL Release" 231e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 232e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Remove the intermediate directories 233e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rd tmp32 /s /q 234e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rd tmp32dll /s /q 235e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 236e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto success 237e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 238e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:x86 239e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Calculate our output directory 240e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET set OUTDIR=build\Win32\%VC_DESC% 241e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if not exist %OUTDIR% md %OUTDIR% 242e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 243e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%BUILD_CONFIG%" == "release" goto x86release 244e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 245e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:x86debug 246e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Configuring 32-bit Debug Build 247e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET perl Configure debug-VC-WIN32 no-asm --prefix=%CD% 248e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 249e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Perform the build 250e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET call ms\do_ms 251e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET nmake -f ms\nt.mak 252e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET nmake -f ms\ntdll.mak 253e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 254e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Move the output directories 255e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move out32.dbg "%OUTDIR%\LIB Debug" 256e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move out32dll.dbg "%OUTDIR%\DLL Debug" 257e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 258e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Move the PDB files 259e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move tmp32.dbg\lib.pdb "%OUTDIR%\LIB Debug" 260e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move tmp32dll.dbg\lib.pdb "%OUTDIR%\DLL Debug" 261e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 262e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Remove the intermediate directories 263e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rd tmp32.dbg /s /q 264e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rd tmp32dll.dbg /s /q 265e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 266e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%BUILD_CONFIG%" == "debug" goto success 267e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 268e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:x86release 269e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Configuring 32-bit Release Build 270e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET perl Configure VC-WIN32 no-asm --prefix=%CD% 271e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 272e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Perform the build 273e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET call ms\do_ms 274e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET nmake -f ms\nt.mak 275e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET nmake -f ms\ntdll.mak 276e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 277e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Move the output directories 278e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move out32 "%OUTDIR%\LIB Release" 279e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move out32dll "%OUTDIR%\DLL Release" 280e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 281e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Move the PDB files 282e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move tmp32\lib.pdb "%OUTDIR%\LIB Release" 283e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET move tmp32dll\lib.pdb "%OUTDIR%\DLL Release" 284e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 285e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Remove the intermediate directories 286e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rd tmp32 /s /q 287e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rd tmp32dll /s /q 288e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 289e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto success 290e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 291e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:syntax 292e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET rem Display the help 293e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 294e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Usage: build-openssl ^<compiler^> ^<platform^> [configuration] [directory] 295e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 296e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Compiler: 297e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 298e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo vc6 - Use Visual Studio 6 299e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo vc7 - Use Visual Studio .NET 300e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo vc7.1 - Use Visual Studio .NET 2003 301e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo vc8 - Use Visual Studio 2005 302e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo vc9 - Use Visual Studio 2008 303e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo vc10 - Use Visual Studio 2010 304e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo vc11 - Use Visual Studio 2012 305e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo vc12 - Use Visual Studio 2013 3068f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo echo vc14 - Use Visual Studio 2015 307e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 308e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Platform: 309e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 310e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo x86 - Perform a 32-bit build 311e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo x64 - Perform a 64-bit build 312e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 313e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Configuration: 314e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 315e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo debug - Perform a debug build 316e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo release - Perform a release build 317e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 318e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Other: 319e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 320e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo directory - Specifies the OpenSSL source directory 321e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto error 322e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 323e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:unknown 324e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 325e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Error: Unknown argument '%1' 326e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto error 327e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 328e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:nodos 329e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 330e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Error: Only a Windows NT based Operating System is supported 331e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto error 332e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 333e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:nopf 334e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 335e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Error: Cannot obtain the directory for Program Files 336e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto error 337e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 338e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:novc 339e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 340e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Error: %VC_DESC% is not installed 341e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto error 342e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 343e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:noperl 344e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 345e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Error: Perl is not installed 346e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto error 347e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 348e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:nox64 349e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 350e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Error: %VC_DESC% does not support 64-bit builds 351e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto error 352e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 353e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:noopenssl 354e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo. 355e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET echo Error: Cannot locate OpenSSL source directory 356e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET goto error 357e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 358e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:error 359e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if "%OS%" == "Windows_NT" endlocal 360e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET exit /B 1 361e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 362e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET:success 363e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET cd %SAVED_PATH% 364e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET endlocal 365e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET exit /B 0 366