xref: /aosp_15_r20/external/curl/projects/build-wolfssl.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 * Copyright (C) Jay Satiro, <[email protected]>.
11*6236dae4SAndroid Build Coastguard Workerrem *
12*6236dae4SAndroid Build Coastguard Workerrem * This software is licensed as described in the file COPYING, which
13*6236dae4SAndroid Build Coastguard Workerrem * you should have received as part of this distribution. The terms
14*6236dae4SAndroid Build Coastguard Workerrem * are also available at https://curl.se/docs/copyright.html.
15*6236dae4SAndroid Build Coastguard Workerrem *
16*6236dae4SAndroid Build Coastguard Workerrem * You may opt to use, copy, modify, merge, publish, distribute and/or sell
17*6236dae4SAndroid Build Coastguard Workerrem * copies of the Software, and permit persons to whom the Software is
18*6236dae4SAndroid Build Coastguard Workerrem * furnished to do so, under the terms of the COPYING file.
19*6236dae4SAndroid Build Coastguard Workerrem *
20*6236dae4SAndroid Build Coastguard Workerrem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
21*6236dae4SAndroid Build Coastguard Workerrem * KIND, either express or implied.
22*6236dae4SAndroid Build Coastguard Workerrem *
23*6236dae4SAndroid Build Coastguard Workerrem * SPDX-License-Identifier: curl
24*6236dae4SAndroid Build Coastguard Workerrem *
25*6236dae4SAndroid Build Coastguard Workerrem ***************************************************************************
26*6236dae4SAndroid Build Coastguard Worker
27*6236dae4SAndroid Build Coastguard Worker:begin
28*6236dae4SAndroid Build Coastguard Worker  rem Check we are running on a Windows NT derived OS
29*6236dae4SAndroid Build Coastguard Worker  if not "%OS%" == "Windows_NT" goto nodos
30*6236dae4SAndroid Build Coastguard Worker
31*6236dae4SAndroid Build Coastguard Worker  rem Set our variables
32*6236dae4SAndroid Build Coastguard Worker  setlocal
33*6236dae4SAndroid Build Coastguard Worker  set SUCCESSFUL_BUILDS=
34*6236dae4SAndroid Build Coastguard Worker  set VC_VER=
35*6236dae4SAndroid Build Coastguard Worker  set BUILD_PLATFORM=
36*6236dae4SAndroid Build Coastguard Worker  set DEFAULT_START_DIR=..\..\wolfssl
37*6236dae4SAndroid Build Coastguard Worker
38*6236dae4SAndroid Build Coastguard Worker  rem Calculate the program files directory
39*6236dae4SAndroid Build Coastguard Worker  if defined PROGRAMFILES (
40*6236dae4SAndroid Build Coastguard Worker    set "PF=%PROGRAMFILES%"
41*6236dae4SAndroid Build Coastguard Worker    set OS_PLATFORM=x86
42*6236dae4SAndroid Build Coastguard Worker  )
43*6236dae4SAndroid Build Coastguard Worker  if defined PROGRAMFILES(x86) (
44*6236dae4SAndroid Build Coastguard Worker    rem Visual Studio was x86-only prior to 14.3
45*6236dae4SAndroid Build Coastguard Worker    if /i "%~1" == "vc14.3" (
46*6236dae4SAndroid Build Coastguard Worker      set "PF=%PROGRAMFILES%"
47*6236dae4SAndroid Build Coastguard Worker    ) else (
48*6236dae4SAndroid Build Coastguard Worker      set "PF=%PROGRAMFILES(x86)%"
49*6236dae4SAndroid Build Coastguard Worker    )
50*6236dae4SAndroid Build Coastguard Worker    set OS_PLATFORM=x64
51*6236dae4SAndroid Build Coastguard Worker  )
52*6236dae4SAndroid Build Coastguard Worker
53*6236dae4SAndroid Build Coastguard Worker  rem Ensure we have the required arguments
54*6236dae4SAndroid Build Coastguard Worker  if /i "%~1" == "" goto syntax
55*6236dae4SAndroid Build Coastguard Worker
56*6236dae4SAndroid Build Coastguard Worker:parseArgs
57*6236dae4SAndroid Build Coastguard Worker  if "%~1" == "" goto prerequisites
58*6236dae4SAndroid Build Coastguard Worker
59*6236dae4SAndroid Build Coastguard Worker  if /i "%~1" == "vc10" (
60*6236dae4SAndroid Build Coastguard Worker    set VC_VER=10.0
61*6236dae4SAndroid Build Coastguard Worker    set VC_DESC=VC10
62*6236dae4SAndroid Build Coastguard Worker    set VC_TOOLSET=v100
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_TOOLSET=v110
68*6236dae4SAndroid Build Coastguard Worker    set "VC_PATH=Microsoft Visual Studio 11.0\VC"
69*6236dae4SAndroid Build Coastguard Worker  ) else if /i "%~1" == "vc12" (
70*6236dae4SAndroid Build Coastguard Worker    set VC_VER=12.0
71*6236dae4SAndroid Build Coastguard Worker    set VC_DESC=VC12
72*6236dae4SAndroid Build Coastguard Worker    set VC_TOOLSET=v120
73*6236dae4SAndroid Build Coastguard Worker    set "VC_PATH=Microsoft Visual Studio 12.0\VC"
74*6236dae4SAndroid Build Coastguard Worker  ) else if /i "%~1" == "vc14" (
75*6236dae4SAndroid Build Coastguard Worker    set VC_VER=14.0
76*6236dae4SAndroid Build Coastguard Worker    set VC_DESC=VC14
77*6236dae4SAndroid Build Coastguard Worker    set VC_TOOLSET=v140
78*6236dae4SAndroid Build Coastguard Worker    set "VC_PATH=Microsoft Visual Studio 14.0\VC"
79*6236dae4SAndroid Build Coastguard Worker  ) else if /i "%~1" == "vc14.1" (
80*6236dae4SAndroid Build Coastguard Worker    set VC_VER=14.1
81*6236dae4SAndroid Build Coastguard Worker    set VC_DESC=VC14.10
82*6236dae4SAndroid Build Coastguard Worker    set VC_TOOLSET=v141
83*6236dae4SAndroid Build Coastguard Worker
84*6236dae4SAndroid Build Coastguard Worker    rem Determine the VC14.1 path based on the installed edition in descending
85*6236dae4SAndroid Build Coastguard Worker    rem order (Enterprise, then Professional and finally Community)
86*6236dae4SAndroid Build Coastguard Worker    if exist "%PF%\Microsoft Visual Studio\2017\Enterprise\VC" (
87*6236dae4SAndroid Build Coastguard Worker      set "VC_PATH=Microsoft Visual Studio\2017\Enterprise\VC"
88*6236dae4SAndroid Build Coastguard Worker    ) else if exist "%PF%\Microsoft Visual Studio\2017\Professional\VC" (
89*6236dae4SAndroid Build Coastguard Worker      set "VC_PATH=Microsoft Visual Studio\2017\Professional\VC"
90*6236dae4SAndroid Build Coastguard Worker    ) else (
91*6236dae4SAndroid Build Coastguard Worker      set "VC_PATH=Microsoft Visual Studio\2017\Community\VC"
92*6236dae4SAndroid Build Coastguard Worker    )
93*6236dae4SAndroid Build Coastguard Worker  ) else if /i "%~1" == "vc14.2" (
94*6236dae4SAndroid Build Coastguard Worker    set VC_VER=14.2
95*6236dae4SAndroid Build Coastguard Worker    set VC_DESC=VC14.20
96*6236dae4SAndroid Build Coastguard Worker    set VC_TOOLSET=v142
97*6236dae4SAndroid Build Coastguard Worker
98*6236dae4SAndroid Build Coastguard Worker    rem Determine the VC14.2 path based on the installed edition in descending
99*6236dae4SAndroid Build Coastguard Worker    rem order (Enterprise, then Professional and finally Community)
100*6236dae4SAndroid Build Coastguard Worker    if exist "%PF%\Microsoft Visual Studio\2019\Enterprise\VC" (
101*6236dae4SAndroid Build Coastguard Worker      set "VC_PATH=Microsoft Visual Studio\2019\Enterprise\VC"
102*6236dae4SAndroid Build Coastguard Worker    ) else if exist "%PF%\Microsoft Visual Studio\2019\Professional\VC" (
103*6236dae4SAndroid Build Coastguard Worker      set "VC_PATH=Microsoft Visual Studio\2019\Professional\VC"
104*6236dae4SAndroid Build Coastguard Worker    ) else (
105*6236dae4SAndroid Build Coastguard Worker      set "VC_PATH=Microsoft Visual Studio\2019\Community\VC"
106*6236dae4SAndroid Build Coastguard Worker    )
107*6236dae4SAndroid Build Coastguard Worker  ) else if /i "%~1" == "vc14.3" (
108*6236dae4SAndroid Build Coastguard Worker    set VC_VER=14.3
109*6236dae4SAndroid Build Coastguard Worker    set VC_DESC=VC14.30
110*6236dae4SAndroid Build Coastguard Worker    set VC_TOOLSET=v143
111*6236dae4SAndroid Build Coastguard Worker
112*6236dae4SAndroid Build Coastguard Worker    rem Determine the VC14.3 path based on the installed edition in descending
113*6236dae4SAndroid Build Coastguard Worker    rem order (Enterprise, then Professional and finally Community)
114*6236dae4SAndroid Build Coastguard Worker    if exist "%PF%\Microsoft Visual Studio\2022\Enterprise\VC" (
115*6236dae4SAndroid Build Coastguard Worker      set "VC_PATH=Microsoft Visual Studio\2022\Enterprise\VC"
116*6236dae4SAndroid Build Coastguard Worker    ) else if exist "%PF%\Microsoft Visual Studio\2022\Professional\VC" (
117*6236dae4SAndroid Build Coastguard Worker      set "VC_PATH=Microsoft Visual Studio\2022\Professional\VC"
118*6236dae4SAndroid Build Coastguard Worker    ) else (
119*6236dae4SAndroid Build Coastguard Worker      set "VC_PATH=Microsoft Visual Studio\2022\Community\VC"
120*6236dae4SAndroid Build Coastguard Worker    )
121*6236dae4SAndroid Build Coastguard Worker  ) else if /i "%~1" == "x86" (
122*6236dae4SAndroid Build Coastguard Worker    set BUILD_PLATFORM=x86
123*6236dae4SAndroid Build Coastguard Worker  ) else if /i "%~1" == "x64" (
124*6236dae4SAndroid Build Coastguard Worker    set BUILD_PLATFORM=x64
125*6236dae4SAndroid Build Coastguard Worker  ) else if /i "%~1" == "debug" (
126*6236dae4SAndroid Build Coastguard Worker    set BUILD_CONFIG=debug
127*6236dae4SAndroid Build Coastguard Worker  ) else if /i "%~1" == "release" (
128*6236dae4SAndroid Build Coastguard Worker    set BUILD_CONFIG=release
129*6236dae4SAndroid Build Coastguard Worker  ) else if /i "%~1" == "-?" (
130*6236dae4SAndroid Build Coastguard Worker    goto syntax
131*6236dae4SAndroid Build Coastguard Worker  ) else if /i "%~1" == "-h" (
132*6236dae4SAndroid Build Coastguard Worker    goto syntax
133*6236dae4SAndroid Build Coastguard Worker  ) else if /i "%~1" == "-help" (
134*6236dae4SAndroid Build Coastguard Worker    goto syntax
135*6236dae4SAndroid Build Coastguard Worker  ) else (
136*6236dae4SAndroid Build Coastguard Worker    if not defined START_DIR (
137*6236dae4SAndroid Build Coastguard Worker      set START_DIR=%~1
138*6236dae4SAndroid Build Coastguard Worker    ) else (
139*6236dae4SAndroid Build Coastguard Worker      goto unknown
140*6236dae4SAndroid Build Coastguard Worker    )
141*6236dae4SAndroid Build Coastguard Worker  )
142*6236dae4SAndroid Build Coastguard Worker
143*6236dae4SAndroid Build Coastguard Worker  shift & goto parseArgs
144*6236dae4SAndroid Build Coastguard Worker
145*6236dae4SAndroid Build Coastguard Worker:prerequisites
146*6236dae4SAndroid Build Coastguard Worker  rem Compiler is a required parameter
147*6236dae4SAndroid Build Coastguard Worker  if not defined VC_VER goto syntax
148*6236dae4SAndroid Build Coastguard Worker
149*6236dae4SAndroid Build Coastguard Worker  rem Default the start directory if one isn't specified
150*6236dae4SAndroid Build Coastguard Worker  if not defined START_DIR set "START_DIR=%DEFAULT_START_DIR%"
151*6236dae4SAndroid Build Coastguard Worker
152*6236dae4SAndroid Build Coastguard Worker  rem Check we have a program files directory
153*6236dae4SAndroid Build Coastguard Worker  if not defined PF goto nopf
154*6236dae4SAndroid Build Coastguard Worker
155*6236dae4SAndroid Build Coastguard Worker  rem Check we have Visual Studio installed
156*6236dae4SAndroid Build Coastguard Worker  if not exist "%PF%\%VC_PATH%" goto novc
157*6236dae4SAndroid Build Coastguard Worker
158*6236dae4SAndroid Build Coastguard Worker  rem Check the start directory exists
159*6236dae4SAndroid Build Coastguard Worker  if not exist "%START_DIR%" goto nowolfssl
160*6236dae4SAndroid Build Coastguard Worker
161*6236dae4SAndroid Build Coastguard Worker:configure
162*6236dae4SAndroid Build Coastguard Worker  if "%BUILD_PLATFORM%" == "" set BUILD_PLATFORM=%OS_PLATFORM%
163*6236dae4SAndroid Build Coastguard Worker
164*6236dae4SAndroid Build Coastguard Worker  if "%BUILD_PLATFORM%" == "x86" (
165*6236dae4SAndroid Build Coastguard Worker    set VCVARS_PLATFORM=x86
166*6236dae4SAndroid Build Coastguard Worker  ) else if "%BUILD_PLATFORM%" == "x64" (
167*6236dae4SAndroid Build Coastguard Worker    if "%VC_VER%" == "10.0" set VCVARS_PLATFORM=%BUILD_PLATFORM%
168*6236dae4SAndroid Build Coastguard Worker    if "%VC_VER%" == "11.0" set VCVARS_PLATFORM=amd64
169*6236dae4SAndroid Build Coastguard Worker    if "%VC_VER%" == "12.0" set VCVARS_PLATFORM=amd64
170*6236dae4SAndroid Build Coastguard Worker    if "%VC_VER%" == "14.0" set VCVARS_PLATFORM=amd64
171*6236dae4SAndroid Build Coastguard Worker    if "%VC_VER%" == "14.1" set VCVARS_PLATFORM=amd64
172*6236dae4SAndroid Build Coastguard Worker    if "%VC_VER%" == "14.2" set VCVARS_PLATFORM=amd64
173*6236dae4SAndroid Build Coastguard Worker    if "%VC_VER%" == "14.3" set VCVARS_PLATFORM=amd64
174*6236dae4SAndroid Build Coastguard Worker  )
175*6236dae4SAndroid Build Coastguard Worker
176*6236dae4SAndroid Build Coastguard Worker:start
177*6236dae4SAndroid Build Coastguard Worker  echo.
178*6236dae4SAndroid Build Coastguard Worker  set SAVED_PATH=%CD%
179*6236dae4SAndroid Build Coastguard Worker
180*6236dae4SAndroid Build Coastguard Worker  if "%VC_VER%" == "14.1" (
181*6236dae4SAndroid Build Coastguard Worker    call "%PF%\%VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
182*6236dae4SAndroid Build Coastguard Worker  ) else if "%VC_VER%" == "14.2" (
183*6236dae4SAndroid Build Coastguard Worker    call "%PF%\%VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
184*6236dae4SAndroid Build Coastguard Worker  ) else if "%VC_VER%" == "14.3" (
185*6236dae4SAndroid Build Coastguard Worker    call "%PF%\%VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
186*6236dae4SAndroid Build Coastguard Worker  ) else (
187*6236dae4SAndroid Build Coastguard Worker    call "%PF%\%VC_PATH%\vcvarsall" %VCVARS_PLATFORM%
188*6236dae4SAndroid Build Coastguard Worker  )
189*6236dae4SAndroid Build Coastguard Worker
190*6236dae4SAndroid Build Coastguard Worker  echo.
191*6236dae4SAndroid Build Coastguard Worker  cd /d %SAVED_PATH%
192*6236dae4SAndroid Build Coastguard Worker  if defined START_DIR cd /d %START_DIR%
193*6236dae4SAndroid Build Coastguard Worker  goto %BUILD_PLATFORM%
194*6236dae4SAndroid Build Coastguard Worker
195*6236dae4SAndroid Build Coastguard Worker:x64
196*6236dae4SAndroid Build Coastguard Worker  rem Calculate our output directory
197*6236dae4SAndroid Build Coastguard Worker  set OUTDIR=build\Win64\%VC_DESC%
198*6236dae4SAndroid Build Coastguard Worker  if not exist %OUTDIR% md %OUTDIR%
199*6236dae4SAndroid Build Coastguard Worker
200*6236dae4SAndroid Build Coastguard Worker  if "%BUILD_CONFIG%" == "release" goto x64release
201*6236dae4SAndroid Build Coastguard Worker
202*6236dae4SAndroid Build Coastguard Worker:x64debug
203*6236dae4SAndroid Build Coastguard Worker  rem Perform 64-bit Debug Build
204*6236dae4SAndroid Build Coastguard Worker
205*6236dae4SAndroid Build Coastguard Worker  call :build Debug x64
206*6236dae4SAndroid Build Coastguard Worker  if errorlevel 1 goto error
207*6236dae4SAndroid Build Coastguard Worker
208*6236dae4SAndroid Build Coastguard Worker  call :build "DLL Debug" x64
209*6236dae4SAndroid Build Coastguard Worker  if errorlevel 1 goto error
210*6236dae4SAndroid Build Coastguard Worker
211*6236dae4SAndroid Build Coastguard Worker  if "%BUILD_CONFIG%" == "debug" goto success
212*6236dae4SAndroid Build Coastguard Worker
213*6236dae4SAndroid Build Coastguard Worker:x64release
214*6236dae4SAndroid Build Coastguard Worker  rem Perform 64-bit Release Build
215*6236dae4SAndroid Build Coastguard Worker
216*6236dae4SAndroid Build Coastguard Worker  call :build Release x64
217*6236dae4SAndroid Build Coastguard Worker  if errorlevel 1 goto error
218*6236dae4SAndroid Build Coastguard Worker
219*6236dae4SAndroid Build Coastguard Worker  call :build "DLL Release" x64
220*6236dae4SAndroid Build Coastguard Worker  if errorlevel 1 goto error
221*6236dae4SAndroid Build Coastguard Worker
222*6236dae4SAndroid Build Coastguard Worker  goto success
223*6236dae4SAndroid Build Coastguard Worker
224*6236dae4SAndroid Build Coastguard Worker:x86
225*6236dae4SAndroid Build Coastguard Worker  rem Calculate our output directory
226*6236dae4SAndroid Build Coastguard Worker  set OUTDIR=build\Win32\%VC_DESC%
227*6236dae4SAndroid Build Coastguard Worker  if not exist %OUTDIR% md %OUTDIR%
228*6236dae4SAndroid Build Coastguard Worker
229*6236dae4SAndroid Build Coastguard Worker  if "%BUILD_CONFIG%" == "release" goto x86release
230*6236dae4SAndroid Build Coastguard Worker
231*6236dae4SAndroid Build Coastguard Worker:x86debug
232*6236dae4SAndroid Build Coastguard Worker  rem Perform 32-bit Debug Build
233*6236dae4SAndroid Build Coastguard Worker
234*6236dae4SAndroid Build Coastguard Worker  call :build Debug Win32
235*6236dae4SAndroid Build Coastguard Worker  if errorlevel 1 goto error
236*6236dae4SAndroid Build Coastguard Worker
237*6236dae4SAndroid Build Coastguard Worker  call :build "DLL Debug" Win32
238*6236dae4SAndroid Build Coastguard Worker  if errorlevel 1 goto error
239*6236dae4SAndroid Build Coastguard Worker
240*6236dae4SAndroid Build Coastguard Worker  if "%BUILD_CONFIG%" == "debug" goto success
241*6236dae4SAndroid Build Coastguard Worker
242*6236dae4SAndroid Build Coastguard Worker:x86release
243*6236dae4SAndroid Build Coastguard Worker  rem Perform 32-bit Release Build
244*6236dae4SAndroid Build Coastguard Worker
245*6236dae4SAndroid Build Coastguard Worker  call :build Release Win32
246*6236dae4SAndroid Build Coastguard Worker  if errorlevel 1 goto error
247*6236dae4SAndroid Build Coastguard Worker
248*6236dae4SAndroid Build Coastguard Worker  call :build "DLL Release" Win32
249*6236dae4SAndroid Build Coastguard Worker  if errorlevel 1 goto error
250*6236dae4SAndroid Build Coastguard Worker
251*6236dae4SAndroid Build Coastguard Worker  goto success
252*6236dae4SAndroid Build Coastguard Worker
253*6236dae4SAndroid Build Coastguard Worker:build
254*6236dae4SAndroid Build Coastguard Worker  rem This function builds wolfSSL.
255*6236dae4SAndroid Build Coastguard Worker  rem Usage: CALL :build <configuration> <platform>
256*6236dae4SAndroid Build Coastguard Worker  rem The current directory must be the wolfSSL directory.
257*6236dae4SAndroid Build Coastguard Worker  rem VS Configuration: Debug, Release, DLL Debug or DLL Release.
258*6236dae4SAndroid Build Coastguard Worker  rem VS Platform: Win32 or x64.
259*6236dae4SAndroid Build Coastguard Worker  rem Returns: 1 on fail, 0 on success.
260*6236dae4SAndroid Build Coastguard Worker  rem An informational message should be shown before any return.
261*6236dae4SAndroid Build Coastguard Worker  setlocal
262*6236dae4SAndroid Build Coastguard Worker  set MSBUILD_CONFIG=%~1
263*6236dae4SAndroid Build Coastguard Worker  set MSBUILD_PLATFORM=%~2
264*6236dae4SAndroid Build Coastguard Worker
265*6236dae4SAndroid Build Coastguard Worker  if not exist wolfssl64.sln (
266*6236dae4SAndroid Build Coastguard Worker    echo.
267*6236dae4SAndroid Build Coastguard Worker    echo Error: build: wolfssl64.sln not found in "%CD%"
268*6236dae4SAndroid Build Coastguard Worker    exit /b 1
269*6236dae4SAndroid Build Coastguard Worker  )
270*6236dae4SAndroid Build Coastguard Worker
271*6236dae4SAndroid Build Coastguard Worker  rem OUTDIR isn't a full path, only relative. MSBUILD_OUTDIR must be full and
272*6236dae4SAndroid Build Coastguard Worker  rem not have trailing backslashes, which are handled later.
273*6236dae4SAndroid Build Coastguard Worker  if "%MSBUILD_CONFIG%" == "Debug" (
274*6236dae4SAndroid Build Coastguard Worker    set "MSBUILD_OUTDIR=%CD%\%OUTDIR%\LIB Debug"
275*6236dae4SAndroid Build Coastguard Worker  ) else if "%MSBUILD_CONFIG%" == "Release" (
276*6236dae4SAndroid Build Coastguard Worker    set "MSBUILD_OUTDIR=%CD%\%OUTDIR%\LIB Release"
277*6236dae4SAndroid Build Coastguard Worker  ) else if "%MSBUILD_CONFIG%" == "DLL Debug" (
278*6236dae4SAndroid Build Coastguard Worker    set "MSBUILD_OUTDIR=%CD%\%OUTDIR%\DLL Debug"
279*6236dae4SAndroid Build Coastguard Worker  ) else if "%MSBUILD_CONFIG%" == "DLL Release" (
280*6236dae4SAndroid Build Coastguard Worker    set "MSBUILD_OUTDIR=%CD%\%OUTDIR%\DLL Release"
281*6236dae4SAndroid Build Coastguard Worker  ) else (
282*6236dae4SAndroid Build Coastguard Worker    echo.
283*6236dae4SAndroid Build Coastguard Worker    echo Error: build: Configuration not recognized.
284*6236dae4SAndroid Build Coastguard Worker    exit /b 1
285*6236dae4SAndroid Build Coastguard Worker  )
286*6236dae4SAndroid Build Coastguard Worker
287*6236dae4SAndroid Build Coastguard Worker  if not "%MSBUILD_PLATFORM%" == "Win32" if not "%MSBUILD_PLATFORM%" == "x64" (
288*6236dae4SAndroid Build Coastguard Worker    echo.
289*6236dae4SAndroid Build Coastguard Worker    echo Error: build: Platform not recognized.
290*6236dae4SAndroid Build Coastguard Worker    exit /b 1
291*6236dae4SAndroid Build Coastguard Worker  )
292*6236dae4SAndroid Build Coastguard Worker
293*6236dae4SAndroid Build Coastguard Worker  copy /v /y "%~dp0\wolfssl_options.h" .\cyassl\options.h
294*6236dae4SAndroid Build Coastguard Worker  if %ERRORLEVEL% neq 0 (
295*6236dae4SAndroid Build Coastguard Worker    echo.
296*6236dae4SAndroid Build Coastguard Worker    echo Error: build: Couldn't replace .\cyassl\options.h
297*6236dae4SAndroid Build Coastguard Worker    exit /b 1
298*6236dae4SAndroid Build Coastguard Worker  )
299*6236dae4SAndroid Build Coastguard Worker
300*6236dae4SAndroid Build Coastguard Worker  copy /v /y "%~dp0\wolfssl_options.h" .\wolfssl\options.h
301*6236dae4SAndroid Build Coastguard Worker  if %ERRORLEVEL% neq 0 (
302*6236dae4SAndroid Build Coastguard Worker    echo.
303*6236dae4SAndroid Build Coastguard Worker    echo Error: build: Couldn't replace .\wolfssl\options.h
304*6236dae4SAndroid Build Coastguard Worker    exit /b 1
305*6236dae4SAndroid Build Coastguard Worker  )
306*6236dae4SAndroid Build Coastguard Worker
307*6236dae4SAndroid Build Coastguard Worker  rem Extra trailing \ in Dirs because otherwise it thinks a quote is escaped
308*6236dae4SAndroid Build Coastguard Worker  msbuild wolfssl64.sln ^
309*6236dae4SAndroid Build Coastguard Worker    -p:CustomAfterMicrosoftCommonTargets="%~dp0\wolfssl_override.props" ^
310*6236dae4SAndroid Build Coastguard Worker    -p:Configuration="%MSBUILD_CONFIG%" ^
311*6236dae4SAndroid Build Coastguard Worker    -p:Platform="%MSBUILD_PLATFORM%" ^
312*6236dae4SAndroid Build Coastguard Worker    -p:PlatformToolset="%VC_TOOLSET%" ^
313*6236dae4SAndroid Build Coastguard Worker    -p:OutDir="%MSBUILD_OUTDIR%\\" ^
314*6236dae4SAndroid Build Coastguard Worker    -p:IntDir="%MSBUILD_OUTDIR%\obj\\"
315*6236dae4SAndroid Build Coastguard Worker
316*6236dae4SAndroid Build Coastguard Worker  if %ERRORLEVEL% neq 0 (
317*6236dae4SAndroid Build Coastguard Worker    echo.
318*6236dae4SAndroid Build Coastguard Worker    echo Error: Failed building wolfSSL %MSBUILD_CONFIG%^|%MSBUILD_PLATFORM%.
319*6236dae4SAndroid Build Coastguard Worker    exit /b 1
320*6236dae4SAndroid Build Coastguard Worker  )
321*6236dae4SAndroid Build Coastguard Worker
322*6236dae4SAndroid Build Coastguard Worker  rem For tests to run properly the wolfSSL directory must remain the current.
323*6236dae4SAndroid Build Coastguard Worker  set "PATH=%MSBUILD_OUTDIR%;%PATH%"
324*6236dae4SAndroid Build Coastguard Worker  "%MSBUILD_OUTDIR%\testsuite.exe"
325*6236dae4SAndroid Build Coastguard Worker
326*6236dae4SAndroid Build Coastguard Worker  if %ERRORLEVEL% neq 0 (
327*6236dae4SAndroid Build Coastguard Worker    echo.
328*6236dae4SAndroid Build Coastguard Worker    echo Error: Failed testing wolfSSL %MSBUILD_CONFIG%^|%MSBUILD_PLATFORM%.
329*6236dae4SAndroid Build Coastguard Worker    exit /b 1
330*6236dae4SAndroid Build Coastguard Worker  )
331*6236dae4SAndroid Build Coastguard Worker
332*6236dae4SAndroid Build Coastguard Worker  echo.
333*6236dae4SAndroid Build Coastguard Worker  echo Success: Built and tested wolfSSL %MSBUILD_CONFIG%^|%MSBUILD_PLATFORM%.
334*6236dae4SAndroid Build Coastguard Worker  echo.
335*6236dae4SAndroid Build Coastguard Worker  echo.
336*6236dae4SAndroid Build Coastguard Worker  rem This is necessary to export our local variables back to the caller.
337*6236dae4SAndroid Build Coastguard Worker  endlocal & set SUCCESSFUL_BUILDS="%MSBUILD_CONFIG%|%MSBUILD_PLATFORM%" ^
338*6236dae4SAndroid Build Coastguard Worker    %SUCCESSFUL_BUILDS%
339*6236dae4SAndroid Build Coastguard Worker  exit /b 0
340*6236dae4SAndroid Build Coastguard Worker
341*6236dae4SAndroid Build Coastguard Worker:syntax
342*6236dae4SAndroid Build Coastguard Worker  rem Display the help
343*6236dae4SAndroid Build Coastguard Worker  echo.
344*6236dae4SAndroid Build Coastguard Worker  echo Usage: build-wolfssl ^<compiler^> [platform] [configuration] [directory]
345*6236dae4SAndroid Build Coastguard Worker  echo.
346*6236dae4SAndroid Build Coastguard Worker  echo.
347*6236dae4SAndroid Build Coastguard Worker  echo Compiler:
348*6236dae4SAndroid Build Coastguard Worker  echo.
349*6236dae4SAndroid Build Coastguard Worker  echo vc10      - Use Visual Studio 2010
350*6236dae4SAndroid Build Coastguard Worker  echo vc11      - Use Visual Studio 2012
351*6236dae4SAndroid Build Coastguard Worker  echo vc12      - Use Visual Studio 2013
352*6236dae4SAndroid Build Coastguard Worker  echo vc14      - Use Visual Studio 2015
353*6236dae4SAndroid Build Coastguard Worker  echo vc14.1    - Use Visual Studio 2017
354*6236dae4SAndroid Build Coastguard Worker  echo vc14.2    - Use Visual Studio 2019
355*6236dae4SAndroid Build Coastguard Worker  echo vc14.3    - Use Visual Studio 2022
356*6236dae4SAndroid Build Coastguard Worker  echo.
357*6236dae4SAndroid Build Coastguard Worker  echo.
358*6236dae4SAndroid Build Coastguard Worker  echo Platform:
359*6236dae4SAndroid Build Coastguard Worker  echo.
360*6236dae4SAndroid Build Coastguard Worker  echo x86       - Perform a 32-bit build
361*6236dae4SAndroid Build Coastguard Worker  echo x64       - Perform a 64-bit build
362*6236dae4SAndroid Build Coastguard Worker  echo.
363*6236dae4SAndroid Build Coastguard Worker  echo If this parameter is unset the OS platform is used ^(%OS_PLATFORM%^).
364*6236dae4SAndroid Build Coastguard Worker  echo.
365*6236dae4SAndroid Build Coastguard Worker  echo.
366*6236dae4SAndroid Build Coastguard Worker  echo Configuration:
367*6236dae4SAndroid Build Coastguard Worker  echo.
368*6236dae4SAndroid Build Coastguard Worker  echo debug     - Perform a debug build
369*6236dae4SAndroid Build Coastguard Worker  echo release   - Perform a release build
370*6236dae4SAndroid Build Coastguard Worker  echo.
371*6236dae4SAndroid Build Coastguard Worker  echo If this parameter is unset both configurations are built.
372*6236dae4SAndroid Build Coastguard Worker  echo.
373*6236dae4SAndroid Build Coastguard Worker  echo.
374*6236dae4SAndroid Build Coastguard Worker  echo Other:
375*6236dae4SAndroid Build Coastguard Worker  echo.
376*6236dae4SAndroid Build Coastguard Worker  echo directory - Specifies the wolfSSL source directory
377*6236dae4SAndroid Build Coastguard Worker  echo.
378*6236dae4SAndroid Build Coastguard Worker  echo If this parameter is unset the directory used is "%DEFAULT_START_DIR%".
379*6236dae4SAndroid Build Coastguard Worker  echo.
380*6236dae4SAndroid Build Coastguard Worker  goto error
381*6236dae4SAndroid Build Coastguard Worker
382*6236dae4SAndroid Build Coastguard Worker:unknown
383*6236dae4SAndroid Build Coastguard Worker  echo.
384*6236dae4SAndroid Build Coastguard Worker  echo Error: Unknown argument '%1'
385*6236dae4SAndroid Build Coastguard Worker  goto error
386*6236dae4SAndroid Build Coastguard Worker
387*6236dae4SAndroid Build Coastguard Worker:nodos
388*6236dae4SAndroid Build Coastguard Worker  echo.
389*6236dae4SAndroid Build Coastguard Worker  echo Error: Only a Windows NT based Operating System is supported
390*6236dae4SAndroid Build Coastguard Worker  goto error
391*6236dae4SAndroid Build Coastguard Worker
392*6236dae4SAndroid Build Coastguard Worker:nopf
393*6236dae4SAndroid Build Coastguard Worker  echo.
394*6236dae4SAndroid Build Coastguard Worker  echo Error: Cannot obtain the directory for Program Files
395*6236dae4SAndroid Build Coastguard Worker  goto error
396*6236dae4SAndroid Build Coastguard Worker
397*6236dae4SAndroid Build Coastguard Worker:novc
398*6236dae4SAndroid Build Coastguard Worker  echo.
399*6236dae4SAndroid Build Coastguard Worker  echo Error: %VC_DESC% is not installed
400*6236dae4SAndroid Build Coastguard Worker  goto error
401*6236dae4SAndroid Build Coastguard Worker
402*6236dae4SAndroid Build Coastguard Worker:nox64
403*6236dae4SAndroid Build Coastguard Worker  echo.
404*6236dae4SAndroid Build Coastguard Worker  echo Error: %VC_DESC% does not support 64-bit builds
405*6236dae4SAndroid Build Coastguard Worker  goto error
406*6236dae4SAndroid Build Coastguard Worker
407*6236dae4SAndroid Build Coastguard Worker:nowolfssl
408*6236dae4SAndroid Build Coastguard Worker  echo.
409*6236dae4SAndroid Build Coastguard Worker  echo Error: Cannot locate wolfSSL source directory, expected "%START_DIR%"
410*6236dae4SAndroid Build Coastguard Worker  goto error
411*6236dae4SAndroid Build Coastguard Worker
412*6236dae4SAndroid Build Coastguard Worker:error
413*6236dae4SAndroid Build Coastguard Worker  if "%OS%" == "Windows_NT" endlocal
414*6236dae4SAndroid Build Coastguard Worker  exit /B 1
415*6236dae4SAndroid Build Coastguard Worker
416*6236dae4SAndroid Build Coastguard Worker:success
417*6236dae4SAndroid Build Coastguard Worker  if defined SUCCESSFUL_BUILDS (
418*6236dae4SAndroid Build Coastguard Worker    echo.
419*6236dae4SAndroid Build Coastguard Worker    echo.
420*6236dae4SAndroid Build Coastguard Worker    echo Build complete.
421*6236dae4SAndroid Build Coastguard Worker    echo.
422*6236dae4SAndroid Build Coastguard Worker    echo The following configurations were built and tested successfully:
423*6236dae4SAndroid Build Coastguard Worker    echo.
424*6236dae4SAndroid Build Coastguard Worker    echo %SUCCESSFUL_BUILDS%
425*6236dae4SAndroid Build Coastguard Worker    echo.
426*6236dae4SAndroid Build Coastguard Worker  )
427*6236dae4SAndroid Build Coastguard Worker  cd /d %SAVED_PATH%
428*6236dae4SAndroid Build Coastguard Worker  endlocal
429*6236dae4SAndroid Build Coastguard Worker  exit /B 0
430