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