xref: /aosp_15_r20/external/curl/projects/build-openssl.bat (revision 6236dae45794135f37c4eb022389c904c8b0090d)
1*6236dae4SAndroid Build Coastguard Worker@echo off
2*6236dae4SAndroid Build Coastguard Workerrem ***************************************************************************
3*6236dae4SAndroid Build Coastguard Workerrem *                                  _   _ ____  _
4*6236dae4SAndroid Build Coastguard Workerrem *  Project                     ___| | | |  _ \| |
5*6236dae4SAndroid Build Coastguard Workerrem *                             / __| | | | |_) | |
6*6236dae4SAndroid Build Coastguard Workerrem *                            | (__| |_| |  _ <| |___
7*6236dae4SAndroid Build Coastguard Workerrem *                             \___|\___/|_| \_\_____|
8*6236dae4SAndroid Build Coastguard Workerrem *
9*6236dae4SAndroid Build Coastguard Workerrem * Copyright (C) Steve Holme, <[email protected]>.
10*6236dae4SAndroid Build Coastguard Workerrem *
11*6236dae4SAndroid Build Coastguard Workerrem * This software is licensed as described in the file COPYING, which
12*6236dae4SAndroid Build Coastguard Workerrem * you should have received as part of this distribution. The terms
13*6236dae4SAndroid Build Coastguard Workerrem * are also available at https://curl.se/docs/copyright.html.
14*6236dae4SAndroid Build Coastguard Workerrem *
15*6236dae4SAndroid Build Coastguard Workerrem * You may opt to use, copy, modify, merge, publish, distribute and/or sell
16*6236dae4SAndroid Build Coastguard Workerrem * copies of the Software, and permit persons to whom the Software is
17*6236dae4SAndroid Build Coastguard Workerrem * furnished to do so, under the terms of the COPYING file.
18*6236dae4SAndroid Build Coastguard Workerrem *
19*6236dae4SAndroid Build Coastguard Workerrem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
20*6236dae4SAndroid Build Coastguard Workerrem * KIND, either express or implied.
21*6236dae4SAndroid Build Coastguard Workerrem *
22*6236dae4SAndroid Build Coastguard Workerrem * SPDX-License-Identifier: curl
23*6236dae4SAndroid Build Coastguard Workerrem *
24*6236dae4SAndroid Build Coastguard Workerrem ***************************************************************************
25*6236dae4SAndroid Build Coastguard Worker
26*6236dae4SAndroid Build Coastguard Worker:begin
27*6236dae4SAndroid Build Coastguard Worker  rem Check we are running on a Windows NT derived OS
28*6236dae4SAndroid Build Coastguard Worker  if not "%OS%" == "Windows_NT" goto nodos
29*6236dae4SAndroid Build Coastguard Worker
30*6236dae4SAndroid Build Coastguard Worker  rem Set our variables
31*6236dae4SAndroid Build Coastguard Worker  setlocal ENABLEDELAYEDEXPANSION
32*6236dae4SAndroid Build Coastguard Worker  set BUILD_CONFIG=
33*6236dae4SAndroid Build Coastguard Worker  set BUILD_PLATFORM=
34*6236dae4SAndroid Build Coastguard Worker  set SAVED_PATH=
35*6236dae4SAndroid Build Coastguard Worker  set SOURCE_PATH=
36*6236dae4SAndroid Build Coastguard Worker  set TMP_BUILD_PATH=
37*6236dae4SAndroid Build Coastguard Worker  set TMP_INSTALL_PATH=
38*6236dae4SAndroid Build Coastguard Worker  set VC_VER=
39*6236dae4SAndroid Build Coastguard Worker
40*6236dae4SAndroid Build Coastguard Worker  rem Ensure we have the required arguments
41*6236dae4SAndroid Build Coastguard Worker  if /i "%~1" == "" goto syntax
42*6236dae4SAndroid Build Coastguard Worker
43*6236dae4SAndroid Build Coastguard Worker  rem Calculate the program files directory
44*6236dae4SAndroid Build Coastguard Worker  if defined PROGRAMFILES (
45*6236dae4SAndroid Build Coastguard Worker    set "PF=%PROGRAMFILES%"
46*6236dae4SAndroid Build Coastguard Worker    set OS_PLATFORM=x86
47*6236dae4SAndroid Build Coastguard Worker  )
48*6236dae4SAndroid Build Coastguard Worker  if defined PROGRAMFILES(x86) (
49*6236dae4SAndroid Build Coastguard Worker    rem Visual Studio was x86-only prior to 14.3
50*6236dae4SAndroid Build Coastguard Worker    if /i "%~1" == "vc14.3" (
51*6236dae4SAndroid Build Coastguard Worker      set "PF=%PROGRAMFILES%"
52*6236dae4SAndroid Build Coastguard Worker    ) else (
53*6236dae4SAndroid Build Coastguard Worker      set "PF=%PROGRAMFILES(x86)%"
54*6236dae4SAndroid Build Coastguard Worker    )
55*6236dae4SAndroid Build Coastguard Worker    set OS_PLATFORM=x64
56*6236dae4SAndroid Build Coastguard Worker  )
57*6236dae4SAndroid Build Coastguard Worker
58*6236dae4SAndroid Build Coastguard Worker:parseArgs
59*6236dae4SAndroid Build Coastguard Worker  if not "%~1" == "" (
60*6236dae4SAndroid Build Coastguard Worker    if /i "%~1" == "vc10" (
61*6236dae4SAndroid Build Coastguard Worker      set VC_VER=10.0
62*6236dae4SAndroid Build Coastguard Worker      set VC_DESC=VC10
63*6236dae4SAndroid Build Coastguard Worker      set "VC_PATH=Microsoft Visual Studio 10.0\VC"
64*6236dae4SAndroid Build Coastguard Worker    ) else if /i "%~1" == "vc11" (
65*6236dae4SAndroid Build Coastguard Worker      set VC_VER=11.0
66*6236dae4SAndroid Build Coastguard Worker      set VC_DESC=VC11
67*6236dae4SAndroid Build Coastguard Worker      set "VC_PATH=Microsoft Visual Studio 11.0\VC"
68*6236dae4SAndroid Build Coastguard Worker    ) else if /i "%~1" == "vc12" (
69*6236dae4SAndroid Build Coastguard Worker      set VC_VER=12.0
70*6236dae4SAndroid Build Coastguard Worker      set VC_DESC=VC12
71*6236dae4SAndroid Build Coastguard Worker      set "VC_PATH=Microsoft Visual Studio 12.0\VC"
72*6236dae4SAndroid Build Coastguard Worker    ) else if /i "%~1" == "vc14" (
73*6236dae4SAndroid Build Coastguard Worker      set VC_VER=14.0
74*6236dae4SAndroid Build Coastguard Worker      set VC_DESC=VC14
75*6236dae4SAndroid Build Coastguard Worker      set "VC_PATH=Microsoft Visual Studio 14.0\VC"
76*6236dae4SAndroid Build Coastguard Worker    ) else if /i "%~1" == "vc14.1" (
77*6236dae4SAndroid Build Coastguard Worker      set VC_VER=14.1
78*6236dae4SAndroid Build Coastguard Worker      set VC_DESC=VC14.10
79*6236dae4SAndroid Build Coastguard Worker
80*6236dae4SAndroid Build Coastguard Worker      rem Determine the VC14.1 path based on the installed edition in descending
81*6236dae4SAndroid Build Coastguard Worker      rem order (Enterprise, then Professional and finally Community)
82*6236dae4SAndroid Build Coastguard Worker      if exist "%PF%\Microsoft Visual Studio\2017\Enterprise\VC" (
83*6236dae4SAndroid Build Coastguard Worker        set "VC_PATH=Microsoft Visual Studio\2017\Enterprise\VC"
84*6236dae4SAndroid Build Coastguard Worker      ) else if exist "%PF%\Microsoft Visual Studio\2017\Professional\VC" (
85*6236dae4SAndroid Build Coastguard Worker        set "VC_PATH=Microsoft Visual Studio\2017\Professional\VC"
86*6236dae4SAndroid Build Coastguard Worker      ) else (
87*6236dae4SAndroid Build Coastguard Worker        set "VC_PATH=Microsoft Visual Studio\2017\Community\VC"
88*6236dae4SAndroid Build Coastguard Worker      )
89*6236dae4SAndroid Build Coastguard Worker    ) else if /i "%~1" == "vc14.2" (
90*6236dae4SAndroid Build Coastguard Worker      set VC_VER=14.2
91*6236dae4SAndroid Build Coastguard Worker      set VC_DESC=VC14.20
92*6236dae4SAndroid Build Coastguard Worker
93*6236dae4SAndroid Build Coastguard Worker      rem Determine the VC14.2 path based on the installed edition in descending
94*6236dae4SAndroid Build Coastguard Worker      rem order (Enterprise, then Professional and finally Community)
95*6236dae4SAndroid Build Coastguard Worker      if exist "%PF%\Microsoft Visual Studio\2019\Enterprise\VC" (
96*6236dae4SAndroid Build Coastguard Worker        set "VC_PATH=Microsoft Visual Studio\2019\Enterprise\VC"
97*6236dae4SAndroid Build Coastguard Worker      ) else if exist "%PF%\Microsoft Visual Studio\2019\Professional\VC" (
98*6236dae4SAndroid Build Coastguard Worker        set "VC_PATH=Microsoft Visual Studio\2019\Professional\VC"
99*6236dae4SAndroid Build Coastguard Worker      ) else (
100*6236dae4SAndroid Build Coastguard Worker        set "VC_PATH=Microsoft Visual Studio\2019\Community\VC"
101*6236dae4SAndroid Build Coastguard Worker      )
102*6236dae4SAndroid Build Coastguard Worker    ) else if /i "%~1" == "vc14.3" (
103*6236dae4SAndroid Build Coastguard Worker      set VC_VER=14.3
104*6236dae4SAndroid Build Coastguard Worker      set VC_DESC=VC14.30
105*6236dae4SAndroid Build Coastguard Worker
106*6236dae4SAndroid Build Coastguard Worker      rem Determine the VC14.3 path based on the installed edition in descending
107*6236dae4SAndroid Build Coastguard Worker      rem order (Enterprise, then Professional and finally Community)
108*6236dae4SAndroid Build Coastguard Worker      if exist "%PF%\Microsoft Visual Studio\2022\Enterprise\VC" (
109*6236dae4SAndroid Build Coastguard Worker        set "VC_PATH=Microsoft Visual Studio\2022\Enterprise\VC"
110*6236dae4SAndroid Build Coastguard Worker      ) else if exist "%PF%\Microsoft Visual Studio\2022\Professional\VC" (
111*6236dae4SAndroid Build Coastguard Worker        set "VC_PATH=Microsoft Visual Studio\2022\Professional\VC"
112*6236dae4SAndroid Build Coastguard Worker      ) else (
113*6236dae4SAndroid Build Coastguard Worker        set "VC_PATH=Microsoft Visual Studio\2022\Community\VC"
114*6236dae4SAndroid Build Coastguard Worker      )
115*6236dae4SAndroid Build Coastguard Worker    ) else if /i "%~1%" == "x86" (
116*6236dae4SAndroid Build Coastguard Worker      set BUILD_PLATFORM=x86
117*6236dae4SAndroid Build Coastguard Worker    ) else if /i "%~1%" == "x64" (
118*6236dae4SAndroid Build Coastguard Worker      set BUILD_PLATFORM=x64
119*6236dae4SAndroid Build Coastguard Worker    ) else if /i "%~1%" == "debug" (
120*6236dae4SAndroid Build Coastguard Worker      set BUILD_CONFIG=debug
121*6236dae4SAndroid Build Coastguard Worker    ) else if /i "%~1%" == "release" (
122*6236dae4SAndroid Build Coastguard Worker      set BUILD_CONFIG=release
123*6236dae4SAndroid Build Coastguard Worker    ) else if /i "%~1" == "-?" (
124*6236dae4SAndroid Build Coastguard Worker      goto syntax
125*6236dae4SAndroid Build Coastguard Worker    ) else if /i "%~1" == "-h" (
126*6236dae4SAndroid Build Coastguard Worker      goto syntax
127*6236dae4SAndroid Build Coastguard Worker    ) else if /i "%~1" == "-help" (
128*6236dae4SAndroid Build Coastguard Worker      goto syntax
129*6236dae4SAndroid Build Coastguard Worker    ) else if /i "%~1" == "-VSpath" (
130*6236dae4SAndroid Build Coastguard Worker      if "%~2" == "" (
131*6236dae4SAndroid Build Coastguard Worker        echo.
132*6236dae4SAndroid Build Coastguard Worker        echo Error. Please provide VS Path.
133*6236dae4SAndroid Build Coastguard Worker        goto error
134*6236dae4SAndroid Build Coastguard Worker      ) else (
135*6236dae4SAndroid Build Coastguard Worker        set "ABS_VC_PATH=%~2\VC"
136*6236dae4SAndroid Build Coastguard Worker        shift
137*6236dae4SAndroid Build Coastguard Worker      )
138*6236dae4SAndroid Build Coastguard Worker    ) else if /i "%~1" == "-perlpath" (
139*6236dae4SAndroid Build Coastguard Worker      if "%~2" == "" (
140*6236dae4SAndroid Build Coastguard Worker        echo.
141*6236dae4SAndroid Build Coastguard Worker        echo Error. Please provide Perl root Path.
142*6236dae4SAndroid Build Coastguard Worker        goto error
143*6236dae4SAndroid Build Coastguard Worker      ) else (
144*6236dae4SAndroid Build Coastguard Worker        set "PERL_PATH=%~2"
145*6236dae4SAndroid Build Coastguard Worker        shift
146*6236dae4SAndroid Build Coastguard Worker      )
147*6236dae4SAndroid Build Coastguard Worker    ) else (
148*6236dae4SAndroid Build Coastguard Worker      if not defined START_DIR (
149*6236dae4SAndroid Build Coastguard Worker        set "START_DIR=%~1%"
150*6236dae4SAndroid Build Coastguard Worker      ) else (
151*6236dae4SAndroid Build Coastguard Worker        goto unknown
152*6236dae4SAndroid Build Coastguard Worker      )
153*6236dae4SAndroid Build Coastguard Worker    )
154*6236dae4SAndroid Build Coastguard Worker
155*6236dae4SAndroid Build Coastguard Worker    shift & goto parseArgs
156*6236dae4SAndroid Build Coastguard Worker  )
157*6236dae4SAndroid Build Coastguard Worker
158*6236dae4SAndroid Build Coastguard Worker:prerequisites
159*6236dae4SAndroid Build Coastguard Worker  rem Compiler is a required parameter
160*6236dae4SAndroid Build Coastguard Worker  if not defined VC_VER goto syntax
161*6236dae4SAndroid Build Coastguard Worker
162*6236dae4SAndroid Build Coastguard Worker  rem Default the start directory if one isn't specified
163*6236dae4SAndroid Build Coastguard Worker  if not defined START_DIR set START_DIR=..\..\openssl
164*6236dae4SAndroid Build Coastguard Worker
165*6236dae4SAndroid Build Coastguard Worker  if not defined ABS_VC_PATH (
166*6236dae4SAndroid Build Coastguard Worker    rem Check we have a program files directory
167*6236dae4SAndroid Build Coastguard Worker    if not defined PF goto nopf
168*6236dae4SAndroid Build Coastguard Worker    set "ABS_VC_PATH=%PF%\%VC_PATH%"
169*6236dae4SAndroid Build Coastguard Worker  )
170*6236dae4SAndroid Build Coastguard Worker
171*6236dae4SAndroid Build Coastguard Worker  rem Check we have Visual Studio installed
172*6236dae4SAndroid Build Coastguard Worker  if not exist "%ABS_VC_PATH%" goto novc
173*6236dae4SAndroid Build Coastguard Worker
174*6236dae4SAndroid Build Coastguard Worker  if not defined PERL_PATH (
175*6236dae4SAndroid Build Coastguard Worker    rem Check we have Perl in our path
176*6236dae4SAndroid Build Coastguard Worker    perl --version <NUL 1>NUL 2>&1
177*6236dae4SAndroid Build Coastguard Worker    if errorlevel 1 (
178*6236dae4SAndroid Build Coastguard Worker      rem It isn't so check we have it installed and set the path if it is
179*6236dae4SAndroid Build Coastguard Worker      if exist "%SystemDrive%\Perl" (
180*6236dae4SAndroid Build Coastguard Worker        set "PATH=%SystemDrive%\Perl\bin;%PATH%"
181*6236dae4SAndroid Build Coastguard Worker      ) else (
182*6236dae4SAndroid Build Coastguard Worker        if exist "%SystemDrive%\Perl64" (
183*6236dae4SAndroid Build Coastguard Worker          set "PATH=%SystemDrive%\Perl64\bin;%PATH%"
184*6236dae4SAndroid Build Coastguard Worker        ) else (
185*6236dae4SAndroid Build Coastguard Worker          goto noperl
186*6236dae4SAndroid Build Coastguard Worker        )
187*6236dae4SAndroid Build Coastguard Worker      )
188*6236dae4SAndroid Build Coastguard Worker    )
189*6236dae4SAndroid Build Coastguard Worker  ) else (
190*6236dae4SAndroid Build Coastguard Worker    set "PATH=%PERL_PATH%\Perl\bin;%PATH%"
191*6236dae4SAndroid Build Coastguard Worker  )
192*6236dae4SAndroid Build Coastguard Worker
193*6236dae4SAndroid Build Coastguard Worker  rem Check the start directory exists
194*6236dae4SAndroid Build Coastguard Worker  if not exist "%START_DIR%" goto noopenssl
195*6236dae4SAndroid Build Coastguard Worker
196*6236dae4SAndroid Build Coastguard Worker:setup
197*6236dae4SAndroid Build Coastguard Worker  if "%BUILD_PLATFORM%" == "" (
198*6236dae4SAndroid Build Coastguard Worker    if "%VC_VER%" == "6.0" (
199*6236dae4SAndroid Build Coastguard Worker      set BUILD_PLATFORM=x86
200*6236dae4SAndroid Build Coastguard Worker    ) else if "%VC_VER%" == "7.0" (
201*6236dae4SAndroid Build Coastguard Worker      set BUILD_PLATFORM=x86
202*6236dae4SAndroid Build Coastguard Worker    ) else if "%VC_VER%" == "7.1" (
203*6236dae4SAndroid Build Coastguard Worker      set BUILD_PLATFORM=x86
204*6236dae4SAndroid Build Coastguard Worker    ) else (
205*6236dae4SAndroid Build Coastguard Worker      set BUILD_PLATFORM=%OS_PLATFORM%
206*6236dae4SAndroid Build Coastguard Worker    )
207*6236dae4SAndroid Build Coastguard Worker  )
208*6236dae4SAndroid Build Coastguard Worker
209*6236dae4SAndroid Build Coastguard Worker  if "%BUILD_PLATFORM%" == "x86" (
210*6236dae4SAndroid Build Coastguard Worker    set VCVARS_PLATFORM=x86
211*6236dae4SAndroid Build Coastguard Worker  ) else if "%BUILD_PLATFORM%" == "x64" (
212*6236dae4SAndroid Build Coastguard Worker    if "%VC_VER%" == "10.0" set VCVARS_PLATFORM=%BUILD_PLATFORM%
213*6236dae4SAndroid Build Coastguard Worker    if "%VC_VER%" == "11.0" set VCVARS_PLATFORM=amd64
214*6236dae4SAndroid Build Coastguard Worker    if "%VC_VER%" == "12.0" set VCVARS_PLATFORM=amd64
215*6236dae4SAndroid Build Coastguard Worker    if "%VC_VER%" == "14.0" set VCVARS_PLATFORM=amd64
216*6236dae4SAndroid Build Coastguard Worker    if "%VC_VER%" == "14.1" set VCVARS_PLATFORM=amd64
217*6236dae4SAndroid Build Coastguard Worker    if "%VC_VER%" == "14.2" set VCVARS_PLATFORM=amd64
218*6236dae4SAndroid Build Coastguard Worker    if "%VC_VER%" == "14.3" set VCVARS_PLATFORM=amd64
219*6236dae4SAndroid Build Coastguard Worker  )
220*6236dae4SAndroid Build Coastguard Worker
221*6236dae4SAndroid Build Coastguard Worker  if exist "%START_DIR%\ms\do_ms.bat" (
222*6236dae4SAndroid Build Coastguard Worker    set LEGACY_BUILD=TRUE
223*6236dae4SAndroid Build Coastguard Worker  ) else (
224*6236dae4SAndroid Build Coastguard Worker    set LEGACY_BUILD=FALSE
225*6236dae4SAndroid Build Coastguard Worker  )
226*6236dae4SAndroid Build Coastguard Worker
227*6236dae4SAndroid Build Coastguard Worker:start
228*6236dae4SAndroid Build Coastguard Worker  echo.
229*6236dae4SAndroid Build Coastguard Worker  set "SAVED_PATH=%CD%"
230*6236dae4SAndroid Build Coastguard Worker
231*6236dae4SAndroid Build Coastguard Worker  if "%VC_VER%" == "14.1" (
232*6236dae4SAndroid Build Coastguard Worker    call "%ABS_VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
233*6236dae4SAndroid Build Coastguard Worker  ) else if "%VC_VER%" == "14.2" (
234*6236dae4SAndroid Build Coastguard Worker    call "%ABS_VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
235*6236dae4SAndroid Build Coastguard Worker  ) else if "%VC_VER%" == "14.3" (
236*6236dae4SAndroid Build Coastguard Worker    call "%ABS_VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
237*6236dae4SAndroid Build Coastguard Worker  ) else (
238*6236dae4SAndroid Build Coastguard Worker    call "%ABS_VC_PATH%\vcvarsall" %VCVARS_PLATFORM%
239*6236dae4SAndroid Build Coastguard Worker  )
240*6236dae4SAndroid Build Coastguard Worker
241*6236dae4SAndroid Build Coastguard Worker  echo.
242*6236dae4SAndroid Build Coastguard Worker
243*6236dae4SAndroid Build Coastguard Worker  cd /d "%START_DIR%" || (echo Error: Failed cd start & exit /B 1)
244*6236dae4SAndroid Build Coastguard Worker  rem Save the full path of the OpenSSL source dir
245*6236dae4SAndroid Build Coastguard Worker  set "SOURCE_PATH=%CD%"
246*6236dae4SAndroid Build Coastguard Worker
247*6236dae4SAndroid Build Coastguard Worker  rem Set temporary paths for building and installing OpenSSL. If a temporary
248*6236dae4SAndroid Build Coastguard Worker  rem path is not the same as the source path then it is *removed* after the
249*6236dae4SAndroid Build Coastguard Worker  rem installation is completed.
250*6236dae4SAndroid Build Coastguard Worker  rem
251*6236dae4SAndroid Build Coastguard Worker  rem For legacy OpenSSL the temporary build path must be the source path.
252*6236dae4SAndroid Build Coastguard Worker  rem
253*6236dae4SAndroid Build Coastguard Worker  rem For OpenSSL 1.1.x the temporary paths must be separate not a descendant
254*6236dae4SAndroid Build Coastguard Worker  rem of the other, otherwise pdb files will be lost between builds.
255*6236dae4SAndroid Build Coastguard Worker  rem https://github.com/openssl/openssl/issues/10005
256*6236dae4SAndroid Build Coastguard Worker  rem
257*6236dae4SAndroid Build Coastguard Worker  if "%LEGACY_BUILD%" == "TRUE" (
258*6236dae4SAndroid Build Coastguard Worker    set "TMP_BUILD_PATH=%SOURCE_PATH%"
259*6236dae4SAndroid Build Coastguard Worker    set "TMP_INSTALL_PATH=%SOURCE_PATH%"
260*6236dae4SAndroid Build Coastguard Worker  ) else (
261*6236dae4SAndroid Build Coastguard Worker    set "TMP_BUILD_PATH=%SOURCE_PATH%\build\tmp_build"
262*6236dae4SAndroid Build Coastguard Worker    set "TMP_INSTALL_PATH=%SOURCE_PATH%\build\tmp_install"
263*6236dae4SAndroid Build Coastguard Worker  )
264*6236dae4SAndroid Build Coastguard Worker
265*6236dae4SAndroid Build Coastguard Worker  goto %BUILD_PLATFORM%
266*6236dae4SAndroid Build Coastguard Worker
267*6236dae4SAndroid Build Coastguard Worker:x64
268*6236dae4SAndroid Build Coastguard Worker  rem Calculate our output directory
269*6236dae4SAndroid Build Coastguard Worker  set OUTDIR=build\Win64\%VC_DESC%
270*6236dae4SAndroid Build Coastguard Worker  if not exist %OUTDIR% md %OUTDIR%
271*6236dae4SAndroid Build Coastguard Worker
272*6236dae4SAndroid Build Coastguard Worker  if not "%BUILD_CONFIG%" == "release" (
273*6236dae4SAndroid Build Coastguard Worker    rem Configuring 64-bit Static Library Debug Build
274*6236dae4SAndroid Build Coastguard Worker    call :configure x64 debug static %LEGACY_BUILD%
275*6236dae4SAndroid Build Coastguard Worker
276*6236dae4SAndroid Build Coastguard Worker    rem Perform the build
277*6236dae4SAndroid Build Coastguard Worker    call :build x64 static %LEGACY_BUILD%
278*6236dae4SAndroid Build Coastguard Worker
279*6236dae4SAndroid Build Coastguard Worker    rem Perform the install
280*6236dae4SAndroid Build Coastguard Worker    call :install debug static %LEGACY_BUILD%
281*6236dae4SAndroid Build Coastguard Worker
282*6236dae4SAndroid Build Coastguard Worker    rem Configuring 64-bit Shared Library Debug Build
283*6236dae4SAndroid Build Coastguard Worker    call :configure x64 debug shared %LEGACY_BUILD%
284*6236dae4SAndroid Build Coastguard Worker
285*6236dae4SAndroid Build Coastguard Worker    rem Perform the build
286*6236dae4SAndroid Build Coastguard Worker    call :build x64 shared %LEGACY_BUILD%
287*6236dae4SAndroid Build Coastguard Worker
288*6236dae4SAndroid Build Coastguard Worker    rem Perform the install
289*6236dae4SAndroid Build Coastguard Worker    call :install debug shared %LEGACY_BUILD%
290*6236dae4SAndroid Build Coastguard Worker  )
291*6236dae4SAndroid Build Coastguard Worker
292*6236dae4SAndroid Build Coastguard Worker  if not "%BUILD_CONFIG%" == "debug" (
293*6236dae4SAndroid Build Coastguard Worker    rem Configuring 64-bit Static Library Release Build
294*6236dae4SAndroid Build Coastguard Worker    call :configure x64 release static %LEGACY_BUILD%
295*6236dae4SAndroid Build Coastguard Worker
296*6236dae4SAndroid Build Coastguard Worker    rem Perform the build
297*6236dae4SAndroid Build Coastguard Worker    call :build x64 static %LEGACY_BUILD%
298*6236dae4SAndroid Build Coastguard Worker
299*6236dae4SAndroid Build Coastguard Worker    rem Perform the install
300*6236dae4SAndroid Build Coastguard Worker    call :install release static %LEGACY_BUILD%
301*6236dae4SAndroid Build Coastguard Worker
302*6236dae4SAndroid Build Coastguard Worker    rem Configuring 64-bit Shared Library Release Build
303*6236dae4SAndroid Build Coastguard Worker    call :configure x64 release shared %LEGACY_BUILD%
304*6236dae4SAndroid Build Coastguard Worker
305*6236dae4SAndroid Build Coastguard Worker    rem Perform the build
306*6236dae4SAndroid Build Coastguard Worker    call :build x64 shared %LEGACY_BUILD%
307*6236dae4SAndroid Build Coastguard Worker
308*6236dae4SAndroid Build Coastguard Worker    rem Perform the install
309*6236dae4SAndroid Build Coastguard Worker    call :install release shared %LEGACY_BUILD%
310*6236dae4SAndroid Build Coastguard Worker  )
311*6236dae4SAndroid Build Coastguard Worker
312*6236dae4SAndroid Build Coastguard Worker  goto success
313*6236dae4SAndroid Build Coastguard Worker
314*6236dae4SAndroid Build Coastguard Worker:x86
315*6236dae4SAndroid Build Coastguard Worker  rem Calculate our output directory
316*6236dae4SAndroid Build Coastguard Worker  set OUTDIR=build\Win32\%VC_DESC%
317*6236dae4SAndroid Build Coastguard Worker  if not exist %OUTDIR% md %OUTDIR%
318*6236dae4SAndroid Build Coastguard Worker
319*6236dae4SAndroid Build Coastguard Worker  if not "%BUILD_CONFIG%" == "release" (
320*6236dae4SAndroid Build Coastguard Worker    rem Configuring 32-bit Static Library Debug Build
321*6236dae4SAndroid Build Coastguard Worker    call :configure x86 debug static %LEGACY_BUILD%
322*6236dae4SAndroid Build Coastguard Worker
323*6236dae4SAndroid Build Coastguard Worker    rem Perform the build
324*6236dae4SAndroid Build Coastguard Worker    call :build x86 static %LEGACY_BUILD%
325*6236dae4SAndroid Build Coastguard Worker
326*6236dae4SAndroid Build Coastguard Worker    rem Perform the install
327*6236dae4SAndroid Build Coastguard Worker    call :install debug static %LEGACY_BUILD%
328*6236dae4SAndroid Build Coastguard Worker
329*6236dae4SAndroid Build Coastguard Worker    rem Configuring 32-bit Shared Library Debug Build
330*6236dae4SAndroid Build Coastguard Worker    call :configure x86 debug shared %LEGACY_BUILD%
331*6236dae4SAndroid Build Coastguard Worker
332*6236dae4SAndroid Build Coastguard Worker    rem Perform the build
333*6236dae4SAndroid Build Coastguard Worker    call :build x86 shared %LEGACY_BUILD%
334*6236dae4SAndroid Build Coastguard Worker
335*6236dae4SAndroid Build Coastguard Worker    rem Perform the install
336*6236dae4SAndroid Build Coastguard Worker    call :install debug shared %LEGACY_BUILD%
337*6236dae4SAndroid Build Coastguard Worker  )
338*6236dae4SAndroid Build Coastguard Worker
339*6236dae4SAndroid Build Coastguard Worker  if not "%BUILD_CONFIG%" == "debug" (
340*6236dae4SAndroid Build Coastguard Worker    rem Configuring 32-bit Static Library Release Build
341*6236dae4SAndroid Build Coastguard Worker    call :configure x86 release static %LEGACY_BUILD%
342*6236dae4SAndroid Build Coastguard Worker
343*6236dae4SAndroid Build Coastguard Worker    rem Perform the build
344*6236dae4SAndroid Build Coastguard Worker    call :build x86 static %LEGACY_BUILD%
345*6236dae4SAndroid Build Coastguard Worker
346*6236dae4SAndroid Build Coastguard Worker    rem Perform the install
347*6236dae4SAndroid Build Coastguard Worker    call :install release static %LEGACY_BUILD%
348*6236dae4SAndroid Build Coastguard Worker
349*6236dae4SAndroid Build Coastguard Worker    rem Configuring 32-bit Shared Library Release Build
350*6236dae4SAndroid Build Coastguard Worker    call :configure x86 release shared %LEGACY_BUILD%
351*6236dae4SAndroid Build Coastguard Worker
352*6236dae4SAndroid Build Coastguard Worker    rem Perform the build
353*6236dae4SAndroid Build Coastguard Worker    call :build x86 shared %LEGACY_BUILD%
354*6236dae4SAndroid Build Coastguard Worker
355*6236dae4SAndroid Build Coastguard Worker    rem Perform the install
356*6236dae4SAndroid Build Coastguard Worker    call :install release shared %LEGACY_BUILD%
357*6236dae4SAndroid Build Coastguard Worker  )
358*6236dae4SAndroid Build Coastguard Worker
359*6236dae4SAndroid Build Coastguard Worker  goto success
360*6236dae4SAndroid Build Coastguard Worker
361*6236dae4SAndroid Build Coastguard Workerrem Function to configure the build.
362*6236dae4SAndroid Build Coastguard Workerrem
363*6236dae4SAndroid Build Coastguard Workerrem %1 - Platform (x86 or x64)
364*6236dae4SAndroid Build Coastguard Workerrem %2 - Configuration (release or debug)
365*6236dae4SAndroid Build Coastguard Workerrem %3 - Build Type (static or shared)
366*6236dae4SAndroid Build Coastguard Workerrem %4 - Build type (TRUE for legacy aka pre v1.1.0; otherwise FALSE)
367*6236dae4SAndroid Build Coastguard Workerrem
368*6236dae4SAndroid Build Coastguard Worker:configure
369*6236dae4SAndroid Build Coastguard Worker  setlocal
370*6236dae4SAndroid Build Coastguard Worker
371*6236dae4SAndroid Build Coastguard Worker  if "%1" == "" exit /B 1
372*6236dae4SAndroid Build Coastguard Worker  if "%2" == "" exit /B 1
373*6236dae4SAndroid Build Coastguard Worker  if "%3" == "" exit /B 1
374*6236dae4SAndroid Build Coastguard Worker  if "%4" == "" exit /B 1
375*6236dae4SAndroid Build Coastguard Worker
376*6236dae4SAndroid Build Coastguard Worker  if not exist "%TMP_BUILD_PATH%" mkdir "%TMP_BUILD_PATH%"
377*6236dae4SAndroid Build Coastguard Worker  cd /d "%TMP_BUILD_PATH%" || (echo Error: Failed cd build & exit /B 1)
378*6236dae4SAndroid Build Coastguard Worker
379*6236dae4SAndroid Build Coastguard Worker  if "%4" == "TRUE" (
380*6236dae4SAndroid Build Coastguard Worker    rem Calculate the configure options
381*6236dae4SAndroid Build Coastguard Worker    if "%1" == "x86" (
382*6236dae4SAndroid Build Coastguard Worker      if "%2" == "debug" (
383*6236dae4SAndroid Build Coastguard Worker        set options=debug-VC-WIN32
384*6236dae4SAndroid Build Coastguard Worker      ) else if "%2" == "release" (
385*6236dae4SAndroid Build Coastguard Worker        set options=VC-WIN32
386*6236dae4SAndroid Build Coastguard Worker      ) else (
387*6236dae4SAndroid Build Coastguard Worker        exit /B 1
388*6236dae4SAndroid Build Coastguard Worker      )
389*6236dae4SAndroid Build Coastguard Worker
390*6236dae4SAndroid Build Coastguard Worker      set options=!options! no-asm
391*6236dae4SAndroid Build Coastguard Worker    ) else if "%1" == "x64" (
392*6236dae4SAndroid Build Coastguard Worker      if "%2" == "debug" (
393*6236dae4SAndroid Build Coastguard Worker        set options=debug-VC-WIN64A
394*6236dae4SAndroid Build Coastguard Worker      ) else if "%2" == "release" (
395*6236dae4SAndroid Build Coastguard Worker        set options=VC-WIN64A
396*6236dae4SAndroid Build Coastguard Worker      ) else (
397*6236dae4SAndroid Build Coastguard Worker        exit /B 1
398*6236dae4SAndroid Build Coastguard Worker      )
399*6236dae4SAndroid Build Coastguard Worker    ) else (
400*6236dae4SAndroid Build Coastguard Worker      exit /B 1
401*6236dae4SAndroid Build Coastguard Worker    )
402*6236dae4SAndroid Build Coastguard Worker  ) else if "%4" == "FALSE" (
403*6236dae4SAndroid Build Coastguard Worker    rem Has configure already been ran?
404*6236dae4SAndroid Build Coastguard Worker    if exist makefile (
405*6236dae4SAndroid Build Coastguard Worker      rem Clean up the previous build
406*6236dae4SAndroid Build Coastguard Worker      nmake clean
407*6236dae4SAndroid Build Coastguard Worker
408*6236dae4SAndroid Build Coastguard Worker      rem Remove the old makefile
409*6236dae4SAndroid Build Coastguard Worker      del makefile 1>nul
410*6236dae4SAndroid Build Coastguard Worker    )
411*6236dae4SAndroid Build Coastguard Worker
412*6236dae4SAndroid Build Coastguard Worker    rem Calculate the configure options
413*6236dae4SAndroid Build Coastguard Worker    if "%1" == "x86" (
414*6236dae4SAndroid Build Coastguard Worker      set options=VC-WIN32
415*6236dae4SAndroid Build Coastguard Worker    ) else if "%1" == "x64" (
416*6236dae4SAndroid Build Coastguard Worker      set options=VC-WIN64A
417*6236dae4SAndroid Build Coastguard Worker    ) else (
418*6236dae4SAndroid Build Coastguard Worker      exit /B 1
419*6236dae4SAndroid Build Coastguard Worker    )
420*6236dae4SAndroid Build Coastguard Worker
421*6236dae4SAndroid Build Coastguard Worker    if "%2" == "debug" (
422*6236dae4SAndroid Build Coastguard Worker      set options=!options! --debug
423*6236dae4SAndroid Build Coastguard Worker    ) else if "%2" == "release" (
424*6236dae4SAndroid Build Coastguard Worker      set options=!options! --release
425*6236dae4SAndroid Build Coastguard Worker    ) else (
426*6236dae4SAndroid Build Coastguard Worker      exit /B 1
427*6236dae4SAndroid Build Coastguard Worker    )
428*6236dae4SAndroid Build Coastguard Worker
429*6236dae4SAndroid Build Coastguard Worker    if "%3" == "static" (
430*6236dae4SAndroid Build Coastguard Worker      set options=!options! no-shared
431*6236dae4SAndroid Build Coastguard Worker    ) else if not "%3" == "shared" (
432*6236dae4SAndroid Build Coastguard Worker      exit /B 1
433*6236dae4SAndroid Build Coastguard Worker    )
434*6236dae4SAndroid Build Coastguard Worker
435*6236dae4SAndroid Build Coastguard Worker    set options=!options! no-asm
436*6236dae4SAndroid Build Coastguard Worker  ) else (
437*6236dae4SAndroid Build Coastguard Worker    exit /B 1
438*6236dae4SAndroid Build Coastguard Worker  )
439*6236dae4SAndroid Build Coastguard Worker
440*6236dae4SAndroid Build Coastguard Worker  rem Run the configure
441*6236dae4SAndroid Build Coastguard Worker  perl "%SOURCE_PATH%\Configure" %options% "--prefix=%TMP_INSTALL_PATH%"
442*6236dae4SAndroid Build Coastguard Worker
443*6236dae4SAndroid Build Coastguard Worker  exit /B %ERRORLEVEL%
444*6236dae4SAndroid Build Coastguard Worker
445*6236dae4SAndroid Build Coastguard Workerrem Main build function.
446*6236dae4SAndroid Build Coastguard Workerrem
447*6236dae4SAndroid Build Coastguard Workerrem %1 - Platform (x86 or x64)
448*6236dae4SAndroid Build Coastguard Workerrem %2 - Build Type (static or shared)
449*6236dae4SAndroid Build Coastguard Workerrem %3 - Build type (TRUE for legacy aka pre v1.1.0; otherwise FALSE)
450*6236dae4SAndroid Build Coastguard Workerrem
451*6236dae4SAndroid Build Coastguard Worker:build
452*6236dae4SAndroid Build Coastguard Worker  setlocal
453*6236dae4SAndroid Build Coastguard Worker
454*6236dae4SAndroid Build Coastguard Worker  if "%1" == "" exit /B 1
455*6236dae4SAndroid Build Coastguard Worker  if "%2" == "" exit /B 1
456*6236dae4SAndroid Build Coastguard Worker  if "%3" == "" exit /B 1
457*6236dae4SAndroid Build Coastguard Worker
458*6236dae4SAndroid Build Coastguard Worker  cd /d "%TMP_BUILD_PATH%" || (echo Error: Failed cd build & exit /B 1)
459*6236dae4SAndroid Build Coastguard Worker
460*6236dae4SAndroid Build Coastguard Worker  if "%3" == "TRUE" (
461*6236dae4SAndroid Build Coastguard Worker    if "%1" == "x86" (
462*6236dae4SAndroid Build Coastguard Worker      call ms\do_ms.bat
463*6236dae4SAndroid Build Coastguard Worker    ) else if "%1" == "x64" (
464*6236dae4SAndroid Build Coastguard Worker      call ms\do_win64a.bat
465*6236dae4SAndroid Build Coastguard Worker    ) else (
466*6236dae4SAndroid Build Coastguard Worker      exit /B 1
467*6236dae4SAndroid Build Coastguard Worker    )
468*6236dae4SAndroid Build Coastguard Worker
469*6236dae4SAndroid Build Coastguard Worker    if "%2" == "static" (
470*6236dae4SAndroid Build Coastguard Worker      nmake -f ms\nt.mak
471*6236dae4SAndroid Build Coastguard Worker    ) else if "%2" == "shared" (
472*6236dae4SAndroid Build Coastguard Worker      nmake -f ms\ntdll.mak
473*6236dae4SAndroid Build Coastguard Worker    ) else (
474*6236dae4SAndroid Build Coastguard Worker      exit /B 1
475*6236dae4SAndroid Build Coastguard Worker    )
476*6236dae4SAndroid Build Coastguard Worker  ) else if "%3" == "FALSE" (
477*6236dae4SAndroid Build Coastguard Worker    nmake
478*6236dae4SAndroid Build Coastguard Worker  ) else (
479*6236dae4SAndroid Build Coastguard Worker    exit /B 1
480*6236dae4SAndroid Build Coastguard Worker  )
481*6236dae4SAndroid Build Coastguard Worker
482*6236dae4SAndroid Build Coastguard Worker  exit /B 0
483*6236dae4SAndroid Build Coastguard Worker
484*6236dae4SAndroid Build Coastguard Workerrem Main installation function.
485*6236dae4SAndroid Build Coastguard Workerrem
486*6236dae4SAndroid Build Coastguard Workerrem %1 - Configuration (release or debug)
487*6236dae4SAndroid Build Coastguard Workerrem %2 - Build Type (static or shared)
488*6236dae4SAndroid Build Coastguard Workerrem %3 - Build type (TRUE for legacy aka pre v1.1.0; otherwise FALSE)
489*6236dae4SAndroid Build Coastguard Workerrem
490*6236dae4SAndroid Build Coastguard Worker:install
491*6236dae4SAndroid Build Coastguard Worker  setlocal
492*6236dae4SAndroid Build Coastguard Worker
493*6236dae4SAndroid Build Coastguard Worker  if "%1" == "" exit /B 1
494*6236dae4SAndroid Build Coastguard Worker  if "%2" == "" exit /B 1
495*6236dae4SAndroid Build Coastguard Worker  if "%3" == "" exit /B 1
496*6236dae4SAndroid Build Coastguard Worker
497*6236dae4SAndroid Build Coastguard Worker  rem Copy the generated files to our directory structure
498*6236dae4SAndroid Build Coastguard Worker  if "%3" == "TRUE" (
499*6236dae4SAndroid Build Coastguard Worker    rem There's no actual installation for legacy OpenSSL, the files are copied
500*6236dae4SAndroid Build Coastguard Worker    rem from the build dir (for legacy this is same as source dir) to the final
501*6236dae4SAndroid Build Coastguard Worker    rem location.
502*6236dae4SAndroid Build Coastguard Worker    cd /d "%SOURCE_PATH%" || (echo Error: Failed cd source & exit /B 1)
503*6236dae4SAndroid Build Coastguard Worker    if "%1" == "debug" (
504*6236dae4SAndroid Build Coastguard Worker      if "%2" == "static" (
505*6236dae4SAndroid Build Coastguard Worker        rem Move the output directories
506*6236dae4SAndroid Build Coastguard Worker        if exist "%OUTDIR%\LIB Debug" (
507*6236dae4SAndroid Build Coastguard Worker          copy /y out32.dbg\* "%OUTDIR%\LIB Debug" 1>nul
508*6236dae4SAndroid Build Coastguard Worker          rd out32.dbg /s /q
509*6236dae4SAndroid Build Coastguard Worker        ) else (
510*6236dae4SAndroid Build Coastguard Worker          move out32.dbg "%OUTDIR%\LIB Debug" 1>nul
511*6236dae4SAndroid Build Coastguard Worker        )
512*6236dae4SAndroid Build Coastguard Worker
513*6236dae4SAndroid Build Coastguard Worker        rem Move the PDB files
514*6236dae4SAndroid Build Coastguard Worker        move tmp32.dbg\lib.pdb "%OUTDIR%\LIB Debug" 1>nul
515*6236dae4SAndroid Build Coastguard Worker
516*6236dae4SAndroid Build Coastguard Worker        rem Remove the intermediate directories
517*6236dae4SAndroid Build Coastguard Worker        rd tmp32.dbg /s /q
518*6236dae4SAndroid Build Coastguard Worker      ) else if "%2" == "shared" (
519*6236dae4SAndroid Build Coastguard Worker        if exist "%OUTDIR%\DLL Debug" (
520*6236dae4SAndroid Build Coastguard Worker          copy /y out32dll.dbg\* "%OUTDIR%\DLL Debug" 1>nul
521*6236dae4SAndroid Build Coastguard Worker          rd out32dll.dbg /s /q
522*6236dae4SAndroid Build Coastguard Worker        ) else (
523*6236dae4SAndroid Build Coastguard Worker          move out32dll.dbg "%OUTDIR%\DLL Debug" 1>nul
524*6236dae4SAndroid Build Coastguard Worker        )
525*6236dae4SAndroid Build Coastguard Worker
526*6236dae4SAndroid Build Coastguard Worker        rem Move the PDB files
527*6236dae4SAndroid Build Coastguard Worker        move tmp32dll.dbg\lib.pdb "%OUTDIR%\DLL Debug" 1>nul
528*6236dae4SAndroid Build Coastguard Worker
529*6236dae4SAndroid Build Coastguard Worker        rem Remove the intermediate directories
530*6236dae4SAndroid Build Coastguard Worker        rd tmp32dll.dbg /s /q
531*6236dae4SAndroid Build Coastguard Worker      ) else (
532*6236dae4SAndroid Build Coastguard Worker        exit /B 1
533*6236dae4SAndroid Build Coastguard Worker      )
534*6236dae4SAndroid Build Coastguard Worker    ) else if "%1" == "release" (
535*6236dae4SAndroid Build Coastguard Worker      if "%2" == "static" (
536*6236dae4SAndroid Build Coastguard Worker        rem Move the output directories
537*6236dae4SAndroid Build Coastguard Worker        if exist "%OUTDIR%\LIB Release" (
538*6236dae4SAndroid Build Coastguard Worker          copy /y out32\* "%OUTDIR%\LIB Release" 1>nul
539*6236dae4SAndroid Build Coastguard Worker          rd out32 /s /q
540*6236dae4SAndroid Build Coastguard Worker        ) else (
541*6236dae4SAndroid Build Coastguard Worker          move out32 "%OUTDIR%\LIB Release" 1>nul
542*6236dae4SAndroid Build Coastguard Worker        )
543*6236dae4SAndroid Build Coastguard Worker
544*6236dae4SAndroid Build Coastguard Worker        rem Move the PDB files
545*6236dae4SAndroid Build Coastguard Worker        move tmp32\lib.pdb "%OUTDIR%\LIB Release" 1>nul
546*6236dae4SAndroid Build Coastguard Worker
547*6236dae4SAndroid Build Coastguard Worker        rem Remove the intermediate directories
548*6236dae4SAndroid Build Coastguard Worker        rd tmp32 /s /q
549*6236dae4SAndroid Build Coastguard Worker      ) else if "%2" == "shared" (
550*6236dae4SAndroid Build Coastguard Worker        if exist "%OUTDIR%\DLL Release" (
551*6236dae4SAndroid Build Coastguard Worker          copy /y out32dll\* "%OUTDIR%\DLL Release" 1>nul
552*6236dae4SAndroid Build Coastguard Worker          rd out32dll /s /q
553*6236dae4SAndroid Build Coastguard Worker        ) else (
554*6236dae4SAndroid Build Coastguard Worker          move out32dll "%OUTDIR%\DLL Release" 1>nul
555*6236dae4SAndroid Build Coastguard Worker        )
556*6236dae4SAndroid Build Coastguard Worker
557*6236dae4SAndroid Build Coastguard Worker        rem Move the PDB files
558*6236dae4SAndroid Build Coastguard Worker        move tmp32dll\lib.pdb "%OUTDIR%\DLL Release" 1>nul
559*6236dae4SAndroid Build Coastguard Worker
560*6236dae4SAndroid Build Coastguard Worker        rem Remove the intermediate directories
561*6236dae4SAndroid Build Coastguard Worker        rd tmp32dll /s /q
562*6236dae4SAndroid Build Coastguard Worker      ) else (
563*6236dae4SAndroid Build Coastguard Worker        exit /B 1
564*6236dae4SAndroid Build Coastguard Worker      )
565*6236dae4SAndroid Build Coastguard Worker    )
566*6236dae4SAndroid Build Coastguard Worker  ) else if "%3" == "FALSE" (
567*6236dae4SAndroid Build Coastguard Worker    cd /d "%TMP_BUILD_PATH%" || (echo Error: Failed cd build & exit /B 1)
568*6236dae4SAndroid Build Coastguard Worker
569*6236dae4SAndroid Build Coastguard Worker    rem Perform the installation
570*6236dae4SAndroid Build Coastguard Worker    nmake install_sw
571*6236dae4SAndroid Build Coastguard Worker
572*6236dae4SAndroid Build Coastguard Worker    cd /d "%SOURCE_PATH%" || (echo Error: Failed cd source & exit /B 1)
573*6236dae4SAndroid Build Coastguard Worker
574*6236dae4SAndroid Build Coastguard Worker    rem Move the output directories
575*6236dae4SAndroid Build Coastguard Worker    if "%1" == "debug" (
576*6236dae4SAndroid Build Coastguard Worker      if "%2" == "static" (
577*6236dae4SAndroid Build Coastguard Worker        if not exist "%OUTDIR%\LIB Debug" (
578*6236dae4SAndroid Build Coastguard Worker          mkdir "%OUTDIR%\LIB Debug" 1>nul
579*6236dae4SAndroid Build Coastguard Worker        )
580*6236dae4SAndroid Build Coastguard Worker
581*6236dae4SAndroid Build Coastguard Worker        move "%TMP_INSTALL_PATH%\lib\*.lib" "%OUTDIR%\LIB Debug" 1>nul
582*6236dae4SAndroid Build Coastguard Worker        move "%TMP_INSTALL_PATH%\lib\*.pdb" "%OUTDIR%\LIB Debug" 1>nul
583*6236dae4SAndroid Build Coastguard Worker        move "%TMP_INSTALL_PATH%\bin\*.exe" "%OUTDIR%\LIB Debug" 1>nul
584*6236dae4SAndroid Build Coastguard Worker        move "%TMP_INSTALL_PATH%\bin\*.pdb" "%OUTDIR%\LIB Debug" 1>nul
585*6236dae4SAndroid Build Coastguard Worker        xcopy /E /I /Y "%TMP_INSTALL_PATH%\include" "%OUTDIR%\LIB Debug\include" 1>nul
586*6236dae4SAndroid Build Coastguard Worker      ) else if "%2" == "shared" (
587*6236dae4SAndroid Build Coastguard Worker        if not exist "%OUTDIR%\DLL Debug" (
588*6236dae4SAndroid Build Coastguard Worker          mkdir "%OUTDIR%\DLL Debug" 1>nul
589*6236dae4SAndroid Build Coastguard Worker        )
590*6236dae4SAndroid Build Coastguard Worker
591*6236dae4SAndroid Build Coastguard Worker        move "%TMP_INSTALL_PATH%\lib\*.lib" "%OUTDIR%\DLL Debug" 1>nul
592*6236dae4SAndroid Build Coastguard Worker        if exist "%TMP_INSTALL_PATH%\lib\engines-3" (
593*6236dae4SAndroid Build Coastguard Worker          move "%TMP_INSTALL_PATH%\lib\engines-3\*.dll" "%OUTDIR%\DLL Debug" 1>nul
594*6236dae4SAndroid Build Coastguard Worker          move "%TMP_INSTALL_PATH%\lib\engines-3\*.pdb" "%OUTDIR%\DLL Debug" 1>nul
595*6236dae4SAndroid Build Coastguard Worker        ) else if exist "%TMP_INSTALL_PATH%\lib\engines-1_1" (
596*6236dae4SAndroid Build Coastguard Worker          move "%TMP_INSTALL_PATH%\lib\engines-1_1\*.dll" "%OUTDIR%\DLL Debug" 1>nul
597*6236dae4SAndroid Build Coastguard Worker          move "%TMP_INSTALL_PATH%\lib\engines-1_1\*.pdb" "%OUTDIR%\DLL Debug" 1>nul
598*6236dae4SAndroid Build Coastguard Worker        )
599*6236dae4SAndroid Build Coastguard Worker        move "%TMP_INSTALL_PATH%\bin\*.dll" "%OUTDIR%\DLL Debug" 1>nul
600*6236dae4SAndroid Build Coastguard Worker        move "%TMP_INSTALL_PATH%\bin\*.exe" "%OUTDIR%\DLL Debug" 1>nul
601*6236dae4SAndroid Build Coastguard Worker        move "%TMP_INSTALL_PATH%\bin\*.pdb" "%OUTDIR%\DLL Debug" 1>nul
602*6236dae4SAndroid Build Coastguard Worker        xcopy /E /I /Y "%TMP_INSTALL_PATH%\include" "%OUTDIR%\DLL Debug\include" 1>nul
603*6236dae4SAndroid Build Coastguard Worker      ) else (
604*6236dae4SAndroid Build Coastguard Worker        exit /B 1
605*6236dae4SAndroid Build Coastguard Worker      )
606*6236dae4SAndroid Build Coastguard Worker    ) else if "%1" == "release" (
607*6236dae4SAndroid Build Coastguard Worker      if "%2" == "static" (
608*6236dae4SAndroid Build Coastguard Worker        if not exist "%OUTDIR%\LIB Release" (
609*6236dae4SAndroid Build Coastguard Worker          mkdir "%OUTDIR%\LIB Release" 1>nul
610*6236dae4SAndroid Build Coastguard Worker        )
611*6236dae4SAndroid Build Coastguard Worker
612*6236dae4SAndroid Build Coastguard Worker        move "%TMP_INSTALL_PATH%\lib\*.lib" "%OUTDIR%\LIB Release" 1>nul
613*6236dae4SAndroid Build Coastguard Worker        move "%TMP_INSTALL_PATH%\lib\*.pdb" "%OUTDIR%\LIB Release" 1>nul
614*6236dae4SAndroid Build Coastguard Worker        move "%TMP_INSTALL_PATH%\bin\*.exe" "%OUTDIR%\LIB Release" 1>nul
615*6236dae4SAndroid Build Coastguard Worker        move "%TMP_INSTALL_PATH%\bin\*.pdb" "%OUTDIR%\LIB Release" 1>nul
616*6236dae4SAndroid Build Coastguard Worker        xcopy /E /I /Y "%TMP_INSTALL_PATH%\include" "%OUTDIR%\LIB Release\include" 1>nul
617*6236dae4SAndroid Build Coastguard Worker      ) else if "%2" == "shared" (
618*6236dae4SAndroid Build Coastguard Worker        if not exist "%OUTDIR%\DLL Release" (
619*6236dae4SAndroid Build Coastguard Worker          mkdir "%OUTDIR%\DLL Release" 1>nul
620*6236dae4SAndroid Build Coastguard Worker        )
621*6236dae4SAndroid Build Coastguard Worker
622*6236dae4SAndroid Build Coastguard Worker        move "%TMP_INSTALL_PATH%\lib\*.lib" "%OUTDIR%\DLL Release" 1>nul
623*6236dae4SAndroid Build Coastguard Worker        if exist "%TMP_INSTALL_PATH%\lib\engines-3" (
624*6236dae4SAndroid Build Coastguard Worker          move "%TMP_INSTALL_PATH%\lib\engines-3\*.dll" "%OUTDIR%\DLL Release" 1>nul
625*6236dae4SAndroid Build Coastguard Worker          move "%TMP_INSTALL_PATH%\lib\engines-3\*.pdb" "%OUTDIR%\DLL Release" 1>nul
626*6236dae4SAndroid Build Coastguard Worker        ) else if exist "%TMP_INSTALL_PATH%\lib\engines-1_1" (
627*6236dae4SAndroid Build Coastguard Worker          move "%TMP_INSTALL_PATH%\lib\engines-1_1\*.dll" "%OUTDIR%\DLL Release" 1>nul
628*6236dae4SAndroid Build Coastguard Worker          move "%TMP_INSTALL_PATH%\lib\engines-1_1\*.pdb" "%OUTDIR%\DLL Release" 1>nul
629*6236dae4SAndroid Build Coastguard Worker        )
630*6236dae4SAndroid Build Coastguard Worker        move "%TMP_INSTALL_PATH%\bin\*.dll" "%OUTDIR%\DLL Release" 1>nul
631*6236dae4SAndroid Build Coastguard Worker        move "%TMP_INSTALL_PATH%\bin\*.exe" "%OUTDIR%\DLL Release" 1>nul
632*6236dae4SAndroid Build Coastguard Worker        move "%TMP_INSTALL_PATH%\bin\*.pdb" "%OUTDIR%\DLL Release" 1>nul
633*6236dae4SAndroid Build Coastguard Worker        xcopy /E /I /Y "%TMP_INSTALL_PATH%\include" "%OUTDIR%\DLL Release\include" 1>nul
634*6236dae4SAndroid Build Coastguard Worker      ) else (
635*6236dae4SAndroid Build Coastguard Worker        exit /B 1
636*6236dae4SAndroid Build Coastguard Worker      )
637*6236dae4SAndroid Build Coastguard Worker    ) else (
638*6236dae4SAndroid Build Coastguard Worker      exit /B 1
639*6236dae4SAndroid Build Coastguard Worker    )
640*6236dae4SAndroid Build Coastguard Worker
641*6236dae4SAndroid Build Coastguard Worker    rem Remove the output directories
642*6236dae4SAndroid Build Coastguard Worker    if not "%SOURCE_PATH%" == "%TMP_BUILD_PATH%" (
643*6236dae4SAndroid Build Coastguard Worker      rd "%TMP_BUILD_PATH%" /s /q
644*6236dae4SAndroid Build Coastguard Worker    )
645*6236dae4SAndroid Build Coastguard Worker    if not "%SOURCE_PATH%" == "%TMP_INSTALL_PATH%" (
646*6236dae4SAndroid Build Coastguard Worker      rd "%TMP_INSTALL_PATH%" /s /q
647*6236dae4SAndroid Build Coastguard Worker    )
648*6236dae4SAndroid Build Coastguard Worker  ) else (
649*6236dae4SAndroid Build Coastguard Worker    exit /B 1
650*6236dae4SAndroid Build Coastguard Worker  )
651*6236dae4SAndroid Build Coastguard Worker
652*6236dae4SAndroid Build Coastguard Worker  exit /B 0
653*6236dae4SAndroid Build Coastguard Worker
654*6236dae4SAndroid Build Coastguard Worker:syntax
655*6236dae4SAndroid Build Coastguard Worker  rem Display the help
656*6236dae4SAndroid Build Coastguard Worker  echo.
657*6236dae4SAndroid Build Coastguard Worker  echo Usage: build-openssl ^<compiler^> [platform] [configuration] [directory] [-VSpath] ["VSpath"] [-perlpath] ["perlpath"]
658*6236dae4SAndroid Build Coastguard Worker  echo.
659*6236dae4SAndroid Build Coastguard Worker  echo Compiler:
660*6236dae4SAndroid Build Coastguard Worker  echo.
661*6236dae4SAndroid Build Coastguard Worker  echo vc10      - Use Visual Studio 2010
662*6236dae4SAndroid Build Coastguard Worker  echo vc11      - Use Visual Studio 2012
663*6236dae4SAndroid Build Coastguard Worker  echo vc12      - Use Visual Studio 2013
664*6236dae4SAndroid Build Coastguard Worker  echo vc14      - Use Visual Studio 2015
665*6236dae4SAndroid Build Coastguard Worker  echo vc14.1    - Use Visual Studio 2017
666*6236dae4SAndroid Build Coastguard Worker  echo vc14.2    - Use Visual Studio 2019
667*6236dae4SAndroid Build Coastguard Worker  echo vc14.3    - Use Visual Studio 2022
668*6236dae4SAndroid Build Coastguard Worker  echo.
669*6236dae4SAndroid Build Coastguard Worker  echo Platform:
670*6236dae4SAndroid Build Coastguard Worker  echo.
671*6236dae4SAndroid Build Coastguard Worker  echo x86       - Perform a 32-bit build
672*6236dae4SAndroid Build Coastguard Worker  echo x64       - Perform a 64-bit build
673*6236dae4SAndroid Build Coastguard Worker  echo.
674*6236dae4SAndroid Build Coastguard Worker  echo Configuration:
675*6236dae4SAndroid Build Coastguard Worker  echo.
676*6236dae4SAndroid Build Coastguard Worker  echo debug     - Perform a debug build
677*6236dae4SAndroid Build Coastguard Worker  echo release   - Perform a release build
678*6236dae4SAndroid Build Coastguard Worker  echo.
679*6236dae4SAndroid Build Coastguard Worker  echo Other:
680*6236dae4SAndroid Build Coastguard Worker  echo.
681*6236dae4SAndroid Build Coastguard Worker  echo directory - Specifies the OpenSSL source directory
682*6236dae4SAndroid Build Coastguard Worker  echo.
683*6236dae4SAndroid Build Coastguard Worker  echo -VSpath - Specify the custom VS path if Visual Studio is not located at
684*6236dae4SAndroid Build Coastguard Worker  echo           "C:\<ProgramFiles>\Microsoft Visual Studio <version>"
685*6236dae4SAndroid Build Coastguard Worker  echo           For e.g. -VSpath "C:\apps\MVS14"
686*6236dae4SAndroid Build Coastguard Worker  echo.
687*6236dae4SAndroid Build Coastguard Worker  echo -perlpath - Specify the custom perl root path if perl is not located at
688*6236dae4SAndroid Build Coastguard Worker  echo             "C:\Perl" and it is a portable copy of perl and not
689*6236dae4SAndroid Build Coastguard Worker  echo             installed on the win system.
690*6236dae4SAndroid Build Coastguard Worker  echo             For e.g. -perlpath "D:\strawberry-perl-5.24.3.1-64bit-portable"
691*6236dae4SAndroid Build Coastguard Worker  goto error
692*6236dae4SAndroid Build Coastguard Worker
693*6236dae4SAndroid Build Coastguard Worker:unknown
694*6236dae4SAndroid Build Coastguard Worker  echo.
695*6236dae4SAndroid Build Coastguard Worker  echo Error: Unknown argument '%1'
696*6236dae4SAndroid Build Coastguard Worker  goto error
697*6236dae4SAndroid Build Coastguard Worker
698*6236dae4SAndroid Build Coastguard Worker:nodos
699*6236dae4SAndroid Build Coastguard Worker  echo.
700*6236dae4SAndroid Build Coastguard Worker  echo Error: Only a Windows NT based Operating System is supported
701*6236dae4SAndroid Build Coastguard Worker  goto error
702*6236dae4SAndroid Build Coastguard Worker
703*6236dae4SAndroid Build Coastguard Worker:nopf
704*6236dae4SAndroid Build Coastguard Worker  echo.
705*6236dae4SAndroid Build Coastguard Worker  echo Error: Cannot obtain the directory for Program Files
706*6236dae4SAndroid Build Coastguard Worker  goto error
707*6236dae4SAndroid Build Coastguard Worker
708*6236dae4SAndroid Build Coastguard Worker:novc
709*6236dae4SAndroid Build Coastguard Worker  echo.
710*6236dae4SAndroid Build Coastguard Worker  echo Error: %VC_DESC% is not installed
711*6236dae4SAndroid Build Coastguard Worker  echo Error: Please check whether Visual compiler is installed at the path "%ABS_VC_PATH%"
712*6236dae4SAndroid Build Coastguard Worker  echo Error: Please provide proper VS Path by using -VSpath
713*6236dae4SAndroid Build Coastguard Worker  goto error
714*6236dae4SAndroid Build Coastguard Worker
715*6236dae4SAndroid Build Coastguard Worker:noperl
716*6236dae4SAndroid Build Coastguard Worker  echo.
717*6236dae4SAndroid Build Coastguard Worker  echo Error: Perl is not installed
718*6236dae4SAndroid Build Coastguard Worker  echo Error: Please check whether Perl is installed or it is at location "C:\Perl"
719*6236dae4SAndroid Build Coastguard Worker  echo Error: If Perl is portable please provide perl root path by using -perlpath
720*6236dae4SAndroid Build Coastguard Worker  goto error
721*6236dae4SAndroid Build Coastguard Worker
722*6236dae4SAndroid Build Coastguard Worker:nox64
723*6236dae4SAndroid Build Coastguard Worker  echo.
724*6236dae4SAndroid Build Coastguard Worker  echo Error: %VC_DESC% does not support 64-bit builds
725*6236dae4SAndroid Build Coastguard Worker  goto error
726*6236dae4SAndroid Build Coastguard Worker
727*6236dae4SAndroid Build Coastguard Worker:noopenssl
728*6236dae4SAndroid Build Coastguard Worker  echo.
729*6236dae4SAndroid Build Coastguard Worker  echo Error: Cannot locate OpenSSL source directory
730*6236dae4SAndroid Build Coastguard Worker  goto error
731*6236dae4SAndroid Build Coastguard Worker
732*6236dae4SAndroid Build Coastguard Worker:error
733*6236dae4SAndroid Build Coastguard Worker  if "%OS%" == "Windows_NT" endlocal
734*6236dae4SAndroid Build Coastguard Worker  exit /B 1
735*6236dae4SAndroid Build Coastguard Worker
736*6236dae4SAndroid Build Coastguard Worker:success
737*6236dae4SAndroid Build Coastguard Worker  cd /d "%SAVED_PATH%"
738*6236dae4SAndroid Build Coastguard Worker  endlocal
739*6236dae4SAndroid Build Coastguard Worker  exit /B 0
740