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