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